Experiment: full pipeline with implement-skills disabled — quality vs token tracking #35

Open
opened 2026-07-24 15:42:55 +02:00 by claude · 9 comments
Collaborator

Context

The implement skills (the implement skill + its implement-loop / compiler-driven-edit Workflow executors) are currently disabled by the owner. Implementation inside a cycle runs via orchestrator-dispatched phase agents instead (an implementer agent on a planner-produced plan, the orchestrator verifying build/suite/clippy itself, plus one independent quality-reviewer diff review). The rest of the pipeline runs as shipped: specify (with an ad-hoc spec-skeptic bias-breaker and the grounding-check hard-gate), planner (with plan-recon), audit (with architect + report-only bench), and the per-cycle fieldtest.

What we want to achieve

Maximum quality per token on a Fable main-loop session (Fable quota is half that of the smaller models, and Fable burns more tokens per step — so all mechanical fan-out must run on sonnet/opus/haiku; Fable subagents only for the four ratified gates). The experiment measures whether the full skill pipeline justifies its consumption against the skills-less baseline established in aura cycle #315 (implement without skills + one independent diff review): that baseline shipped 3 errors, 2 of them prose-truth errors, all found only by external review — the quality bar the pipeline must beat while staying affordable. Per-cycle consumption data is persisted orchestrator-side (memory file aura-pipeline-eckdaten) so runs stay comparable.

Outcome we're steering toward: either re-enable/replace the implement-skills with something leaner, keep orchestrator-driven implementation permanently, or restructure stages (see findings below) — decided on data, not vibes.

Data point 1 — aura cycle #310 (2026-07-24, full pipeline minus implement-skills)

Scope: aura run --tap TAP=FOLD fold-subscription selector (CLI wiring + tests + ledger amendment; a deliberately small, bounded cycle).

Stage Agent Model Tokens Tool uses Duration
specify: code recon Explore sonnet 151,274 67 293 s
specify: bias-breaker spec-skeptic opus 56,468 14 188 s
specify: hard-gate grounding-check fable (gate pin) 67,795 20 197 s
planner: recon plan-recon sonnet 98,903 49 265 s
implement: tasks 1–2 implementer sonnet 86,283 45 222 s
review: diff review quality-reviewer opus 62,499 14 189 s
audit: drift review architect fable (gate pin) 78,736 21 242 s
fieldtest: per-cycle fieldtester opus 88,689 36 558 s

Total ≈ 691k subagent tokens (sonnet ~336k / 49 %, opus ~208k / 30 %, fable gates ~147k / 21 %), excluding the Fable main-loop orchestration itself. Wall-clock ~3.5 h incl. builds.

Quality return — every stage caught something real:

  • spec-skeptic: a genuine namespace collision (persist_taps presentation channel vs declared taps) plus the C25 projection-layering question — both changed the shipped cut.
  • grounding-check: PASS with 11 test-ratified assumptions; caught a signature delta (TapPlan::subscribe is &mut self, not builder-self) before planning.
  • architect: a real contract tension (C14 exit-class partition vs runner-side exit-1 registers), adjudicated and routed.
  • fieldtest (source-blind): the graph introspect --folds discovery surface misdescribes the actual fold-registry roster — a self-description bug no inside-out review caught.
  • End state: 0 bugs, 0 Important review findings, suite green, clippy clean. Versus the #315 baseline (3 externally-found errors), a clear quality win.

Efficiency findings (to act on):

  1. Recon duplication is the biggest single cost: Explore (151k, feeding specify) and plan-recon (99k, feeding planner) overlapped ~40 %. Candidate change: one consolidated recon stage whose report serves both specify and planner, or a much narrower specify-side recon.
  2. Per-cycle fieldtest at 89k is borderline for a one-flag cycle even at minimal scope (2 examples) — consider a lighter probe tier for small surface cycles.
  3. grounding-check cost scales with the spec's assumption count — smaller specs are the lever, the gate itself is not optional under /boss (it is the autonomous sign-off).

