⏸ parked 2026-07-15

Parked — molecular species are not DD-path-sourceable

Lead decision (2026-07-15): park this plan. Molecular/compound species (D2, CD4) only ever resolve in solver data — a SOLPS solution array — not at a fixed DD path. There is no DD path that always maps to "CD4" (the species present is a run-time property of the model's element[]/multiplicity arrays, not a static leaf). ISN standard names are minted by tagging DD paths with a fixed name; a quantity that has no fixed DD-path anchor is therefore not a candidate for a DD-path-sourced standard name — we could never attach the name to a path. So compound-species naming is out of scope for the catalog pipeline as it stands. Retained as reference; revisit only if a data-addressable naming need (not DD-path-sourced) arises.

§1 — Problem and origin

Edge and divertor codes — SOLPS above all — track molecular and compound species: molecular deuterium D2, and the hydrocarbon families (CD4, C2D6, …) produced by chemical erosion of carbon plasma-facing components. The ITER Data Dictionary models these as an ion[]/element[] and neutral[]/element[] array in which each element carries nuclear charge Z, mass number A, and a multiplicity field — the number of atoms of that element in the species (the DD cluster "Species Multiplicity Atomic Data": edge_profiles/…/neutral/element/multiplicity, …/ion/element/multiplicity). D2 is a neutral species with one element (D) at multiplicity 2; CD4 is two elements (C×1, D×4).

The ISN grammar cannot express this today. It has molecular as a population token (energy/molecularity class) but no way to name which molecule — D2 vs CD4 are indistinguishable. A handful of specific molecular subject tokens have already crept into subjects.yml ad-hoc (methane, deuterated_methane, ethane, ethylene, propane, silane, ammonia, ammonia_deuterated, methane_carbon_13) — a combinatorial anti-pattern (one subject token per molecule, no compositional structure), which is exactly the mistake this plan should replace with a principled construction. This surfaced while shipping the state segment (see systematic-review-remediation, f-srr-010); the lead asked to scope compound species as its own design task.

§2 — Three distinct species-grouping constructions (do not conflate)

The imas-dd investigation showed the intuitive "paired group" actually splits three ways. Only the third is this plan's subject; the figure fixes the boundaries.

1 · Reaction channel Reactant PAIR in a fusion reaction deuterium_tritium deuterium_deuterium DD: distribution_source_identifier (D_T_to_4He_n, …) STATUS: already supported atomic subject tokens · core fusion 2 · State resolution A specific STATE of one species ion_charge_state neutral_internal_state DD: species_reference_identifier (ion_state, neutral_state) STATUS: shipped (state segment) orthogonal grammar segment 3 · Compound species A MOLECULE: elements × count D₂ (D ×2) CD₄ (C ×1, D ×4) DD: element[] + multiplicity ("Species Multiplicity" cluster) STATUS: this plan (gap) SOLPS edge/divertor · erosion Constructions 1 and 2 are settled; only construction 3 (molecular composition) is open.
The three species-grouping constructions in the DD. This plan addresses only #3 (compound/molecular species). #1 (reaction-channel pairs) is already atomic subjects; #2 (charge/internal state) shipped as the state segment.

§3 — Scope and requirements

§4 — Candidate directions (for the brainstorm — not yet decided)

This plan is a design task: the construction is undecided and needs a brainstorm (and likely a Fable design critique, as the state rework had) before any implementation plan. Directions to weigh:

Open questions the brainstorm must answer: does composition belong in the subject axis or a new axis? how does a molecular ion (compound identity + charge_state) render? is isotopic labelling (D vs H, 13C in methane_carbon_13) part of this axis or separate? how many real SOLPS species must be expressible (bounded set vs open formula)?

§5 — Relationship to other work

§ Decisions

Which construction expresses molecular/compound species?

Bounded molecule set (enumerated SOLPS species) or open formula grammar?

§ Followups

Brainstorm the compound-species construction (A/B/C) + Fable design critique

Design-stage plan authored. Next: run the brainstorm to choose the construction (molecule-vocabulary / structured-formula / element-multiplicity-substructure) and scope (bounded set vs open formula), grounded in the DD element[]+multiplicity model and the real SOLPS species set; get a Fable design critique as the state rework did; then write an implementation plan. No grammar/graph changes until the design is approved.
Project: imas-standard-names
Plan:    sn-compound-species-naming (http://localhost:8765/imas-standard-names/sn-compound-species-naming.html)
Section: design
Tier:    opus

Context
  SOLPS tracks molecular/compound species (D2, CD4 hydrocarbons from carbon erosion); the DD models them as element[]+multiplicity. ISN has no compositional construction — only ad-hoc per-molecule subject tokens (methane, ethane, ...). Spun out of the state-segment work (systematic-review-remediation f-srr-010). Honour the live decisions shown above; do not re-list them.

State to read  (CODE / FILES / DATA)
  docs/sn-compound-species-naming.html (this plan) for the three-construction framing.
  imas_standard_names/grammar/vocabularies/subjects.yml — the ad-hoc molecular tokens to retire (methane, deuterated_methane, ethane, ethylene, propane, silane, ammonia, ammonia_deuterated, methane_carbon_13).
  imas-dd tools: edge_profiles ion/element + neutral/element + multiplicity; species_reference_identifier; the 'Species Multiplicity Atomic Data' cluster. Enumerate the real SOLPS species set.
  The shipped state segment (grammar/vocabularies/states.yml, model.py _check_state_gate) as the precedent for adding a subject-refinement construction.

Scope locks / constraints  (non-decision)
  Self-describing + compositional (not one-token-per-molecule) + DD-anchored to element[]/multiplicity. Must compose orthogonally with population(molecular), the state segment, component/aggregation. Greedy longest-prefix + canonical-one-spelling contract must hold; full-catalog round-trip must stay green. ISN owns all vocabulary (no codex hardcoding).

Done-when
  1. Construction + scope decisions locked (the two decisions in this plan)
  2. Fable design critique captured; before/after examples across molecular ion / neutral / isotopic cases
  3. Implementation plan written (writing-plans); this followup resolved

PARKED (lead decision 2026-07-15). Molecular/compound species resolve only in solver data (SOLPS solution arrays), never at a fixed DD path — the species present is a run-time property of element[]/multiplicity, not a static leaf. ISN names are minted by tagging DD paths; a quantity with no fixed DD-path anchor cannot be tagged, so compound species are not candidates for DD-path-sourced standard names. Out of scope for the catalog pipeline; plan archived as reference.