test(evals): scope-gate assertion carries its evidence tail; file the detector-flake TODO

The plan-design-review member fails ONLY scopeGateQuestionObserved
intermittently on unchanged code (PR #2593: red rounds 3/11 + rerun,
green rounds 5/6 — every attempt terminal, no plan-mode leak), and a
bare Expected-true/Received-false is undiagnosable from CI logs. The
check now throws with the last-2KB visible evidence, so the next
failure distinguishes a detector-sensitivity miss from a real silent
bypass. TODO filed with the full receipt trail.
This commit is contained in:
Garry Tan 2026-08-15 21:22:04 -07:00
parent 5c67b11978
commit c12ca0696d
No known key found for this signature in database
GPG Key ID: C1F69E85C74EFE1D
2 changed files with 31 additions and 1 deletions

View File

@ -2418,6 +2418,22 @@ by shard parallelism; the per-file wall cost remains.
**Where:** test/gstack-gbrain-detect-mcp-mode.test.ts.
**Effort:** S (human ~2h, CC ~15min).
### P2: plan-design-review scope-gate detector is marginal under CI contention
**What:** `plan-design-review reaches a terminal outcome outside plan mode`
(test/skill-e2e-plan-mode-no-op.test.ts) intermittently fails ONLY the
`scopeGateQuestionObserved` check on unchanged code — PR #2593 CI: failed
rounds 3/11 + one rerun, passed rounds 5/6, all attempts reaching a terminal
outcome with no plan-mode leak. Hypothesis: the PTY detector anchors on a
render shape that scrolls out or gets rephrased under 40-way in-shard
contention. The assertion now throws WITH the last-2KB evidence tail, so the
next CI failure carries the screen contents; fix the detector (scan full
scrollback, or widen the anchored shape) from that data.
**Where:** test/helpers/claude-pty-runner.ts (scopeGateQuestionObserved
detector), test/skill-e2e-plan-mode-no-op.test.ts.
**Effort:** S (human ~3h, CC ~20min + one CI round with evidence).
### P3: Diagnose the browser-manager-unit wedge on windows-latest
**What:** The expanded Windows lane wedges to its wall deadline inside

View File

@ -99,7 +99,21 @@ describeE2E('plan-mode-info no-op outside plan mode (gate regression)', () => {
// outcome === 'asked' would let a silent-bypass run that reaches
// plan_ready (isPlanReadyVisible also matches common prose) sail
// through — the exact regression this test exists to catch.
expect(obs.scopeGateQuestionObserved ?? false).toBe(true);
//
// Throw WITH the evidence tail instead of a bare expect: this member
// (plan-design-review especially) intermittently fails ONLY this
// check on unchanged code (PR #2593 rounds 3/11/rerun, passing
// rounds 5/6), and a bare Expected-true/Received-false in CI logs is
// undiagnosable — we can't tell a detector-sensitivity miss (render
// shape scrolled/rephrased) from a real silent bypass without seeing
// what the screen held.
if (!(obs.scopeGateQuestionObserved ?? false)) {
throw new Error(
`scope-gate question NOT observed (${skillName}): outcome=${obs.outcome}\n` +
`elapsed: ${obs.elapsedMs}ms\n` +
`--- evidence (last 2KB visible) ---\n${obs.evidence}`,
);
}
}
}, 360_000);
}