Skip to content

Prove the differentiation: gate hardening, priced sizing, a falsifiable roadmap, and 7 real eval runs - #5

Merged
donald-ada merged 16 commits into
mainfrom
claude/plugin-adversarial-review-16g26n
Jul 22, 2026
Merged

Prove the differentiation: gate hardening, priced sizing, a falsifiable roadmap, and 7 real eval runs#5
donald-ada merged 16 commits into
mainfrom
claude/plugin-adversarial-review-16g26n

Conversation

@donald-ada

Copy link
Copy Markdown
Owner

What this does

Turns the plugin from "a workflow with good prose" into "a workflow that can show its evidence." Four product upgrades, a falsifiable roadmap, and the first real end-to-end eval runs — which measured where the plugin actually beats a no-plugin baseline and where it doesn't.

Product changes

  • Gate engine hardened — per-repo Stop-hook enforcement levels warn (default) / block, resolved by the shared parser via a Gate enforcement: line. 53 deterministic tests (red-before-green: 7 new tests failed before, all pass after).
  • Sizing is now a priced, recorded decision/genius announces the path (express/full) with its reason and the measured cost asymmetry, records a **Sizing:** line, and maps "just do it" to delegated mode rather than silent express.
  • README leads with receipts — a claims→evidence table (gate is code / prose is tested / cost is measured / ceremony is priced), each row checkable; plus a brownfield positioning section.
  • ROADMAP.md — five phases, each item with falsifiable acceptance criteria and each phase with a kill-criterion. Passed two rounds of an adversarial subagent review (1 critical + 3 major + 4 minor → all repaired → PASS).

Evidence infrastructure (the differentiator)

  • CI (.github/workflows/gates.yml) runs the deterministic gate suite on every push.
  • Headless eval runner (evals/run-scenario.sh) — builds a scratch, installs/strips skills, de-leaks the baseline's CLAUDE.md, runs claude -p, captures the transcript.
  • 7 real runs recorded in evals/RESULTS.md, blind- or programmatically graded against a no-plugin baseline (sonnet-5):
scenario discipline delta
E1 write the failing test first clean (skill 3/3, baseline 0/3)
W1 question the ask before building it clean (3/3 vs 0/3)
M1 halt at an open gate partial (3/3 vs 1/3)
M2 / T1 / SA size / verify / self-review when asked softball — baseline does it unaided
D1 attack a cold-handed option set inconclusive — drew the thesis boundary

The finding, predictively tested (W1 forecast correct; D1 and SA falsified attempts that sharpened it): the plugin's differentiated value is not in eliciting reflection a capable model already does when asked — it is in forcing the disciplined action at the decision point where the model would otherwise proceed (fail the test first, question the ask, halt at the gate). Two methodology fixes came out of the runs (a CLAUDE.md baseline leak; a work-file scaffold leak), both documented.

Verification

  • bash evals/gates.test.sh → 53/53 green.
  • Every number in the README/skills traces to a RESULTS.md row that states its n; the 11× full-flow cost carries its n=1 bound wherever it appears.

Conflict-free with main (fast-forward). 23 files changed.

🤖 Generated with Claude Code


Generated by Claude Code

claude added 16 commits July 21, 2026 15:20
…lock)

warn (default) keeps the once-per-distinct-bypass behavior; block
re-blocks every stop attempt until the bypass is repaired or recorded
as skipped. Pinned per repo via a 'Gate enforcement:' line in the
## Working Genius section, resolved by the shared parser's new
'enforcement' command so hooks and skills read one source of truth.

Red before green: 7 new deterministic tests failed before the change;
53/53 pass after (bash evals/gates.test.sh).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
/genius now announces the path (express/full) with its one-line reason
and the measured cost asymmetry (the 11x full-flow multiple from
evals/RESULTS.md), invites an overrule instead of presenting a menu,
and records the call as a **Sizing:** line under the work file title
so close-outs can judge sizing against outcomes. "Just do it" on
full-flow-shaped work maps to delegated mode, never express.

New scenario genius.md M4 covers the behavior (authored, not yet run —
model-based scenario runs cost real tokens; RESULTS.md stays honest).
Deterministic suite unaffected: 53/53.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
The six-stage shape is commodity — every workflow tool ships phases.
What this plugin can claim that most cannot: the gate rule is code
with a deterministic test suite, the prose is tested red-before-green
against no-plugin baselines, the cost guidance traces to instrumented
runs (including one recorded reversal), and the ceremony itself is
priced. The README now opens with that claims-to-evidence table and
invites readers to check each row.

