Skip to content

feat: add the gate-standard local qualification campaign - #386

Merged
abrichr merged 2 commits into
mainfrom
claude/qualification-gate-campaign-v1
Aug 22, 2026
Merged

feat: add the gate-standard local qualification campaign#386
abrichr merged 2 commits into
mainfrom
claude/qualification-gate-campaign-v1

Conversation

@abrichr

@abrichr abrichr commented Aug 22, 2026

Copy link
Copy Markdown
Member

What

Rebuilds the qualification campaign fixture to the production gate standard (AGENTS.md §2), reusing the bounded synthetic campaign structure and fail-closed conventions proven by the real-RDP multi-window campaign (#327) on a fully local, deterministic substrate.

  • benchmark/qualification_gate/campaign.json — machine-readable condition contract: 11 conditions × 3 trials, required metrics incl. silent_incorrect_successes and over_halts, ≥3 uncertain-delivery conditions.
  • benchmark/qualification_gate/fixture.py — deterministic Pillow-rendered app; SQLite system of record (records) plus an independent persisted input-event surface (input_events); guarded actuation backend; fault injection at observation/state/transport boundaries only.
  • benchmark/qualification_gate/run_campaign.py — Recorder → compiler → Standard-profile run gate → qualification case authority → Replayer → independent effect verifiers. Counted summary refuses to write without every required counter; harness fails closed on a diverged contract. Every delivered input edge carries its own exact one-write effect contract, so duplicate or phantom edges fail independent verification.
  • benchmark/qualification_gate/policy.yaml, README.md (honest scope label; hosted-only transport faults marked), results.json (retained local acceptance run).
  • tests/test_qualification_gate_campaign.py — runs the 33-trial campaign once and asserts the full gate standard on counted results, plus fast fail-closed unit tests (diverged contract refusals, summary guard).

Why

The current fixture evidence was below the gate standard (≈1 run per case). This provides the counted 3-trials-per-condition matrix with explicit failure-class counters that the admission chain requires.

Local acceptance run (exact head f819d69)

33 trials, wall ≈562 s, all passed: 12 verified outcomes (healthy, row_reordered, moderate drift ×3 each + uncertain write-kept ×3), 15 safe halts (severe drift, duplicate save control, partial render, wrong record, stale identity ×3 each), 18 RECONCILIATION_REQUIRED outcomes (incl. all 9 uncertain-delivery trials across three conditions). Zeros: silent incorrect successes, over-halts, wrong-record writes, duplicate effects, model calls, blind retries, replay dispatches. Uncertain-delivery invariants asserted per trial: exactly one delivery attempt, retried=False, proof-by-contract or reconciliation.

Boundary

No changes to qualification_admission_v2.py, terminal_verification_v2.py, permit/production-guard/billing files, or migrations. New files only under benchmark/qualification_gate/ plus one new test file.

Cost

One hosted CI pass at this final head. The new test adds ~9 min deterministic runtime to the suite (no Docker/browser/network/model); flagged here for reviewer awareness per CI cost discipline.

Rebuild the qualification campaign fixture to the production gate standard
(three trials per task x condition, explicit silent-incorrect-success and
over-halt counts, and three uncertain-delivery fault conditions that return
RECONCILIATION_REQUIRED with zero blind retries and zero replay dispatches).

The harness reuses the bounded synthetic campaign pattern proven by the
real-RDP multi-window campaign on a fully local substrate: Pillow-rendered
pixels, a SQLite system of record plus an independent input-event surface,
and the unmodified governed runtime (Recorder, compiler, Standard-profile run
gate, qualification case authority, Replayer, independent effect verifiers).
Every delivered input edge carries its own exact one-write effect contract,
so duplicate or phantom edges fail independent verification.

The counted summary refuses to write without every required counter, and the
harness fails closed on a diverged condition contract. tests/
test_qualification_gate_campaign.py runs the 33-trial campaign once and
asserts the full gate standard on its counted results; results.json retains
the local acceptance run.
@abrichr
abrichr merged commit 583041f into main Aug 22, 2026
17 checks passed
@abrichr
abrichr deleted the claude/qualification-gate-campaign-v1 branch August 22, 2026 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant