Files
msd-core/docs/features/review-dispositions-ledger.md
Jakub Zych a9a7a328e6 refactor: hard-fork GSD -> MSD (Make Software Done)
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.
2026-10-06 01:47:40 +02:00

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