fix(intent): M1 + M2 — the parser fails closed; --approve reaches any brief file
M1: headings inside fenced code blocks and HTML comments are text, not headings, and ## Intent / ## Goal must each appear exactly once. A second section, an example section in a code block or comment, or a '## ' line in a code block inside Intent no longer carries the old approval: check gives INVALID (duplicate) or STALE, stamp refuses a duplicate. A plain brief hashes exactly as before (pinned), so no stamped brief goes stale. Re-run of the PM's 29 probes: vi-a, vi-b, vii-a, vii-b now stop; the rest unchanged. The PM's p7c probe was a no-op (its replace string is not in the base brief); vii-c is covered by its own test, red on66e1fa1. M2: /trekbrief --approve takes <project-dir | brief-file>. New intent-approval.mjs --resolve decides: a directory → <dir>/brief.md and /trekplan --project; a file → itself and /trekplan --brief. Phase 4h and the stamp line use {BRIEF_PATH}; /trekplan's halt table names /trekbrief --approve {brief_path}, which works on both brief modes, and so does the gate's hint. HANDOVER-CONTRACTS' "open to every producer's brief" is now true. Chose fixing the path over rewording the contract because two real briefs (docs/*-brief.md) had no approval path at all. Redff760ed9/29 → green 29/29. Suite 1219: 1217 pass / 0 fail / 2 skip. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
ff760edba2
commit
20f32bb06b
7 changed files with 129 additions and 45 deletions
|
|
@ -305,8 +305,8 @@ test('/trekbrief --approve is a parsed flag and a documented mode', async () =>
|
|||
assert.equal(r.flags['--approve'], '.claude/projects/2026-09-23-dark-mode-toggle');
|
||||
assert.deepEqual(r.unknown, []);
|
||||
assert.deepEqual(r.errors, []);
|
||||
assert.match(read('commands/trekbrief.md'), /--approve <project-dir>/);
|
||||
assert.match(read('docs/command-modes.md'), /`--approve <project-dir>`/);
|
||||
assert.match(read('commands/trekbrief.md'), /--approve <project-dir \| brief-file>/);
|
||||
assert.match(read('docs/command-modes.md'), /`--approve <project-dir \\\| brief-file>`/);
|
||||
});
|
||||
|
||||
// ---- M1: the parser fails CLOSED on extra, hidden or cut-off sections ----
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue