Followups landed — q95 locus fix, DD-version gate, composition family
Evergreen: sn-boundary-averaged-name-multiplicity · landed 2026-07-10 · all deterministic ($0 LLM spend)
f-bam-004 — separatrix q mis-anchored to q95
DD defines summary/local/separatrix*/q as q evaluated AT the LCFS — not q95. The two
leaves had been consolidated onto safety_factor_at_normalized_poloidal_magnetic_flux_equal_to_0_95
(which also carries the two genuine q95 sources), and the correct
safety_factor_at_plasma_boundary sat superseded with no successor. Fix: revived the
boundary name (accepted) and moved the two separatrix sources onto it; the q95 name keeps only the
q_95 sources.
DD-version gate (imas-codex 51c19815) — the systemic finding
The q95/momentum anomalies traced to a systemic defect: the graph accumulated IMASNodes across DD
major versions and 17,216 of 61,366 nodes (28%) are absent from DD 4.1.0 (removed, or
renamed away — the DDv3 *_tor → *_phi family). Removal was recorded only as
DEPRECATED_IN edges that no seeding query consulted, so extraction kept seeding
DDv3-only paths: 1,535 dd sources sat on non-DDv4 paths, 857 feeding live names.
| Fix | Detail |
|---|---|
| Root (code) | New graph/dd_lifecycle.py: derives the valid-path set and the NBC rename map (structure renames propagate to whole subtrees) from the packaged DD XML; stamps absent nodes lifecycle_status='removed' + renamed_to; wired into the DD build; idempotent with restore-on-return. All three seeding queries (dd extractor, extraction candidates, domain auto-seed sweep) exclude removed nodes. A read-only sn run probe (find_removed_dd_sources) flags survivors. |
| Graph stamp | 17,216 nodes stamped removed; 2,824 annotated with their DD4 rename. |
| Source cleanup | Per-source policy over the 857: 300 redundant (DD4 rename-twin already produces the same name) → detached+stale; 37 re-anchored to their DD4 path (same name, deterministic bind); 28 rename-twins with different DD4 semantics (e.g. ece t_e → t_radiation: electron vs radiative temperature) → v3 source detached, DD4 name authoritative; 492 truly removed → detached+stale. 678 no-live-name v3 sources marked stale. |
| Name retirement | 111 names left with no DDv4 anchor → name_stage='exhausted' (terminal, kept for lineage, dropped from exports). Spot-checked before apply (e.g. inner_triangularity_of_plasma_boundary — DD4 removed boundary_separatrix/triangularity_inner). |
| Verification | 0 v3 sources feeding live names; 0 orphans / 0 desyncs (2 transient derived-parent orphans healed via lifecycle normalize); both probes clean; doc links repointed. |
f-bam-003 — composition density-ratio family (18 leaves)
DD defines summary/composition/* as "ratio of the volume-averaged density (inside LCFS)
of each ion species to the volume-averaged electron density". Canonical explicit shape:
ratio_of_volume_averaged_<sp>_density_to_volume_averaged_electron_density.
14 renames via the cascade (dropping spurious number/maximum/ion/total
tokens and the _fraction shapes); 3 already canonical; hydrogen was a genuine collision —
ratio_of_hydrogen_density_to_total_hydrogenic_density correctly names the two
isotope_fraction_hydrogen leaves, so the composition source was detached and the canonical
hydrogen ratio persisted as a drafted name. All 18 leaves now single-name canonical.
Open observations
- Three drafted names await the next review rotation:
flux_surface_averaged_effective_charge_at_plasma_boundary,flux_surface_averaged_ion_density_at_plasma_boundary,ratio_of_volume_averaged_hydrogen_density_to_volume_averaged_electron_density. ratio_of_hydrogen_density_to_total_hydrogenic_densityserves BOTH the line-average and volume-average isotope-fraction leaves — same class of averaging-domain collision, low priority.