Mechanical rename produced by scripts/msd-rename.cjs: gsd/Gsd/GSD -> msd/Msd/MSD across contents and paths, upstream package/repo coordinates -> @golem15/msd-core and golem15com/msd-core. Deep links into upstream history, sibling upstream packages, the GSD-2 import feature, CHANGELOG.md and .changeset/ are kept as-is. Hand edits on top: MSD block-letter banner and logos, LICENSE copyright line, package/plugin identity, regenerated lockfile, install-tree fixtures, derived registries and benchmark baseline; migration checksum baseline re-locked (MSD keeps its own install state, so no install had applied the old sums); sort-order and regex-escaped expectations in tests adjusted.
2.4 KiB
id, title, group
| id | title | group |
|---|---|---|
| 3806 | Review Dispositions Ledger | Planning Features |
Purpose: Reviews-mode planning (/msd-plan-phase {N} --reviews) has required every current
actionable REVIEWS.md finding to be incorporated into PLAN.md or explicitly deferred/rejected
there since v1.5.0 (#724/#728). Nothing canonized where in PLAN.md, what shape, or how a
REVIEWS.md line reference survives the next round rewriting the file wholesale. Two
independently-invented, mutually incompatible disposition formats were observed across two
consecutive rounds of the same phase, each written by a different planner subagent instance
improvising from prose alone.
Behavior: The existing return-payload tables from references/planner-reviews.md Step 4 —
### Review Feedback Addressed / ### Review Feedback Deferred — are now the canonical
Review Dispositions Ledger, promoted verbatim in shape into the affected PLAN.md itself under
a ## Review Dispositions Ledger heading. Each reviews-mode round gets its own
### Round {N} — {REVIEWS_sha} subsection, where {REVIEWS_sha} is the commit that wrote that
round's REVIEWS.md snapshot (workflows/review.md already commits REVIEWS.md as its own commit).
A REVIEWS.md line reference cites L##@{REVIEWS_sha}; a bare line number is non-conforming. The
ledger is append-only — a later round adds a new row naming what it supersedes rather than editing
or deleting an earlier round's tables.
The contract is stated once, in references/planner-reviews.md; workflows/plan-phase.md's
<review_incorporation_contract> and agents/msd-plan-checker.md's Review Incorporation dimension
both reference it by name rather than restating it, guarded by a parity test
(tests/plan-review-convergence.test.cjs) that fails if the three drift apart.
{Concern}/{Reason} stay free text — the reviewer roster is capability-owned and open to
third-party additions, so no closed reviewer/severity enum is introduced.
Known limits: No lint or check verb enforces this shape yet — a follow-up (tracked as part 2 of #3806) will add deterministic enforcement once a migration story for the two pre-existing ad-hoc formats already in the wild is decided. Legacy PLAN.md content written before this convention is not migrated or flagged.
Reference: ADR-3806 · Cross-AI Peer Review