Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,23 @@ Entries are newest first. Keep their headings stable. Publish material correctio
new entries so readers who advanced their checkpoint see them. Entries explain what changed, why, when it applies,
and any useful small example or verification; they need not reproduce commit logs.

## 2026-10-20: Rails 8.1.4 and target profile rails-sketch/2026-10

**Skills — released in plugin 0.9.0.** Once the First Draft service deploys the matching Compiler, generated apps use
Rails 8.1.4 under the new target profile `rails-sketch/2026-10`. The plugin bundles CLI 0.9.0, which needs First Draft
API 0.8; both accept only the new profile. Rails 8.1.4 writes `db/schema.rb` columns in table order, where 8.1.3.1
sorted them alphabetically, so a new app's emitted schema lists them that way.

**Existing Projects.** A Project keeps the target profile it was created with, so a Project created with
`rails-sketch/2026-09-bookmark-assets` can no longer be analyzed or compiled. Its diagnostics point at
`/target/profile`. The Skill now walks the agent through starting a new Project for the same Plan: set the old
`.firstdraft` directory aside, run `plan init` with the same application name and key, copy the Plan in with the new
profile, and push. Subject UUIDs carry over.

**Existing apps.** An app generated earlier is unchanged and keeps working. Its Gemfile already allows Rails 8.1.4,
a bug-fix release; `bundle update rails` followed by the app's tests moves it. Afterward a schema dump may reorder
columns, which changes no behavior.

## 2026-10-12: More of the Plan reaches the generated app

