§5 — Rotation 1 (resilient re-run) checkpoint (2026-07-20)
Evergreen: model-selection-and-global-refine §5 ·
driver f-docs-campaign-rotations · prior attempt rotation 1 halted.
This is the first live docs-campaign rotation on the rebuilt, resilient pipeline — the re-run the halted rotation's NEXT card called for. Purpose: prove the pipeline no longer degrades under real 200-name load (the July-18 halt was an upstream reviewer outage that collapsed the blind pair to single-reviewer), and produce a valid checkpoint the lead can treat as the go/no-go for the remaining ~$270 of rotations. Headline: the pipeline is validated. The rotation halted on a narrow, fixable false positive in the prose gate — not a pipeline defect and not a quality regression.
Quick status
| Item | Value |
|---|---|
| Run | c355df39 · 2026-07-20 · sn run --source dd --campaign "prose,audit:latex,audit:spelling,audit:length" --campaign-pilot 200 --include-accepted --campaign-batch-cost-cap 50 --campaign-cost-ceiling 120 |
| Blind pair | claude-sonnet-5 + grok-4.5 (imas-codex b5b5eccb) — replaces the 429-prone qwen3.7-max + minimax-m3 |
| Scope reached | batch 1 of 2 — 100 names enriched (halted before batch 2 by the convergence gate) |
| Outcome | ⚠ halted after 1 batch: banned prose reintroduced in 2 doc(s) (cap 0) — both false positives (see root cause) |
| Spend | $29.47 of the $50 batch cap · ~19 min wall (1161 s) — 8× faster than the 2.5 h estimate |
| Selection | 1,409 → ~1,311 (98 accepted docs dropped out of the defect predicates; sticky) |
Checkpoint metrics — batch 1 (100 names)
| Gate axis | Threshold | Rotation 1 (resilient) | Verdict |
|---|---|---|---|
| Review quorum intact | blind-pair quorum on every leaf | 117 leaf reviews, 100% quorum_consensus; 0 degraded to single-reviewer (13 single_review are derived-parent reviews, single-model by design, ~2–3× cheaper) | ✅ PASS — the July-18 failure mode is eliminated |
| Upstream outages | 0 | 0 — no 429 / empty-response / governor backoff anywhere in 100 names | ✅ PASS |
| Docs acceptance | ≥ 90% | 98% (98 accepted, 2 exhausted sub-threshold) | ✅ PASS |
| Name-identity drift | 0 | 0 — docs-only refine events on unchanged ids; no StandardNameChange, no rename | ✅ PASS |
| Refine claim-race waste (gate a) | < 5% | 3.4% (2 of 59 paid refine calls, ≈ $0.16) — within the documented residual for the settle-based fix | ✅ PASS |
| Banned prose reintroduced | 0 | 2 flagged → both false positives (legitimate "is derived from [related quantity]" provenance, not a recipe) | ⚠ predicate MISS — see root cause |
| Cost / name | ≈ $0.20 | $0.29 ($29.47 / 100) — the resilient premium review pair costs more than the retired cheap pair | ⚠ OVER (+47%) — re-baseline |
Root cause of the halt — a narrow false positive in the estimator-recipe pattern
The two docs that halted the run — line_averaged_hydrogen_density and ratio_of_tritium_density_to_deuterium_density — were both reviewer-accepted at full quorum (0.863, 0.906) and are high quality: a precise one-line description, a single defining LaTeX relation, and clean cross-links to related names. Each tripped exactly one banned-prose pattern, the estimator_recipe arm:
\bis (?:computed|calculated|estimated|obtained|derived) (?:as|by|from)\b
matched by the phrase "It is derived from the local [hydrogen density](name:hydrogen_density)…". This is a provenance / semantic-relationship statement — the refine model's house style for any quantity defined relative to a base quantity — not a procedural estimator recipe. The pattern is meant to catch "here is how you compute it in practice"; "derived from [related name]" is the cross-referencing style the strict-normative policy actually wants.
The pattern is right about the backlog, wrong about refined provenance
Scanning all 2,200 accepted docs, 797 (36.2%) match the estimator_recipe pattern. A 12-doc stratified sample of those matches confirms they are genuine banned prose, correctly selected — the real pre-campaign backlog:
absorbed_power_of_beam_tracing_beam— "In practice this quantity is computed by integrating local absorption along the…"fast_ion_density— "…is obtained by integrating the fast-ion distribution… and is computed by Fokker-Planck or Monte Carlo orbit codes"poloidal_electron_velocity— "In practice, $v_{\theta,e}$ is computed from kinetic or fluid models by projecting…"vertical_coordinate_of_geometric_axis— "In practice, $Z_\mathrm{geom}$ is computed from an equilibrium reconstruction…"
These trip the computed / obtained … by / from arms (with "In practice" procedural padding alongside) — exactly the prose the campaign exists to strip. The refine model removes that style; the only estimator_recipe residue it leaves is the "is derived from" arm on legitimate provenance. That single arm is the entire halt cause, and it recurs on any derived quantity, so it would halt every rotation until narrowed.
Before → after (archetype)
DocsRevision before-text is not retained in-graph, so per-name diffs aren't reconstructable; the archetype is unambiguous. Pre-campaign accepted docs carry the recipe/padding style above; the 98 refined-and-accepted docs in this batch are prose-clean, e.g.:
| Name (accepted, batch 1) | Refined doc (opening) | Prose scan |
|---|---|---|
power_density_due_to_fusion | "Fusion power density is the local energy-release rate generated by nuclear-fusion reactions per unit volume…" | CLEAN |
reflected_power_of_ion_cyclotron_heating_antenna | "Reflected power of an ion cyclotron heating antenna is the backward-traveling RF power at a defined reference plane…" | CLEAN |
radius_of_plasma_filament | "Radius of a plasma filament is the geometric radius of a circular boundary of the annular cross-section…" | CLEAN |
absorbed_radiated_power_of_breeder_blanket_module | "…the net electromagnetic photon power retained by the module after plasma radiation interacts with its plasma-facing surface…" | CLEAN |
line_averaged_hydrogen_density | "…quantifies the chord-averaged concentration of protium ions… It is derived from the local [hydrogen density]…" | estimator_recipe ×1 (false positive) |
Two exhausted names (non-convergence, expected)
total_neutral_particle_flux_at_wall_due_to_surface_emission— chain 3/3, score 0.844 (0.006 under the 0.85 bar)poloidal_perturbed_magnetic_flux_at_measurement_position_due_to_wave_particle_interaction— chain 3/3, score 0.588 (a genuinely hard name)
Also noted: ratio_of_tritium_density_to_deuterium_density carries a separate genuine name-axis finding (audit:repeated_token_check — duplicated "density" token, likely tautology). That is not a docs-campaign target; it belongs to the name-axis workstream.
Checkpoint verdict & go/no-go
Disposition: QUALIFIED GO on the remaining ~$270 — after two cheap pre-conditions the lead's own "fix root causes before the bulk pass" guardrail already calls for. The pipeline itself is proven: quorum held on 100% of leaf reviews, zero outages, 98% acceptance, zero drift, refine waste inside gate, and 8× faster than estimated. The July-18 blocker is retired.
- Narrow the
estimator_recipe"derived from" false positive (validator root-fix). Options for the lead: (a) dropderivedfrom the verb alternation, keepingcomputed|calculated|estimated|obtained— the sampled genuine recipes all use those, so coverage is retained; or (b) exempt "derived from [name:link] / the local <quantity>" provenance specifically. Either stops the spurious halts and shrinks the campaign selection to real defects. This is a doc-policy semantics call — is "is derived from [related quantity]" acceptable normative prose? — hence the lead decides which fix. - Re-baseline the budget to ≈ $0.29/name. The resilient blind pair (
claude-sonnet-5+grok-4.5) is the cost driver — better discrimination and no 429s, but ~$0.09–0.11/name dearer than the retired pair. The ~1,300 remaining docs-fixable names ≈ $380, not $270. The lead accepts the premium, trims the spec (e.g. prose-only), or caps rotations.
Without fix (1) it is a NO-GO: every rotation halts on the same provenance false positive after ~1 batch. With it, rotations run clean and the self-pruning selection converges to zero over ~$380.
What's next
Land the estimator_recipe narrowing (with a regression test that the two halted docs scan clean and the 12 sampled backlog recipes still flag), re-baseline the budget, then resume the stratified rotations on the same command — the selection re-stratifies over the remaining ~1,300 and the 98 fixed names stay out. Tracked as f-docs-campaign-rotations (stays open) plus the new validator-fix followup.