🛡️ Adversarial Verification — assess pilot

#2231 · removes self-preferential bias from evaluative skills · designed by a workflow that dogfooded the pattern

3 blind challengers found all 3 designs unsound (10/10/7 weaknesses) → Opus synthesized the fixes

🔄 The blind-refuter flow

Producer
assessor scores a dimension 0-10 (its own subject)
Blind refuter
sees ONLY the code + rubric + neutral claim — not the score, identity, or prose. Scores independently FIRST.
Orchestrator
compares out-of-band, verifies the citation, applies quorum → ledger

The key fix the adversarial pass forced: the refuter never sees the producer's number — handing it over pre-loads anchoring. It scores from the code itself; the orchestrator (not the refuter) decides SURVIVES/OVERTURNED.

📜 The 10 engine rules (click)

🎯 Scope — ship the safe pilot, defer the risky wiring

The synthesis flagged its own risks: false-negative inversion in a merge gate, "high coordination cost for one PR."

skillthis PRwhy
assessSHIPscores quality — doesn't gate merges or security. Lowest blast radius. Effort-gated Phase 2.5.
review-prDEFERgates merges — false-negative inversion could drop a real blocker. Needs no-auto-flip + conformance enforcement first.
audit-fullDEFERsecurity findings — same risk; deterministic-exemption + cross-file rules must be enforced, not advisory.
conformance graderDEFER"the spec is advisory unless a grader enforces it" — the adoption-gap follow-up.
Honest residual: a one-sided "your job is to REFUTE" pass raises false negatives. For a merge gate that's the costlier error — which is exactly why review-pr/audit-full are deferred until the enforcement gates are real, not just documented.

📦 What lands

Engine: src/skills/shared/rules/adversarial-refutation.md · adapter: src/skills/assess/references/adversarial-refutation.md · designed by the adversarial-verify-design workflow (7 agents)