§5 — P4: Catalog unit-family repairs ✓ landed 2026-07-11
Executed as supervised sn edit operations against the production graph (lead-authorized
window), each repair re-validated and re-reviewed through the full P2 gate stack; accepted-name renames
stamped superseded_from_stage=accepted so P1 emits deprecation stubs at the next export.
The review §7 table was 4 days stale — every row was reconciled against the live graph first
(13 momentum rows had already been superseded by June pipeline work; 3 of the 4 energy-flux wall entries
had been re-united to W·m⁻² by the DD interim fix).
Per-family outcome
| Family | Decision | Result |
|---|---|---|
| Momentum → momentum_source | d-momentum-rename | 18 accepted names, 17 edits (5 subtree roots + 12 projections). 14 successors accepted through the
gates (scores 0.875–1.0); the deferred diamagnetic cascade child recovered by explicit self-scope
rename. Residual check: 0 accepted bare *_momentum at kg·m⁻¹·s⁻². |
| Energy-flux dimension flips | d-energy-flux-reserve | 2 still-applicable recombination entries (m⁻²·s⁻¹) folded into the particle-flux family as
incident_neutral{,_state}_particle_flux_at_wall_due_to_recombination — both accepted.
The energy_flux family is now uniformly W·m⁻² across all accepted rows. |
| Power-density outliers → energy_flux | d-power-density (lead-refined) | The locked *_power_flux_* target was grammar-inexpressible (a flux of power is
dimensionally nonsensical — W·m⁻² is the flux of energy). Lead decision: fold the 6 W·m⁻²
entries into energy_flux; peaks use the canonical transformation
maximum_of_energy_flux_at_<locus> (the infix energy_peak_flux spelling
was explicitly disallowed). 5 renames accepted/collapsed
(energy_flux_at_divertor_target, maximum_of_energy_flux_at_{first_wall,divertor_target};
energy_flux_at_first_wall collapsed into the existing energy_flux_at_wall by
the reviewer). power_density (W·m⁻³) family untouched (71 rows). |
| One-line self-contradictions | — | toroidal_angle_of_active_limiter_point: recomposed from its true DD source (a
dimensionless flux-limiter multiplier) rather than blessing the hallucinated rad anchor —
the DD has no φ for active_limiter_point. Hz→s⁻¹ (fusion neutron rate) and electron_source_rate
deferred (see residuals). |
| Source/flux validator rule | — | Live at ISN 4d43923: flags families where *_X and *_X_flux/*_X_source
share identical units under near-identical names (warning severity) + 6 tests. |
Deprecation-stub spot-check
Every renamed accepted old name shows name_stage=superseded, superseded_from_stage=accepted
in the graph (the 802 pre-existing superseded nodes carry sfs=None, so the new stamps are a clean
signal) — confirming P1 will emit their deprecation stubs at the next export.
Residuals (documented, safe)
- 3 neutral_state momentum successors exhausted
(
parallel/poloidal/toroidal_neutral_state_momentum_source): near-threshold quorum (0.756–0.825 vs 0.85), not a naming defect — the pipeline's own refine agreed no better name exists, and the state-resolved DD sources are genuinely distinct from the accepted state-summed siblings. Their old names are superseded; P1's skip-logic (successor not published ⇒ stub skipped) prevents any dangling pointer, so this is safe. Not force-accepted — that would bypass the P2 gate. Left for a future escalated-review or lead physics-judgement pass. maximum_of_energy_flux_at_limiterdrafted: the refine loop rewordedalong_limiter→at_limiter(canonical locus preference); the successor drains through a normal review rotation.parallel_net_ion_momentum_source: refine reworded fromparallel_ion_momentum_source("net" is redundant — true of every family member); the clean re-rename is blocked by the superseded-intermediate tombstone id (queued: tombstone-id supersede mechanism — now blocking two honest repairs).- Pair supersede (
power_density_at_wall→ existingenergy_flux_at_wall): nosn editrename-onto-existing-id mechanism exists; staged as a targeted write (p4_pair_supersede.py, both confirmed accepted W·m⁻²) run under the supervised window. - Hz→s⁻¹ + electron_source_rate: DD-unit-driven (unit_overrides territory) and a mixed-source-set unit issue respectively — cross-scope, queued.
Mixed-unit sweep
Regenerated from the live graph: 2312 accepted names, 310 grammar-groups, 36 mixed-unit — the residual is
principled splits (eV vs K temperatures, global s⁻¹ vs volumetric m⁻³·s⁻¹ rates) plus a short list of genuine
oddities recorded for later review (neutron-detector unit vectors carrying m; the bare-flux group).