| 1 |
grammar_cutover |
Switch parser and check grammar in plan.mjs to hyphen forms: review headings, finding separators, empty Depends and queue cells; update every plan-cli fixture and assertion that pins the em-dash forms; migrate the live queue's empty "Depends on" sentinel to - |
plugins/plan-lifecycle/skills/productivity/plan-manager/scripts/plan.mjs, scripts/tests/plan-cli.mjs, docs/PLAN-QUEUE.md |
- |
local |
done |
Hyphen records parse as trusted; em-dash records are ineligible; empty Depends is -; next reads the migrated queue; plan-cli suite passes |
| 2 |
body_dash_ban |
Refuse any em dash in a plan body inside checkPlan with its own check 10 message; refuse U+2014 in the title and goal inside new prevalidation before gh issue create; refuse U+2014 in the status ... blocked --reason text before the composed-body write; all with test coverage |
plugins/plan-lifecycle/skills/productivity/plan-manager/scripts/plan.mjs, scripts/tests/plan-cli.mjs |
1 |
local |
done |
check exits 1 naming the em-dash rule for a body containing one; new with an em-dash goal or title exits 1 and creates no issue; status <n> blocked --reason with an em dash exits 1 and leaves the issue unchanged; hyphen bodies pass; the "13 checks" count is unchanged |
| 3 |
durable_policy |
Add the shared durable-solutions rule to plan-manager drafting, plan-reviewer findings, both shipped wrappers, both Codex wrapper TOMLs, the codex templates, and the record standard with its byte-identical mirrors, pinned in the phase tests |
plugins/plan-lifecycle/skills/productivity/plan-manager/SKILL.md, plugins/plan-lifecycle/skills/productivity/plan-reviewer/SKILL.md, plugins/plan-lifecycle/agents/plan-reviewer.md, plugins/plan-lifecycle/agents/code-reviewer.md, .codex/agents/plan-reviewer.toml, .codex/agents/code-reviewer.toml, plugins/plan-lifecycle/skills/productivity/plan-workspace/references/codex-agent-templates.md, plugins/plan-lifecycle/skills/productivity/plan-manager/references/plan-contract.md, docs/PLAN.md, plugins/plan-lifecycle/skills/productivity/plan-workspace/references/plan-md-template.md, scripts/tests/plan-skill-phases.mjs |
- |
local |
done |
Each surface states: durable root-cause solutions only; a temporary fix requires an explicit user request recorded in the plan; reviewers treat an unrequested temporary fix as a finding; the shared clause is pinned and docs/PLAN.md stays byte-identical to the template fence |
| 4 |
docs_grammar |
Rewrite the documented record grammar and remove every remaining em dash across the contract, docs/PLAN.md, the workspace template and SKILLs, the reviewer SKILL, the lifecycle authoring node, codex templates, and selftest comment; update plan-skill-phases pins; add finished-plan fixtures pinning that em-dash-era records are ineligible under the new grammar |
plugins/plan-lifecycle/skills/productivity/plan-manager/references/plan-contract.md, docs/PLAN.md, plugins/plan-lifecycle/skills/productivity/plan-workspace/references/plan-md-template.md, plugins/plan-lifecycle/skills/productivity/plan-workspace/SKILL.md, plugins/plan-lifecycle/skills/productivity/plan-manager/SKILL.md, plugins/plan-lifecycle/skills/productivity/plan-reviewer/SKILL.md, plugins/plan-lifecycle/skills/AGENTS.md, plugins/plan-lifecycle/test/selftest.mjs, scripts/tests/plan-skill-phases.mjs, scripts/tests/plan-cli.mjs |
1 |
local |
done |
Zero U+2014 bytes remain in lifecycle-owned skills, references, wrappers, the authoring node, docs/PLAN.md, and both test suites; docs/PLAN.md stays byte-identical to the template fence; a legacy em-dash record on a closed plan yields no trusted verdict in show; phase tests pass |
| 5 |
hash_gate |
Re-sync skill content hashes and pass the plugin gate |
plugins/plan-lifecycle/skills/productivity/plan-manager/SKILL.md, plugins/plan-lifecycle/skills/productivity/plan-reviewer/SKILL.md, plugins/plan-lifecycle/skills/productivity/plan-workspace/SKILL.md |
1, 2, 3, 4 |
local |
done |
node scripts/ci.mjs --plugin plan-lifecycle exits 0 |
Goal
Cut the plan record grammar and lifecycle text over from em dashes to hyphens, refuse em dashes in plan bodies, and require every plan to deliver durable solutions with temporary fixes allowed only on an explicit user request
Mode: plan-and-implement
Research
### Plan review - <UTC date>,### Code review round <n> - <UTC date>, finding separator " - " (space hyphen space), empty Depends and "Depends on" cells-. Em-dash records become ineligible; the latest well-formed hyphen record per kind wins as today.edit, which validates with the new checks; laterstepandstatuswrites then pass the full-validation gate. Closed plans keep their em-dash records as history and are never migrated.showandarchivedo re-read verdicts throughreviewSummaryand the archive verifier, so after the cutover an em-dash-era record is ineligible:showon such a closed plan reports no trusted review verdicts, and a hypotheticalarchiveretry would refuse for a missingCode-review: pass. That is the accepted trade for a total ban; fixtures pin both behaviors.Steps
-localdone-;nextreads the migrated queue; plan-cli suite passesnewprevalidation beforegh issue create; refuse U+2014 in thestatus ... blocked --reasontext before the composed-body write; all with test coveragelocaldonecheckexits 1 naming the em-dash rule for a body containing one;newwith an em-dash goal or title exits 1 and creates no issue;status <n> blocked --reasonwith an em dash exits 1 and leaves the issue unchanged; hyphen bodies pass; the "13 checks" count is unchangedlocaldonelocaldoneshow; phase tests passlocaldonenode scripts/ci.mjs --plugin plan-lifecycleexits 0Acceptance
node scripts/tests/plan-cli.mjsnode scripts/tests/plan-skill-phases.mjsnode plugins/plan-lifecycle/test/selftest.mjsnode scripts/ci.mjs --plugin plan-lifecyclenode scripts/ci.mjsalso exits 0 because the diff spans repo-wide surfacesDo not touch
docs/plans/finished/- frozen historyOpen questions
None
Review
Review records are stored in issue comments.
Verification Results
node scripts/tests/plan-cli.mjs- exit 0: hyphen grammar trusted, em-dash records ineligible, body/title/goal/reason U+2014 refusals covered, legacy finished-plan records yield no trusted verdict.node scripts/tests/plan-skill-phases.mjs- exit 0: durable-policy clause pinned on every surface, hyphen grammar pins, zero-U+2014 assertions.node plugins/plan-lifecycle/test/selftest.mjs- exit 0.node scripts/ci.mjs --plugin plan-lifecycle- exit 0; fullnode scripts/ci.mjsalso exit 0 (3 plugins + repo-wide; diff spans repo-wide surfaces).