**Skills — released in plugin 0.8.17.** Once the First Draft service deploys the matching Compiler, more of an
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ Start a new Codex conversation after installation. Use `$firstdraft:create-full-
there is no separate CLI version to choose.

A plugin install does not sign you into First Draft. Log in once per environment from any terminal with
`npx --yes @firstdraft.com/cli@0.8.2 login` (add `--staging` for staging). The login is saved in your user
`npx --yes @firstdraft.com/cli@0.9.0 login` (add `--staging` for staging). The login is saved in your user
configuration directory, so Claude Code, Codex CLI, and desktop sessions all use it without exported variables. If
authentication interrupts an already requested operation, log in and tell the same conversation to continue. Approve the specific CLI command when
Codex requests network access; its tool permission is separate from approval of the Plan and Compile mode.
Expand Down
6 changes: 3 additions & 3 deletions evals/create-full-stack-app/cases.json
Original file line number Diff line number Diff line change
Expand Up @@ -809,7 +809,7 @@
"should_trigger": true,
"prompt": "The staged Plan's domain, selected iPhone client, Movie icon and Field, and public-index Scaffold are intentional. A successful plan push was followed by plan status --wait, which printed the attached valid analysis. Review the result, but do not compile it.",
"expectations": [
"Branches on analysis.status valid and reports analyzer release foundation-plan-rails/application-2026-09-28-controller-create-context, graph version 1, and the absence of diagnostics.",
"Branches on analysis.status valid and reports analyzer release foundation-plan-rails/application-2026-10-20-rails-8-1-4, graph version 1, and the absence of diagnostics.",
"Reports the complete empty firstdraft.foundation-gaps/2 object and exact attached analysis.gap_set_sha256, which the CLI validated against the attached GapSet bytes, rather than omitting the reviewed support result; never substitutes a fixture, historical, or other Project's digest.",
"Preserves the complete staged Plan unchanged, including its domain, native.ios request, semantic icon, required title Field, and exact public-index Scaffold.",
"Recognizes that the prepared 2026-09 boundary admits this bounded web public-index and selected iPhone request, while analysis alone does not prove generated output.",
Expand Down Expand Up @@ -1548,7 +1548,7 @@
{
"id": "compile-prepared-movie-catalog",
"should_trigger": true,
"prompt": "I approve the exact pre-Compile semantic read-back and reviewed support result for the unchanged staged Movie Catalog with SHA-256 d6f15d4062c95574c40f47a993ea7d24dd920fc10736306ae64c3461b5fda15f. Preserve its intentional Appearance request and publish that exact candidate to one private GitHub repository now.",
"prompt": "I approve the exact pre-Compile semantic read-back and reviewed support result for the unchanged staged Movie Catalog with SHA-256 06865cb050ca63e06bdc252fb089198d97f2047d094dd4fe56acb87111cc9d8f. Preserve its intentional Appearance request and publish that exact candidate to one private GitHub repository now.",
"expectations": [
"Requires the installed CLI to expose both plan compile completion modes and no public plan publish command.",
"In the same continuing session, treats the prompt as unambiguous approval of the complete semantic model and reviewed nonempty GapSet, and does not ask for a second confirmation or repeat the unchanged read-back.",
Expand All @@ -1574,7 +1574,7 @@
{
"id": "compile-prepared-drawing-board-application",
"should_trigger": true,
"prompt": "I approve the exact pre-Compile Drawing Board semantic read-back and reviewed support result for the unchanged staged Movie Catalog with SHA-256 d6f15d4062c95574c40f47a993ea7d24dd920fc10736306ae64c3461b5fda15f. Materialize that exact candidate into the absent ./application directory. Do not create a GitHub repository.",
"prompt": "I approve the exact pre-Compile Drawing Board semantic read-back and reviewed support result for the unchanged staged Movie Catalog with SHA-256 06865cb050ca63e06bdc252fb089198d97f2047d094dd4fe56acb87111cc9d8f. Materialize that exact candidate into the absent ./application directory. Do not create a GitHub repository.",
"expectations": [
"Requires the installed CLI to expose plan compile --output as a direct local completion mode while retaining plan compile --github as the separate GitHub Publication mode.",
"In the same continuing session as precompile-drawing-board-read-back, treats the prompt as unambiguous approval of the complete semantic model, reviewed nonempty GapSet, exact Plan bytes, and selected direct local mode; and asks for no second confirmation.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000902",
"graph_version": 1,
"head_source_sha256": "9f07c5b77e6dc96c2cd733ac04781abd5b5bfc6ea336a36c4f49a0116bd7f47e",
"analyzer_release": "foundation-plan-rails/application-2026-09-28-controller-create-context",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-28-controller-create-context",
"head_source_sha256": "27d8d5cf60c5bc64496139d52559de130714fa5dd5e9e741921da4bffce297c2",
"analyzer_release": "foundation-plan-rails/application-2026-10-20-rails-8-1-4",
"compiler_release": "foundation-plan-rails/compiler-application-2026-10-20-rails-8-1-4",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"status": "analysis_failed",
"diagnostics": [],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,31 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000906",
"graph_version": 1,
"head_source_sha256": "d6f15d4062c95574c40f47a993ea7d24dd920fc10736306ae64c3461b5fda15f",
"analyzer_release": "foundation-plan-rails/application-2026-09-28-controller-create-context",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-28-controller-create-context",
"head_source_sha256": "06865cb050ca63e06bdc252fb089198d97f2047d094dd4fe56acb87111cc9d8f",
"analyzer_release": "foundation-plan-rails/application-2026-10-20-rails-8-1-4",
"compiler_release": "foundation-plan-rails/compiler-application-2026-10-20-rails-8-1-4",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"status": "valid",
"diagnostics": [],
"gap_set": {
"format": "firstdraft.foundation-gaps/2",
"source": {
"sha256": "d6f15d4062c95574c40f47a993ea7d24dd920fc10736306ae64c3461b5fda15f"
"sha256": "06865cb050ca63e06bdc252fb089198d97f2047d094dd4fe56acb87111cc9d8f"
},
"project": {
"id": "01900000-0000-7000-8000-000000000021",
"graph_version": 1
},
"analysis": {
"release": "foundation-plan-rails/application-2026-09-28-controller-create-context"
"release": "foundation-plan-rails/application-2026-10-20-rails-8-1-4"
},
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-28-controller-create-context",
"compiler_release": "foundation-plan-rails/compiler-application-2026-10-20-rails-8-1-4",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"gaps": [
{
Expand All @@ -45,7 +45,7 @@
}
]
},
"gap_set_sha256": "82a2dedf411a3ea673badc5319d90acf7fcaea098bc7baf6b3364796c965a8d4",
"gap_set_sha256": "cb81581d2bbca8d66b52158c3252bd168d8b4f2d230d76993aed9c4e404dc92a",
"started_at": "2026-07-30T12:03:00.000Z",
"completed_at": "2026-07-30T12:03:01.000Z"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "movie_catalog",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,35 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000905",
"graph_version": 1,
"head_source_sha256": "b7369e48d1e01418a045d82b1a46e1b4a24b1d472ed20add0af46d402fea39fc",
"analyzer_release": "foundation-plan-rails/application-2026-09-28-controller-create-context",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-28-controller-create-context",
"head_source_sha256": "f5efede3cda3261314601358bab6e189959c74cefec10418a2be2eb47f73552d",
"analyzer_release": "foundation-plan-rails/application-2026-10-20-rails-8-1-4",
"compiler_release": "foundation-plan-rails/compiler-application-2026-10-20-rails-8-1-4",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"status": "valid",
"diagnostics": [],
"gap_set": {
"format": "firstdraft.foundation-gaps/2",
"source": {
"sha256": "b7369e48d1e01418a045d82b1a46e1b4a24b1d472ed20add0af46d402fea39fc"
"sha256": "f5efede3cda3261314601358bab6e189959c74cefec10418a2be2eb47f73552d"
},
"project": {
"id": "01900000-0000-7000-8000-000000000020",
"graph_version": 1
},
"analysis": {
"release": "foundation-plan-rails/application-2026-09-28-controller-create-context"
"release": "foundation-plan-rails/application-2026-10-20-rails-8-1-4"
},
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-28-controller-create-context",
"compiler_release": "foundation-plan-rails/compiler-application-2026-10-20-rails-8-1-4",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"gaps": []
},
"gap_set_sha256": "dbee576eddfebf638104f92d1a28843e006ce4bfe94f7eb84d53d2efa9dee4cd",
"gap_set_sha256": "968bda7d909286ee6c731093e4ef7c9f1bb8ca41daf4ee5942838be1b95c3256",
"started_at": "2026-07-30T12:02:00.000Z",
"completed_at": "2026-07-30T12:02:01.000Z"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "movie_catalog",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "oscar_party",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "movie_preview",
Expand Down
10 changes: 5 additions & 5 deletions evals/create-full-stack-app/fixtures/issues-found-analysis.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000901",
"graph_version": 1,
"head_source_sha256": "603567c344fe5b0e46d20eeec229c5a2726fa1b4212467dc713c38295b2df85f",
"analyzer_release": "foundation-plan-rails/application-2026-09-28-controller-create-context",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-28-controller-create-context",
"head_source_sha256": "feb7d2d716b98fc2fb3c84f4c261e84ff683d1ba553d28430eb3dc682818c9f9",
"analyzer_release": "foundation-plan-rails/application-2026-10-20-rails-8-1-4",
"compiler_release": "foundation-plan-rails/compiler-application-2026-10-20-rails-8-1-4",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"status": "issues_found",
"diagnostics": [
{
"code": "foundation_plan.identity.reserved_constant_collision",
"severity": "error",
"message": "Rails target profile \"rails-sketch/2026-09-bookmark-assets\" reserves top-level constant \"String\", generated by Entity \"string\".",
"message": "Rails target profile \"rails-sketch/2026-10\" reserves top-level constant \"String\", generated by Entity \"string\".",
"location": {
"source_pointer": "/application/entities/0/key"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000907",
"graph_version": 1,
"head_source_sha256": "00723c6e838dcd4c1c2ed96d2a82c64806843b619cbba6edf63dede4d829ba15",
"analyzer_release": "foundation-plan-rails/application-2026-09-28-controller-create-context",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-28-controller-create-context",
"head_source_sha256": "5073839c3174aebf1d1377f315fb30358f793ea6bad5541c315190e55971295d",
"analyzer_release": "foundation-plan-rails/application-2026-10-20-rails-8-1-4",
"compiler_release": "foundation-plan-rails/compiler-application-2026-10-20-rails-8-1-4",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"status": "issues_found",
"diagnostics": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "movie_catalog",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "workshop_habits",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000904",
"graph_version": 2,
"head_source_sha256": "ce6c5037e410718e871eecd89f9ce55797fdb88e27a13ce19a7eeb91ba30d032",
"analyzer_release": "foundation-plan-rails/application-2026-09-28-controller-create-context",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-28-controller-create-context",
"head_source_sha256": "cb1b559139359872ad8ea13ae716f759e9b853967b5d46104821beaa387e3d70",
"analyzer_release": "foundation-plan-rails/application-2026-10-20-rails-8-1-4",
"compiler_release": "foundation-plan-rails/compiler-application-2026-10-20-rails-8-1-4",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"status": "issues_found",
"diagnostics": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "movies",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "rating_returns",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "movies",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "movies",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "Movie Catalog",
Expand Down
8 changes: 4 additions & 4 deletions evals/create-full-stack-app/fixtures/superseded-analysis.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
"analysis": {
"id": "01900000-0000-7000-8000-000000000903",
"graph_version": 2,
"head_source_sha256": "9f07c5b77e6dc96c2cd733ac04781abd5b5bfc6ea336a36c4f49a0116bd7f47e",
"analyzer_release": "foundation-plan-rails/application-2026-09-28-controller-create-context",
"compiler_release": "foundation-plan-rails/compiler-application-2026-09-28-controller-create-context",
"head_source_sha256": "27d8d5cf60c5bc64496139d52559de130714fa5dd5e9e741921da4bffce297c2",
"analyzer_release": "foundation-plan-rails/application-2026-10-20-rails-8-1-4",
"compiler_release": "foundation-plan-rails/compiler-application-2026-10-20-rails-8-1-4",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"status": "superseded",
"diagnostics": [],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "ranked_tasks",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"format": "firstdraft.foundation-plan.sketch/0.23",
"target": {
"id": "rails",
"profile": "rails-sketch/2026-09-bookmark-assets"
"profile": "rails-sketch/2026-10"
},
"application": {
"key": "movies",
Expand Down
Loading
Loading