Repository navigation
Adopt the rails-sketch/2026-10 target profile - #58
Merged
Merged
Conversation
First Draft moves its Rails target from 8.1.3.1 to 8.1.4 (see firstdraft/firstdraft#1191). Rails 8.1.4 dumps schema columns in declaration order and changes titleize, so on 2026-10-16 the owner gave the target a new profile ID, rails-sketch/2026-10. The Plan format stays sketch/0.23; the Service changes its target.profile constant in place. plan init now writes the new profile, and artifact validation accepts only it. An artifact for rails-sketch/2026-09-bookmark-assets reports invalid_artifact, which the older-profile test now exercises. The Service marks the break with API contract 0.8.0, and the CLI takes 0.9.0, the pre-1.0 minor bump for a breaking change. The accepted range becomes >= 0.8.0, < 0.9.0, so the release compatibility check refuses this CLI beside a 0.7.x Service. The CLI still does not read the FirstDraft-API-Contract header at runtime. The plan status zero-gap digest covers the target, so it is recomputed with the Service's GapSet serialization, JSON.pretty_generate plus a newline; the same method reproduces the previous digest.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The CLI side of firstdraft/firstdraft#1191, which moves the Rails target from 8.1.3.1 to 8.1.4. Rails 8.1.4 dumps schema columns in declaration order and changes
titleize, so on 2026-10-16 the owner gave the target a new profile ID and a new API contract. Per the recurring-changes guide, the CLI lands first.RAILS_TARGET_PROFILEbecomesrails-sketch/2026-10.plan initwrites it, and artifact validation accepts only it, so an artifact namingrails-sketch/2026-09-bookmark-assetsfails asinvalid_artifact. The older-profile test now uses that just-retired ID. The Plan format staysfirstdraft.foundation-plan.sketch/0.23.npm versionper RELEASING.md, with its CHANGELOG entry.requires.api_contractbecomes[">= 0.8.0", "< 0.9.0"].JSON.pretty_generateplus a newline, key order fromGapSet.build); the same method reproduces the previous digest. The synthetic analyzer/compiler release pair in tests andscripts/smoke-package.jsis unchanged: the CLI does not pin the Service's values, and the new Service release name is not yet known.Runtime compatibility. The CLI still does not read
FirstDraft-API-Contract. The range is enforced by the Service's release compatibility check: against today's 0.7.0 Service,script/release_compatibility_checkreports "cli does not support First Draft API contract 0.7.0". At runtime, the release's protection comes from the profile:plan initshould fail atplan push, because that Service's schema pins the old profile. An old-profile Project that compiles there fails at download withinvalid_artifact.plan init, or one written by the old Skill, carries the retired profile. The Service refuses it atplan push(server_rejected), and the #1191 refusal names the fix. Only a new-profile Plan driven through CLI 0.8.2 gets as far as Compile, and it then fails late withinvalid_artifact. The plugin's exact CLI pin prevents that pairing.A merge releases nothing; the tag and npm publication wait for the coordinated release. Skills follow-up when it bundles 0.9.0: the CLI pin and
requires.cli, the API range, and the profile in its references and evals.Docs: updated docs/commands.md and CHANGELOG.md
Review: Codex, approve (1 round, no findings)
Validation
At the head commit, after
npm ci --ignore-scripts:npm audit: found 0 vulnerabilitiesnpm run check: passed; 274 tests, 274 pass, 0 fail, thenpack:checkandpack:smokepassed