Also: scenario counts corrected ("three per skill" -> "three or more"),
and evals/README documents the *(not yet run)* marker for authored-but-
unrun scenarios.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
Every competing workflow tool demos greenfield. This plugin's sharpest
moves — Wonder's prior-art shrinking, blindspot's git-history mining,
Discernment's attack against recorded decisions, the glossary's dialect
collisions — only have material when the repo has history. Say so in
the README as a named section instead of leaving it implicit in skill
bodies. No skill text changed: blindspot's trigger description is
tuned by trigger evals and doesn't move without a run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
Five phases, each an attack on a verified market opening (trust layer,
in-loop cost, standalone gate engine, eval harness as product,
brownfield flagship), each item with acceptance criteria a cold reader
can check, each phase with the evidence that would kill it. Non-goals
decline the occupied categories by name - including the two rare
openings we deliberately pass on (cross-model review, auto-extracted
lessons), with the conditions that would reopen them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
The review (1 critical, 3 major, 4 minor) held. Repairs: 1.1 re-keyed
to ground truth - all 31 scenarios now carry honest (not yet run)
markers (the critical: the marker system had already rotted, so "no
markers remain" was satisfiable by running one scenario); Phase 5
gains the kill-criterion the preamble promised; 1.4 re-premised to
post-tiering (sizing cannot move a full-flow-warranted task's cost);
a portfolio gate caps extractions at one in flight (the spread that
killed GSD); ruflo's budget alerts named instead of flattened to
"nobody"; 3.3/4.3 accepts split from third-party success metrics;
2.3 gets its red-before-green clause; artifact drift declined as a
non-goal with its reason. README's "prose is tested" row now states
coverage honestly instead of implying totality.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
The reviewer's one remaining (minor) finding: "scenarios that back
README claims-table rows" and "highest-stakes per skill" were judgment
calls a cold reader could not verify against the accept clause. Now
the eleven IDs are named in the item - one core-failure-mode scenario
per skill plus M4 for the priced-ceremony claim - and the accept
references exactly those eleven.

Review verdict on this roadmap: round 1 FAIL (1 critical, 3 major,
4 minor - all repaired), round 2 PASS with this one minor, now closed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
.github/workflows/gates.yml runs bash evals/gates.test.sh on pushes and
PRs that touch hooks/ or the suite itself — no model, no network, no
tokens. README carries the status badge. Locally demonstrated the gate
actually gates: breaking the bypass-detection branch turns the suite red
(exit 1, 7 failures) and would block CI; restored to 53/53 green. The
live red-run link lands once GitHub runs the workflow post-push.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
The Token-economics section now opens with a governing caveat — every
figure there is a single metered run, n=1 per cell, output-token pricing
only — which covers the $6.55-of-$20 reviewer cost and the greenfield
tiering-reversal claim in place. The 11× full-flow multiple carries an
explicit n=1 bound at every surface it travels to outside that section:
the README claims table, the /genius sizing rule, and the ROADMAP's
load-bearing line. No number now travels without its bound.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
The eval loop now runs end-to-end without a human in the seat
(evals/run-scenario.sh: fresh scratch, arm-specific setup, claude -p,
transcript captured). Running M2 for real bought two things worth more
than a green check:

- A fixture leak, found and fixed. scratch.sh's CLAUDE.md documents the
  whole Working Genius flow, and that section was reaching the BASELINE
  arm too - handing the no-plugin control the plugin's own methodology.
  The runner now strips it for baselines; evals/README step 6 makes it
  a standing rule. Every prior baseline assumption is suspect until
  re-run clean.
- M2 is a softball on frontier tier. Against a clean sonnet-5 baseline,
  the base model reproduced the target behavior (read .genius/, found
  the weakest-genius pattern, sized proportionally) three ways -
  process-inviting prompt, neutral prompt, de-leaked fixture. The
  scenario's named failure mode doesn't occur; the skill line is a
  no-op for elicitation there. Recorded honestly in RESULTS with its
  caveats (n=1, author-graded, sonnet-5 only); M2's marker re-annotated
  to "softball", not cleared - it was run and did not pass.

This is the eval doing its job: direct evidence that the soft advisory
behaviors are commodity on a current baseline, and that the real value
must live in the mechanical parts (hook gates, red-before-green,
fresh-evidence verification). Those are the scenarios to run next.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
M1 (unrecorded bypass) run 3x per arm on sonnet-5, graded by a blinded
subagent (arm key withheld). Skill 3/3 on all items; baseline 1/3 on
the load-bearing "repair before build" item. Two truths recorded: the
scenario's "parrots frontmatter" baseline is extinct (all 3 baselines
noticed the gate and named the open boxes), but the discipline delta
survived - given the same observation the baseline builds through the
open gate 2/3, the skill halts 3/3. This is the mechanical value M2's
softball pointed at, measured on the other side: the plugin's edge is
converting a notice into a stop, not the noticing.

M1 marker updated to passed-with-caveat; scenario baseline note
sharpened from the extinct failure to the real one so the next runner
tests reality.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
E1 (red-before-green) run 3x per arm on sonnet-5, graded programmatically
from the event stream (order of ops is objective - no grader to bias).
Skill 3/3: test written, run, seen RED before impl exists. Baseline 0/3:
implements first, test green on arrival, never red. The cleanest delta of
the three scenarios, on the plugin's core identity.

With M2 (softball) and M1 (partial), three real runs now map where the
plugin still beats a frontier baseline: advisory behavior is absorbed
(M2), the perception under discipline is absorbed (M1 baseline sees the
gate), but the mechanical commitment is not - halting on the gate and
failing the test first. Value lives in making the model do the
disciplined thing it reasons past, not in telling it what it knows.
RESULTS carries the synthesis table; README claims row now cites the
measured spread instead of implying uniform success.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
T1 (no false "done") run on sonnet-5: baseline 3/3 caught the planted
broken test and refused to declare done - the "passed earlier" log
carried no weight. Told to "wrap up," a careful frontier model verifies
fresh unaided. Softball.

T1 breaks the first-cut "mechanical = differentiated" reading: verify-
before-done IS mechanical yet commodity. The four runs (M2, T1, M1, E1)
resolve to a sharper axis - the delta lives where the discipline fights
the model's default momentum. Aligned disciplines (size from history,
verify before done) are absorbed; momentum-contrary ones (fail the test
BEFORE the code; STOP at a gate you could pass) are not. Red-before-green
is the sharpest (0/3 baseline), gate-stop softer (1/3). RESULTS carries
the rewritten synthesis; README claims row states the sharper cut.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
W1 (question behind the request) was run AFTER the momentum thesis was
written, to test it. The thesis predicted a delta - questioning a literal
ask before building runs against build-what-was-asked momentum. Result:
skill 0/3 built directly, 3/3 questioned first (one even noticed there's
no CLI command to add a flag to); baseline 3/3 built the feature directly,
0/3 questioned. Clean 3/0, exactly as forecast.

