Skip to content

Commit c493f98

Browse files
committed
tooling(pm): name the failing case instead of throwing when the mixed-shape claim goes null
The ablation of the #16170 anchor died on a TypeError that named neither the row nor the mutation — H34's row-wrapper lesson, applied to the governing-claim cases the widening added. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
1 parent 8ee771f commit c493f98

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

scripts/pm/check-half-states.mjs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15969,14 +15969,20 @@ function selfTest() {
1596915969

1597015970
// The governing claim — the MOST RECENT one, H19's double-check ① reasoning.
1597115971
const gov = (rows) => governingClaim(rows);
15972+
// ⚠️ `?? []` rather than a bare `.branches` on the three-valued return, for
15973+
// the reason H34's row wrapper carries: a case built to go NULL under a
15974+
// mutation must report a NAMED failing case, not throw and abort the suite
15975+
// before the remaining cases run — measured while ablating the #16170 anchor,
15976+
// where the reverse run died on a TypeError naming neither row nor mutation.
15977+
const govBranches = (rows) => (gov(rows)?.branches ?? []).join(',');
1597215978
t('H20 claim: a claim comment naming a branch is found', gov(claim8878).branches.join(','), 'claude/issue-8878-dispatch-latency');
1597315979
t('H20 claim: …and carries its timestamp', gov(claim8878).createdAt, minsAgo20(74));
1597415980
t('H20 claim: a `Branch:` line in a comment that is NOT a claim is ignored', gov([claimRow(minsAgo20(90), 'Branch: `claude/issue-1-a`')]), null);
1597515981
t('H20 claim: a claim comment naming NO branch yields nothing to check', gov([claimRow(minsAgo20(90), 'Claim: seat.\nSession: `session_x`')]), null);
1597615982
// #16170 — the MIXED shape, which is the only malignant one: an undecorated
1597715983
// `Claim:` (so the marker matches and the comment IS a claim) with the branch
1597815984
// written as a bullet under it. It governs now.
15979-
t('H20 claim: the MIXED shape governs — undecorated `Claim:`, bulleted `Branch:` (#16170)', gov([claimRow(minsAgo20(30), 'Claim: this card is held by session `session_x`.\n\n- Branch: `claude/issue-15511-zh-gap-helptext`\n- Worktree: `/home/user/objectstack-15511`')]).branches.join(','), 'claude/issue-15511-zh-gap-helptext');
15985+
t('H20 claim: the MIXED shape governs — undecorated `Claim:`, bulleted `Branch:` (#16170)', govBranches([claimRow(minsAgo20(30), 'Claim: this card is held by session `session_x`.\n\n- Branch: `claude/issue-15511-zh-gap-helptext`\n- Worktree: `/home/user/objectstack-15511`')]), 'claude/issue-15511-zh-gap-helptext');
1598015986
// …while a FULLY bulleted claim governs nothing, the marker having missed it
1598115987
// — and there the sibling's "no claim comment" reading is the true one.
1598215988
t('H20 claim: …and a fully bulleted claim still governs nothing, the marker having missed', gov([claimRow(minsAgo20(30), '- Claim: seat.\n- Branch: `claude/issue-1-a`')]), null);

0 commit comments

Comments
 (0)