Skip to content

Commit 1859be9

Browse files
authored
feat(evals): pre-registered planner A/B suite + Stage-2 session-2 closure (AC-002 closed 7/7; AC-003 open, honestly) (#435)
Merges the frozen AC-003 pre-registration, the arm-neutral A/B suite, and the session-2 closure so the completion run builds on the committed protocol.
1 parent f7c0bd3 commit 1859be9

26 files changed

Lines changed: 8229 additions & 0 deletions
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# AC-003 Pre-registration — Planner A/B, ramza@0.2.0 vs spectra@4.11.0
2+
3+
> Committed BEFORE any A/B run of this suite executes; the commit hash of this file
4+
> is the pre-registration timestamp. Suite: `evals/planner-ab-suite.yaml` (6 tasks:
5+
> AB-T1..T4 public, AB-H1..H2 holdout). Plan of record:
6+
> `.spectra/plans/2026-07-04-ramza-stage2-measurement.md` (frozen criteria 423248b6…).
7+
8+
## Protocol
9+
10+
- **Arms:** spectra@4.11.0 (installed at a dedicated consumer project) vs
11+
ramza@0.2.0 (installed at a dedicated consumer project). Same executor model for
12+
both arms (Sonnet 5), same mission text verbatim, same instruction shape ("read
13+
your installed agent.md, follow your methodology, produce the specification").
14+
Executors never see the rubrics.
15+
- **k = 2** independent runs per (task, arm) → 24 runs total.
16+
- **Primary metric:** per-task pass² (both runs pass all MUST rubric items),
17+
graded mechanically by `eidolons eval quality grade --suite-file` (grep-based,
18+
no LLM judge). Aggregate = number of tasks with pass² true, out of 6.
19+
- **Non-inferiority margin (the claim being tested):** RAMZA is non-inferior if
20+
`ramza_tasks_pass2 >= spectra_tasks_pass2 - 1`. Superiority is NOT claimed at
21+
this sample size regardless of outcome.
22+
- **Holdout gating:** AB-H1/AB-H2 were authored in the same commit and excluded
23+
from any tuning; the aggregate claim is void if either arm's holdout results
24+
diverge in direction from its public-task results by more than 1 task
25+
(overfitting guard, Vivi Stage-2 shape). Honesty note: the suite author (Fable 5)
26+
can see the holdout rubrics; blindness applies to the executor sessions, which
27+
receive mission text only.
28+
- **Secondary metrics (descriptive, not gated):** mean words per artifact
29+
(ceremony), count of machine-verifiable gate citations (audit-trail density),
30+
`ramza-adherence` composite where a state file exists, confidence verdict
31+
distribution.
32+
- **Budget matching:** one executor session per run, no retries, no
33+
cross-pollination between runs (fresh agent context each).
34+
- **Exclusions:** a run that fails for infrastructure reasons (tool crash,
35+
truncated output file) is re-run once and noted; content failures are never
36+
re-run.
37+
38+
## Decision rule
39+
40+
- Non-inferiority met + holdout consistent → AC-003 **PASS**; Stage-3b seat-flip
41+
proposal proceeds (with these numbers quoted, not embellished).
42+
- Otherwise → AC-003 **FAIL**; ramza stays `in_construction`, gaps analyzed,
43+
re-measure after fixes. No partial credit.
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# RAMZA Stage-2 — Session 2 Closure
2+
3+
> 2026-07-05 · Fable 5. Continues `RESULTS.md` (session 1). Raw outputs + scorecards
4+
> in this directory (`ac003/`, `raw/`, `canary-*.scorecard.json`).
5+
> Session ended against API session/spend limits mid-measurement; this closure
6+
> reports exactly what completed and adjudicates strictly per
7+
> `AC-003-PREREGISTRATION.md`. Nothing below is extrapolated.
8+
9+
## AC-002 — Canary conformance: **CLOSED, 7/7 missions PASS, 0 MUST failures**
10+
11+
| Mission | pass / fail / inconclusive |
12+
|---|---|
13+
| smoke-default | 11 / 0 / 0 |
14+
| rightsize-gate | 7 / 0 / 3 (`SHOULD NOT` DSL gap — parked) |
15+
| drift-tamper | 9 / 0 / 1 |
16+
| dual-format | 10 / 0 / 0 |
17+
| memory-round-trip | 10 / 0 / 0 (graceful-skip path; CRYSTALIUM honestly probed absent) |
18+
| discovery-elicitation | 8 / 0 / 2 |
19+
| parallel-spec-trance | 10 / 0 / 0 (full G3 cycle incl. real clean-context branch fan-out) |
20+
21+
Two more mission-authoring defects fixed en route (Ramza main): the escaped-backtick
22+
yaml-fence criterion (→ heading match) and a prose annotation outside the backticks
23+
on the provenance criterion (→ OR-alternation regex). Both are the same lesson:
24+
criteria are DSL, not prose.
25+
26+
## AC-003 — Planner A/B: **INCOMPLETE — not adjudicated (no claim made)**
27+
28+
The pre-registered protocol requires k=2 per (task, arm) across 6 tasks including
29+
2 holdout. API limits terminated 15 of 24 runs (12 wave-2 runs entirely; 3 ramza
30+
r1 runs mid-Assemble after their critic loops — infrastructure-failure class per
31+
the pre-registration, re-runnable). What completed, graded mechanically:
32+
33+
| Task | spectra pass² (k=2) | ramza pass@1 (k=1) | words: spectra mean / ramza |
34+
|---|---|---|---|
35+
| AB-T1 webhook subsystem | PASS | PASS | 10,560 / 3,690 |
36+
| AB-T2 soft-delete brownfield | PASS | PASS | 8,165 / 3,920 |
37+
| AB-T3 double-charge fix | PASS | PASS | 9,535 / 3,604 |
38+
| AB-T4 / AB-H1 / AB-H2 | not run | not run ||
39+
40+
- **Zero MUST-item failures in any graded run, either arm.**
41+
- Descriptive only (no gated claim): ramza artifacts averaged **40%** of spectra's
42+
word count on identical missions with identical rubrics.
43+
- **The decision rule is NOT applied**: holdout consistency is unfulfillable and
44+
the ramza arm lacks k=2. Per pre-registration: no partial credit, no
45+
non-inferiority claim. AC-003 remains the open gate for Stage-3b.
46+
47+
## Findings from the multi-agent execution (worth as much as the numbers)
48+
49+
1. **The critic cascade works unprompted.** All three full-tier ramza executors
50+
independently spawned clean-context critics (maker≠checker honored without being
51+
told). One critic issued a **cycle-2 FAIL** for a real defect: the AC-004 fix
52+
existed in the plan's embedded criteria but not in the standalone criteria file —
53+
the one `ramza-ears-lint` lints and `ramza-freeze` hashes. That is precisely the
54+
criteria-desync/tamper class RAMZA exists to catch, caught before freeze.
55+
2. **Critic→author routing needs a bus.** Critics could not SendMessage their
56+
parents (unresolvable names); the coordinator had to broker every verdict.
57+
Production fix belongs to Junction routing, not prompts. (Nexus backlog item.)
58+
3. **Harness-furniture misattribution, twice.** Two independent executors reported
59+
"prompt injection embedded in file bytes" (parallel-spec.md, agent.md). Byte-level
60+
grep of every installed file: clean, both times. The executors attributed genuine
61+
harness system-reminders in their own transcripts to the files they were reading.
62+
Agent-epistemics finding; no shipped defect.
63+
4. **Full-tier runs are expensive by design.** Critic loops took ramza T-runs to
64+
3-6× the wall-clock of lite runs and contributed to hitting the spend ceiling
65+
mid-wave. The right-sizing doctrine (D3) applies to measurement too: canaries
66+
first (they cost cents and caught five instrument bugs across two sessions),
67+
A/B second, full-tier tasks last.
68+
69+
## Completion runbook (one session, post-limit-reset)
70+
71+
1. Re-run 3 infrastructure-failed cells: `AB-T{1,2,3}-ramza-r1` (pre-registration
72+
allows one re-run for infrastructure failures; label them as re-runs).
73+
2. Run wave 2: `AB-T4`, `AB-H1`, `AB-H2` × both arms × k=2 (12 runs).
74+
3. Grade all via `eval quality grade --suite-file evals/planner-ab-suite.yaml`
75+
(zero-LLM), apply the pre-registered decision rule, write the adjudication.
76+
4. If PASS: proceed to Stage 3a (v1.0.0 attested release — carries the mission-file
77+
fixes already on Ramza main) and the Stage-3b seat-flip PR (routing.yaml,
78+
presets, cortex). If FAIL: gap analysis, fix, re-measure. No partial credit.

0 commit comments

Comments
 (0)