test(autonomy): grade the security-binding golden suite — 109 fixtures, zero orphans - #708
Conversation
…s, zero orphans Table-driven runner + co-located expectations manifest run every security-binding fixture through check-security-binding.mjs and assert exit code + defect-naming findings (14 pass-expected incl. two evidence-input pairings, 95 reject-expected, zero quarantined, zero name-vs-behavior mismatches). The manifest also enumerates the 67 probe transcripts the fixtures consume as inputs; the runner self-polices both directions (ungraded fixture, unlisted transcript, or dangling manifest ref all fail). A thin .test.sh wrapper joins the repo's plugins/** test discovery. The orphaned-fixtures baseline drops all 178 security-binding lines — the gate now sees the set as consumed, and the stale-guard would refuse the entries anyway. Bump 0.7.3 + CHANGELOG. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 3m 14s —— View job PR Review
Overall this is well-executed. The runner logic is correct, the self-policing is bidirectional, and the orphaned-fixture baseline drain is clean. A couple of minor observations worth noting. CorrectnessRunner control flow is correct. The three-phase structure in
The early- Evidence-pairing logic is correct. Stream routing is safe. The checker's contract (findings → stderr, verdicts/evaluation lines → stdout) is documented in the checker itself and the test comment at line 104. The
Minor observations (non-blocking)No No timeout on Shell wrapper
ManifestThe Orphaned-fixture gateAll 178 security-binding lines removed from Version bump and CHANGELOG
Verdict: approve pending the two optional hardening items above. The self-policing guarantees are sound — this is exactly the kind of graded-fixture harness that prevents future regressions silently. |
Review hardening: bounds a hung checker (ETIMEDOUT diagnostic) and makes the output ceiling explicit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Both hardening items applied: spawnSync now passes maxBuffer 10 MiB + timeout 30s (suite re-run green, 394/394). |
|
Claude finished @kyle-sexton's task in 32s —— View job PR Review — Follow-up
Both hardening items from the initial review are correctly applied in const result = spawnSync(process.execPath, args, {
encoding: "utf8",
maxBuffer: 10 * 1024 * 1024,
timeout: 30_000,
});
Both values are well-chosen: 10 MiB is generous for fixture-scale output, and 30s is a clear upper bound for any synchronous checker invocation without being unreasonably tight. This PR is ready to merge. The self-policing guarantees, bidirectional reconciliation, stream routing, and orphaned-fixture baseline drain are all sound — and now hardened against the two edge cases flagged in the first pass. |
Summary
Fix-direction (a) from the issue, per the #634 graded-fixture idiom: every fixture under
plugins/autonomy/skills/setup/evals/fixtures/security-binding/is now graded.check-security-binding.fixtures.test.mjs) + one co-located expectations manifest: each entry pins the checker invocation (--probe-evidence-rootat the fixtures dir; per-fixture--egress-hosts/--evidencewhere needed) and the expected outcome — exit code plus defect-naming stderr substrings. 109 fixtures: 14 pass-expected (12 valid bindings + 2 evidence-input pairings), 95 reject-expected. Zero quarantined — no name-vs-behavior mismatches surfaced.probe-transcripts/suite inputs are enumerated and reconciled against disk both ways.scripts/orphaned-fixtures-baseline.txt; the orphaned-fixture gate (feat(ci): orphaned-fixture + CHANGELOG-parity gates (#663) #681) passes with the set consumed, exactly as its stale-guard demands..test.shwrapper joinsplugins/**CI test discovery. Suite: 394/394 checks pass.validate-plugin-contracts.mjs, orphaned-fixtures--check, changelog-parity--check/--check-bumpall green. Autonomy plugin bumped 0.7.3 with CHANGELOG entry.Note for reviewers: the convention-level decision about the golden-fixture idiom repo-wide stays with #664 (needs-human); this PR instantiates the already-precedented #634 shape for the one suite #662 names, which the issue's own fix-direction (a) authorizes.
Related
Closes #662
🤖 Generated with Claude Code