§2 — Cylindrical axis-token naming ✓ landed 2026-07-05

Evergreen: catalog-naming-followups §2 (decision cylindrical-axis-naming = words-canonical, followup f-cnf-005). Decision A: physical directions keep canonical WORDS (radial/toroidal/vertical); arbitrary local axes use x/y/z; one canonical form, no dual path.

The catalog was already one way (compose emits canonical; the ISN parser accepts only canonical tokens; the DD funnel normalises r/phi/z at ingest). This section removed the misleading residue and hardened the generator so NEW names benefit — not just an edit of existing names.

PieceWhat landedCommit
Dead aliases removed (ISN) Emptied the poloidal:[pol], radial:[r], toroidal:[phi,tor] alias lists in coordinate_axes.yml — the parser loads axis KEYS only (frozenset(axes_reg.axes)), so the alias lists were dead metadata implying a second, unsupported spelling. Zero-consumer verified (parser, codegen, vocab_loaders, dataset publish, tests). Codegen regen was a byte-identical no-op. The loader test was updated to assert every axis has empty aliases. f57f2f0
Generation catch-and-promote (imas-codex) The sanctioned C-funnel: in GrammarSegments._validate_projection_axis a stray DD-leaf short-form is coerced to its canonical word BEFORE the registered-token check — r→radial, phi/tor→toroidal, pol→poloidal — mirroring the existing projection_shape coercion ("coerce rather than bounce"). z is deliberately excluded (a valid canonical Cartesian axis; Cartesian-vs-cylindrical frame disambiguation is the DD-ingest boundary's job, families._classify_suffix). Compose-time only. de264aa1

One-way invariant preserved (no dual path)

The catch-and-promote is a generation-time error-catcher, NOT a parser second spelling. The ISN parser stays strict: a stored name using a short form (e.g. r_coordinate_of_flux_loop) is still rejected outright (parse_standard_name raises) — test-proven in test_axis_catch_and_promote.py. So the round-trip invariant holds and r_… can never enter the catalog.

Verification

What's next

Independent of §2. The remaining plan work is graph-side: §6 (dd-path dedup), §7 (open doc edits + LaTeX-description generate-level fix), §4 (orientation-vector family completion).