Skip to content

[M054] GSD v2 Planning Artifact Repair #93

@keithah

Description

@keithah

Roadmap source: kodiai-roadmap.md

  • Phase: Phase 2 — Truthful Planning Surface
  • Milestone: M054

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.

Verify contract

  • Command: bun run verify:m054:s01
  • Script: scripts/verify-m054-s01.ts
  • Check IDs: queue_contains_all_queued_context_docs, queue_omits_completed_milestones, queue_lists_new_m053_through_m060.
  • 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.

Files to touch

  • .gsd/milestones/M035/...gsd/milestones/M043/ — create (nine folders).
  • .gsd/DECISIONS.md — append D-M054-01.

Verify contract

  • Command: bun run verify:m054:s02
  • Script: scripts/verify-m054-s02.ts
  • Check IDs: folder_exists_for_each_milestone, summary_has_required_frontmatter, decision_record_present.
  • 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).
  • M049 SUMMARY captures whatever verify:m049:s02 validates.
  • 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.

Files to touch

  • .gsd/milestones/M048/...gsd/milestones/M052/ — create (four folders; M051 already exists).

Verify contract

  • Command: bun run verify:m054:s03
  • Script: scripts/verify-m054-s03.ts
  • Check IDs: folder_exists_m048, folder_exists_m049, folder_exists_m050, folder_exists_m052, m052_slice_folders_present, summaries_reference_verify_scripts.
  • 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/S01verify: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:m051": "bun scripts/verify-m051.ts".
  • 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.

Verify contract

  • Command: bun run verify:m054:s04
  • Script: scripts/verify-m054-s04.ts
  • Check IDs: verify_m051_script_exists, verify_m051_registered, verify_m052_slice_scripts_registered, complete_milestones_have_verifier_or_rationale.
  • Status codes: m054_s04_ok, m054_s04_missing_script, m054_s04_unregistered_script.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions