Skip to content

Commit 2f61b2e

Browse files
committed
test(devx): make the subtree-declaration ablation case non-vacuous
Measured on the ablation run: with both declarations removed there is no subtree hint to strip, so `silent === silent` read as a pass while the two cases above it went red. The length check makes the strip real. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
1 parent e630c86 commit 2f61b2e

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

scripts/pm/dispatch-gates.mjs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3799,8 +3799,14 @@ function selfTest() {
37993799
const undeclared = entry ? { ...entry, hints: entry.hints.filter((h) => !h.includes('/*')) } : null;
38003800
t(
38013801
`…and it is the subtree declaration doing it: strip it and ${gate} goes back to silent`,
3802-
undeclared ? classifyEntry(undeclared, [unwrittenScript]).verdict === 'silent' : false,
3803-
JSON.stringify(undeclared?.hints),
3802+
// The length check is what stops this passing VACUOUSLY. With no subtree
3803+
// hint to remove, `undeclared` is the entry itself and `silent === silent`
3804+
// reads as a pass — measured, on the ablation run that removed both
3805+
// declarations: this case stayed green while the two above went red.
3806+
Boolean(undeclared) &&
3807+
undeclared.hints.length < entry.hints.length &&
3808+
classifyEntry(undeclared, [unwrittenScript]).verdict === 'silent',
3809+
JSON.stringify({ before: entry?.hints?.length, after: undeclared?.hints?.length }),
38043810
);
38053811
}
38063812

0 commit comments

Comments
 (0)