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
fix(pm): correct stale four/two-copy decision-frame comments to two-copy truth (#15105)
check:skill-frame-sync's COPIES table dropped from four entries to two
(internal-pm, published-pm) when the dev-side frame copies were retired —
the dev prompt now receives the frame pasted from the PM's own copy at
dispatch time instead of embedding one. Six comments across
dispatch-gates.mjs, check-skill-line-ratchet.mjs and
check-skills-token-ratchet.mjs still described the old four/two-copy state
as present-tense fact; this rewrites them to the current truth without
touching any behaviour, verdict line, or ceiling value (every affected
self-test prints the identical case count before and after).
Also moves dispatch-gates.mjs's `--changed` flag from a whole-invocation
usage-line alternative (implying it excludes --commands/--json) to the
position `<path> ...` occupies, matching how #15036 placed --residue —
`--changed --commands` is legal and answers, so the old line advertised a
refusal the argv chain does not make. New self-test pins lock the fix,
including a live CONTROL that the combination really works.
Fixes#14870
Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
Co-authored-by: Claude <noreply@anthropic.com>
why: 'clause ① (2026-08-20 narrowing): the dev-agent definition is protocol semantics — every dispatched dev runs under it, and it carries an enforced copy of the decision frame',
8567
+
why: 'clause ① (2026-08-20 narrowing): the dev-agent definition is protocol semantics — every dispatched dev runs under it, and receives the decision frame the PM pastes into its prompt at dispatch time rather than carrying a copy of its own',
8568
8568
},
8569
8569
{
8570
8570
glob: 'skills/objectstack-pm-dispatch/SKILL.md',
8571
8571
tier: CONTRACT_REVIEW_TIER,
8572
-
why: 'clause ① (2026-08-20 narrowing): the published PM skill carries two enforced copies of the decision frame (check:skill-frame-sync COPIES) and ships verbatim to third-party projects',
8572
+
why: 'clause ① (2026-08-20 narrowing): the published PM skill carries one enforced copy of the decision frame (check:skill-frame-sync COPIES) and ships verbatim to third-party projects',
8573
8573
},
8574
8574
];
8575
8575
@@ -16397,7 +16397,7 @@ function selfTest() {
16397
16397
const fableOf = (paths) => deriveTier(paths);
16398
16398
t('the pm-dispatch SKILL.md MAIN file is fable-mandatory', fableOf(['.claude/skills/pm-dispatch/SKILL.md']).tier === CONTRACT_REVIEW_TIER);
16399
16399
t('the dev-agent definition is fable-mandatory', fableOf(['.claude/agents/os-dev.md']).tier === CONTRACT_REVIEW_TIER);
16400
-
t('the published PM skill (two enforced frame copies) is fable-mandatory', fableOf(['skills/objectstack-pm-dispatch/SKILL.md']).tier === CONTRACT_REVIEW_TIER);
16400
+
t('the published PM skill (one enforced frame copy) is fable-mandatory', fableOf(['skills/objectstack-pm-dispatch/SKILL.md']).tier === CONTRACT_REVIEW_TIER);
16401
16401
t('a pm-dispatch REFERENCES path carries NO path mandate — the 2026-08-20 narrowing, inverted from the pre-narrowing pin', fableOf(['.claude/skills/pm-dispatch/references/review-checklist.md']).mandatory === false);
0 commit comments