Five scenarios now (M2, T1, M1, E1, W1). The value axis is confirmed and
predictive: momentum-aligned disciplines (size from history, verify before
done) are softballs; momentum-contrary ones (fail the test first, question
the ask) are clean deltas; the gate-stop sits between. RESULTS synthesis
table + entry updated; README claims row and scenario markers reflect it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
…esis)

Two things in one commit. (1) run-scenario.sh had lost its M1/E1/T1/W1
cases from the committed tree (edits made and used within a turn, then
reverted before commit); reconstructed complete with write_enablement_file
+ all five prior cases + the new D1 case, so the harness matches the
recorded RESULTS and is re-runnable. (2) D1 run as a second predictive
test of the momentum thesis - and it failed the prediction, usefully.
Handed two options cold, the baseline is inconsistent (1/3 full
discernment, 1/3 light lean, 1/3 balks at the fixture's unreal checkout),
skill n=1 clean. The miss sharpened the thesis boundary: momentum-contrary
requires the model to oppose momentum it actually built, not to evaluate
options handed to it cold. Also exposed a second leak - the work-file
scaffold itself primes discernment. D1 marked needs-fixture-work, not
pass/fail. RESULTS synthesis, table, and D1 entry updated; README notes
the self-correction.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
Built a two-turn probe to make the momentum-contrary case D1 couldn't:
commit to an approach (turn 1), then a go/no-go (turn 2) - does the model
attack its own choice or defend it? Draft 1 hit D1's repo-mismatch
confound again (now documented). Draft 2 (a repo-fitting --max-concurrent
task): both arms self-attacked their own plan identically - the baseline
even more observant. Softball.

The collapse IS the finding and it unifies all seven runs: the delta is
never in eliciting reflection (ask a model to size/verify/review its own
plan and it does fine - M2, T1, SA are softballs), only in forcing the
action against momentum without being asked (fail the test first E1,
question the ask W1, halt at the gate M1). Reflection-on-request is
commodity; disciplined action at the decision point is the product.
Synthesis + README sharpened to that one sentence. Harness: SA's early
exit skipped the setup commit, leaking a stray CLAUDE.md edit an observant
baseline flagged - fixed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018z1LJdF732mkwHCLW1Htfh
@donald-ada
donald-ada merged commit 6cd1e06 into main Jul 22, 2026
1 check passed
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.

2 participants