§1 — Method and verdict
Every DD path carrying two accepted standard names (90 paths, graph query on
IMASNode-[:HAS_STANDARD_NAME]→StandardName) was adjudicated against the DD docstring
(2026-07-04, read-only pass). Buckets: A generic-vs-specific double attach (the specific name
keeps the path) — 60; B locus/device mismatch (one name's
of_<device> contradicts the path) — 17; C both names fail the
DD semantics — 9; D defensible synonym/uncertain — 4.
86 of 90 are attach errors of exactly the class the new attach-gate guards reject going forward.
§2 — Worst physics mislabels
disruption/global_quantities/phi_halo_boundary— carries a poloidal-flux name but the DD quantity is toroidal magnetic flux; hard poloidal↔toroidal swap. Keeptoroidal_magnetic_flux_at_halo_boundary.edge_transport/model/ggd/ion/energy/d_radial/values— radial ion energy diffusivity carryingradial_neutral_energy_diffusion_coefficient(wrong species) andradial_ion_particle_diffusivity(wrong transported quantity). Neither right.{edge,plasma}_profiles/ggd/ion/velocity_over_b_field/*(4 paths) — DD quantity is velocity÷B (m·s⁻¹·T⁻¹); every attached name calls it a plain velocity, and the radial variant fabricatese_cross_b_driftand astatelevel absent from the path.coils_non_axisymmetric/coil/conductor/resistance— labelledresistance_of_toroidal_field_coilon a correction-coil conductor; wrong device class.pf_passive|pf_plasma/.../thick_line/first_point/z— passive-conductor and plasma-filament geometry points tagged with beam-diagnostic loci (beam_tracing_point,launching_position).
§3 — Full table
One row per name-pair family; counts in parentheses where a pair repeats across sibling paths. "keeps" = the name that should retain the path; the other is detached (A/B), or both are replaced (C).
| Path (family) | Bucket | Verdict |
|---|---|---|
{coils_non_axisymmetric,tf}/coil/conductor/elements/*/phi (7) | A | keeps toroidal_angle_of_coil_conductor_element |
ntms/time_slice/mode/*/{n_tor,n_phi} (4) | A | keeps toroidal_mhd_mode_number |
runaway_electrons/ggd_fluid/ddensity_dt_*/values (3) | A | keeps …_due_to_<process> |
*/profiles_2d/ion/temperature, mhd/ggd/t_i_average (4) | A | keeps ion_average_temperature |
{edge,plasma}_profiles/ggd/ion/velocity_over_b_field/* (4) | C | needs a velocity-over-B (mobility-like) name; both current names wrong |
*/ggd/j_diamagnetic/* (4) | A | keeps <dir>_diamagnetic_current_density (component reading) |
*/momentum/d/diamagnetic (2) | A | keeps diamagnetic_momentum_diffusivity |
*/fibre_bundle/geometry/outline/x2 (3) | A | keeps x2_coordinate_of_optical_element |
camera_visible/channel/optical_element/geometry/x1_width | A | keeps width_of_optical_element |
spectrometer_uv/channel/aperture/x1_width | B | keeps width_of_diagnostic_aperture |
coils_non_axisymmetric/coil/conductor/resistance | B | keeps resistance_of_correction_coil |
disruption/global_quantities/phi_halo_boundary | B | keeps toroidal_magnetic_flux_at_halo_boundary |
distributions/.../{orbit}/collisions/.../torque_* (5) | A | keeps orbit-population-qualified name |
distributions/.../trapped/collisions/electrons/power_fast | A | keeps trapped_fast_electron_power_density_due_to_collisions |
ece/polarizer/centre/z | A | keeps vertical_coordinate_of_diagnostic_antenna |
edge_profiles/ggd/j_ion_neutral_friction/poloidal | A | keeps poloidal_current_density_due_to_ion_neutral_friction |
edge_sources/source/ggd/ion/momentum/radial | A | keeps radial_ion_momentum_source |
edge_sources/source/ggd/neutral/momentum/radial | A | keeps radial_neutral_state_momentum_source (spurious state noted) |
edge_transport/model/ggd/ion/energy/d_radial/values | C | needs radial ion energy diffusivity; both wrong |
edge_transport/model/ggd/ion/state/energy/d/values | D | synonyms; pick one canonical term |
edge_transport/.../neutral/momentum/flux_limiter/radial | A | keeps radial_neutral_momentum_coefficient |
equilibrium/.../constraints/faraday_angle/measured | A | keeps faraday_angle |
equilibrium/.../constraints/flux_loop/measured | A | keeps poloidal_magnetic_flux_at_sensor_attachment_point |
hard_x_rays/channel/filter_window/outline/x2 | A | keeps x2_coordinate_of_filter_window |
{hard,soft}_x_rays/channel/filter_window/radius (2) | A | keeps radius_of_filter |
ic_antennas/.../strap/geometry/annulus/z | D | lean vertical_coordinate_of_conductor_cross_section |
ic_antennas/.../strap/geometry/rectangle/z | B | keeps vertical_coordinate_of_conductor_cross_section |
nbi/unit/aperture/centre/z | B | keeps vertical_coordinate_of_aperture (NBI is not a diagnostic) |
neutron_diagnostic/detector/geometry/surface | B | keeps surface_area_of_neutron_detector |
pellets/.../path_geometry/second_point/z | B | keeps vertical_coordinate_of_pellet_path_point |
pf_passive/loop/element/geometry/oblique/z | D | lean vertical_coordinate_of_passive_structure |
pf_passive/.../thick_line/second_point/z | B | keeps vertical_coordinate_of_passive_structure |
pf_passive/.../thick_line/first_point/z | C | needs a passive-structure point name; both loci wrong |
pf_plasma/element/geometry/annulus/radius_outer | B | keeps outer_radius_of_plasma_filament |
pf_plasma/.../thick_line/first_point/z | C | needs a plasma-filament point name; both loci wrong |
plasma_profiles/.../velocity_diamagnetic/diamagnetic | A | keeps ion_state_diamagnetic_velocity_due_to_diamagnetic_drift (redundant tail noted) |
plasma_transport/.../ion/momentum/flux/poloidal | A | keeps poloidal_ion_momentum_flux |
plasma_transport/.../ion/momentum/flux/z | B | keeps vertical_ion_momentum_flux |
plasma_transport/model/ggd/momentum/d_radial/values | C | species-less momentum diffusivity; both inject a species |
plasma_transport/.../neutral/momentum/d_radial/values | A | keeps radial_neutral_momentum_diffusion_coefficient |
plasma_transport/.../neutral/momentum/flux/diamagnetic | A | keeps neutral_state_momentum_flux_due_to_diamagnetic_drift |
plasma_transport/.../neutral/state/momentum/v/radial | A | keeps radial_neutral_state_momentum_convection_velocity |
pulse_schedule/.../line_of_sight/third_point/phi (2) | A | keeps toroidal_angle_of_along_line_of_sight (grammar of of_along noted) |
reflectometer_fluctuation/.../first_point/z | B | keeps vertical_coordinate_of_launching_position |
runaway_electrons/.../volume_average/current_density | A | keeps parallel_volume_averaged_runaway_electron_current_density |
runaway_electrons/.../momentum_critical_avalanche | A | keeps volume_averaged_runaway_electron_critical_momentum_due_to_avalanche |
runaway_electrons/profiles_1d/ddensity_dt_dreicer | B | keeps runaway_electron_source_rate_due_to_dreicer |
spectrometer_uv/channel/grating/curvature_radius | D | synonyms; DD is a radius of curvature — neither says radius |
spectrometer_uv/.../image_field/centre/z | B | keeps vertical_coordinate_of_camera |
spectrometer_visible/.../{fibre_bundle,polarizer}/radius (2) | A | keeps radius_of_optical_element |
spectrometer_x_ray_crystal/{camera,channel/camera}/centre/z (2) | B | keeps vertical_coordinate_of_camera |
spectrometer_x_ray_crystal/.../line_of_sight/first_point/z | B | keeps vertical_coordinate_of_launching_position |
spectrometer_x_ray_crystal/channel/wavelength_frames | B | keeps wavelength_of_detector_pixel |
summary/.../power_{launched_,}nbi/value (2) | A | keeps total_power_of_neutral_beam_injector; FLAG: launched vs coupled power are different quantities sharing one name |
summary/local/pedestal/magnetic_shear/value | A | keeps magnetic_shear_at_pedestal |
waves/.../beam_tracing/beam/position/theta | A | keeps poloidal_angle_of_beam_tracing_beam |
waves/.../e_field_n_phi/plus/phase | A | keeps per_toroidal_mode_left_hand_circularly_polarized_wave_electric_field (neither encodes phase — noted) |
waves/.../profiles_2d/e_field_n_tor/plus/amplitude | C | needs per-toroidal-mode amplitude name; both incomplete |
Evergreen: independent-review-fixes §6.