grammar/terms.py:template_sentences returns each selected
template's documentation opening followed by its note. It emits each
distinct note once, in selection order. This is necessary because
total_thermal_electron_density selects both a total entry and
a thermal entry. The selector orders conditioned entries only against
unconditioned siblings, so neither conditioned entry suppresses the other.
The accessor keeps both openings and emits their shared sentence once;
select_conventions is unchanged.
| Sentence from the ruling | Placement in templates.yml | Reason and boundary |
|---|---|---|
| A cold or hot neutral temperature is that of the named component alone; without the component it covers the whole neutral population of the selected species. | temperature with subject: neutral: one entry excludes population, the other requires cold or hot. |
It describes neutral_temperature and the cold and hot forms. A population-token definition would also reach unrelated quantities such as cold_electron_density; a broad neutral template would reach other neutral populations. |
| Triangularity without a qualifier is the mean of the upper and lower triangularities; upper and lower triangularity each use one extremum of the cross-section. | triangularity: one entry excludes zone, the other requires upper or lower. |
It covers the unqualified and vertical forms at the plasma boundary and flux surface; other zone forms, such as inner_triangularity_of_plasma_boundary, do not receive it. |
| Total density is the sum of the thermal and fast populations of the species; thermal excludes the suprathermal particles that fast names. | density with subject: electron: one entry requires aggregation: total, the other requires population: thermal or fast. |
It covers total and thermal/fast electron-density forms, including stacked forms. Other electron-density forms and other species do not receive it. |
The test enumerates 10 temperature names, 28 triangularity names and all
24 electron-density combinations of registered population and aggregation
tokens. It checks all three sentences on every name through
template_sentences, plus opening and note order on
total_thermal_electron_density. The focused registry and
template gate passed 85 tests (EXIT=0) against 22 passed (EXIT=0) at base.
The full grammar suite passed 1275 tests with 32 skipped (EXIT=0) against
1212 passed and 32 skipped (EXIT=0) from the extracted base revision:
63 added passes and zero added failures. The base log records its
imported module path under the extraction, rather than this worktree.
Five temporary mutations each made a test that passes at head fail.
Removing the neutral sentence from its conditioned entry made
neutral_temperature render zero copies (EXIT=1).
Removing note deduplication made total_thermal_electron_density
render two copies of the density sentence (EXIT=1). Moving the neutral
sentence to the broad subject-temperature entry reached
electron_temperature (EXIT=1); moving the triangularity
sentence there did the same (EXIT=1); moving the density sentence to the
broad subject-density entry reached electron_density
(EXIT=1). Their logs are control-removed-neutral.log,
control-duplicated-density.log,
control-misplaced-neutral.log,
control-misplaced-triangularity.log and
control-misplaced-density.log in the run directory.