You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Slice M054/S01 — Reconcile QUEUE.md with shipped milestones
What this is
.gsd/QUEUE.md still lists M044, M045, M046, and M047 as "Status: queued" — but all four appear complete in PROJECT.md and have .gsd/milestones/ folders with status: complete in their SUMMARY YAML. M048 through M052 have verify scripts in package.json and are referenced in PROJECT.md but do not appear in QUEUE.md at all. QUEUE.md was last coherent around M043.
Why now
QUEUE.md is the single source of truth for "what's next" in GSD v2. Right now it's actively misleading — a future you (or agent) reading it would think M044–M047 are queued.
Acceptance criteria
M044, M045, M046, M047 are removed from QUEUE.md "Pending Milestones" and referenced only as complete (or dropped entirely if PROJECT.md's milestone list covers them).
M048, M049, M050, M051, M052 are all referenced in QUEUE.md with correct status: complete (not queued).
M027, M028, M029, M031, M032 remain queued with unchanged Added dates and context links.
All new milestones from this roadmap (M053–M060) are added to QUEUE.md with status queued, Added: 2026-04-20, and a one-line summary matching this document's milestone table.
A new "Completed Milestones" section is added (or PROJECT.md's list is treated as the source of truth and QUEUE.md links to it).
Files to touch
.gsd/QUEUE.md — full rewrite of Pending Milestones section; add Completed section or reference to PROJECT.md.
Status codes: m054_s01_ok, m054_s01_stale_entry, m054_s01_missing_entry.
Slice M054/S02 — Retrospective milestone folders for M035–M043
What this is
.gsd/milestones/ has folders for M001–M034, M044–M047, and M051. The following nine milestones are referenced as complete in PROJECT.md but have no folder at all: M035, M036, M037, M038, M039, M040, M041, M042, M043.
Some have verify scripts in package.json (M036 has verify:m036:s01..s03; M037 s01..s03; M038 s02..s03; M040 s02..s03; M041 s02..s03; M042 s01..s03), so the slice structure can be reconstructed from the verify script list plus git history. Others (M035, M039, M043) have no verify scripts and have to be reconstructed from CHANGELOG and commits.
Why now
Without these folders, the "lessons learned" context for roughly a quarter of the project's history is in git history only. Any future context-gathering by an agent (or human) is starved.
Acceptance criteria
.gsd/milestones/M035/ through .gsd/milestones/M043/ each exist with at least:
MnXX-CONTEXT.md (retrospective — "what was going on at the time, reconstructed from commits/CHANGELOG").
MnXX-SUMMARY.md (with YAML frontmatter: id, title, status: complete, completed_at best-effort from git log, key_files from largest diffs).
For milestones with existing verify scripts (M036–M038, M040–M042), each slice folder slices/SXX/ is created with a minimal SXX-SUMMARY.md linking to the verify script.
For milestones without verify scripts (M035, M039, M043), the SUMMARY explicitly flags "no verifier shipped; reconstructed from git log".
A short .gsd/DECISIONS.md entry (D-M054-01) records the retrospective-folder convention: a reduced CONTEXT+SUMMARY shape is acceptable when full planning artifacts were never written.
Status codes: m054_s02_ok, m054_s02_missing_folder, m054_s02_missing_summary.
Slice M054/S03 — Retrospective milestone folders for M048–M052
What this is
Companion to S02. M048, M049, M050, M052 are referenced in PROJECT.md and have verify scripts, but no .gsd/milestones/ folder. M051 is the only recent complete milestone with a folder. M052 in particular shipped in v0.30 (2026-04-19) per CHANGELOG.md and introduced POST /webhooks/slack/relay/:sourceId — but the planning/slice artifacts are gone.
Why now
Same as S02, but for the most recent milestones. These are higher-value to reconstruct because the context is still recoverable and because M052 introduced a net-new public surface (Slack webhook relay) that is currently undocumented in .gsd/.
Acceptance criteria
.gsd/milestones/M048/, M049/, M050/, M052/ each exist with CONTEXT.md and SUMMARY.md.
M048 SUMMARY captures: the operator/verifier proof-surface debt seam (shared with M051), the tri-state phase-timing wording, and which slices exist (verify:m048:s01, s02, s03).
M050 SUMMARY flags "no verifier shipped; reconstructed from git log".
M052 SUMMARY captures: POST /webhooks/slack/relay/:sourceId, SLACK_WEBHOOK_RELAY_SOURCES, the fixture-backed verify:m052 proof command, and the relay runbook. Slices S01 and S02 get their own SXX-SUMMARY.md mirroring scripts/verify-m052-s01.ts and scripts/verify-m052-s02.ts.
Status codes: m054_s03_ok, m054_s03_missing_folder, m054_s03_missing_slice.
Slice M054/S04 — Fill verify-script gaps for complete milestones
What this is
Four milestones are marked complete but have no verify script entry in package.json:
M043 (Restore Mention Review Publication) — complete per PROJECT.md, but no verify:m043.
M050 — referenced with scripts but no verify:m050.
M051 — complete; scripts/verify-m051.ts does not exist; package.json has no verify:m051.
M028/S01 — verify:m028:s02, s03, s04 exist but verify:m028:s01 is missing (the gap is conspicuous).
Separately, two orphaned scripts on disk are not in package.json:
scripts/verify-m052-s01.ts and scripts/verify-m052-s02.ts exist but only the umbrella verify:m052 is registered.
Why now
M051's proof surfaces (mention completion logs, publish-resolution logs with lane=interactive-review) are described in PROJECT.md as the contract, but there's no single command that proves them. If a regression reintroduces the retired ai-review team trigger, there's nothing in CI that will catch it.
Acceptance criteria
scripts/verify-m051.ts exists and asserts: (a) @kodiai review is the only manual rereview trigger in config and code paths, (b) mention completion logs + publish-resolution logs carry lane=interactive-review and taskType=review.full, (c) team-only pull_request.review_requested deliveries surface as skipReason=team-only-request, (d) R055 requirement evidence.
package.json gains "verify:m052:s01" and "verify:m052:s02" wired to the existing on-disk scripts.
Decide the right scope for M043 and M050 — either write verify:m043 / verify:m050 or record in each milestone's SUMMARY that no verifier will be shipped and explain why. M028/S01 gets its own slice if the contract is reconstructible.
bun run verify:m051, verify:m052:s01, verify:m052:s02 all pass.
Files to touch
scripts/verify-m051.ts — create.
package.json — add entries.
.gsd/milestones/M043/M043-SUMMARY.md, .gsd/milestones/M050/M050-SUMMARY.md — document verifier-absence decision if that's the path.
Roadmap source:
kodiai-roadmap.mdSlice M054/S01 — Reconcile QUEUE.md with shipped milestones
What this is
.gsd/QUEUE.mdstill lists M044, M045, M046, and M047 as "Status: queued" — but all four appear complete in PROJECT.md and have.gsd/milestones/folders withstatus: completein their SUMMARY YAML. M048 through M052 have verify scripts inpackage.jsonand are referenced in PROJECT.md but do not appear in QUEUE.md at all. QUEUE.md was last coherent around M043.Why now
QUEUE.md is the single source of truth for "what's next" in GSD v2. Right now it's actively misleading — a future you (or agent) reading it would think M044–M047 are queued.
Acceptance criteria
complete(notqueued).Addeddates and context links.queued,Added: 2026-04-20, and a one-line summary matching this document's milestone table.Files to touch
.gsd/QUEUE.md— full rewrite of Pending Milestones section; add Completed section or reference to PROJECT.md.Verify contract
bun run verify:m054:s01scripts/verify-m054-s01.tsqueue_contains_all_queued_context_docs,queue_omits_completed_milestones,queue_lists_new_m053_through_m060.m054_s01_ok,m054_s01_stale_entry,m054_s01_missing_entry.Slice M054/S02 — Retrospective milestone folders for M035–M043
What this is
.gsd/milestones/has folders for M001–M034, M044–M047, and M051. The following nine milestones are referenced as complete in PROJECT.md but have no folder at all: M035, M036, M037, M038, M039, M040, M041, M042, M043.Some have verify scripts in
package.json(M036 hasverify:m036:s01..s03; M037s01..s03; M038s02..s03; M040s02..s03; M041s02..s03; M042s01..s03), so the slice structure can be reconstructed from the verify script list plus git history. Others (M035, M039, M043) have no verify scripts and have to be reconstructed from CHANGELOG and commits.Why now
Without these folders, the "lessons learned" context for roughly a quarter of the project's history is in git history only. Any future context-gathering by an agent (or human) is starved.
Acceptance criteria
.gsd/milestones/M035/through.gsd/milestones/M043/each exist with at least:MnXX-CONTEXT.md(retrospective — "what was going on at the time, reconstructed from commits/CHANGELOG").MnXX-SUMMARY.md(with YAML frontmatter:id,title,status: complete,completed_atbest-effort from git log,key_filesfrom largest diffs).slices/SXX/is created with a minimalSXX-SUMMARY.mdlinking to the verify script..gsd/DECISIONS.mdentry (D-M054-01) records the retrospective-folder convention: a reduced CONTEXT+SUMMARY shape is acceptable when full planning artifacts were never written.Files to touch
.gsd/milestones/M035/...gsd/milestones/M043/— create (nine folders)..gsd/DECISIONS.md— append D-M054-01.Verify contract
bun run verify:m054:s02scripts/verify-m054-s02.tsfolder_exists_for_each_milestone,summary_has_required_frontmatter,decision_record_present.m054_s02_ok,m054_s02_missing_folder,m054_s02_missing_summary.Slice M054/S03 — Retrospective milestone folders for M048–M052
What this is
Companion to S02. M048, M049, M050, M052 are referenced in PROJECT.md and have verify scripts, but no
.gsd/milestones/folder. M051 is the only recent complete milestone with a folder. M052 in particular shipped inv0.30 (2026-04-19)perCHANGELOG.mdand introducedPOST /webhooks/slack/relay/:sourceId— but the planning/slice artifacts are gone.Why now
Same as S02, but for the most recent milestones. These are higher-value to reconstruct because the context is still recoverable and because M052 introduced a net-new public surface (Slack webhook relay) that is currently undocumented in
.gsd/.Acceptance criteria
.gsd/milestones/M048/,M049/,M050/,M052/each exist withCONTEXT.mdandSUMMARY.md.verify:m048:s01,s02,s03).verify:m049:s02validates.POST /webhooks/slack/relay/:sourceId,SLACK_WEBHOOK_RELAY_SOURCES, the fixture-backedverify:m052proof command, and the relay runbook. Slices S01 and S02 get their ownSXX-SUMMARY.mdmirroringscripts/verify-m052-s01.tsandscripts/verify-m052-s02.ts.Files to touch
.gsd/milestones/M048/...gsd/milestones/M052/— create (four folders; M051 already exists).Verify contract
bun run verify:m054:s03scripts/verify-m054-s03.tsfolder_exists_m048,folder_exists_m049,folder_exists_m050,folder_exists_m052,m052_slice_folders_present,summaries_reference_verify_scripts.m054_s03_ok,m054_s03_missing_folder,m054_s03_missing_slice.Slice M054/S04 — Fill verify-script gaps for complete milestones
What this is
Four milestones are marked complete but have no verify script entry in
package.json:verify:m043.verify:m050.scripts/verify-m051.tsdoes not exist;package.jsonhas noverify:m051.verify:m028:s02,s03,s04exist butverify:m028:s01is missing (the gap is conspicuous).Separately, two orphaned scripts on disk are not in
package.json:scripts/verify-m052-s01.tsandscripts/verify-m052-s02.tsexist but only the umbrellaverify:m052is registered.Why now
M051's proof surfaces (mention completion logs, publish-resolution logs with
lane=interactive-review) are described in PROJECT.md as the contract, but there's no single command that proves them. If a regression reintroduces the retiredai-reviewteam trigger, there's nothing in CI that will catch it.Acceptance criteria
scripts/verify-m051.tsexists and asserts: (a)@kodiai reviewis the only manual rereview trigger in config and code paths, (b) mention completion logs + publish-resolution logs carrylane=interactive-reviewandtaskType=review.full, (c) team-onlypull_request.review_requesteddeliveries surface asskipReason=team-only-request, (d) R055 requirement evidence.package.jsongains"verify:m051": "bun scripts/verify-m051.ts".package.jsongains"verify:m052:s01"and"verify:m052:s02"wired to the existing on-disk scripts.verify:m043/verify:m050or record in each milestone's SUMMARY that no verifier will be shipped and explain why. M028/S01 gets its own slice if the contract is reconstructible.bun run verify:m051,verify:m052:s01,verify:m052:s02all pass.Files to touch
scripts/verify-m051.ts— create.package.json— add entries..gsd/milestones/M043/M043-SUMMARY.md,.gsd/milestones/M050/M050-SUMMARY.md— document verifier-absence decision if that's the path.Verify contract
bun run verify:m054:s04scripts/verify-m054-s04.tsverify_m051_script_exists,verify_m051_registered,verify_m052_slice_scripts_registered,complete_milestones_have_verifier_or_rationale.m054_s04_ok,m054_s04_missing_script,m054_s04_unregistered_script.