Next steps

  • Keep filling one data-point section per pipeline cycle (same table shape) from the persisted per-cycle numbers.
  • Run at least one comparable skills-less cycle for a same-scale A/B token comparison (the #315 baseline predates per-stage accounting).
  • Then decide: implement-skills successor, stage consolidation (recon), and fieldtest tiering.
## Context The `implement` skills (the `implement` skill + its `implement-loop` / `compiler-driven-edit` Workflow executors) are currently **disabled** by the owner. Implementation inside a cycle runs via orchestrator-dispatched phase agents instead (an `implementer` agent on a planner-produced plan, the orchestrator verifying build/suite/clippy itself, plus one independent `quality-reviewer` diff review). The rest of the pipeline runs as shipped: `specify` (with an ad-hoc `spec-skeptic` bias-breaker and the `grounding-check` hard-gate), `planner` (with `plan-recon`), `audit` (with `architect` + report-only bench), and the per-cycle `fieldtest`. ## What we want to achieve Maximum quality per token on a Fable main-loop session (Fable quota is half that of the smaller models, and Fable burns more tokens per step — so all mechanical fan-out must run on sonnet/opus/haiku; Fable subagents only for the four ratified gates). The experiment measures whether the full skill pipeline justifies its consumption against the skills-less baseline established in aura cycle #315 (implement without skills + one independent diff review): that baseline shipped **3 errors, 2 of them prose-truth errors, all found only by external review** — the quality bar the pipeline must beat while staying affordable. Per-cycle consumption data is persisted orchestrator-side (memory file `aura-pipeline-eckdaten`) so runs stay comparable. Outcome we're steering toward: either re-enable/replace the implement-skills with something leaner, keep orchestrator-driven implementation permanently, or restructure stages (see findings below) — decided on data, not vibes. ## Data point 1 — aura cycle #310 (2026-07-24, full pipeline minus implement-skills) Scope: `aura run --tap TAP=FOLD` fold-subscription selector (CLI wiring + tests + ledger amendment; a deliberately small, bounded cycle). | Stage | Agent | Model | Tokens | Tool uses | Duration | |---|---|---|---|---|---| | specify: code recon | Explore | sonnet | 151,274 | 67 | 293 s | | specify: bias-breaker | spec-skeptic | opus | 56,468 | 14 | 188 s | | specify: hard-gate | grounding-check | fable (gate pin) | 67,795 | 20 | 197 s | | planner: recon | plan-recon | sonnet | 98,903 | 49 | 265 s | | implement: tasks 1–2 | implementer | sonnet | 86,283 | 45 | 222 s | | review: diff review | quality-reviewer | opus | 62,499 | 14 | 189 s | | audit: drift review | architect | fable (gate pin) | 78,736 | 21 | 242 s | | fieldtest: per-cycle | fieldtester | opus | 88,689 | 36 | 558 s | **Total ≈ 691k subagent tokens** (sonnet ~336k / 49 %, opus ~208k / 30 %, fable gates ~147k / 21 %), excluding the Fable main-loop orchestration itself. Wall-clock ~3.5 h incl. builds. **Quality return — every stage caught something real:** - spec-skeptic: a genuine namespace collision (`persist_taps` presentation channel vs declared taps) plus the C25 projection-layering question — both changed the shipped cut. - grounding-check: PASS with 11 test-ratified assumptions; caught a signature delta (`TapPlan::subscribe` is `&mut self`, not builder-`self`) before planning. - architect: a real contract tension (C14 exit-class partition vs runner-side exit-1 registers), adjudicated and routed. - fieldtest (source-blind): the `graph introspect --folds` discovery surface misdescribes the actual fold-registry roster — a self-description bug no inside-out review caught. - End state: 0 bugs, 0 Important review findings, suite green, clippy clean. Versus the #315 baseline (3 externally-found errors), a clear quality win. **Efficiency findings (to act on):** 1. **Recon duplication is the biggest single cost:** Explore (151k, feeding specify) and plan-recon (99k, feeding planner) overlapped ~40 %. Candidate change: one consolidated recon stage whose report serves both specify and planner, or a much narrower specify-side recon. 2. Per-cycle fieldtest at 89k is borderline for a one-flag cycle even at minimal scope (2 examples) — consider a lighter probe tier for small surface cycles. 3. grounding-check cost scales with the spec's assumption count — smaller specs are the lever, the gate itself is not optional under /boss (it is the autonomous sign-off). ## Next steps - Keep filling one data-point section per pipeline cycle (same table shape) from the persisted per-cycle numbers. - Run at least one comparable skills-less cycle for a same-scale A/B token comparison (the #315 baseline predates per-stage accounting). - Then decide: implement-skills successor, stage consolidation (recon), and fieldtest tiering.
Author
Collaborator

Data point 2 — harvest-sweep (2026-07-24, aura): batch mode, NOT the A-side

Not a full-pipeline cycle (no specify/planner/grounding-check — seven settled tracker-issue bodies served as the source, decisions minuted as issue comments), so this is a third mode beside the two the experiment compares. Recorded for the economics:

Stage Agent Model Tokens Tools Duration
implement batch 1 (2 issues) implementer sonnet 116,994 52 502 s
implement batch 2 (2 issues) implementer sonnet 102,185 56 478 s
implement batch 3 (3 issues) implementer sonnet 101,339 43 342 s
diff review (whole sweep) quality-reviewer opus 78,194 25 386 s
audit drift review architect fable 79,617 22 225 s
fieldtest (3 examples) fieldtester opus 91,752 27 418 s

~570k subagent tokens for 7 issue closures (~81k/closure) vs. data point 1's 691k for 1 closure. Takeaways: (1) batching amortizes the fixed gates (one review, one architect, one fieldtest over N closures) — the dominant lever for small settled work; (2) the independent opus diff review is not removable: it caught the only substantive error of the cycle (a wrong timestamp-semantics ratification), which came from the orchestrator+fieldtest consensus, not from the implementers; (3) sequential sonnet batches of 2-3 items with grep-pointer briefs kept each dispatch ~110k and avoided cross-build interference. Still owed for the experiment: the A-side (a comparable skills-less implementation cycle with stage accounting).

## Data point 2 — harvest-sweep (2026-07-24, aura): batch mode, NOT the A-side Not a full-pipeline cycle (no specify/planner/grounding-check — seven settled tracker-issue bodies served as the source, decisions minuted as issue comments), so this is a third mode beside the two the experiment compares. Recorded for the economics: | Stage | Agent | Model | Tokens | Tools | Duration | |---|---|---|---|---|---| | implement batch 1 (2 issues) | implementer | sonnet | 116,994 | 52 | 502 s | | implement batch 2 (2 issues) | implementer | sonnet | 102,185 | 56 | 478 s | | implement batch 3 (3 issues) | implementer | sonnet | 101,339 | 43 | 342 s | | diff review (whole sweep) | quality-reviewer | opus | 78,194 | 25 | 386 s | | audit drift review | architect | fable | 79,617 | 22 | 225 s | | fieldtest (3 examples) | fieldtester | opus | 91,752 | 27 | 418 s | **~570k subagent tokens for 7 issue closures (~81k/closure)** vs. data point 1's 691k for 1 closure. Takeaways: (1) batching amortizes the fixed gates (one review, one architect, one fieldtest over N closures) — the dominant lever for small settled work; (2) the independent opus diff review is not removable: it caught the only substantive error of the cycle (a wrong timestamp-semantics ratification), which came from the orchestrator+fieldtest consensus, not from the implementers; (3) sequential sonnet batches of 2-3 items with grep-pointer briefs kept each dispatch ~110k and avoided cross-build interference. Still owed for the experiment: the A-side (a comparable skills-less implementation cycle with stage accounting).
Author
Collaborator

Data point 3 — aura #317 "composites data-authorable" (2026-07-24, B-side: full pipeline, implement-skills OFF)

Heavy design cycle (new op-script verb end-to-end + a mid-cycle behaviour
ratification; ~1,580 insertions, 7 commits). Same mode as data point 1
(#310): specify/planner/audit skills on, implementation via directly
dispatched implementer agents.

Stage Model Tokens Tools Duration
recon (consolidated, serves specify+planner) sonnet 183,005 74 382 s
spec-skeptic (bias-breaker) opus 75,082 21 349 s
grounding-check #1 (BLOCK) fable 92,111 19 339 s
grounding-check #2 (PASS) fable 91,369 26 321 s
implementer batch 1 (registry+engine) sonnet 338,360 135 1,586 s
grounding-check #3 (PASS, amendment) fable 83,970 44 302 s
implementer batch 2 (open patterns+CLI+docs) sonnet 410,178 189 2,027 s
quality review (full diff) opus 136,786 26 427 s
implementer repair (4 findings) sonnet 153,023 79 790 s
delta re-review opus 102,361 26 366 s
architect (audit gate) fable 131,310 22 228 s
fieldtester (per-cycle, source-blind) opus 126,592 48 850 s

Total: ~1.92M subagent tokens — sonnet 1.08M (56%), opus 441k (23%),
fable gates 399k (21%). vs #310: 2.8× tokens for ~10× diff — the pipeline's
fixed gate cost amortizes over cycle size.

Findings for the efficiency review:

  • The recon consolidation (lesson from #310) worked: ONE stage, 183k, vs
    #310's Explore+plan-recon 250k with ~40% overlap.
  • Every gate caught something real, including two catches nothing else
    could make: grounding-check #1 falsified two spec claims about current
    code (one made the implementation SIMPLER — the planned enum already
    existed), and the source-blind fieldtest refuted a sentence of the
    cycle's OWN mid-cycle ratification (empirics vs orchestrator prose).
  • The review loop (review 137k + repair 153k + re-review 102k) is the
    second-largest block after implementation; it caught a silent-invariant
    defect (gang de-fuse) and a docs overclaim. Delta-re-review at 102k is
    arguably the squeeze point (could be sonnet for small deltas?).
  • 3× grounding-check (268k total) = the price of honest spec iteration
    (1 productive BLOCK, 1 evidence-driven amendment). Smaller spec slices
    would cut re-dispatches.

Still owed: the A-side (skills-less implementation cycle of comparable,
SMALL size — #317 was too big to be the comparator; a ripe single like
aura#273 or #225 is the right candidate).

## Data point 3 — aura #317 "composites data-authorable" (2026-07-24, B-side: full pipeline, implement-skills OFF) Heavy design cycle (new op-script verb end-to-end + a mid-cycle behaviour ratification; ~1,580 insertions, 7 commits). Same mode as data point 1 (#310): specify/planner/audit skills on, implementation via directly dispatched implementer agents. | Stage | Model | Tokens | Tools | Duration | |---|---|---|---|---| | recon (consolidated, serves specify+planner) | sonnet | 183,005 | 74 | 382 s | | spec-skeptic (bias-breaker) | opus | 75,082 | 21 | 349 s | | grounding-check #1 (BLOCK) | fable | 92,111 | 19 | 339 s | | grounding-check #2 (PASS) | fable | 91,369 | 26 | 321 s | | implementer batch 1 (registry+engine) | sonnet | 338,360 | 135 | 1,586 s | | grounding-check #3 (PASS, amendment) | fable | 83,970 | 44 | 302 s | | implementer batch 2 (open patterns+CLI+docs) | sonnet | 410,178 | 189 | 2,027 s | | quality review (full diff) | opus | 136,786 | 26 | 427 s | | implementer repair (4 findings) | sonnet | 153,023 | 79 | 790 s | | delta re-review | opus | 102,361 | 26 | 366 s | | architect (audit gate) | fable | 131,310 | 22 | 228 s | | fieldtester (per-cycle, source-blind) | opus | 126,592 | 48 | 850 s | **Total: ~1.92M subagent tokens** — sonnet 1.08M (56%), opus 441k (23%), fable gates 399k (21%). vs #310: 2.8× tokens for ~10× diff — the pipeline's fixed gate cost amortizes over cycle size. Findings for the efficiency review: - The recon consolidation (lesson from #310) worked: ONE stage, 183k, vs #310's Explore+plan-recon 250k with ~40% overlap. - Every gate caught something real, including two catches nothing else could make: grounding-check #1 falsified two spec claims about current code (one made the implementation SIMPLER — the planned enum already existed), and the source-blind fieldtest refuted a sentence of the cycle's OWN mid-cycle ratification (empirics vs orchestrator prose). - The review loop (review 137k + repair 153k + re-review 102k) is the second-largest block after implementation; it caught a silent-invariant defect (gang de-fuse) and a docs overclaim. Delta-re-review at 102k is arguably the squeeze point (could be sonnet for small deltas?). - 3× grounding-check (268k total) = the price of honest spec iteration (1 productive BLOCK, 1 evidence-driven amendment). Smaller spec slices would cut re-dispatches. Still owed: the A-side (skills-less implementation cycle of comparable, SMALL size — #317 was too big to be the comparator; a ripe single like aura#273 or #225 is the right candidate).
Author
Collaborator

Data point 4 — aura #271 (B-side: full pipeline, implement-skills off)

Heavy design cycle (typed construction args; 7 commits, 55 files, +1755/−196 — same class as #317). Stages: consolidated recon (sonnet 189k) → spec-skeptic (opus 85k) → grounding-check (fable 84k, PASS first attempt) → 2 implementer batches (sonnet 197k + 374k) → quality review (opus 117k, approved, 0 Important/Minor — no repair loop) → architect (fable 134k) → fieldtest (opus 126k, 0 bugs). Total ~1.30M (sonnet 58 % / opus 25 % / fable 17 %).

Read against #317 (1.92M, same cycle class): the entire 32 % saving is the absent iteration — no 2nd/3rd grounding run (~175k), no repair+re-review (~255k). The causal candidate is the early opus skeptic run BEFORE the fable gate: it caught the two spec defects (an unlisted deliberate pin-flip; missing shipped call sites) that would otherwise have been gate BLOCKs. Pattern worth keeping: cheap adversarial pass before the expensive hard gate, consolidated recon serving specify+planner.

Still owed: the A-side (skills-less implementation cycle on a comparably SMALL issue — aura #273/#225 remain the candidates).

## Data point 4 — aura #271 (B-side: full pipeline, implement-skills off) Heavy design cycle (typed construction args; 7 commits, 55 files, +1755/−196 — same class as #317). Stages: consolidated recon (sonnet 189k) → spec-skeptic (opus 85k) → grounding-check (fable 84k, **PASS first attempt**) → 2 implementer batches (sonnet 197k + 374k) → quality review (opus 117k, **approved, 0 Important/Minor — no repair loop**) → architect (fable 134k) → fieldtest (opus 126k, 0 bugs). **Total ~1.30M** (sonnet 58 % / opus 25 % / fable 17 %). Read against #317 (1.92M, same cycle class): the entire 32 % saving is the *absent iteration* — no 2nd/3rd grounding run (~175k), no repair+re-review (~255k). The causal candidate is the early opus skeptic run BEFORE the fable gate: it caught the two spec defects (an unlisted deliberate pin-flip; missing shipped call sites) that would otherwise have been gate BLOCKs. Pattern worth keeping: cheap adversarial pass before the expensive hard gate, consolidated recon serving specify+planner. Still owed: the A-side (skills-less implementation cycle on a comparably SMALL issue — aura #273/#225 remain the candidates).
Author
Collaborator

Data point 5 — aura #328 (axis-namespace reconciliation, 2026-07-25; full pipeline, implement-skills off)

Heavy multi-route cycle (one vocabulary, four intake routes, 3 crates, ~90-literal test conversion). Stages: consolidated recon (sonnet 170k) -> opus skeptic 88k (BLOCK, the cycle's best catch: a third wrapped surface the spec missed + an equality branch that would have made the refusal ladder dead code — sank the v1 spec before the fable gate) -> fable grounding 86k (PASS first attempt on v2) -> three sonnet batches 452k/186k/97k -> opus review 161k (changes_requested: untested refusal arm + prose duplicate) -> sonnet repair 107k -> fable architect 125k (drift_found: 2 high — a fourth route silently aliasing, manifests still minting wrapped) -> sonnet tidy 271k (found a latent bug en route) -> opus fieldtest 102k (0 bugs / 0 friction). Total ~1.85M (sonnet 69%, opus 19%, fable 11%).

Contrast with data point 4 (#271, 1.30M, zero post-implement iteration): here the skeptic prevented a bad design but could not prevent post-implement iteration on route completeness — repair+tidy = 20% of spend, all of it enforced by review/architect finding routes the spec never enumerated (skeptic found route 3, architect found route 4). Lesson for the playbook: when a cycle touches a vocabulary fanned out over N verbs/routes, the skeptic brief should demand an explicit enumeration of ALL intake/emission routes of that vocabulary — that single instruction would likely have halved both loops. Batch-size lesson from #271 confirmed again: the atomic big batch (452k) dominates cost.

## Data point 5 — aura #328 (axis-namespace reconciliation, 2026-07-25; full pipeline, implement-skills off) Heavy multi-route cycle (one vocabulary, four intake routes, 3 crates, ~90-literal test conversion). Stages: consolidated recon (sonnet 170k) -> opus skeptic 88k (**BLOCK, the cycle's best catch**: a third wrapped surface the spec missed + an equality branch that would have made the refusal ladder dead code — sank the v1 spec before the fable gate) -> fable grounding 86k (PASS first attempt on v2) -> three sonnet batches 452k/186k/97k -> opus review 161k (changes_requested: untested refusal arm + prose duplicate) -> sonnet repair 107k -> fable architect 125k (drift_found: 2 high — a fourth route silently aliasing, manifests still minting wrapped) -> sonnet tidy 271k (found a latent bug en route) -> opus fieldtest 102k (0 bugs / 0 friction). **Total ~1.85M** (sonnet 69%, opus 19%, fable 11%). Contrast with data point 4 (#271, 1.30M, zero post-implement iteration): here the skeptic prevented a bad *design* but could not prevent post-implement iteration on route *completeness* — repair+tidy = 20% of spend, all of it enforced by review/architect finding routes the spec never enumerated (skeptic found route 3, architect found route 4). Lesson for the playbook: when a cycle touches a vocabulary fanned out over N verbs/routes, the skeptic brief should demand an explicit enumeration of ALL intake/emission routes of that vocabulary — that single instruction would likely have halved both loops. Batch-size lesson from #271 confirmed again: the atomic big batch (452k) dominates cost.
Author
Collaborator

Data point 6 — aura #331 blueprint name op (2026-07-25, full pipeline without implement-skills)

Stage Agent Model Tokens Tools Duration
recon (consolidated) plan-recon sonnet 199,000 83 557 s
specify: bias-breaker (BLOCK — real catch) spec-skeptic opus 71,503 14 153 s
specify: hard-gate #1 (BLOCK, 2 findings) grounding-check fable (gate pin) 92,648 27 330 s
specify: hard-gate #2 (PASS) grounding-check fable (gate pin) 101,307 23 274 s
implement: batch 1 (core) implementer sonnet 209,747 78 793 s
implement: batch 2 (test + docs) implementer sonnet 79,282 35 233 s
review: diff review (changes_requested 1 Imp) quality-reviewer opus 88,329 20 358 s
repair (read-back split) implementer sonnet 151,555 58 722 s
review: delta re-review (1 Minor -> 3rd route) quality-reviewer opus 80,433 26 370 s
fix (run/params routes) implementer sonnet 171,976 72 747 s
audit: drift review (drift_found 1h/1m/1l) architect fable (gate pin) 119,966 28 287 s
tidy-fix (4 routes + bench re-pin) implementer sonnet 174,041 90 853 s
fieldtest (bugs_found: 1 bug) fieldtester opus 128,860 37 646 s
bugfix B1 (RED-first, list-axes route) implementer sonnet 114,654 51 408 s

Subagent total: ~1.78M tokens — sonnet ~1.10M (62%), opus ~369k (21%), fable gates ~314k (18%). Diff: 5 commits, ~1,200 changed lines incl. a 48-file fieldtest corpus. Every gate caught something real; final suite 99 targets green.

Efficiency verdict: the iteration tail dominated — repair + route-fix + tidy + fieldtest-bugfix = ~612k (34% of the cycle), and all four loops were the SAME defect class: one more authored-file intake route outside the gate. The skeptic correctly found the class before the gate (envelope route #2), but the spec then pinned only the two routes found so far instead of demanding a class-complete enumeration up front; review, architect, and fieldtest each then paid a full loop to find routes 3-4, 5-7, and 8. Lesson (extends the data-point-5 lesson from intake vocabularies to gate placement): when a spec introduces a gate over a ROUTE CLASS, the spec itself must carry the exhaustive route enumeration (grep-derived, all verbs), and the first implement batch must gate the class, not the named instances. A second observation: the skeptic-before-gate pattern does not pre-empt grounding-class BLOCKs (untested current-behaviour claims) — gate #1 still blocked on two of those; that is the gate doing its distinct job, not overlap.

## Data point 6 — aura #331 blueprint name op (2026-07-25, full pipeline without implement-skills) | Stage | Agent | Model | Tokens | Tools | Duration | |---|---|---|---|---|---| | recon (consolidated) | plan-recon | sonnet | 199,000 | 83 | 557 s | | specify: bias-breaker (BLOCK — real catch) | spec-skeptic | opus | 71,503 | 14 | 153 s | | specify: hard-gate #1 (BLOCK, 2 findings) | grounding-check | fable (gate pin) | 92,648 | 27 | 330 s | | specify: hard-gate #2 (PASS) | grounding-check | fable (gate pin) | 101,307 | 23 | 274 s | | implement: batch 1 (core) | implementer | sonnet | 209,747 | 78 | 793 s | | implement: batch 2 (test + docs) | implementer | sonnet | 79,282 | 35 | 233 s | | review: diff review (changes_requested 1 Imp) | quality-reviewer | opus | 88,329 | 20 | 358 s | | repair (read-back split) | implementer | sonnet | 151,555 | 58 | 722 s | | review: delta re-review (1 Minor -> 3rd route) | quality-reviewer | opus | 80,433 | 26 | 370 s | | fix (run/params routes) | implementer | sonnet | 171,976 | 72 | 747 s | | audit: drift review (drift_found 1h/1m/1l) | architect | fable (gate pin) | 119,966 | 28 | 287 s | | tidy-fix (4 routes + bench re-pin) | implementer | sonnet | 174,041 | 90 | 853 s | | fieldtest (bugs_found: 1 bug) | fieldtester | opus | 128,860 | 37 | 646 s | | bugfix B1 (RED-first, list-axes route) | implementer | sonnet | 114,654 | 51 | 408 s | **Subagent total: ~1.78M tokens** — sonnet ~1.10M (62%), opus ~369k (21%), fable gates ~314k (18%). Diff: 5 commits, ~1,200 changed lines incl. a 48-file fieldtest corpus. Every gate caught something real; final suite 99 targets green. **Efficiency verdict:** the iteration tail dominated — repair + route-fix + tidy + fieldtest-bugfix = ~612k (34% of the cycle), and all four loops were the SAME defect class: one more authored-file intake route outside the gate. The skeptic correctly found the class before the gate (envelope route #2), but the spec then pinned only the two routes found so far instead of demanding a class-complete enumeration up front; review, architect, and fieldtest each then paid a full loop to find routes 3-4, 5-7, and 8. Lesson (extends the data-point-5 lesson from intake vocabularies to gate placement): when a spec introduces a gate over a ROUTE CLASS, the spec itself must carry the exhaustive route enumeration (grep-derived, all verbs), and the first implement batch must gate the class, not the named instances. A second observation: the skeptic-before-gate pattern does not pre-empt grounding-class BLOCKs (untested current-behaviour claims) — gate #1 still blocked on two of those; that is the gate doing its distinct job, not overlap.
Author
Collaborator

Correction to data point 6's lesson (user review, 2026-07-25)

The user's post-cycle review caught that the DP6 lesson ("the spec must carry the class-complete route enumeration") is only half right — and its naive application actively cost tokens in #331. Held against the roadmap, the route class "every authored-file intake" splits: the sugar verbs (sweep/walkforward/mc flag surfaces, sweep --list-axes) are scheduled for retirement by the very next queue item (aura #319), so the class-completeness loops that gated them (~300k tokens: the architect-driven tidy and the fieldtest B1 fix) were consistency work on a dying surface, plus a sweep-out debt in the retirement cycle. The spec's post-skeptic boundary (op intake + the canonical envelope dispatch: register/introspect/viewer) was already the roadmap-stable set.

Corrected lesson: when a spec introduces a gate/invariant over a route class, (1) enumerate the class exhaustively in the spec (DP6 stands), AND (2) check the class boundary against the roadmap — routes on a surface the queue already retires get a documented known-until-retirement exemption instead of enforcement, unless they carry a live hazard (the run-route filesystem escape did; the read-only listing routes did not). "Class-complete on a dying surface" is its own failure mode, symmetric to the under-enumeration DP5/DP6 warn about. The closing gates (architect, fieldtest) enforce present-tense consistency by design — the roadmap check is the orchestrator's job at the fix-vs-ratify fork, not theirs.

## Correction to data point 6's lesson (user review, 2026-07-25) The user's post-cycle review caught that the DP6 lesson ("the spec must carry the class-complete route enumeration") is only half right — and its naive application actively cost tokens in #331. Held against the roadmap, the route class "every authored-file intake" splits: the sugar verbs (sweep/walkforward/mc flag surfaces, sweep --list-axes) are scheduled for retirement by the very next queue item (aura #319), so the class-completeness loops that gated them (~300k tokens: the architect-driven tidy and the fieldtest B1 fix) were consistency work on a dying surface, plus a sweep-out debt in the retirement cycle. The spec's post-skeptic boundary (op intake + the canonical envelope dispatch: register/introspect/viewer) was already the roadmap-stable set. **Corrected lesson:** when a spec introduces a gate/invariant over a route class, (1) enumerate the class exhaustively in the spec (DP6 stands), AND (2) check the class boundary against the roadmap — routes on a surface the queue already retires get a documented known-until-retirement exemption instead of enforcement, unless they carry a live hazard (the run-route filesystem escape did; the read-only listing routes did not). "Class-complete on a dying surface" is its own failure mode, symmetric to the under-enumeration DP5/DP6 warn about. The closing gates (architect, fieldtest) enforce present-tense consistency by design — the roadmap check is the orchestrator's job at the fix-vs-ratify fork, not theirs.
Author
Collaborator

Data point 7 — the A-side baseline (cycle Aura#273, 2026-07-25)

First A-side run (owner's order, 2026-07-25): no skill stages at all. The orchestrator read the issue thread itself, did a ~6-grep in-loop recon, minuted three derived design forks on the reference issue up front (description deferred to data-server#4, broader refusal prose, empty-archive stderr notice), wrote one precise implementation brief, and verified the diff and all gates itself. Exactly one independent diff review.

Stage Agent Model Tokens Tool uses Duration
implement (whole package incl. tests, plus one fix turn) implementer sonnet 832,201 97 ~25 min active
the single independent diff review quality-reviewer opus 339,704 23 431 s

Subagent total ≈ 1.17M tokens (sonnet 71 %, opus 29 %, fable 0 %); order→commit wall clock ≈ 1 h. Measurement caveat: A numbers are summed from the agent transcripts (input + cache-creation + output; cache reads excluded), B numbers came from task-notification usage blocks — believed to be the same basis, not verified. The orchestrator's own extra work (recon, brief writing, verification, minutes) ran on the main-loop model and is not counted — it is the A-mode's hidden cost.

Quality yield: gates first-pass green (independently re-run by the orchestrator: 0 failed workspace-wide, clippy -D warnings clean, all 5 bench fingerprints OK). The single review caught exactly 1 Important — the sidecar-only OR-branch of the new verb's known-check was untested; a real catch, a regression there would have passed every existing test — plus 1 nit. Zero prose-truth errors (contrast the skills-less #315 predecessor: 3 errors, 2 of them prose-truth, all caught only externally). No audit stage, no fieldtest: their absence is untested risk, not proven savings.

Control-condition caveats: the carrier task was deliberately fork-free (that isolates the mechanics/ceremony variable — it is the design, not a flaw), its scope is smaller than the B cycles', and this is one data point.

Preparation for the skills-rework session

On record (owner's decision, 2026-07-25): the skills are to be reshaped according to this experiment's results in a dedicated session; Aura#319 (sugar retirement) is designated the reformed skillset's first hard test.

What the two series support, as the rework agenda:

  1. Tier at entry, not after spec/plan. The entry cascade already classifies by signature; the A result supports a light tier for settled, fork-free work: direct implementer dispatch + exactly one independent review, with a reactive bounce to the full path when a real fork surfaces mid-implementation. The A run's only residual defect (one untested acceptance branch) is exactly the class a single review catches.
  2. The cheap judgement gates earned their keep even on "settled" cycles (B: the skeptic caught a second intake route for ~70k on #331; grounding caught unratified current-behaviour claims twice). Candidate middle tier: a thin skeptic/grounding pass before mechanics plus the one diff review after — no full review cascade.
  3. B's expensive part is the iteration tail (#331: ~612k ≈ 34 % across four same-class repair loops). The rework should attack tail genesis — class enumeration in the spec AND the class boundary checked against the roadmap (data point 6 + its correction) — not the gates.
  4. A's expensive part is the single long implementer run (832k for one sonnet run carrying recon + implementation + tests + three full-suite runs). A light tier still wants the work split into short, cache-light runs (brief-driven batches or a recon/impl split).
  5. Recon consolidation (observed across dp 1–6): specify's code map and planner's recon duplicate ~150–250k per B cycle.
  6. Fieldtest tiering: the per-cycle fieldtest found real bugs in 2 of 6 B cycles — keep it, but consider tiers (cheap smoke per cycle, full scenario pass per milestone).
  7. Orchestrator main-loop cost is unmetered in both series. The rework session should decide whether to meter it; the transcript-summing method from this data point works for subagents and could extend to the main loop.

Method note for future data points: A-side token extraction = per-assistant-message usage summed over the agent's .jsonl transcript.

## Data point 7 — the A-side baseline (cycle Aura#273, 2026-07-25) First A-side run (owner's order, 2026-07-25): **no skill stages at all**. The orchestrator read the issue thread itself, did a ~6-grep in-loop recon, minuted three derived design forks on the reference issue up front (`description` deferred to data-server#4, broader refusal prose, empty-archive stderr notice), wrote one precise implementation brief, and verified the diff and all gates itself. Exactly **one** independent diff review. | Stage | Agent | Model | Tokens | Tool uses | Duration | |---|---|---|---|---|---| | implement (whole package incl. tests, plus one fix turn) | implementer | sonnet | 832,201 | 97 | ~25 min active | | the single independent diff review | quality-reviewer | opus | 339,704 | 23 | 431 s | **Subagent total ≈ 1.17M tokens** (sonnet 71 %, opus 29 %, fable 0 %); order→commit wall clock ≈ 1 h. Measurement caveat: A numbers are summed from the agent transcripts (input + cache-creation + output; cache reads excluded), B numbers came from task-notification usage blocks — believed to be the same basis, not verified. The orchestrator's own extra work (recon, brief writing, verification, minutes) ran on the main-loop model and is **not** counted — it is the A-mode's hidden cost. **Quality yield:** gates first-pass green (independently re-run by the orchestrator: 0 failed workspace-wide, clippy `-D warnings` clean, all 5 bench fingerprints OK). The single review caught exactly **1 Important** — the sidecar-only OR-branch of the new verb's known-check was untested; a real catch, a regression there would have passed every existing test — plus 1 nit. **Zero prose-truth errors** (contrast the skills-less #315 predecessor: 3 errors, 2 of them prose-truth, all caught only externally). No audit stage, no fieldtest: their absence is untested risk, not proven savings. **Control-condition caveats:** the carrier task was deliberately fork-free (that isolates the mechanics/ceremony variable — it is the design, not a flaw), its scope is smaller than the B cycles', and this is one data point. ## Preparation for the skills-rework session On record (owner's decision, 2026-07-25): the skills are to be reshaped according to this experiment's results in a dedicated session; Aura#319 (sugar retirement) is designated the reformed skillset's **first hard test**. What the two series support, as the rework agenda: 1. **Tier at entry, not after spec/plan.** The entry cascade already classifies by signature; the A result supports a light tier for settled, fork-free work: direct implementer dispatch + exactly one independent review, with a reactive bounce to the full path when a real fork surfaces mid-implementation. The A run's only residual defect (one untested acceptance branch) is exactly the class a single review catches. 2. **The cheap judgement gates earned their keep even on "settled" cycles** (B: the skeptic caught a second intake route for ~70k on #331; grounding caught unratified current-behaviour claims twice). Candidate middle tier: a thin skeptic/grounding pass before mechanics plus the one diff review after — no full review cascade. 3. **B's expensive part is the iteration tail** (#331: ~612k ≈ 34 % across four same-class repair loops). The rework should attack tail genesis — class enumeration in the spec AND the class boundary checked against the roadmap (data point 6 + its correction) — not the gates. 4. **A's expensive part is the single long implementer run** (832k for one sonnet run carrying recon + implementation + tests + three full-suite runs). A light tier still wants the work split into short, cache-light runs (brief-driven batches or a recon/impl split). 5. **Recon consolidation** (observed across dp 1–6): specify's code map and planner's recon duplicate ~150–250k per B cycle. 6. **Fieldtest tiering:** the per-cycle fieldtest found real bugs in 2 of 6 B cycles — keep it, but consider tiers (cheap smoke per cycle, full scenario pass per milestone). 7. **Orchestrator main-loop cost is unmetered in both series.** The rework session should decide whether to meter it; the transcript-summing method from this data point works for subagents and could extend to the main loop. Method note for future data points: A-side token extraction = per-assistant-message usage summed over the agent's `.jsonl` transcript.
Author
Collaborator

Efficiency findings 1-3 implemented (commit fe5ca8f)

All three "Efficiency findings (to act on)" from this issue are now implemented in the plugin:

  1. Cycle recon (finding 1, the biggest single cost): recon fan-out is now budgeted per cycle, not per phase — new single-source section docs/pipeline.md § Cycle recon. One full plan-recon dispatch (normally specify Step 1, via a new pre-spec sources/recon_scope carrier form) serves both the spec's concrete code shapes and the plan's file-map; planner Step 2 is reuse-first (freshness / quotability / coverage conditions) with narrowly-bounded delta dispatches (new Delta dispatch contract, <=500-token output); broad Explore-type grounding sweeps are banned in every mode, /boss triage included. Expected effect vs. the #310 data point: one full recon instead of Explore 151k + plan-recon 99k.
  2. Fieldtest probe tier (finding 2): a cycle whose user-visible delta is a single narrow axis dispatches the per-cycle fieldtest at tier: probe — 1-2 examples on exactly that axis, ~200-word report, explicit model: sonnet dispatch override. Probe is a tier, not a skip (the #310 evidence — the one-flag cycle's fieldtest found a real self-description bug — is cited as the reason the signal must survive). The milestone fieldtest always runs full tier on the frontmatter model; the milestone-close gate's >=2-example floor stays unconditional.
  3. Assumption economy (finding 3): specify Step 3 + a new self-review item now enforce "fewer restatements, never fewer reliances" — current-behaviour claims only where the change relies on them (the gate's own falsity test), context-only mentions demoted to ledger citations, iteration scope tight. grounding-check itself is unchanged (it remains the autonomous signature under /boss).

Owner decisions recorded (asked and answered 2026-07-25):

  • Probe tier runs on a sonnet override (owner picked sonnet/high). Mechanical reality found during implementation: the direct agent-dispatch surface has no per-dispatch effort override, so the probe overrides the model only and the frontmatter effort applies — documented as such in fieldtest/SKILL.md and agent-template.md § model rule 2.
  • This issue stays open as the experiment tracker (commit uses refs #35); further per-cycle data points and the implement-skills decision (re-enable / leaner replacement / permanent orchestrator-driven) remain pending on data. The implement skills were deliberately NOT removed.

Review dissent, recorded for the next data point: the pre-commit design review recommended against the sonnet override for the probe tier (rule 2 places field evidence at opus; the issue-#30 precedent has a deterministic measurement + verify gate this lacks; the fieldtester's source isolation is prose-enforced only). The owner's decision stands; the guard is the one-axis scope, the >=1-example floor, orchestrator triage of every finding — and this experiment itself: the first probe-tier data point should be checked for quality loss, and the override is a one-line rollback if it shows.

Process note: design pre-reviewed (opus plan review), diff adversarially verified by a 3-lens review workflow (consistency / operability / cross-reference); all confirmed findings were folded in before commit.

## Efficiency findings 1-3 implemented (commit fe5ca8f) All three "Efficiency findings (to act on)" from this issue are now implemented in the plugin: 1. **Cycle recon** (finding 1, the biggest single cost): recon fan-out is now budgeted per cycle, not per phase — new single-source section `docs/pipeline.md` § Cycle recon. One full `plan-recon` dispatch (normally specify Step 1, via a new pre-spec `sources`/`recon_scope` carrier form) serves both the spec's concrete code shapes and the plan's file-map; planner Step 2 is reuse-first (freshness / quotability / coverage conditions) with narrowly-bounded delta dispatches (new **Delta dispatch** contract, <=500-token output); broad Explore-type grounding sweeps are banned in every mode, `/boss` triage included. Expected effect vs. the #310 data point: one full recon instead of Explore 151k + plan-recon 99k. 2. **Fieldtest probe tier** (finding 2): a cycle whose user-visible delta is a single narrow axis dispatches the per-cycle fieldtest at `tier: probe` — 1-2 examples on exactly that axis, ~200-word report, explicit `model: sonnet` dispatch override. Probe is a tier, not a skip (the #310 evidence — the one-flag cycle's fieldtest found a real self-description bug — is cited as the reason the signal must survive). The milestone fieldtest always runs full tier on the frontmatter model; the milestone-close gate's >=2-example floor stays unconditional. 3. **Assumption economy** (finding 3): specify Step 3 + a new self-review item now enforce "fewer restatements, never fewer reliances" — current-behaviour claims only where the change relies on them (the gate's own falsity test), context-only mentions demoted to ledger citations, iteration scope tight. `grounding-check` itself is unchanged (it remains the autonomous signature under `/boss`). **Owner decisions recorded** (asked and answered 2026-07-25): - Probe tier runs on a sonnet override (owner picked sonnet/high). Mechanical reality found during implementation: the direct agent-dispatch surface has no per-dispatch *effort* override, so the probe overrides the model only and the frontmatter effort applies — documented as such in `fieldtest/SKILL.md` and `agent-template.md` § model rule 2. - This issue stays **open** as the experiment tracker (commit uses `refs #35`); further per-cycle data points and the implement-skills decision (re-enable / leaner replacement / permanent orchestrator-driven) remain pending on data. The implement skills were deliberately NOT removed. **Review dissent, recorded for the next data point:** the pre-commit design review recommended *against* the sonnet override for the probe tier (rule 2 places field evidence at opus; the issue-#30 precedent has a deterministic measurement + verify gate this lacks; the fieldtester's source isolation is prose-enforced only). The owner's decision stands; the guard is the one-axis scope, the >=1-example floor, orchestrator triage of every finding — and this experiment itself: the first probe-tier data point should be checked for quality loss, and the override is a one-line rollback if it shows. Process note: design pre-reviewed (opus plan review), diff adversarially verified by a 3-lens review workflow (consistency / operability / cross-reference); all confirmed findings were folded in before commit.
Author
Collaborator

Probe-tier model override retracted (owner decision, 2026-07-25 — commit 8ad3961)

The owner reviewed the dissent recorded in the previous comment and agreed with it: the model: sonnet probe override is retracted. The probe tier now runs on the fieldtester's frontmatter opus/xhigh, exactly like the full tier; its economy comes from scope alone (1-2 examples on the single delta axis, ~200-word report). agent-template.md § model rule 2 again covers the fieldtester unconditionally, with a note that a probe narrows scope, never the model.

For the ongoing measurement this simplifies the next data point: probe-tier savings to expect are example count and report size only, not model tier.

## Probe-tier model override retracted (owner decision, 2026-07-25 — commit 8ad3961) The owner reviewed the dissent recorded in the previous comment and agreed with it: the `model: sonnet` probe override is retracted. The probe tier now runs on the fieldtester's frontmatter opus/xhigh, exactly like the full tier; its economy comes from scope alone (1-2 examples on the single delta axis, ~200-word report). `agent-template.md` § model rule 2 again covers the fieldtester unconditionally, with a note that a probe narrows scope, never the model. For the ongoing measurement this simplifies the next data point: probe-tier savings to expect are example count and report size only, not model tier.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Skills#35