From 2451ab498b0e84b42c390e7ee4a052cdb59795c2 Mon Sep 17 00:00:00 2001 From: Simon McIntosh Date: Thu, 22 Oct 2026 11:37:12 +0200 Subject: [PATCH 1/8] docs(plans): add one outboard-midplane definition to the concept registry plan Records the lead's ruling of 2026-10-22. The midplane loci take one definition: the low-field-side maximum-major-radius point of the flux surface, with the inboard midplane at the high-field-side minimum. This replaces the per-dataset identifier wording, which made the locus sentence contradict any name taken at a stated height. poloidal_angle keeps its zero on the axis plane. --- docs/plans/concept-and-notation-registry.html | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/plans/concept-and-notation-registry.html b/docs/plans/concept-and-notation-registry.html index 7ea7fa1e..e1d8b218 100644 --- a/docs/plans/concept-and-notation-registry.html +++ b/docs/plans/concept-and-notation-registry.html @@ -19,12 +19,12 @@ - + One Definition Per Concept, Published With The Grammar | imas-standard-names - - + + @@ -192,6 +192,10 @@

§9 — Locus definitions say what the concept registry says, and na

locus_registry.yml defines outboard_midplane as "follows the DD midplane_identifier (default option 'dr_dz_zero_sep': the outboard separatrix point where dr/dz = 0)". The imas-codex documentation gate copies a locus definition into every documentation that uses the locus, and its reviewer docks the DD field and option names as implementation leakage. So every outboard-midplane name loses points whichever way it is written. The gate requires whatever text the registry carries, so rewriting the registry changes what it requires; the two are not in conflict.

The physics is already settled in this repository. Commit 0e43cde (2026-10-14) removed the dR/dZ = 0 definition, which is undefined for a limited plasma with no separatrix and disagreed with poloidal_angle. conventions/concepts.yml now defines the outboard midplane as Z = Zmid, R > Raxis, with Zmid the midplane height the data's midplane identifier selects, or the magnetic-axis height when none is given. The locus definitions never followed.

Rewrite each locus_registry.yml definition that names a DD field, an IDS path or an option value so it states, in words, what its concepts.yml entry states. Do not reinstate dR/dZ = 0 or any definition a recorded decision removed. At least these carry DD references: outboard_midplane, inboard_midplane, outboard_midplane_separatrix, pedestal, pedestal_maximum, pedestal_top, separatrix and an at-limiter entry. A locus with no concepts.yml entry keeps its physics and loses only the DD reference, unless that physics is the dR/dZ = 0 point. outboard_midplane_separatrix is such a locus: today it is "the outboard separatrix point where dr/dz = 0". Redefine it from the midplane, as the point where the separatrix crosses the midplane height on the low-field side (R > Raxis), with no dR/dZ wording. Where the default midplane height is the one the data selects at the separatrix's outermost point, that is the same point, so no consumer's meaning moves. The one locus whose meaning is that point, dr_dz_zero_point, keeps its geometric definition (the outboard separatrix point where dR/dZ = 0) and loses every DD reference it carries: its IDS path, the midplane_identifier field and the option value; it and outboard_midplane_separatrix coincide under the default midplane height, which the fragment notes as a question for a later vocabulary ruling, not this section. Keep each pointer from one locus to a sibling, such as outboard_midplane to outboard_midplane_separatrix for a value at the intersection. List every definition changed, before and after, in the fragment.

Done when: a test asserts that no locus definition names a DD field, an IDS path or an option value, and that none of the midplane loci (outboard_midplane, inboard_midplane, outboard_midplane_separatrix) contains dR/dZ or dr/dz in any case. It fails on the old outboard_midplane text and on the old outboard_midplane_separatrix text, recorded with EXIT=. A second test asserts that the outboard_midplane and inboard_midplane definitions state both parts of their concepts.yml relation: the midplane height, with its magnetic-axis default, and the side of the magnetic axis (R greater or less than Raxis). It fails on a planted definition that drops either part. The grammar suite passes at head, judged by delta against base.

+

§10 — One outboard-midplane definition

+
+

Lead ruling, 2026-10-22. The catalog records one definition of the midplane loci and uses it in every name. The outboard midplane is the point on the low-field side where the flux surface in question reaches its maximum major radius. On the separatrix, that is its outboard maximum-R point. The inboard midplane is the corresponding point of minimum major radius on the high-field side.

This replaces the per-dataset wording of 0e43cde, where the data's midplane identifier selected the height, falling back to the magnetic-axis height. That wording is not one definition. It made the generic locus sentence contradict any name whose quantity is taken at a stated height: gap_at_outboard_midplane scored 0.50 to 0.56 in three reviews, each reviewer reading two heights. The ruling keeps both concerns 0e43cde answered:

Change. In imas_standard_names/grammar/vocabularies/conventions/concepts.yml, change outboard_midplane and inboard_midplane, their equations and symbols, and the poloidal_angle sentence. In imas_standard_names/grammar/vocabularies/locus_registry.yml, change the definitions of outboard_midplane, inboard_midplane and outboard_midplane_separatrix, and any other entry that restates the midplane height. Every definition stays physics-only: no DD field, IDS path or option value. The existing physics-only test keeps passing. Its relation test, which encodes the old midplane-height-with-magnetic-axis-default relation, is updated to the new relation and fails on the old text.

Done when, all of these:

The release and the downstream pin bump are separate nodes under grammar-release-and-downstream-pin.

+

§ Followups

From 4c044f1588259fed5f4514e3f8bb9be9077931aa Mon Sep 17 00:00:00 2001 From: Simon McIntosh Date: Thu, 22 Oct 2026 12:05:43 +0200 Subject: [PATCH 2/8] docs(grammar): define the midplane loci by maximum major radius The outboard and inboard midplane loci were defined by a per-dataset midplane height, selected by the data with the magnetic-axis height as the fallback. That is not one definition: a name whose quantity is taken at a stated height reads two heights. The outboard midplane is now the point on the flux surface in question of maximum major radius, on the low-field side, and the inboard midplane the point of minimum major radius on the high-field side. The equational relation is R = max_S R with R > R_axis, and R = min_S R with R < R_axis. outboard_midplane_separatrix is the separatrix reaching its maximum major radius, on the low-field side. poloidal_angle keeps its zero on the horizontal plane through the magnetic axis and now states that this zero coincides with the outboard midplane only for up-down-symmetric equilibria. No locus definition names a data-dictionary field, IDS path or option value; the physics-only test still excludes them. The relation test asserts the major-radius relation for outboard_midplane, inboard_midplane and outboard_midplane_separatrix, and the concept equations for the two midplanes. It fails on the previous height wording and on a definition that drops the relation. --- .../vocabularies/conventions/concepts.yml | 18 ++++---- .../grammar/vocabularies/locus_registry.yml | 22 ++++----- .../test_locus_definitions_physics_only.py | 46 +++++++++++++++---- 3 files changed, 55 insertions(+), 31 deletions(-) diff --git a/imas_standard_names/grammar/vocabularies/conventions/concepts.yml b/imas_standard_names/grammar/vocabularies/conventions/concepts.yml index 624e200a..8743a6e1 100644 --- a/imas_standard_names/grammar/vocabularies/conventions/concepts.yml +++ b/imas_standard_names/grammar/vocabularies/conventions/concepts.yml @@ -325,8 +325,10 @@ concepts: phrase: poloidal angle definition: >- The angle about the magnetic axis in a poloidal cross-section, zero on - the outboard midplane and increasing clockwise when the cross-section is - viewed with R to the right and Z upward. + the outboard side of the horizontal plane through the magnetic axis and + increasing clockwise when the cross-section is viewed with R to the right + and Z upward. That zero coincides with the outboard midplane only for + up-down-symmetric equilibria. equation: '\theta = \operatorname{atan2}(Z_{\mathrm{axis}} - Z,\; R - R_{\mathrm{axis}})' symbols: - symbol: R_{\mathrm{axis}}, Z_{\mathrm{axis}} @@ -419,20 +421,20 @@ concepts: outboard_midplane: phrase: outboard midplane - equation: 'Z = Z_{\mathrm{mid}},\quad R > R_{\mathrm{axis}}' + equation: 'R = \max_{S} R,\quad R > R_{\mathrm{axis}}' symbols: - - symbol: Z_{\mathrm{mid}} - meaning: the midplane height the data's midplane identifier selects, the magnetic-axis height when none is given + - symbol: S + meaning: the magnetic flux surface the point lies on - symbol: R_{\mathrm{axis}} meaning: major radius of the magnetic axis restates_equation: false inboard_midplane: phrase: inboard midplane - equation: 'Z = Z_{\mathrm{mid}},\quad R < R_{\mathrm{axis}}' + equation: 'R = \min_{S} R,\quad R < R_{\mathrm{axis}}' symbols: - - symbol: Z_{\mathrm{mid}} - meaning: the midplane height the data's midplane identifier selects, the magnetic-axis height when none is given + - symbol: S + meaning: the magnetic flux surface the point lies on - symbol: R_{\mathrm{axis}} meaning: major radius of the magnetic axis restates_equation: false diff --git a/imas_standard_names/grammar/vocabularies/locus_registry.yml b/imas_standard_names/grammar/vocabularies/locus_registry.yml index f909e3cd..ed2f8aa6 100644 --- a/imas_standard_names/grammar/vocabularies/locus_registry.yml +++ b/imas_standard_names/grammar/vocabularies/locus_registry.yml @@ -605,10 +605,8 @@ loci: type: position allowed_relations: [at, of] definition: >- - The high-field-side equatorial midplane: points at the midplane height - with major radius less than the magnetic-axis radius. The data's midplane - identifier selects that height, or it is the magnetic-axis height when - none is given. + The high-field-side equatorial midplane: the point of minimum major + radius on the flux surface in question. inlet: type: position allowed_relations: [at, of] @@ -679,20 +677,16 @@ loci: type: position allowed_relations: [at, of] definition: >- - The low-field-side equatorial midplane: points at the midplane height - with major radius greater than the magnetic-axis radius. The data's - midplane identifier selects that height, or it is the magnetic-axis - height when none is given. For a value at the separatrix intersection - use outboard_midplane_separatrix. + The low-field-side equatorial midplane: the point of maximum major + radius on the flux surface in question. For a value at the separatrix + intersection use outboard_midplane_separatrix. outboard_midplane_separatrix: type: position allowed_relations: [at, of] definition: >- - The point where the separatrix crosses the midplane height on the - low-field side, at a major radius greater than the magnetic-axis radius. - The data's midplane identifier selects that height, or it is the - magnetic-axis height when none is given. A separatrix point value at the - outboard midplane is evaluated here. + The point where the separatrix reaches its maximum major radius, on the + low-field side. A separatrix point value at the outboard midplane is + evaluated here. outer: type: position allowed_relations: [at, of] diff --git a/tests/grammar/test_locus_definitions_physics_only.py b/tests/grammar/test_locus_definitions_physics_only.py index 277ab19d..3ba3b864 100644 --- a/tests/grammar/test_locus_definitions_physics_only.py +++ b/tests/grammar/test_locus_definitions_physics_only.py @@ -4,7 +4,10 @@ import pytest -from imas_standard_names.grammar.vocab_loaders import load_locus_registry +from imas_standard_names.grammar.vocab_loaders import ( + load_concepts, + load_locus_registry, +) DICTIONARY_REFERENCE = re.compile( r"\bDD\b|\bmidplane_identifier\b|\bdr_dz_zero_sep\b|" @@ -36,13 +39,38 @@ def test_locus_definitions_exclude_dictionary_references() -> None: @pytest.mark.parametrize( - ("name", "side"), - (("outboard_midplane", "greater"), ("inboard_midplane", "less")), + ("name", "side", "extremum"), + ( + ("outboard_midplane", "low-field", "maximum"), + ("inboard_midplane", "high-field", "minimum"), + ), ) -def test_midplane_definitions_state_height_and_side(name: str, side: str) -> None: - """Each midplane uses the selected height and its side of the axis.""" +def test_midplane_definitions_state_the_major_radius_relation( + name: str, side: str, extremum: str +) -> None: + """Each midplane is the extremum of the major radius on its field side.""" definition = load_locus_registry().loci[name].definition.casefold() - assert "midplane height" in definition - assert "data's midplane identifier" in definition - assert "magnetic-axis height when none is given" in definition - assert f"major radius {side} than the magnetic-axis radius" in definition + assert f"{side}-side equatorial midplane" in definition + assert f"point of {extremum} major radius" in definition + + +def test_outboard_midplane_separatrix_is_the_maximum_radius_point() -> None: + """The separatrix locus is where the separatrix reaches its largest radius.""" + definition = load_locus_registry().loci["outboard_midplane_separatrix"] + lowered = definition.definition.casefold() + assert "separatrix" in lowered + assert "maximum major radius" in lowered + + +@pytest.mark.parametrize( + ("name", "relation"), + ( + ("outboard_midplane", r"R = \max_{S} R,\quad R > R_{\mathrm{axis}}"), + ("inboard_midplane", r"R = \min_{S} R,\quad R < R_{\mathrm{axis}}"), + ), +) +def test_midplane_concepts_state_the_major_radius_relation( + name: str, relation: str +) -> None: + """Each midplane concept equation states its major-radius extremum.""" + assert load_concepts().concepts[name].equation == relation From 88d7af70c0c3c6a7bbd4ac04d68e2ae15ec4039a Mon Sep 17 00:00:00 2001 From: Simon McIntosh Date: Thu, 22 Oct 2026 12:34:38 +0200 Subject: [PATCH 3/8] docs(evidence): record the one midplane definition and its controls The landing record lists every changed definition before and after, the two red controls (the previous per-dataset height wording, and a planted definition dropping the major-radius relation) and the tests/grammar gate at base and head. --- .../isn-one-midplane.html | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 docs/evidence/fragments/concept-and-notation-registry/isn-one-midplane.html diff --git a/docs/evidence/fragments/concept-and-notation-registry/isn-one-midplane.html b/docs/evidence/fragments/concept-and-notation-registry/isn-one-midplane.html new file mode 100644 index 00000000..6833278e --- /dev/null +++ b/docs/evidence/fragments/concept-and-notation-registry/isn-one-midplane.html @@ -0,0 +1,124 @@ + +
+

+ The outboard and inboard midplane loci carried a per-dataset height: the + height the data's midplane identifier selected, and the magnetic-axis + height when none was given. A name whose quantity is taken at a stated + height therefore read two heights. Under the lead ruling in + concept-and-notation-registry §10 the midplane is now defined + once, by the major-radius extremum of the flux surface in question: + maximum on the low-field side for the outboard midplane, minimum on the + high-field side for the inboard midplane. +

+

+ Changed paths: + imas_standard_names/grammar/vocabularies/conventions/concepts.yml, + imas_standard_names/grammar/vocabularies/locus_registry.yml, + tests/grammar/test_locus_definitions_physics_only.py. + Commit 4c044f1, base 2451ab4. +

+ +

Definitions changed

+
    +
  • + concepts.yml outboard_midplane — before the + equation Z = Z_mid, R > R_axis with + Z_mid "the midplane height the data's midplane identifier + selects, the magnetic-axis height when none is given"; after + R = \max_{S} R,\quad R > R_{\mathrm{axis}} with + S "the magnetic flux surface the point lies on". +
  • +
  • + concepts.yml inboard_midplane — the same + before, with R < R_axis; after + R = \min_{S} R,\quad R < R_{\mathrm{axis}} with the same + symbols. +
  • +
  • + concepts.yml poloidal_angle — before "zero on + the outboard midplane and increasing clockwise …"; after "zero on the + outboard side of the horizontal plane through the magnetic axis and + increasing clockwise … That zero coincides with the outboard midplane + only for up-down-symmetric equilibria." The equation + \theta = \operatorname{atan2}(Z_{\mathrm{axis}} - Z,\; R - + R_{\mathrm{axis}}) is unchanged; the added sentence states where + the zero of that equation meets the redefined outboard midplane. The + zero stays on the horizontal plane through the axis, as COCOS 17 + requires. +
  • +
  • + locus_registry.yml outboard_midplane — before + "The low-field-side equatorial midplane: points at the midplane height + with major radius greater than the magnetic-axis radius. The data's + midplane identifier selects that height, or it is the magnetic-axis + height when none is given. For a value at the separatrix intersection use + outboard_midplane_separatrix."; after "The low-field-side equatorial + midplane: the point of maximum major radius on the flux surface in + question. For a value at the separatrix intersection use + outboard_midplane_separatrix." +
  • +
  • + locus_registry.yml inboard_midplane — before + "The high-field-side equatorial midplane: points at the midplane height + with major radius less than the magnetic-axis radius. The data's midplane + identifier selects that height, or it is the magnetic-axis height when + none is given."; after "The high-field-side equatorial midplane: the + point of minimum major radius on the flux surface in question." +
  • +
  • + locus_registry.yml outboard_midplane_separatrix + — before "The point where the separatrix crosses the midplane height on + the low-field side, at a major radius greater than the magnetic-axis + radius. The data's midplane identifier selects that height, or it is the + magnetic-axis height when none is given. A separatrix point value at the + outboard midplane is evaluated here."; after "The point where the + separatrix reaches its maximum major radius, on the low-field side. A + separatrix point value at the outboard midplane is evaluated here." +
  • +
+

+ Every other locus definition was read. None restates the midplane height. + midplane defines the reference plane itself on which the + vertical coordinate is zero, not a selected height, and is unchanged. + first_wall_midplane names the specified tokamak midplane + without a height. dr_dz_zero_point keeps its geometric + definition. separatrix keeps its pointer to + outboard_midplane_separatrix. +

+ +

Red controls

+
    +
  • + The previous per-dataset height wording restored in both vocabulary files + (base 2451ab4) makes the relation tests fail 5 of 6 + (EXIT=1): outboard and inboard + test_midplane_definitions_state_the_major_radius_relation, + test_outboard_midplane_separatrix_is_the_maximum_radius_point, + and both test_midplane_concepts_state_the_major_radius_relation + arms. The physics-only no-DD test passes on that wording, which is why + the relation test is the guard: + logs/negative-control-0e43cde.log. +
  • +
  • + A planted outboard_midplane definition that drops the + maximum-major-radius relation ("points at the midplane height of the flux + surface in question") fails 1 of 6 (EXIT=1): + logs/negative-control-planted-drop-relation.log. +
  • +
+

+ Each test fails when the code it guards is removed, shown above; the two new + relation tests pass at head + (logs/focused-head.log: 6 passed, EXIT=0). +

+ +

Gate

+

+ tests/grammar/ at base 2451ab4: 1282 passed, 32 + skipped EXIT=0 + (logs/base-tests-grammar.log). At head 4c044f1: + 1285 passed, 32 skipped EXIT=0 + (logs/head-tests-grammar.log). Zero added failures; the three + extra passes are the relation tests this node added. +

+
\ No newline at end of file From 4e175273b7b813fcf00ec5d876cc73c86758a317 Mon Sep 17 00:00:00 2001 From: Simon McIntosh Date: Thu, 22 Oct 2026 14:38:22 +0200 Subject: [PATCH 4/8] promote(r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3): not-run Record the landing: append the run to the project ledger and its plan comment in one commit, so a promotion leaves the checkout without uncommitted state at the paths it wrote. --- docs/plans/concept-and-notation-registry.html | 5 +- ...view-of-isn-one-midplane-88d7af70c0c3.json | 31 + ...view-of-isn-one-midplane-88d7af70c0c3.json | 1100 +++++++++++++++++ 3 files changed, 1135 insertions(+), 1 deletion(-) create mode 100644 docs/state/imas-standard-names/reviews/run/r-20261022T093735018238-isn-one-midplane/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json create mode 100644 docs/state/imas-standard-names/runs/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json diff --git a/docs/plans/concept-and-notation-registry.html b/docs/plans/concept-and-notation-registry.html index e1d8b218..ad4a3bde 100644 --- a/docs/plans/concept-and-notation-registry.html +++ b/docs/plans/concept-and-notation-registry.html @@ -23,7 +23,7 @@ One Definition Per Concept, Published With The Grammar | imas-standard-names - + @@ -313,6 +313,9 @@

Land the loader and accessor first; content follows from

§9 closed. Locus definitions state the concept registry and name no DD field, IDS path or option; the midplane loci carry no gradient wording (merge 785e858, review 117). The release in §4 now carries §7, §8 and §9. evidence

+
+

Independent review of run r-20261022T093735018238-isn-one-midplane at base 2451ab4 head 88d7af7: all six checklist items read (goal, done_when, write_paths, manifest, diff 4c044f1+88d7af7, call sites terms.py standard_terms and select_conventions, grammar/context.py, catalog/dataset.py, grammar/parser.py, validation/semantic.py, models.py), six dimensions scored (goal_fidelity 20, evidence 19, scope_discipline 19, durability 15, fit 19, reuse 20; total 112 of 120), added_failure_count 0 from the reviewed run's own baseline_suite and after_suite logs (both completed, EXIT=0, 1282 and 1285 passed); one follow-on finding: the reworded poloidal_angle definition and its new up-down-symmetry sentence are unguarded.

+

diff --git a/docs/state/imas-standard-names/reviews/run/r-20261022T093735018238-isn-one-midplane/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json b/docs/state/imas-standard-names/reviews/run/r-20261022T093735018238-isn-one-midplane/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json new file mode 100644 index 00000000..38d164b9 --- /dev/null +++ b/docs/state/imas-standard-names/reviews/run/r-20261022T093735018238-isn-one-midplane/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json @@ -0,0 +1,31 @@ +{ + "added_failure_count": 0, + "added_failure_ids": [], + "completed_at": "2026-10-22T11:29:27.728Z", + "dispatched_at": "2026-10-22T11:21:20Z", + "findings": [ + { + "file": "imas_standard_names/grammar/vocabularies/conventions/concepts.yml", + "line": 324, + "severity": "follow-on", + "summary": "the reworded poloidal_angle definition, including the added sentence that its zero coincides with the outboard midplane only for up-down-symmetric equilibria, is unguarded: no test in tests/ asserts the entry's definition text or that its equation stayed unchanged, so deleting the sentence leaves tests/grammar/ green" + } + ], + "project": "imas-standard-names", + "review_run_id": "r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3", + "reviewed_base_sha": "2451ab498b0e84b42c390e7ee4a052cdb59795c2", + "reviewed_head_sha": "88d7af70c0c3c6a7bbd4ac04d68e2ae15ec4039a", + "reviewed_run_id": "r-20261022T093735018238-isn-one-midplane", + "scores": { + "durability": 15, + "evidence": 19, + "fit": 19, + "goal_fidelity": 20, + "reuse": 20, + "scope_discipline": 19 + }, + "status": "parsed", + "times_source": "run-record", + "timestamp": "2026-10-22T12:37:43.852921+00:00", + "total": 112 +} diff --git a/docs/state/imas-standard-names/runs/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json b/docs/state/imas-standard-names/runs/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json new file mode 100644 index 00000000..64ddc650 --- /dev/null +++ b/docs/state/imas-standard-names/runs/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json @@ -0,0 +1,1100 @@ +{ + "agent": { + "alias": "dsv4.1-flash", + "backend": "clive", + "effective_input_window": 230144, + "effort": "high", + "launch": "cli", + "local": true, + "model": "deepseek-v4.1-flash", + "sandbox": "read-only", + "usable_input_window": 230144 + }, + "attempt": 1, + "attempt_kind": "dispatch", + "backend": "clive", + "base_sha": "2451ab498b0e84b42c390e7ee4a052cdb59795c2", + "boundary_waiver": null, + "brief": { + "path": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3/brief.md", + "sha256": "42f265c6fbba84358fd27f60a190ed14c5b9e3e095382f6901a1c3502b4cbbdb" + }, + "budget": { + "cost_usd": null, + "cost_usd_cumulative": null, + "cost_usd_imputed": true, + "detail": "no rate-limit event in the stream yet", + "headroom": "unknown", + "rate_limit_period_minutes": null, + "rate_limit_type": null, + "refusal": false, + "resets_at": null, + "surpassed_threshold": null, + "threshold_status": null, + "tokens": { + "cache_creation_input_tokens": 0, + "cache_creation_input_tokens_cumulative": 0, + "cache_read_input_tokens": 0, + "cache_read_input_tokens_cumulative": 0, + "fallback_credit": null, + "inference_geo": "", + "input_tokens": 2562619, + "input_tokens_cumulative": 2562619, + "output_tokens": 17161, + "output_tokens_cumulative": 17161, + "service_tier": "standard", + "speed": "standard" + }, + "utilisation_pct": null + }, + "changed_lines": null, + "clone_matches": { + "reason": "the run asserted no revision pair to compare", + "status": "unmeasured" + }, + "commit_resolution": null, + "commits": [], + "completed_at": "2026-10-22T11:29:27.728Z", + "completed_at_source": "terminal_event", + "dispatched_at": "2026-10-22T11:21:20Z", + "disposition": null, + "dispute_count": 0, + "duration_measurement": null, + "execution_fit": { + "allowed": true, + "execution_capable": false, + "matched_measure": null, + "override": false, + "role": "review", + "status": "no-execution-measure" + }, + "failure_classification": null, + "follow_on_paths": [ + "tests/grammar/" + ], + "gate": "not-run", + "gate_check": null, + "impl_move": { + "at_complete": null, + "at_dispatch": 0.8269230769230769, + "plan": "concept-and-notation-registry", + "reason": "role-not-enforced:review", + "verdict": "exempt" + }, + "lane": "clive", + "lane_advisory": { + "backend": "clive", + "burn_multiple": null, + "cheaper_lane": { + "detail": "", + "lane": null, + "state": "not_evaluated" + }, + "detail": "'clive' is unmetered, so it has no window to exhaust; the local lane's scarcity is throughput, which it does not publish", + "horizon_ends_at": "2026-10-22T12:21:04.115481+00:00", + "horizon_seconds": 3600, + "metered": false, + "observed_at": null, + "precedes_horizon": null, + "projected_exhaustion_at": null, + "resets_at": null, + "seconds_until_reset": null, + "state": "quiet", + "utilisation_pct": null + }, + "lane_declaration": { + "backend": "clive", + "headroom": null, + "metered": false, + "observed_at": null, + "read_at": "2026-10-22T11:21:04Z", + "resolved_backend": "clive", + "utilisation_pct": null + }, + "lane_reading": { + "age_seconds": 17, + "binding_observed": "unknown", + "detail": "", + "generating": 4, + "headroom": 8, + "mean_context": 160000, + "observed_at": "2026-10-22T11:20:47Z", + "state": "fresh", + "suggested_shelf_life_seconds": 45, + "throughput": { + "age_seconds": 17, + "aggregate_tokens_per_second": 398.091, + "detail": "", + "mean_tokens_per_second": 94.784, + "observed_at": "2026-10-22T11:20:47Z", + "runs": 4.2, + "state": "measured" + }, + "waiting": 0 + }, + "lane_receipt": { + "effective_context_window": "unmeasured", + "notional_cost_usd": "unmeasured", + "observed_at": "2026-10-22T11:29:27.728Z", + "quota_state": "unmeasured", + "quota_windows": [], + "rate_basis": "unmeasured", + "unmeasured": { + "effective_context_window": "missing_rollout", + "notional_cost_usd": "missing_rollout", + "quota_windows": "unmetered", + "rate_basis": "missing_rollout" + } + }, + "lineage": null, + "local": true, + "manifest_path": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T105732893532-review-of-isn-one-midplane-88d7af70c0c3/manifest.md", + "member": "disposable-r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3", + "model_key": "flash", + "negative_control": { + "reason": "node-writes-no-test-path", + "verdict": "exempt" + }, + "no_commit": "review run: writes only its records under the reviewed run's review-records directory", + "node": "review-of-isn-one-midplane-88d7af70c0c3", + "node_definition": { + "brief": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/review-brief.md", + "brief_path": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3/brief.md", + "brief_sha256": "42f265c6fbba84358fd27f60a190ed14c5b9e3e095382f6901a1c3502b4cbbdb", + "capability": { + "class": "general", + "requirements": { + "reasoning": "deep", + "risk": "moderate", + "verification": "strict" + }, + "version": "1.0" + }, + "compares_with": "", + "coordinator": { + "authoring_turn": { + "detail": "the dispatching harness exposed no authoring-turn token usage", + "status": "unknown", + "tokens": null + }, + "harness": null, + "runtime_session_id": null, + "session_id": "4f554c2d-3a28-4c55-8645-67a1e8a30dea" + }, + "done_when": "the review for r-20261022T093735018238-isn-one-midplane stores a parsed record scoring all 6 dimensions in the range 0..20, recording the revision it read as reviewed_base_sha and reviewed_head_sha, and carrying added_failure_count and added_failure_ids derived from the reviewed run's own baseline_suite and after_suite gate logs; the record is written at one of this run's declared write paths, under review-records/ inside the directory of run r-20261022T093735018238-isn-one-midplane, and never in the worktree; the turn ends once that record is stored and the manifest reads complete", + "estimated_hours": null, + "goal": "attach an independent review to run r-20261022T093735018238-isn-one-midplane", + "id": "review-of-isn-one-midplane-88d7af70c0c3", + "images": [], + "inputs": [], + "lane_declaration": { + "backend": "clive", + "headroom": null, + "metered": false, + "observed_at": null, + "read_at": "2026-10-22T11:21:04Z", + "resolved_backend": "clive", + "utilisation_pct": null + }, + "lane_reading": { + "age_seconds": 17, + "binding_observed": "unknown", + "detail": "", + "generating": 4, + "headroom": 8, + "mean_context": 160000, + "observed_at": "2026-10-22T11:20:47Z", + "state": "fresh", + "suggested_shelf_life_seconds": 45, + "throughput": { + "age_seconds": 17, + "aggregate_tokens_per_second": 398.091, + "detail": "", + "mean_tokens_per_second": 94.784, + "observed_at": "2026-10-22T11:20:47Z", + "runs": 4.2, + "state": "measured" + }, + "waiting": 0 + }, + "manifest_path": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T105732893532-review-of-isn-one-midplane-88d7af70c0c3/manifest.md", + "negative_control": "", + "plan": "concept-and-notation-registry", + "regenerate_paths": [], + "requested_backend": "clive", + "requires_decisions": [], + "role": "review", + "section": "§10", + "spec_level": "exact", + "time_budget": "60m", + "token_budget": null, + "write_paths": [ + "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/review-records/r-20261022T093735018238-isn-one-midplane.json", + "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/review-records/r-20261022T093735018238-isn-one-midplane.at-88d7af70c0c3c6a7bbd4ac04d68e2ae15ec4039a.json" + ] + }, + "orchestrator_lane_override": null, + "orientation_input_tokens": 1981109.0, + "outcome": "", + "pace": { + "allowance": null, + "bar": null, + "clocks": { + "five_hour": { + "age_seconds": null, + "observed_at": null, + "period": "five_hour", + "resets_at": null, + "state": "unknown", + "utilisation": null, + "window_minutes": null + }, + "seven_day": { + "age_seconds": null, + "observed_at": null, + "period": "seven_day", + "resets_at": null, + "state": "unknown", + "utilisation": null, + "window_minutes": null + } + }, + "group": null, + "hold": null, + "lane": "clive", + "lift_id": null, + "member": null, + "node": "review-of-isn-one-midplane-88d7af70c0c3", + "policy": { + "drain_lead_hours": 12.0, + "pace_multiple": 1.1 + }, + "reason": "the lane declares no budget group, so no wallet paced it", + "recorded_at": "2026-10-22T11:21:16.511734+00:00", + "score": 0.625, + "session": null, + "source": null, + "state": "unknown" + }, + "picker_selection": { + "action": "route", + "answering_model": "typesafe/jev-1.13-20260917", + "backend": "clive", + "comment": "", + "confidence": 0.25, + "decision_source": "jev", + "effort": "high", + "excluded": [ + { + "availability": "not-probed", + "backend": "claude", + "budget_age_s": null, + "budget_reason": "no recorded account-window reading for budget group claude-sub", + "budget_source": null, + "burn": { + "runway_hours": null, + "window_even_share_pct": null, + "window_rate_pct_per_hour": null + }, + "burn_multiple": null, + "congestion": null, + "context": null, + "days_to_reset": null, + "effort": "high", + "family": "claude", + "local": false, + "model": "claude-fable-5-1", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reasons": [ + "review-excluded-backend" + ], + "resets_at": null, + "stale": null, + "suits": "The most capable and most expensive Claude model, about two and a half times Opus's token price. Reserve it for the very hardest nodes.", + "utilisation_pct": null, + "worker_slots": null + }, + { + "availability": "not-probed", + "backend": "claude", + "budget_age_s": null, + "budget_reason": "no recorded account-window reading for budget group claude-sub", + "budget_source": null, + "burn": { + "runway_hours": null, + "window_even_share_pct": null, + "window_rate_pct_per_hour": null + }, + "burn_multiple": null, + "congestion": null, + "context": null, + "days_to_reset": null, + "effort": "high", + "family": "claude", + "local": false, + "model": "claude-haiku-5-5", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reasons": [ + "review-excluded-backend" + ], + "resets_at": null, + "stale": null, + "suits": "The lane's fastest and cheapest model, about a twentieth of Sonnet's token price. Suits light, well-defined work.", + "utilisation_pct": null, + "worker_slots": null + }, + { + "availability": "not-probed", + "backend": "claude", + "budget_age_s": null, + "budget_reason": "no recorded account-window reading for budget group claude-sub", + "budget_source": null, + "burn": { + "runway_hours": null, + "window_even_share_pct": null, + "window_rate_pct_per_hour": null + }, + "burn_multiple": null, + "congestion": null, + "context": null, + "days_to_reset": null, + "effort": "high", + "family": "claude", + "local": false, + "model": "claude-opus-5-5", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reasons": [ + "review-excluded-backend" + ], + "resets_at": null, + "stale": null, + "suits": "A strong general model for deep or open-ended work, about twice Sonnet's token price.", + "utilisation_pct": null, + "worker_slots": null + }, + { + "availability": "not-probed", + "backend": "claude", + "budget_age_s": null, + "budget_reason": "no recorded account-window reading for budget group claude-sub", + "budget_source": null, + "burn": { + "runway_hours": null, + "window_even_share_pct": null, + "window_rate_pct_per_hour": null + }, + "burn_multiple": null, + "congestion": null, + "context": null, + "days_to_reset": null, + "effort": "medium", + "family": "claude", + "local": false, + "model": "claude-sonnet-5-5", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reasons": [ + "review-excluded-backend" + ], + "resets_at": null, + "stale": null, + "suits": "The lane default, an everyday coding model at about half of Opus's token price. Suits guided implementation and full reviews.", + "utilisation_pct": null, + "worker_slots": null + }, + { + "availability": "not-probed", + "backend": "native", + "budget_age_s": null, + "budget_reason": null, + "budget_source": null, + "burn": null, + "burn_multiple": null, + "congestion": null, + "context": null, + "days_to_reset": null, + "effort": "high", + "family": "in-harness", + "local": false, + "model": null, + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reasons": [ + "review-excluded-backend", + "in-harness-backend" + ], + "resets_at": null, + "stale": null, + "suits": null, + "utilisation_pct": null, + "worker_slots": null + } + ], + "fallback_reason": null, + "family": "local", + "jev_latency_ms": 1364.619, + "jev_model": "typesafe/jev-1.13", + "latency_ms": 2099.868, + "model": "deepseek-v4.1-flash", + "offered": [ + { + "availability": "served", + "backend": "clive", + "budget_age_s": null, + "budget_reason": null, + "budget_source": null, + "burn": null, + "burn_multiple": null, + "congestion": { + "admission_verdict": "open", + "running": 4, + "slots_state": "measured", + "stale": false, + "waiting": 0 + }, + "context": { + "estimated_tokens": 50392, + "headroom_pct": 78.1, + "peak_utilisation_p50_pct": 59.5, + "peak_utilisation_p90_pct": 77.3, + "peak_utilisation_runs": 8, + "window_tokens": 230144 + }, + "days_to_reset": null, + "effort": "high", + "family": "local", + "local": true, + "model": "deepseek-v4.1-flash", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 28, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 28, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reason": "eligible", + "reasons": [], + "resets_at": null, + "stale": null, + "suits": null, + "utilisation_pct": null, + "worker_slots": 3 + }, + { + "availability": "unknown", + "backend": "codex", + "budget_age_s": 344397.372814, + "budget_reason": null, + "budget_source": "ledger", + "burn": { + "credit_even_share": null, + "credit_pool_cap": 10000.0, + "credit_pool_remaining": null, + "credit_rate_per_hour": null, + "runway_hours": null, + "window_even_share_pct": 0.0, + "window_rate_pct_per_hour": null + }, + "burn_multiple": 0.3491400715580519, + "congestion": null, + "context": { + "estimated_tokens": 50392, + "headroom_pct": null, + "peak_utilisation_p50_pct": null, + "peak_utilisation_p90_pct": null, + "peak_utilisation_runs": null, + "window_tokens": null + }, + "days_to_reset": 2.3886646665046296, + "effort": "xhigh", + "family": "codex", + "local": false, + "model": "gpt-6-astra", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": 0.7246375326412037, + "prior_outcomes": null, + "reason": "eligible", + "reasons": [], + "resets_at": "2026-10-24T20:40:42+00:00", + "stale": true, + "suits": "The lane's frontier model, strongest and slowest, about five times sol's token price. Suits deep or open-ended design, elevated or critical risk, and nodes that already failed on another model.", + "utilisation_pct": 23.0, + "worker_slots": null + }, + { + "availability": "unknown", + "backend": "codex", + "budget_age_s": 344397.372814, + "budget_reason": null, + "budget_source": "ledger", + "burn": { + "credit_even_share": null, + "credit_pool_cap": 10000.0, + "credit_pool_remaining": null, + "credit_rate_per_hour": null, + "runway_hours": null, + "window_even_share_pct": 0.0, + "window_rate_pct_per_hour": null + }, + "burn_multiple": 0.3491400715580519, + "congestion": null, + "context": { + "estimated_tokens": 50392, + "headroom_pct": null, + "peak_utilisation_p50_pct": null, + "peak_utilisation_p90_pct": null, + "peak_utilisation_runs": null, + "window_tokens": null + }, + "days_to_reset": 2.3886646665046296, + "effort": "xhigh", + "family": "codex", + "local": false, + "model": "gpt-6-luna", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": 0.7246375326412037, + "prior_outcomes": null, + "reason": "eligible", + "reasons": [], + "resets_at": "2026-10-24T20:40:42+00:00", + "stale": true, + "suits": "The lane's fast, affordable model, about a twentieth of sol's token price. Suits well-defined, less difficult work: reviews, exact-spec implementation, tests and documentation.", + "utilisation_pct": 23.0, + "worker_slots": null + }, + { + "availability": "unknown", + "backend": "codex", + "budget_age_s": 344397.372814, + "budget_reason": null, + "budget_source": "ledger", + "burn": { + "credit_even_share": null, + "credit_pool_cap": 10000.0, + "credit_pool_remaining": null, + "credit_rate_per_hour": null, + "runway_hours": null, + "window_even_share_pct": 0.0, + "window_rate_pct_per_hour": null + }, + "burn_multiple": 0.3491400715580519, + "congestion": null, + "context": { + "estimated_tokens": 50392, + "headroom_pct": null, + "peak_utilisation_p50_pct": null, + "peak_utilisation_p90_pct": null, + "peak_utilisation_runs": null, + "window_tokens": null + }, + "days_to_reset": 2.3886646665046296, + "effort": "high", + "family": "codex", + "local": false, + "model": "gpt-6-sol", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 1, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 1, + "wall_seconds_median": null + }, + "pace_allowance": 0.7246375326412037, + "prior_outcomes": null, + "reason": "eligible", + "reasons": [], + "resets_at": "2026-10-24T20:40:42+00:00", + "stale": true, + "suits": "The lane default, a previous-generation general model. Suits guided implementation, tests and full reviews at standard or deep reasoning and moderate risk. About twenty times luna's token price and a fifth of astra's.", + "utilisation_pct": 23.0, + "worker_slots": null + } + ], + "probabilities": { + "codex:gpt-6-astra:codex": 0.02, + "codex:gpt-6-luna:codex": 0.23, + "codex:gpt-6-sol:codex": 0.34, + "hold": 0.01, + "local:deepseek-v4.1-flash:clive": 0.4 + }, + "questions": { + "route": { + "criteria": { + "codex:gpt-6-astra:codex": { + "backend": "codex", + "effort": "xhigh", + "lane": "codex", + "local": false, + "meaning": "Execute the node as this lane and model pair; read the lane's shared pressure from the lanes block and this pair's own fit and serving observation from the candidate table.", + "model": "gpt-6-astra" + }, + "codex:gpt-6-luna:codex": { + "backend": "codex", + "effort": "xhigh", + "lane": "codex", + "local": false, + "meaning": "Execute the node as this lane and model pair; read the lane's shared pressure from the lanes block and this pair's own fit and serving observation from the candidate table.", + "model": "gpt-6-luna" + }, + "codex:gpt-6-sol:codex": { + "backend": "codex", + "effort": "high", + "lane": "codex", + "local": false, + "meaning": "Execute the node as this lane and model pair; read the lane's shared pressure from the lanes block and this pair's own fit and serving observation from the candidate table.", + "model": "gpt-6-sol" + }, + "hold": "Do not dispatch now; wait for pressure to ease. When the local lane is not admitting (full, paused or unavailable), well-defined, routine or deferrable work should usually hold for it rather than spend a pressed metered lane. On a sliding scale, hard, high-risk or urgent work may still take the metered lane; weigh expected wait against urgency without a numeric threshold. When exactly one lane can serve the node, a hold waits for that lane alone, as hold_waits_for states.", + "local:deepseek-v4.1-flash:clive": { + "backend": "clive", + "effort": "high", + "lane": "local", + "local": true, + "meaning": "Execute the node as this lane and model pair; read the lane's shared pressure from the lanes block and this pair's own fit and serving observation from the candidate table.", + "model": "deepseek-v4.1-flash" + } + }, + "glossary": { + "budget_age_s": "Seconds since the budget reading was observed; null when unknown.", + "budget_source": "Where a budget reading came from: a document reading is taken from the published paid-lanes document, an account-surface reading describes now, and a ledger reading carries the age of the run behind it.", + "burn": "A metered lane's own burn block. window_rate_pct_per_hour is the window's utilisation change per hour over the trailing three hours, read from the lane's recorded readings rather than averaged over the whole window, so it describes what the lane is spending now and is present in a window too young for burn_multiple; null when fewer than two readings lie at least half an hour apart. window_even_share_pct is the even pace for the coming period -- the window's remaining percentage over the hours to its reset -- given as a reference to weigh against the node's priority and difficulty, never applied as a limit. Under a credits lift the block also carries credit_pool_remaining and credit_pool_cap (the lift's dispatch stop less the credits drawn since grant, and its cap), credit_rate_per_hour (the balance's fall per hour over the same trailing span) and credit_even_share (the pool's even pace to the lift's end); those four are absent with no credits lift. runway_hours is the credit pool over the credit rate under a lift, and the window's remainder over its own rate without one; null when the rate behind it is null or zero. A lane whose burn is racing ahead of its even share will exhaust before its reset, and a credits-lifted lane's pool is spent by priority: it is a budget for the work that needs the lane, not an even pace to the reset.", + "burn_multiple": "Metered spend so far divided by the lane's allowance for its window; above 1 is ahead of the pace that window plans for.", + "context": "A candidate's context block. window_tokens is the input window that gates the lane; estimated_tokens is this node's deterministic input estimate (standing instructions plus the repository files its brief loads) measured against that window; headroom_pct is the share of the window the estimate leaves free. peak_utilisation_p50_pct and peak_utilisation_p90_pct are the median and 90th-percentile peak input utilisation of recent passed runs on the lane, with peak_utilisation_runs behind them. A run whose input approaches its window risks dying mid-way, so a small headroom is a real risk to be weighed with pressure. A null figure is unknown, never zero.", + "days_to_reset": "Days until the lane's window resets; null when unknown.", + "expected_wait_profile_age_s": "The age in seconds of the oldest foreign project's run-time profile that contributed to expected_wait_s, counted from the instant its promotion published it; null when no foreign profile contributed. A pick reads a published profile rather than rebuilding one, so this names how stale the reading behind the wait is.", + "hold_waits_for": "What a hold waits on. When exactly one lane can serve the node a hold waits for that lane alone: waiting for any other lane to free changes nothing, because it cannot run this node. Null when no lane can serve the node.", + "lanes": "One pressure block per lane, however many models the lane holds. A lane is a subscription or host whose models share one account window, so its utilisation, burn, pace allowance, reset, worker slots, congestion and banked-reset flag are stated here once and are the same for every model in it. availability is the lane's serving state aggregated over those models. Read a model's own serving observation from its candidate entry; read the shared spending policy from its lane.", + "lift": "A lift in force on the lane's budget group: its form (uncapped, drain_by or multiple), who granted it, and when it ends. A lane under a lift is one whose window is meant to be spent, so its burn and pace do not press it while the lift stands.", + "moved_in": "A candidate's gate history over the runs a coordinator moved onto it from another lane: a run Jev routed elsewhere, whose lineage records a lane change onto this candidate. It uses the same passed, failed, not-run and unknown counts as outcomes, but those runs are kept out of outcomes and outcomes_at_requirement, because their outcome is the outcome of the pick they were chosen for, not of this lane's own picks. Read at the request's requirement when it names one, and over every move when it names none. Present only when at least one such move exists; an absent key means no coordinator moved a run onto this candidate in the window.", + "moved_off": "How many of this candidate's own picks a coordinator moved away to another lane. Read at the request's requirement when it names one, and over every move when it names none. A high moved_off means coordinators overrode the choice this candidate was picked for, so the lane never ran the nodes it was chosen for. Present only when it is greater than zero; an absent key means no coordinator moved this candidate's pick away in the window.", + "outcomes_at_requirement": "A candidate's gate history at this node's requirement: the same passed, failed, not-run and unknown counts as outcomes, but over only the rows whose recorded requirement (reasoning and risk) equals this node's. reviewed is the composition of the sample behind the dimension medians: how many rows a review scored on every dimension, and review_dimensions_median is the median of each dimension over exactly those rows, each scored 0 to 20, so a low dimension shows even when the total does not. review_total_median and wall_seconds_median are the median review score and wall time over those rows, null when none was recorded; review_total_median can rest on a different number of rows than reviewed, because a total is sometimes withheld and reviews scored before reuse existed carry a total without it. attempts_median is the median number of launches those rows took, and passed_first_attempt is how many of them passed on the first launch; a launch beyond the first is a resume, and resumes include the repairs that answer a blocking review, so a pass on the fifth launch is not a pass on the first. Rows that recorded no requirement count under unrecorded and are never matched, so history written before a requirement was recorded reads as unknown rather than as a match. These counts are the history at this node's difficulty, not a calibrated ranking.", + "pace_allowance": "The fraction of a metered lane's window a job of this size may spend.", + "prior_outcomes": "A candidate's lane model key's earlier generations, rendered only for a candidate whose own model id carries too few outcomes to weigh on their own. It uses the same passed, failed, not-run and unknown counts as outcomes, but over only the runs recorded under this candidate's lane and model key with a different model id, so a key re-pointed to a new generation shows the record its predecessor built. model_ids names each of those earlier ids. Read it as a prior: it is the key's own history weighed below the candidate's own outcomes, never in place of them, and it is absent once the candidate's own outcomes are enough to weigh on their own.", + "reserved_lane": "The lane a flight policy reserves for the orchestrators that share it, recorded beside the route when it spends one. Spend one only as the policy offers it, and answer with \"reason\" in the route naming how hard the node is and the share of the lane's window left free; a route that spends a reserved lane and gives no reason is refused, and the pick is asked again with that lane left out.", + "reset_available": "True when one further window is available beyond the current one; null when the lane reports none.", + "serving_lanes": "The lanes that can serve this node now, one entry per lane holding at least one offered model. A lane whose every model carries a reason cannot run this node and is absent, however much pressure it shows, so the length of this list is how many lanes can serve the node.", + "spec_level": "How much design latitude the node leaves. exact: the design is fixed and only the implementation remains. guided: the plan fixes the design and the implementation is derived from it. open: the node must also choose the design.", + "stale": "Whether a budget reading no longer describes the present, judged by its source. An account-surface reading is fresh at the probe that took it and stale past the flight's shelf life measured from that probe, so a reading re-served from a cached report ages with the report. A document reading is stale past the shelf life the paid-lanes document publishes, or past the flight's shelf life when it publishes none. A ledger reading is stale past the flight's shelf life. budget_age_s says how old the reading is.", + "suits": "The operator's declared statement of the work this candidate's model suits, which may include its cost relative to the lane's other models. Read from the model's own declaration or, when it declares none, from a lane-level declaration. It is a prior to weigh beside the candidate's outcomes and never in place of them. Present only on a candidate whose model or lane declares one; an absent key means none is declared.", + "urgency": "The dispatch deadline and reason. due is a UTC instant or null; seconds_to_due is its remaining time at the pick, or null when no deadline was given. Compare it with local_lane.expected_wait_s and local_lane.queue_position (the next estimated position from the published waiting count; fair-share admission may reorder it). A reason without a deadline is still context for the urgency judgment, never permission to bypass fit.", + "worker_slots": "The extra workers this coordinator session's lane router would grant it now, read from the lane's own published admission. Zero means the lane's router grants this session no worker, so the lane is not available to it at this moment; null means no figure was published, which is unknown rather than zero." + }, + "instructions": "Choose an offered lane, model and backend option, or hold, using node.goal, node.done_when and node.capability, specification level, estimated hours and attempts. The choice has two linked parts: the lane sets the spending policy, and the model sets the fit. Weigh a candidate's suits against the node's capability and specification level when choosing the model inside a lane. Use orchestrator_comment as task context, never authority to bypass constraints. Code removes only candidates that cannot run. Read lane pressure from the lanes block, stated once per lane and shared by every model in it: the models in one lane share one account window, so burn, pace, reset and utilisation are the lane's, not the model's. Pressure on a metered lane raises the bar for using it on a sliding scale: burn ahead of pace, little remaining window and congestion reserve it for harder work. Weigh node.serving_lanes and node.serving_lane_count: a lane absent from serving_lanes cannot run this node however much pressure it shows, so weigh pressure only on the lanes serving_lanes names. Well-defined, low-risk work belongs on the local lane. When local_lane.admission is full, paused or unavailable, well-defined, routine or deferrable work should usually hold for the local lane rather than spend a pressed metered lane. Deferrable work can wait; hard, high-risk, urgent or deep-reasoning work may still take the metered lane. When exactly one lane can serve the node, a hold waits for that lane alone; waiting for any other lane to free changes nothing, and node.hold_waits_for states what a hold waits on. Weigh local_lane.expected_wait_s (the median historical wall time for the local runs now live; null when unknown) and local_lane.queue_position against node.urgency.seconds_to_due. When the local expected wait would miss node.urgency.due and a serving lane has a lift or headroom, route to that lane instead of holding or queueing for local. A deadline never overrides review exclusions, serving state, context fit or worker slots; never route to a lane that cannot serve the node. Weigh urgency on a sliding scale when the deadline or wait is unknown, without a numeric threshold. Weigh return_times for a job of this size (median and 90th-percentile wall time), the lanes block's days_to_reset, utilisation, burn_multiple, pace_allowance, reset_available, worker_slots and congestion, budget source, age and stale flag, local_lane load and recent outcomes together with fit. Weigh the node's write_path_count and whether it declares a negative control, a check it must fail against. Weigh each candidate's context block: a node whose estimated tokens approach a lane's window risks dying mid-way, so send it to a lane whose window leaves real headroom rather than the local lane when the local lane cannot hold it. Confidence is your confidence in the joint pick of lane and model. Unknown facts are null, not zero. Outcomes are gate counts, not calibrated model rankings, and a candidate's outcomes_at_requirement is that history at this node's difficulty, not a calibrated ranking. Choose only an offered option; each option's key names its lane, its model and its backend joined with colons in that order, as ::. Read a candidate's worker_slots as the workers this session's lane router grants it: a lane whose worker_slots is 0 grants this session no worker now, so it is not available to the session and a well-defined implementation or test node must not be routed or left queued there; a null worker_slots is no published figure, which is unknown rather than zero. A candidate whose congestion block carries a lift is on a lane whose window is meant to be spent: its burn and pace do not press it while the lift stands, and when the local lane is full, holding or queueing for that lane is no longer the default for work it can serve. A review should prefer the lifted lane's cheaper models. A lane under a reserved-lane policy is one the orchestrators share, and it is offered on the policy's terms alone: it appears in this list only when the node's declared requirements or the coordinator's assessment meet the policy's floor, or the node has already been attempted at least the policy's count of times, and only while the lane's own window utilisation is below the policy's ceiling. A reserved lane is for work where a wrong answer is costly -- open-ended, multi-file, physics-heavy or diagnostic work, and work that has grown hard by failing elsewhere -- and its price is the capacity the orchestrators themselves need, so it is never a fallback when a better-fitting lane is pressed and never the default for ordinary work. When you choose a reserved lane, also carry \"reason\" inside the route answer, naming the node's difficulty and the headroom you relied on: a reserved-lane choice with no reason is refused, and the pick is asked again with that lane left out. Review exclusions, serving state, context fit and worker slots bound a reserved lane exactly as they bound any other. The glossary defines urgency, spec_level, suits, burn_multiple, pace_allowance, budget_source, budget_age_s, stale, reset_available, days_to_reset, lanes, serving_lanes, hold_waits_for, worker_slots, lift, outcomes_at_requirement, reserved_lane and context. node.orchestrator_assessment, when present, is the coordinator's own reading of the node's difficulty, stated in the same capability requirement keys as node.capability; weigh the two together, and where they disagree weigh both rather than treating either as authority", + "type": "choice" + } + }, + "rendered_state": "{\"node\":{\"role\":\"review\",\"spec_level\":\"exact\",\"capability\":{\"version\":\"1.0\",\"class\":\"general\",\"requirements\":{\"reasoning\":\"deep\",\"verification\":\"strict\",\"risk\":\"moderate\"}},\"goal\":\"attach an independent review to run r-20261022T093735018238-isn-one-midplane\",\"done_when\":\"the review for r-20261022T093735018238-isn-one-midplane stores a parsed record scoring all 6 dimensions in the range 0..20, recording the revision it read as reviewed_base_sha and reviewed_head_sha, and carrying added_failure_count and added_failure_ids derived from the reviewed run's own baseline_suite and after_suite gate logs; the record is written at one of this run's declared write paths, under review-records/ inside the directory of run r-20261022T093735018238-isn-one-midplane, and never in the worktree; the turn ends once that record is stored and the manifest reads complete\",\"urgency\":{\"due\":null,\"seconds_to_due\":null,\"reason\":null},\"estimated_context\":50392,\"estimated_hours\":1.5,\"estimated_hours_source\":\"section\",\"attempts\":0,\"write_path_count\":2,\"negative_control_declared\":false,\"serving_lanes\":[\"local\",\"codex\"],\"serving_lane_count\":2,\"hold_waits_for\":\"any one of 2 lanes that can serve this node to have room\"},\"orchestrator_comment\":\"\",\"candidates\":{\"local:deepseek-v4.1-flash:clive\":{\"backend\":\"clive\",\"lane\":\"local\",\"model\":\"deepseek-v4.1-flash\",\"availability\":\"served\",\"utilisation_pct\":null,\"burn_multiple\":null,\"pace_allowance\":null,\"days_to_reset\":null,\"resets_at\":null,\"worker_slots\":3,\"congestion\":{\"running\":4,\"waiting\":0,\"admission_verdict\":\"open\",\"stale\":false,\"slots_state\":\"measured\"},\"outcomes\":{\"passed\":0,\"failed\":0,\"not-run\":28,\"unknown\":0},\"outcomes_at_requirement\":{\"passed\":0,\"failed\":0,\"not-run\":0,\"unknown\":0,\"unrecorded\":28,\"reviewed\":0,\"review_total_median\":null,\"review_dimensions_median\":null,\"wall_seconds_median\":null,\"attempts_median\":null,\"passed_first_attempt\":0},\"context\":{\"window_tokens\":230144,\"estimated_tokens\":50392,\"headroom_pct\":78.1,\"peak_utilisation_p50_pct\":59.5,\"peak_utilisation_p90_pct\":77.3,\"peak_utilisation_runs\":8},\"budget_source\":null,\"budget_age_s\":null,\"stale\":null,\"reset_available\":null},\"codex:gpt-6-astra:codex\":{\"backend\":\"codex\",\"lane\":\"codex\",\"model\":\"gpt-6-astra\",\"availability\":\"unknown\",\"utilisation_pct\":23.0,\"burn_multiple\":0.3491400715580519,\"pace_allowance\":0.7246375326412037,\"burn\":{\"window_rate_pct_per_hour\":null,\"window_even_share_pct\":0.0,\"credit_pool_remaining\":null,\"credit_pool_cap\":10000.0,\"credit_rate_per_hour\":null,\"credit_even_share\":null,\"runway_hours\":null},\"days_to_reset\":2.3886646665046296,\"resets_at\":\"2026-10-24T20:40:42+00:00\",\"worker_slots\":null,\"congestion\":null,\"outcomes\":{\"passed\":0,\"failed\":0,\"not-run\":0,\"unknown\":0},\"outcomes_at_requirement\":{\"passed\":0,\"failed\":0,\"not-run\":0,\"unknown\":0,\"unrecorded\":0,\"reviewed\":0,\"review_total_median\":null,\"review_dimensions_median\":null,\"wall_seconds_median\":null,\"attempts_median\":null,\"passed_first_attempt\":0},\"suits\":\"The lane's frontier model, strongest and slowest, about five times sol's token price. Suits deep or open-ended design, elevated or critical risk, and nodes that already failed on another model.\",\"context\":{\"window_tokens\":null,\"estimated_tokens\":50392,\"headroom_pct\":null,\"peak_utilisation_p50_pct\":null,\"peak_utilisation_p90_pct\":null,\"peak_utilisation_runs\":null},\"budget_source\":\"ledger\",\"budget_age_s\":344397.372814,\"stale\":true,\"reset_available\":null},\"codex:gpt-6-luna:codex\":{\"backend\":\"codex\",\"lane\":\"codex\",\"model\":\"gpt-6-luna\",\"availability\":\"unknown\",\"utilisation_pct\":23.0,\"burn_multiple\":0.3491400715580519,\"pace_allowance\":0.7246375326412037,\"burn\":{\"window_rate_pct_per_hour\":null,\"window_even_share_pct\":0.0,\"credit_pool_remaining\":null,\"credit_pool_cap\":10000.0,\"credit_rate_per_hour\":null,\"credit_even_share\":null,\"runway_hours\":null},\"days_to_reset\":2.3886646665046296,\"resets_at\":\"2026-10-24T20:40:42+00:00\",\"worker_slots\":null,\"congestion\":null,\"outcomes\":{\"passed\":0,\"failed\":0,\"not-run\":0,\"unknown\":0},\"outcomes_at_requirement\":{\"passed\":0,\"failed\":0,\"not-run\":0,\"unknown\":0,\"unrecorded\":0,\"reviewed\":0,\"review_total_median\":null,\"review_dimensions_median\":null,\"wall_seconds_median\":null,\"attempts_median\":null,\"passed_first_attempt\":0},\"suits\":\"The lane's fast, affordable model, about a twentieth of sol's token price. Suits well-defined, less difficult work: reviews, exact-spec implementation, tests and documentation.\",\"context\":{\"window_tokens\":null,\"estimated_tokens\":50392,\"headroom_pct\":null,\"peak_utilisation_p50_pct\":null,\"peak_utilisation_p90_pct\":null,\"peak_utilisation_runs\":null},\"budget_source\":\"ledger\",\"budget_age_s\":344397.372814,\"stale\":true,\"reset_available\":null},\"codex:gpt-6-sol:codex\":{\"backend\":\"codex\",\"lane\":\"codex\",\"model\":\"gpt-6-sol\",\"availability\":\"unknown\",\"utilisation_pct\":23.0,\"burn_multiple\":0.3491400715580519,\"pace_allowance\":0.7246375326412037,\"burn\":{\"window_rate_pct_per_hour\":null,\"window_even_share_pct\":0.0,\"credit_pool_remaining\":null,\"credit_pool_cap\":10000.0,\"credit_rate_per_hour\":null,\"credit_even_share\":null,\"runway_hours\":null},\"days_to_reset\":2.3886646665046296,\"resets_at\":\"2026-10-24T20:40:42+00:00\",\"worker_slots\":null,\"congestion\":null,\"outcomes\":{\"passed\":0,\"failed\":0,\"not-run\":1,\"unknown\":0},\"outcomes_at_requirement\":{\"passed\":0,\"failed\":0,\"not-run\":0,\"unknown\":0,\"unrecorded\":1,\"reviewed\":0,\"review_total_median\":null,\"review_dimensions_median\":null,\"wall_seconds_median\":null,\"attempts_median\":null,\"passed_first_attempt\":0},\"suits\":\"The lane default, a previous-generation general model. Suits guided implementation, tests and full reviews at standard or deep reasoning and moderate risk. About twenty times luna's token price and a fifth of astra's.\",\"context\":{\"window_tokens\":null,\"estimated_tokens\":50392,\"headroom_pct\":null,\"peak_utilisation_p50_pct\":null,\"peak_utilisation_p90_pct\":null,\"peak_utilisation_runs\":null},\"budget_source\":\"ledger\",\"budget_age_s\":344397.372814,\"stale\":true,\"reset_available\":null}},\"return_times\":{\"local:deepseek-v4.1-flash:clive\":{\"p50_s\":928,\"p90_s\":1090,\"runs\":7,\"size_key\":\"time_budget\",\"size_bucket\":\"30m_to_60m\",\"budget_source\":\"ledger\",\"budget_age_s\":343677.660047,\"stale\":true},\"codex:gpt-6-astra:codex\":{\"p50_s\":317,\"p90_s\":317,\"runs\":1,\"size_key\":\"time_budget\",\"size_bucket\":\"30m_to_60m\",\"budget_source\":\"ledger\",\"budget_age_s\":344397.811047,\"stale\":true},\"codex:gpt-6-luna:codex\":{\"p50_s\":317,\"p90_s\":317,\"runs\":1,\"size_key\":\"time_budget\",\"size_bucket\":\"30m_to_60m\",\"budget_source\":\"ledger\",\"budget_age_s\":344397.811047,\"stale\":true},\"codex:gpt-6-sol:codex\":{\"p50_s\":317,\"p90_s\":317,\"runs\":1,\"size_key\":\"time_budget\",\"size_bucket\":\"30m_to_60m\",\"budget_source\":\"ledger\",\"budget_age_s\":344397.811047,\"stale\":true}},\"lanes\":{\"local\":{\"availability\":\"served\",\"utilisation_pct\":null,\"burn_multiple\":null,\"pace_allowance\":null,\"resets_at\":null,\"days_to_reset\":null,\"worker_slots\":3,\"congestion\":{\"running\":4,\"waiting\":0,\"admission_verdict\":\"open\",\"stale\":false,\"slots_state\":\"measured\"},\"reset_available\":null},\"codex\":{\"availability\":\"unknown\",\"utilisation_pct\":23.0,\"burn_multiple\":0.3491400715580519,\"pace_allowance\":0.7246375326412037,\"resets_at\":\"2026-10-24T20:40:42+00:00\",\"days_to_reset\":2.388659594363426,\"worker_slots\":null,\"congestion\":null,\"reset_available\":false}},\"local_lane\":{\"admission\":\"admitting\",\"expected_wait_s\":791.0,\"expected_wait_profile_age_s\":1160.912962,\"running\":4,\"waiting\":0,\"queue_position\":1,\"headroom\":8,\"worker_slots\":5,\"tokens_per_second\":94.784,\"read_at\":\"2026-10-22T11:21:01.811620+00:00\"}}", + "rendered_token_estimate": 1877, + "stage_ms": { + "budget-snapshot": 232.505, + "context-estimate": 20.085, + "records": 102.785, + "verdict-inputs": 59.261 + }, + "template_digest": "cb9d48e7fca5878b52cc4affdedfdee9f5e04b929f720979b14d0d78b8456ced", + "usage": { + "cost": 0.00022533, + "input_tokens": 5365, + "output_tokens": 105 + } + }, + "plan": null, + "plan_impl_at_dispatch": 0.8269230769230769, + "plan_link": null, + "promoted_by": null, + "promoted_revision": "2451ab498b0e84b42c390e7ee4a052cdb59795c2", + "resume_waiver": null, + "review": { + "absent": [], + "id": "r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3", + "reviewed_base_sha": "2451ab498b0e84b42c390e7ee4a052cdb59795c2", + "reviewed_head_sha": "88d7af70c0c3c6a7bbd4ac04d68e2ae15ec4039a", + "scores": { + "durability": 15, + "evidence": 19, + "fit": 19, + "goal_fidelity": 20, + "reuse": 20, + "scope_discipline": 19 + }, + "status": "parsed", + "total": 112 + }, + "review_tier": "none", + "role": "review", + "route_mode": "explicit", + "run_id": "r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3", + "scope_acceptances": null, + "scope_changed": false, + "section": "§10", + "session": "4f554c2d-3a28-4c55-8645-67a1e8a30dea", + "session_harness": "claude", + "session_id": "64071281-97f7-4d08-acba-024eb958f0a2", + "session_model": "deepseek-v4.1-flash", + "shadow_controlled": null, + "shadow_patch": "", + "spec_level": "exact", + "stalled": false, + "suite_delta": null, + "tests_added": null, + "throughput": { + "cumulative_cached_input_tokens": 0, + "cumulative_input_tokens": 2562619, + "detail": "generation and wall clock reported separately by the backend; utilisation divided by the configured lane window 230144", + "elapsed_seconds": 473.91, + "generated_tokens": 17161, + "generation_seconds": 261.904, + "input_budget_tokens": 230144, + "input_utilisation_pct": 43.0, + "machine_seconds": 212.006, + "peak_input_tokens": 98857, + "tokens_per_second": 65.52, + "wall_tokens_per_second": 36.21 + }, + "time_budget": "60m", + "tool_steps": 39.0, + "unplanned_reason": null, + "unreconciled_override": { + "grace": "15m", + "requested": true, + "waived_runs": [ + { + "backend": "clive", + "budget_overrun": true, + "budget_overrun_cause": "unknown", + "budget_overrun_rate": null, + "budget_overrun_reference_rate": null, + "budget_overrun_reference_runs": 0, + "budget_overrun_reference_source": "recent committed runs, same backend and model", + "budget_overrun_seconds": 2613, + "budget_seconds": 3600, + "classification": "scoring", + "commits_beyond_base": 0, + "detail": "the worker manifest reports completion, but no independent review is attached; an independent review must be produced before promotion", + "effective_phase": "complete", + "elapsed_seconds": 6213, + "exit_record": { + "attempt": 1, + "ended_during": "working", + "ended_pids": [], + "exit_code": 0, + "exited_at": "2026-10-22T10:41:51Z", + "last_record_type": "result", + "launched_at": "2026-10-22T09:37:53Z", + "recorded_by": "supervisor", + "run_id": "r-20261022T093735018238-isn-one-midplane", + "signal": null, + "signal_name": null, + "stream_records_seen": 8675, + "worker_pid": 2838431 + }, + "external_wait": null, + "fleet_verdict": { + "detail": "", + "lifting_condition": null, + "recovery": "review", + "recovery_classification": "scoring", + "stall_base_detail": null, + "stall_base_state": null, + "stall_pause_reason": null, + "stall_process_state": null, + "stall_quiet_seconds": null, + "stall_window_seconds": 900, + "state": "completed_unpromoted" + }, + "interruption": null, + "lane": "clive", + "lane_cause": null, + "lane_ended_at": "2026-10-22T10:41:51Z", + "lane_event": null, + "lifting_condition": null, + "liveness_proven": false, + "log_age_seconds": 2367, + "log_fresh": false, + "manifest_commits": [ + "4c044f1", + "88d7af7" + ], + "manifest_derived": false, + "manifest_digest": "057cdd4706f6b85be3bdea4dfb145ff6f3bed6deb096be1572508d7f47ffd158", + "manifest_error": null, + "manifest_file_present": true, + "manifest_fresh": true, + "manifest_path": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/manifest.md", + "manifest_present": true, + "manifest_reported_status": "complete", + "manifest_status": "complete", + "marker": null, + "model_key": "flash", + "needs_help_complete": null, + "next_action": "reckon crew dispatch --project imas-standard-names --brief /home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/review-brief.md --plan concept-and-notation-registry --section '§10' --role review --spec-level exact --node review-of-isn-one-midplane-88d7af70c0c3 --goal 'attach an independent review to run r-20261022T093735018238-isn-one-midplane' --done-when 'the review for r-20261022T093735018238-isn-one-midplane stores a parsed record scoring all 6 dimensions in the range 0..20, recording the revision it read as reviewed_base_sha and reviewed_head_sha, and carrying added_failure_count and added_failure_ids derived from the reviewed run'\"'\"'s own baseline_suite and after_suite gate logs; the record is written at one of this run'\"'\"'s declared write paths, under review-records/ inside the directory of run r-20261022T093735018238-isn-one-midplane, and never in the worktree; the turn ends once that record is stored and the manifest reads complete' --write-path /home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/review-records/r-20261022T093735018238-isn-one-midplane.json --write-path /home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/review-records/r-20261022T093735018238-isn-one-midplane.at-88d7af70c0c3c6a7bbd4ac04d68e2ae15ec4039a.json --time-budget 60m --session 4f554c2d-3a28-4c55-8645-67a1e8a30dea --allow-unreconciled-runs --local", + "node": "isn-one-midplane", + "phase": "complete", + "plan": "concept-and-notation-registry", + "process_alive": false, + "process_descendant_alive": null, + "project": "imas-standard-names", + "recovery": "review", + "recovery_classification": "scoring", + "resets_at": null, + "review_error": null, + "review_present": false, + "review_status": null, + "run_id": "r-20261022T093735018238-isn-one-midplane", + "session": "4f554c2d-3a28-4c55-8645-67a1e8a30dea", + "stored_phase": "complete", + "terminal_age_seconds": 2508, + "terminal_at": "2026-10-22T10:39:27Z", + "wait_age_seconds": null, + "wait_condition_state": null, + "wait_key_defect": null, + "wait_observed": null, + "wait_overdue": null, + "worktree": "/home/ITER/mcintos/Code/.reckon-worktrees/imas-standard-names-5be88ee0fdc3/4f554c2d-3a28-4c55-8645-67a1e8a30dea/isn-one-midplane" + } + ] + }, + "wall_seconds": 487, + "watch_override": null, + "worker_exit": { + "attempt": 1, + "ended_during": "working", + "ended_pids": [], + "exit_code": 0, + "exited_at": "2026-10-22T11:29:38Z", + "last_record_type": "result", + "launched_at": "2026-10-22T11:21:32Z", + "recorded_by": "supervisor", + "run_id": "r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3", + "signal": null, + "signal_name": null, + "stream_records_seen": 2551, + "worker_pid": 482908 + }, + "worker_seconds": 460, + "worker_seconds_source": "stream_events", + "worktree_retention": null +} From f5e52e0c27f2539f80f308d67e256b7d1d7d9a7e Mon Sep 17 00:00:00 2001 From: Simon McIntosh Date: Thu, 22 Oct 2026 14:38:23 +0200 Subject: [PATCH 5/8] release(r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3): record workspace outcome Record the worktree and process release receipt after promotion without rewriting a commit another session may have published. --- ...view-of-isn-one-midplane-88d7af70c0c3.json | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/state/imas-standard-names/runs/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json b/docs/state/imas-standard-names/runs/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json index 64ddc650..f50d5771 100644 --- a/docs/state/imas-standard-names/runs/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json +++ b/docs/state/imas-standard-names/runs/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3.json @@ -926,6 +926,38 @@ "plan_link": null, "promoted_by": null, "promoted_revision": "2451ab498b0e84b42c390e7ee4a052cdb59795c2", + "release": { + "arms_kept": [], + "arms_logs_copied": [], + "arms_removed_paths": [], + "arms_withheld": "gate verdict 'not-run' is not passing; cited arms retained as evidence", + "process_signalled": false, + "process_withheld": "process is not alive", + "scratch_bytes": null, + "scratch_path": "/tmp/reckon-crew-scratch/r-20261022T104221990348-review-of-isn-one-midplane-88d7af70c0c3", + "scratch_removed": false, + "scratch_removed_paths": [], + "scratch_withheld": "scratch directory is no longer present", + "worktree_audit": { + "counts": { + "dirty": 0, + "disposable": 0, + "integrated": 0, + "live-referenced": 0, + "retained-for-resume": 0, + "unintegrated": 0 + }, + "worktrees": [ + { + "available": false, + "detail": "tree is no longer available", + "path": "/home/ITER/mcintos/Code/.reckon-worktrees/imas-standard-names-5be88ee0fdc3/4f554c2d-3a28-4c55-8645-67a1e8a30dea/review-of-isn-one-midplane-88d7af70c0c3", + "unavailable_state": "missing" + } + ] + }, + "worktree_released": true + }, "resume_waiver": null, "review": { "absent": [], From 586b698ebf495ebe635fee43fe94a806817591d1 Mon Sep 17 00:00:00 2001 From: Simon McIntosh Date: Thu, 22 Oct 2026 14:39:25 +0200 Subject: [PATCH 6/8] docs(plans): close the one-midplane section Section 10 is declared done. The midplane loci carry one maximum-major-radius definition, recorded with its review and its test counts; the release and the downstream pin follow. --- .../archive/concept-and-notation-registry-landed.html | 5 +++++ docs/plans/concept-and-notation-registry.html | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/evidence/archive/concept-and-notation-registry-landed.html b/docs/evidence/archive/concept-and-notation-registry-landed.html index c8caad78..0ceede5b 100644 --- a/docs/evidence/archive/concept-and-notation-registry-landed.html +++ b/docs/evidence/archive/concept-and-notation-registry-landed.html @@ -75,6 +75,11 @@

§9 — locus definitions in physics terms

Every locus definition that named a DD field, an IDS path or an option value now states what concepts.yml states (merge 785e858, review 117/120, zero added failures). outboard_midplane reads: the low-field-side equatorial midplane, points at the midplane height with major radius greater than the magnetic-axis radius; the data's midplane identifier selects that height, or it is the magnetic-axis height when none is given. outboard_midplane_separatrix is the crossing of the separatrix with that height on the low-field side, with no gradient wording. dr_dz_zero_point keeps its geometric definition and loses its DD references. One test fails on the old midplane texts. A second fails when a midplane definition drops either its height or its side of the axis. Record: docs/evidence/fragments/concept-and-notation-registry/isn-locus-definitions-physics.html.

+
+

§10 — one midplane definition

+

The midplane loci are defined once, by the flux surface's major-radius extremum (review 112/120):

  • outboard_midplane: the maximum of R on the low-field side;
  • inboard_midplane: the minimum of R on the high-field side;
  • outboard_midplane_separatrix: the separatrix's maximum of R.

These replace the per-dataset midplane-identifier wording. poloidal_angle keeps its zero on the horizontal plane through the magnetic axis, and now states that it coincides with the outboard midplane only for up-down-symmetric equilibria. The relation test asserts R = max_S R and R = min_S R, and fails on the previous wording. tests/grammar/: 1285 passed against 1282 at base, with zero added failures. fragment

+
+ diff --git a/docs/plans/concept-and-notation-registry.html b/docs/plans/concept-and-notation-registry.html index ad4a3bde..c1e5daed 100644 --- a/docs/plans/concept-and-notation-registry.html +++ b/docs/plans/concept-and-notation-registry.html @@ -19,11 +19,11 @@ - + One Definition Per Concept, Published With The Grammar | imas-standard-names - + @@ -193,7 +193,7 @@

§9 — Locus definitions say what the concept registry says, and na

locus_registry.yml defines outboard_midplane as "follows the DD midplane_identifier (default option 'dr_dz_zero_sep': the outboard separatrix point where dr/dz = 0)". The imas-codex documentation gate copies a locus definition into every documentation that uses the locus, and its reviewer docks the DD field and option names as implementation leakage. So every outboard-midplane name loses points whichever way it is written. The gate requires whatever text the registry carries, so rewriting the registry changes what it requires; the two are not in conflict.

The physics is already settled in this repository. Commit 0e43cde (2026-10-14) removed the dR/dZ = 0 definition, which is undefined for a limited plasma with no separatrix and disagreed with poloidal_angle. conventions/concepts.yml now defines the outboard midplane as Z = Zmid, R > Raxis, with Zmid the midplane height the data's midplane identifier selects, or the magnetic-axis height when none is given. The locus definitions never followed.

Rewrite each locus_registry.yml definition that names a DD field, an IDS path or an option value so it states, in words, what its concepts.yml entry states. Do not reinstate dR/dZ = 0 or any definition a recorded decision removed. At least these carry DD references: outboard_midplane, inboard_midplane, outboard_midplane_separatrix, pedestal, pedestal_maximum, pedestal_top, separatrix and an at-limiter entry. A locus with no concepts.yml entry keeps its physics and loses only the DD reference, unless that physics is the dR/dZ = 0 point. outboard_midplane_separatrix is such a locus: today it is "the outboard separatrix point where dr/dz = 0". Redefine it from the midplane, as the point where the separatrix crosses the midplane height on the low-field side (R > Raxis), with no dR/dZ wording. Where the default midplane height is the one the data selects at the separatrix's outermost point, that is the same point, so no consumer's meaning moves. The one locus whose meaning is that point, dr_dz_zero_point, keeps its geometric definition (the outboard separatrix point where dR/dZ = 0) and loses every DD reference it carries: its IDS path, the midplane_identifier field and the option value; it and outboard_midplane_separatrix coincide under the default midplane height, which the fragment notes as a question for a later vocabulary ruling, not this section. Keep each pointer from one locus to a sibling, such as outboard_midplane to outboard_midplane_separatrix for a value at the intersection. List every definition changed, before and after, in the fragment.

Done when: a test asserts that no locus definition names a DD field, an IDS path or an option value, and that none of the midplane loci (outboard_midplane, inboard_midplane, outboard_midplane_separatrix) contains dR/dZ or dr/dz in any case. It fails on the old outboard_midplane text and on the old outboard_midplane_separatrix text, recorded with EXIT=. A second test asserts that the outboard_midplane and inboard_midplane definitions state both parts of their concepts.yml relation: the midplane height, with its magnetic-axis default, and the side of the magnetic axis (R greater or less than Raxis). It fails on a planted definition that drops either part. The grammar suite passes at head, judged by delta against base.

§10 — One outboard-midplane definition

-
+

Lead ruling, 2026-10-22. The catalog records one definition of the midplane loci and uses it in every name. The outboard midplane is the point on the low-field side where the flux surface in question reaches its maximum major radius. On the separatrix, that is its outboard maximum-R point. The inboard midplane is the corresponding point of minimum major radius on the high-field side.

This replaces the per-dataset wording of 0e43cde, where the data's midplane identifier selected the height, falling back to the magnetic-axis height. That wording is not one definition. It made the generic locus sentence contradict any name whose quantity is taken at a stated height: gap_at_outboard_midplane scored 0.50 to 0.56 in three reviews, each reviewer reading two heights. The ruling keeps both concerns 0e43cde answered:

  • A limited plasma has no separatrix, but its last closed flux surface has a maximum-R point, so the definition holds without one.
  • poloidal_angle keeps its zero on the horizontal plane through the magnetic axis, as the catalog's COCOS 17 convention requires. Its definition gains one sentence: that zero coincides with the outboard midplane only for up-down-symmetric equilibria.

Change. In imas_standard_names/grammar/vocabularies/conventions/concepts.yml, change outboard_midplane and inboard_midplane, their equations and symbols, and the poloidal_angle sentence. In imas_standard_names/grammar/vocabularies/locus_registry.yml, change the definitions of outboard_midplane, inboard_midplane and outboard_midplane_separatrix, and any other entry that restates the midplane height. Every definition stays physics-only: no DD field, IDS path or option value. The existing physics-only test keeps passing. Its relation test, which encodes the old midplane-height-with-magnetic-axis-default relation, is updated to the new relation and fails on the old text.

Done when, all of these:

  • the changed definitions are committed;
  • a test asserts the maximum-R and minimum-R relations and fails on the 0e43cde wording;
  • the tests/grammar/ gate shows no added failures against its base.

The release and the downstream pin bump are separate nodes under grammar-release-and-downstream-pin.

@@ -314,7 +314,10 @@

Land the loader and accessor first; content follows from

§9 closed. Locus definitions state the concept registry and name no DD field, IDS path or option; the midplane loci carry no gradient wording (merge 785e858, review 117). The release in §4 now carries §7, §8 and §9. evidence

-

Independent review of run r-20261022T093735018238-isn-one-midplane at base 2451ab4 head 88d7af7: all six checklist items read (goal, done_when, write_paths, manifest, diff 4c044f1+88d7af7, call sites terms.py standard_terms and select_conventions, grammar/context.py, catalog/dataset.py, grammar/parser.py, validation/semantic.py, models.py), six dimensions scored (goal_fidelity 20, evidence 19, scope_discipline 19, durability 15, fit 19, reuse 20; total 112 of 120), added_failure_count 0 from the reviewed run's own baseline_suite and after_suite logs (both completed, EXIT=0, 1282 and 1285 passed); one follow-on finding: the reworded poloidal_angle definition and its new up-down-symmetry sentence are unguarded.

+

Independent review of run r-20261022T093735018238-isn-one-midplane at base 2451ab4 head 88d7af7: all six checklist items read (goal, done_when, write_paths, manifest, diff 4c044f1+88d7af7, call sites terms.py standard_terms and select_conventions, grammar/context.py, catalog/dataset.py, grammar/parser.py, validation/semantic.py, models.py), six dimensions scored (goal_fidelity 20, evidence 19, scope_discipline 19, durability 15, fit 19, reuse 20; total 112 of 120), added_failure_count 0 from the reviewed run's own baseline_suite and after_suite logs (both completed, EXIT=0, 1282 and 1285 passed); one follow-on finding: the reworded poloidal_angle definition and its new up-down-symmetry sentence are unguarded.

+
+
+

§10 closed: the midplane loci carry one maximum-major-radius definition, as the lead ruled on 2026-10-22. The ISN release and the imas-codex pin bump follow under grammar-release-and-downstream-pin. Then gap_at_outboard_midplane's documentation is reviewed once more. evidence

From 6be876c335e58c0c3ae5eac7134a1cc9af04369b Mon Sep 17 00:00:00 2001 From: Simon McIntosh Date: Thu, 22 Oct 2026 14:40:17 +0200 Subject: [PATCH 7/8] promote(r-20261022T093735018238-isn-one-midplane): passed Record the landing: append the run to the project ledger and its plan comment in one commit, so a promotion leaves the checkout without uncommitted state at the paths it wrote. --- docs/plans/concept-and-notation-registry.html | 5 +- ...0261022T093735018238-isn-one-midplane.json | 998 ++++++++++++++++++ 2 files changed, 1002 insertions(+), 1 deletion(-) create mode 100644 docs/state/imas-standard-names/runs/r-20261022T093735018238-isn-one-midplane.json diff --git a/docs/plans/concept-and-notation-registry.html b/docs/plans/concept-and-notation-registry.html index c1e5daed..ec8c7c5d 100644 --- a/docs/plans/concept-and-notation-registry.html +++ b/docs/plans/concept-and-notation-registry.html @@ -23,7 +23,7 @@ One Definition Per Concept, Published With The Grammar | imas-standard-names - + @@ -319,6 +319,9 @@

Land the loader and accessor first; content follows from

§10 closed: the midplane loci carry one maximum-major-radius definition, as the lead ruled on 2026-10-22. The ISN release and the imas-codex pin bump follow under grammar-release-and-downstream-pin. Then gap_at_outboard_midplane's documentation is reviewed once more. evidence

+
+

Midplane loci are defined once by the major-radius extremum of the flux surface (outboard_midplane at maximum R on the low-field side, inboard_midplane at minimum R on the high-field side, outboard_midplane_separatrix at the separatrix's maximum R); the poloidal_angle zero stays on the horizontal plane through the magnetic axis with its coincidence with the outboard midplane restricted to up-down-symmetric equilibria; the relation test asserts R = max_S R and R = min_S R and fails on the previous per-dataset height wording. tests/grammar/: 1282 passed 32 skipped at base 2451ab4, 1285 passed 32 skipped at head 4c044f1, zero added failures. Record at docs/evidence/fragments/concept-and-notation-registry/isn-one-midplane.html.

+
diff --git a/docs/state/imas-standard-names/runs/r-20261022T093735018238-isn-one-midplane.json b/docs/state/imas-standard-names/runs/r-20261022T093735018238-isn-one-midplane.json new file mode 100644 index 00000000..73cf4499 --- /dev/null +++ b/docs/state/imas-standard-names/runs/r-20261022T093735018238-isn-one-midplane.json @@ -0,0 +1,998 @@ +{ + "agent": { + "alias": "dsv4.1-flash", + "backend": "clive", + "effective_input_window": 230144, + "effort": "high", + "launch": "cli", + "local": true, + "model": "deepseek-v4.1-flash", + "sandbox": "worktree-full", + "usable_input_window": 230144 + }, + "attempt": 1, + "attempt_kind": "dispatch", + "backend": "clive", + "base_sha": "2451ab498b0e84b42c390e7ee4a052cdb59795c2", + "boundary_waiver": null, + "brief": { + "path": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/brief.md", + "sha256": "8986a1e521aa3efce039e2a55bc0143b818b26d33217938c24f668e5de6a90dd" + }, + "budget": { + "cost_usd": null, + "cost_usd_cumulative": null, + "cost_usd_imputed": true, + "detail": "no rate-limit event in the stream yet", + "headroom": "unknown", + "rate_limit_period_minutes": null, + "rate_limit_type": null, + "refusal": false, + "resets_at": null, + "surpassed_threshold": null, + "threshold_status": null, + "tokens": { + "cache_creation_input_tokens": 0, + "cache_creation_input_tokens_cumulative": 0, + "cache_read_input_tokens": 0, + "cache_read_input_tokens_cumulative": 0, + "fallback_credit": null, + "inference_geo": "", + "input_tokens": 9630055, + "input_tokens_cumulative": 9630055, + "output_tokens": 51694, + "output_tokens_cumulative": 51694, + "service_tier": "standard", + "speed": "standard" + }, + "utilisation_pct": null + }, + "changed_lines": { + "added": 179, + "files": 4, + "removed": 31 + }, + "clone_matches": [], + "commit_resolution": null, + "commits": [ + "4c044f1588259fed5f4514e3f8bb9be9077931aa", + "88d7af70c0c3c6a7bbd4ac04d68e2ae15ec4039a" + ], + "completed_at": "2026-10-22T10:41:41.522Z", + "completed_at_source": "terminal_event", + "dispatched_at": "2026-10-22T09:37:45Z", + "disposition": null, + "dispute_count": 0, + "duration_measurement": null, + "execution_fit": { + "allowed": true, + "execution_capable": true, + "matched_measure": null, + "override": false, + "role": "implement", + "status": "no-execution-measure" + }, + "failure_classification": null, + "follow_on_paths": [], + "gate": "passed", + "gate_check": { + "command": "UV_PROJECT_ENVIRONMENT=/home/ITER/mcintos/Code/imas-standard-names/.venv PYTHONPATH=/home/ITER/mcintos/Code/.reckon-worktrees/imas-standard-names-5be88ee0fdc3/4f554c2d-3a28-4c55-8645-67a1e8a30dea/isn-one-midplane uv run pytest -p no:cacheprovider tests/grammar/", + "exit_status": 0, + "log_digest": null, + "log_path": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/logs/head-tests-grammar.log" + }, + "impl_move": { + "at_complete": 0.9307692307692308, + "at_dispatch": 0.8269230769230769, + "plan": "concept-and-notation-registry", + "verdict": "moved" + }, + "lane": "clive", + "lane_advisory": { + "backend": "clive", + "burn_multiple": null, + "cheaper_lane": { + "detail": "", + "lane": null, + "state": "not_evaluated" + }, + "detail": "'clive' is unmetered, so it has no window to exhaust; the local lane's scarcity is throughput, which it does not publish", + "horizon_ends_at": "2026-10-22T10:37:35.251309+00:00", + "horizon_seconds": 3600, + "metered": false, + "observed_at": null, + "precedes_horizon": null, + "projected_exhaustion_at": null, + "resets_at": null, + "seconds_until_reset": null, + "state": "quiet", + "utilisation_pct": null + }, + "lane_declaration": { + "backend": null, + "headroom": null, + "metered": false, + "observed_at": null, + "read_at": "2026-10-22T09:37:35Z", + "resolved_backend": "clive", + "utilisation_pct": null + }, + "lane_reading": { + "age_seconds": 11, + "binding_observed": "unknown", + "detail": "", + "generating": 8, + "headroom": 2, + "mean_context": 128889, + "observed_at": "2026-10-22T09:37:24Z", + "state": "fresh", + "suggested_shelf_life_seconds": 45, + "throughput": { + "age_seconds": 11, + "aggregate_tokens_per_second": 462.125, + "detail": "", + "mean_tokens_per_second": 51.347, + "observed_at": "2026-10-22T09:37:24Z", + "runs": 9.0, + "state": "measured" + }, + "waiting": 0 + }, + "lane_receipt": { + "effective_context_window": "unmeasured", + "notional_cost_usd": "unmeasured", + "observed_at": "2026-10-22T10:41:41.522Z", + "quota_state": "unmeasured", + "quota_windows": [], + "rate_basis": "unmeasured", + "unmeasured": { + "effective_context_window": "missing_rollout", + "notional_cost_usd": "missing_rollout", + "quota_windows": "unmetered", + "rate_basis": "missing_rollout" + } + }, + "lineage": null, + "local": true, + "manifest_path": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/manifest.md", + "member": "disposable-r-20261022T093735018238-isn-one-midplane", + "model_key": "flash", + "negative_control": { + "added_failure_ids": [ + "tests/grammar/test_locus_definitions_physics_only.py::test_midplane_concepts_state_the_major_radius_relation[inboard_midplane-R = \\\\min_{S} R,\\\\quad R < R_{\\\\mathrm{axis}}]", + "tests/grammar/test_locus_definitions_physics_only.py::test_midplane_concepts_state_the_major_radius_relation[outboard_midplane-R = \\\\max_{S} R,\\\\quad R > R_{\\\\mathrm{axis}}]", + "tests/grammar/test_locus_definitions_physics_only.py::test_midplane_definitions_state_the_major_radius_relation[inboard_midplane-high-field-minimum]", + "tests/grammar/test_locus_definitions_physics_only.py::test_midplane_definitions_state_the_major_radius_relation[outboard_midplane-low-field-maximum]", + "tests/grammar/test_locus_definitions_physics_only.py::test_outboard_midplane_separatrix_is_the_maximum_radius_point" + ], + "baseline_failure_ids": [], + "comparison_arm": "after_suite", + "control_exit_status": 1, + "control_failure_ids": [ + "tests/grammar/test_locus_definitions_physics_only.py::test_midplane_concepts_state_the_major_radius_relation[inboard_midplane-R = \\\\min_{S} R,\\\\quad R < R_{\\\\mathrm{axis}}]", + "tests/grammar/test_locus_definitions_physics_only.py::test_midplane_concepts_state_the_major_radius_relation[outboard_midplane-R = \\\\max_{S} R,\\\\quad R > R_{\\\\mathrm{axis}}]", + "tests/grammar/test_locus_definitions_physics_only.py::test_midplane_definitions_state_the_major_radius_relation[inboard_midplane-high-field-minimum]", + "tests/grammar/test_locus_definitions_physics_only.py::test_midplane_definitions_state_the_major_radius_relation[outboard_midplane-low-field-maximum]", + "tests/grammar/test_locus_definitions_physics_only.py::test_outboard_midplane_separatrix_is_the_maximum_radius_point" + ], + "declaration": "restore the 0e43cde midplane wording; the relation test must fail", + "head_failure_ids": [], + "log": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/logs/negative-control-0e43cde.log", + "resolved_log": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/logs/negative-control-0e43cde.log", + "test_paths": [ + "tests/grammar/test_locus_definitions_physics_only.py" + ], + "verdict": "matched" + }, + "no_commit": null, + "node": "isn-one-midplane", + "node_definition": { + "brief": "/home/ITER/mcintos/.cache/imas-codex-s18/briefs/isn-one-midplane.md", + "brief_path": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/brief.md", + "brief_sha256": "8986a1e521aa3efce039e2a55bc0143b818b26d33217938c24f668e5de6a90dd", + "capability": { + "class": "general", + "requirements": { + "reasoning": "deep", + "risk": "moderate", + "verification": "strict" + }, + "version": "1.0" + }, + "compares_with": "", + "coordinator": { + "authoring_turn": { + "source": "claude-code-session-transcript", + "status": "measured", + "tokens": { + "cache_creation_input_tokens": 645, + "cached_input_tokens": 586081, + "input_tokens": 586728, + "output_tokens": 2067, + "reasoning_output_tokens": 145, + "total_tokens": 588795, + "uncached_input_tokens": 2 + } + }, + "harness": "claude-code", + "runtime_session_id": "4f554c2d-3a28-4c55-8645-67a1e8a30dea", + "session_id": "4f554c2d-3a28-4c55-8645-67a1e8a30dea" + }, + "done_when": "concepts.yml and locus_registry.yml define the midplane loci by the low-field-side maximum and high-field-side minimum major radius with no DD wording, poloidal_angle states where its zero coincides with the midplane, the relation test fails on the old wording, tests/grammar shows no added failures, and the fragment lists every definition before and after", + "estimated_hours": null, + "goal": "Give the outboard and inboard midplane loci one maximum-major-radius definition in the concept and locus registries", + "id": "isn-one-midplane", + "images": [], + "inputs": [], + "lane_declaration": { + "backend": null, + "headroom": null, + "metered": false, + "observed_at": null, + "read_at": "2026-10-22T09:37:35Z", + "resolved_backend": "clive", + "utilisation_pct": null + }, + "lane_reading": { + "age_seconds": 11, + "binding_observed": "unknown", + "detail": "", + "generating": 8, + "headroom": 2, + "mean_context": 128889, + "observed_at": "2026-10-22T09:37:24Z", + "state": "fresh", + "suggested_shelf_life_seconds": 45, + "throughput": { + "age_seconds": 11, + "aggregate_tokens_per_second": 462.125, + "detail": "", + "mean_tokens_per_second": 51.347, + "observed_at": "2026-10-22T09:37:24Z", + "runs": 9.0, + "state": "measured" + }, + "waiting": 0 + }, + "manifest_path": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/manifest.md", + "negative_control": "restore the 0e43cde midplane wording; the relation test must fail", + "plan": "concept-and-notation-registry", + "regenerate_paths": [], + "requested_backend": null, + "requires_decisions": [], + "role": "implement", + "section": "§10", + "spec_level": "exact", + "time_budget": "60m", + "token_budget": null, + "write_paths": [ + "imas_standard_names/grammar/vocabularies/conventions/concepts.yml", + "imas_standard_names/grammar/vocabularies/locus_registry.yml", + "tests/grammar/test_locus_definitions_physics_only.py", + "docs/evidence/fragments/concept-and-notation-registry/isn-one-midplane.html", + "docs/figures/concept-and-notation-registry/isn-one-midplane" + ] + }, + "orchestrator_lane_override": null, + "orientation_input_tokens": 1536274.0, + "outcome": "", + "pace": { + "allowance": null, + "bar": null, + "clocks": { + "five_hour": { + "age_seconds": null, + "observed_at": null, + "period": "five_hour", + "resets_at": null, + "state": "unknown", + "utilisation": null, + "window_minutes": null + }, + "seven_day": { + "age_seconds": null, + "observed_at": null, + "period": "seven_day", + "resets_at": null, + "state": "unknown", + "utilisation": null, + "window_minutes": null + } + }, + "group": null, + "hold": null, + "lane": "clive", + "lift_id": null, + "member": null, + "node": "isn-one-midplane", + "policy": { + "drain_lead_hours": 12.0, + "pace_multiple": 1.1 + }, + "reason": "the lane declares no budget group, so no wallet paced it", + "recorded_at": "2026-10-22T09:37:39.888627+00:00", + "score": 0.64375, + "session": null, + "source": null, + "state": "unknown" + }, + "picker_selection": { + "action": "route", + "answering_model": "typesafe/jev-1.13-20260917", + "backend": "clive", + "comment": "s10 records the lead's ruling of 2026-10-22 verbatim; it was authored today from that ruling and no content review exists yet", + "confidence": 0.76, + "decision_source": "jev", + "effort": "high", + "excluded": [ + { + "availability": "not-probed", + "backend": "claude", + "budget_age_s": null, + "budget_reason": "no recorded account-window reading for budget group claude-sub", + "budget_source": null, + "burn": { + "runway_hours": null, + "window_even_share_pct": null, + "window_rate_pct_per_hour": null + }, + "burn_multiple": null, + "congestion": null, + "context": null, + "days_to_reset": null, + "effort": "high", + "family": "claude", + "local": false, + "model": "claude-fable-5-1", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reasons": [ + "reserved-lane: claude is offered at its hardest tier ['reasoning', 'risk', 'verification'] or after 2 attempts; this node declares neither (attempts 0)" + ], + "resets_at": null, + "stale": null, + "suits": "The most capable and most expensive Claude model, about two and a half times Opus's token price. Reserve it for the very hardest nodes.", + "utilisation_pct": null, + "worker_slots": null + }, + { + "availability": "not-probed", + "backend": "claude", + "budget_age_s": null, + "budget_reason": "no recorded account-window reading for budget group claude-sub", + "budget_source": null, + "burn": { + "runway_hours": null, + "window_even_share_pct": null, + "window_rate_pct_per_hour": null + }, + "burn_multiple": null, + "congestion": null, + "context": null, + "days_to_reset": null, + "effort": "high", + "family": "claude", + "local": false, + "model": "claude-haiku-5-5", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reasons": [ + "reserved-lane: claude is offered at its hardest tier ['reasoning', 'risk', 'verification'] or after 2 attempts; this node declares neither (attempts 0)" + ], + "resets_at": null, + "stale": null, + "suits": "The lane's fastest and cheapest model, about a twentieth of Sonnet's token price. Suits light, well-defined work.", + "utilisation_pct": null, + "worker_slots": null + }, + { + "availability": "not-probed", + "backend": "claude", + "budget_age_s": null, + "budget_reason": "no recorded account-window reading for budget group claude-sub", + "budget_source": null, + "burn": { + "runway_hours": null, + "window_even_share_pct": null, + "window_rate_pct_per_hour": null + }, + "burn_multiple": null, + "congestion": null, + "context": null, + "days_to_reset": null, + "effort": "high", + "family": "claude", + "local": false, + "model": "claude-opus-5-5", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reasons": [ + "reserved-lane: claude is offered at its hardest tier ['reasoning', 'risk', 'verification'] or after 2 attempts; this node declares neither (attempts 0)" + ], + "resets_at": null, + "stale": null, + "suits": "A strong general model for deep or open-ended work, about twice Sonnet's token price.", + "utilisation_pct": null, + "worker_slots": null + }, + { + "availability": "not-probed", + "backend": "claude", + "budget_age_s": null, + "budget_reason": "no recorded account-window reading for budget group claude-sub", + "budget_source": null, + "burn": { + "runway_hours": null, + "window_even_share_pct": null, + "window_rate_pct_per_hour": null + }, + "burn_multiple": null, + "congestion": null, + "context": null, + "days_to_reset": null, + "effort": "medium", + "family": "claude", + "local": false, + "model": "claude-sonnet-5-5", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reasons": [ + "reserved-lane: claude is offered at its hardest tier ['reasoning', 'risk', 'verification'] or after 2 attempts; this node declares neither (attempts 0)" + ], + "resets_at": null, + "stale": null, + "suits": "The lane default, an everyday coding model at about half of Opus's token price. Suits guided implementation and full reviews.", + "utilisation_pct": null, + "worker_slots": null + }, + { + "availability": "not-probed", + "backend": "codex", + "budget_age_s": 338210.746958, + "budget_reason": null, + "budget_source": "ledger", + "burn": { + "credit_even_share": null, + "credit_pool_cap": 10000.0, + "credit_pool_remaining": null, + "credit_rate_per_hour": null, + "runway_hours": null, + "window_even_share_pct": 0.0, + "window_rate_pct_per_hour": null + }, + "burn_multiple": 0.35464689052861226, + "congestion": null, + "context": null, + "days_to_reset": 2.4602691324305557, + "effort": "xhigh", + "family": "codex", + "local": false, + "model": "gpt-6-astra", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": 0.713385642893684, + "prior_outcomes": null, + "reasons": [ + "reserved-lane: codex is offered at its hardest tier ['reasoning', 'risk', 'verification'] or after 2 attempts; this node declares neither (attempts 0)" + ], + "resets_at": "2026-10-24T20:40:42+00:00", + "stale": true, + "suits": "The lane's frontier model, strongest and slowest, about five times sol's token price. Suits deep or open-ended design, elevated or critical risk, and nodes that already failed on another model.", + "utilisation_pct": 23.0, + "worker_slots": null + }, + { + "availability": "not-probed", + "backend": "codex", + "budget_age_s": 338210.746958, + "budget_reason": null, + "budget_source": "ledger", + "burn": { + "credit_even_share": null, + "credit_pool_cap": 10000.0, + "credit_pool_remaining": null, + "credit_rate_per_hour": null, + "runway_hours": null, + "window_even_share_pct": 0.0, + "window_rate_pct_per_hour": null + }, + "burn_multiple": 0.35464689052861226, + "congestion": null, + "context": null, + "days_to_reset": 2.4602691324305557, + "effort": "xhigh", + "family": "codex", + "local": false, + "model": "gpt-6-luna", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": 0.713385642893684, + "prior_outcomes": null, + "reasons": [ + "reserved-lane: codex is offered at its hardest tier ['reasoning', 'risk', 'verification'] or after 2 attempts; this node declares neither (attempts 0)" + ], + "resets_at": "2026-10-24T20:40:42+00:00", + "stale": true, + "suits": "The lane's fast, affordable model, about a twentieth of sol's token price. Suits well-defined, less difficult work: reviews, exact-spec implementation, tests and documentation.", + "utilisation_pct": 23.0, + "worker_slots": null + }, + { + "availability": "not-probed", + "backend": "codex", + "budget_age_s": 338210.746958, + "budget_reason": null, + "budget_source": "ledger", + "burn": { + "credit_even_share": null, + "credit_pool_cap": 10000.0, + "credit_pool_remaining": null, + "credit_rate_per_hour": null, + "runway_hours": null, + "window_even_share_pct": 0.0, + "window_rate_pct_per_hour": null + }, + "burn_multiple": 0.35464689052861226, + "congestion": null, + "context": null, + "days_to_reset": 2.4602691324305557, + "effort": "high", + "family": "codex", + "local": false, + "model": "gpt-6-sol", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 2, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 2, + "wall_seconds_median": null + }, + "pace_allowance": 0.713385642893684, + "prior_outcomes": null, + "reasons": [ + "reserved-lane: codex is offered at its hardest tier ['reasoning', 'risk', 'verification'] or after 2 attempts; this node declares neither (attempts 0)" + ], + "resets_at": "2026-10-24T20:40:42+00:00", + "stale": true, + "suits": "The lane default, a previous-generation general model. Suits guided implementation, tests and full reviews at standard or deep reasoning and moderate risk. About twenty times luna's token price and a fifth of astra's.", + "utilisation_pct": 23.0, + "worker_slots": null + }, + { + "availability": "not-probed", + "backend": "native", + "budget_age_s": null, + "budget_reason": null, + "budget_source": null, + "burn": null, + "burn_multiple": null, + "congestion": null, + "context": null, + "days_to_reset": null, + "effort": "high", + "family": "in-harness", + "local": false, + "model": null, + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 0, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reasons": [ + "in-harness-backend" + ], + "resets_at": null, + "stale": null, + "suits": null, + "utilisation_pct": null, + "worker_slots": null + } + ], + "fallback_reason": null, + "family": "local", + "jev_latency_ms": 474.168, + "jev_model": "typesafe/jev-1.13", + "latency_ms": 763.124, + "model": "deepseek-v4.1-flash", + "offered": [ + { + "availability": "served", + "backend": "clive", + "budget_age_s": null, + "budget_reason": null, + "budget_source": null, + "burn": null, + "burn_multiple": null, + "congestion": { + "admission_verdict": "open", + "running": 8, + "slots_state": "measured", + "stale": false, + "waiting": 0 + }, + "context": { + "estimated_tokens": 68775, + "headroom_pct": 70.1, + "peak_utilisation_p50_pct": 59.5, + "peak_utilisation_p90_pct": 77.3, + "peak_utilisation_runs": 8, + "window_tokens": 230144 + }, + "days_to_reset": null, + "effort": "high", + "family": "local", + "local": true, + "model": "deepseek-v4.1-flash", + "moved_in": { + "failed": 0, + "not-run": 0, + "passed": 0, + "unknown": 0 + }, + "moved_off": 0, + "outcomes": { + "failed": 0, + "not-run": 0, + "passed": 4, + "unknown": 0 + }, + "outcomes_at_requirement": { + "attempts_median": null, + "failed": 0, + "not-run": 0, + "passed": 0, + "passed_first_attempt": 0, + "review_dimensions_median": null, + "review_total_median": null, + "reviewed": 0, + "unknown": 0, + "unrecorded": 4, + "wall_seconds_median": null + }, + "pace_allowance": null, + "prior_outcomes": null, + "reason": "eligible", + "reasons": [], + "resets_at": null, + "stale": null, + "suits": null, + "utilisation_pct": null, + "worker_slots": 2 + } + ], + "probabilities": { + "hold": 0.12, + "local:deepseek-v4.1-flash:clive": 0.88 + }, + "questions": { + "route": { + "criteria": { + "hold": "Do not dispatch now; wait for pressure to ease. When the local lane is not admitting (full, paused or unavailable), well-defined, routine or deferrable work should usually hold for it rather than spend a pressed metered lane. On a sliding scale, hard, high-risk or urgent work may still take the metered lane; weigh expected wait against urgency without a numeric threshold. When exactly one lane can serve the node, a hold waits for that lane alone, as hold_waits_for states.", + "local:deepseek-v4.1-flash:clive": { + "backend": "clive", + "effort": "high", + "lane": "local", + "local": true, + "meaning": "Execute the node as this lane and model pair; read the lane's shared pressure from the lanes block and this pair's own fit and serving observation from the candidate table.", + "model": "deepseek-v4.1-flash" + } + }, + "glossary": { + "budget_age_s": "Seconds since the budget reading was observed; null when unknown.", + "budget_source": "Where a budget reading came from: a document reading is taken from the published paid-lanes document, an account-surface reading describes now, and a ledger reading carries the age of the run behind it.", + "burn": "A metered lane's own burn block. window_rate_pct_per_hour is the window's utilisation change per hour over the trailing three hours, read from the lane's recorded readings rather than averaged over the whole window, so it describes what the lane is spending now and is present in a window too young for burn_multiple; null when fewer than two readings lie at least half an hour apart. window_even_share_pct is the even pace for the coming period -- the window's remaining percentage over the hours to its reset -- given as a reference to weigh against the node's priority and difficulty, never applied as a limit. Under a credits lift the block also carries credit_pool_remaining and credit_pool_cap (the lift's dispatch stop less the credits drawn since grant, and its cap), credit_rate_per_hour (the balance's fall per hour over the same trailing span) and credit_even_share (the pool's even pace to the lift's end); those four are absent with no credits lift. runway_hours is the credit pool over the credit rate under a lift, and the window's remainder over its own rate without one; null when the rate behind it is null or zero. A lane whose burn is racing ahead of its even share will exhaust before its reset, and a credits-lifted lane's pool is spent by priority: it is a budget for the work that needs the lane, not an even pace to the reset.", + "burn_multiple": "Metered spend so far divided by the lane's allowance for its window; above 1 is ahead of the pace that window plans for.", + "context": "A candidate's context block. window_tokens is the input window that gates the lane; estimated_tokens is this node's deterministic input estimate (standing instructions plus the repository files its brief loads) measured against that window; headroom_pct is the share of the window the estimate leaves free. peak_utilisation_p50_pct and peak_utilisation_p90_pct are the median and 90th-percentile peak input utilisation of recent passed runs on the lane, with peak_utilisation_runs behind them. A run whose input approaches its window risks dying mid-way, so a small headroom is a real risk to be weighed with pressure. A null figure is unknown, never zero.", + "days_to_reset": "Days until the lane's window resets; null when unknown.", + "expected_wait_profile_age_s": "The age in seconds of the oldest foreign project's run-time profile that contributed to expected_wait_s, counted from the instant its promotion published it; null when no foreign profile contributed. A pick reads a published profile rather than rebuilding one, so this names how stale the reading behind the wait is.", + "hold_waits_for": "What a hold waits on. When exactly one lane can serve the node a hold waits for that lane alone: waiting for any other lane to free changes nothing, because it cannot run this node. Null when no lane can serve the node.", + "lanes": "One pressure block per lane, however many models the lane holds. A lane is a subscription or host whose models share one account window, so its utilisation, burn, pace allowance, reset, worker slots, congestion and banked-reset flag are stated here once and are the same for every model in it. availability is the lane's serving state aggregated over those models. Read a model's own serving observation from its candidate entry; read the shared spending policy from its lane.", + "lift": "A lift in force on the lane's budget group: its form (uncapped, drain_by or multiple), who granted it, and when it ends. A lane under a lift is one whose window is meant to be spent, so its burn and pace do not press it while the lift stands.", + "moved_in": "A candidate's gate history over the runs a coordinator moved onto it from another lane: a run Jev routed elsewhere, whose lineage records a lane change onto this candidate. It uses the same passed, failed, not-run and unknown counts as outcomes, but those runs are kept out of outcomes and outcomes_at_requirement, because their outcome is the outcome of the pick they were chosen for, not of this lane's own picks. Read at the request's requirement when it names one, and over every move when it names none. Present only when at least one such move exists; an absent key means no coordinator moved a run onto this candidate in the window.", + "moved_off": "How many of this candidate's own picks a coordinator moved away to another lane. Read at the request's requirement when it names one, and over every move when it names none. A high moved_off means coordinators overrode the choice this candidate was picked for, so the lane never ran the nodes it was chosen for. Present only when it is greater than zero; an absent key means no coordinator moved this candidate's pick away in the window.", + "outcomes_at_requirement": "A candidate's gate history at this node's requirement: the same passed, failed, not-run and unknown counts as outcomes, but over only the rows whose recorded requirement (reasoning and risk) equals this node's. reviewed is the composition of the sample behind the dimension medians: how many rows a review scored on every dimension, and review_dimensions_median is the median of each dimension over exactly those rows, each scored 0 to 20, so a low dimension shows even when the total does not. review_total_median and wall_seconds_median are the median review score and wall time over those rows, null when none was recorded; review_total_median can rest on a different number of rows than reviewed, because a total is sometimes withheld and reviews scored before reuse existed carry a total without it. attempts_median is the median number of launches those rows took, and passed_first_attempt is how many of them passed on the first launch; a launch beyond the first is a resume, and resumes include the repairs that answer a blocking review, so a pass on the fifth launch is not a pass on the first. Rows that recorded no requirement count under unrecorded and are never matched, so history written before a requirement was recorded reads as unknown rather than as a match. These counts are the history at this node's difficulty, not a calibrated ranking.", + "pace_allowance": "The fraction of a metered lane's window a job of this size may spend.", + "prior_outcomes": "A candidate's lane model key's earlier generations, rendered only for a candidate whose own model id carries too few outcomes to weigh on their own. It uses the same passed, failed, not-run and unknown counts as outcomes, but over only the runs recorded under this candidate's lane and model key with a different model id, so a key re-pointed to a new generation shows the record its predecessor built. model_ids names each of those earlier ids. Read it as a prior: it is the key's own history weighed below the candidate's own outcomes, never in place of them, and it is absent once the candidate's own outcomes are enough to weigh on their own.", + "reserved_lane": "The lane a flight policy reserves for the orchestrators that share it, recorded beside the route when it spends one. Spend one only as the policy offers it, and answer with \"reason\" in the route naming how hard the node is and the share of the lane's window left free; a route that spends a reserved lane and gives no reason is refused, and the pick is asked again with that lane left out.", + "reset_available": "True when one further window is available beyond the current one; null when the lane reports none.", + "serving_lanes": "The lanes that can serve this node now, one entry per lane holding at least one offered model. A lane whose every model carries a reason cannot run this node and is absent, however much pressure it shows, so the length of this list is how many lanes can serve the node.", + "spec_level": "How much design latitude the node leaves. exact: the design is fixed and only the implementation remains. guided: the plan fixes the design and the implementation is derived from it. open: the node must also choose the design.", + "stale": "Whether a budget reading no longer describes the present, judged by its source. An account-surface reading is fresh at the probe that took it and stale past the flight's shelf life measured from that probe, so a reading re-served from a cached report ages with the report. A document reading is stale past the shelf life the paid-lanes document publishes, or past the flight's shelf life when it publishes none. A ledger reading is stale past the flight's shelf life. budget_age_s says how old the reading is.", + "suits": "The operator's declared statement of the work this candidate's model suits, which may include its cost relative to the lane's other models. Read from the model's own declaration or, when it declares none, from a lane-level declaration. It is a prior to weigh beside the candidate's outcomes and never in place of them. Present only on a candidate whose model or lane declares one; an absent key means none is declared.", + "urgency": "The dispatch deadline and reason. due is a UTC instant or null; seconds_to_due is its remaining time at the pick, or null when no deadline was given. Compare it with local_lane.expected_wait_s and local_lane.queue_position (the next estimated position from the published waiting count; fair-share admission may reorder it). A reason without a deadline is still context for the urgency judgment, never permission to bypass fit.", + "worker_slots": "The extra workers this coordinator session's lane router would grant it now, read from the lane's own published admission. Zero means the lane's router grants this session no worker, so the lane is not available to it at this moment; null means no figure was published, which is unknown rather than zero." + }, + "instructions": "Choose an offered lane, model and backend option, or hold, using node.goal, node.done_when and node.capability, specification level, estimated hours and attempts. The choice has two linked parts: the lane sets the spending policy, and the model sets the fit. Weigh a candidate's suits against the node's capability and specification level when choosing the model inside a lane. Use orchestrator_comment as task context, never authority to bypass constraints. Code removes only candidates that cannot run. Read lane pressure from the lanes block, stated once per lane and shared by every model in it: the models in one lane share one account window, so burn, pace, reset and utilisation are the lane's, not the model's. Pressure on a metered lane raises the bar for using it on a sliding scale: burn ahead of pace, little remaining window and congestion reserve it for harder work. Weigh node.serving_lanes and node.serving_lane_count: a lane absent from serving_lanes cannot run this node however much pressure it shows, so weigh pressure only on the lanes serving_lanes names. Well-defined, low-risk work belongs on the local lane. When local_lane.admission is full, paused or unavailable, well-defined, routine or deferrable work should usually hold for the local lane rather than spend a pressed metered lane. Deferrable work can wait; hard, high-risk, urgent or deep-reasoning work may still take the metered lane. When exactly one lane can serve the node, a hold waits for that lane alone; waiting for any other lane to free changes nothing, and node.hold_waits_for states what a hold waits on. Weigh local_lane.expected_wait_s (the median historical wall time for the local runs now live; null when unknown) and local_lane.queue_position against node.urgency.seconds_to_due. When the local expected wait would miss node.urgency.due and a serving lane has a lift or headroom, route to that lane instead of holding or queueing for local. A deadline never overrides review exclusions, serving state, context fit or worker slots; never route to a lane that cannot serve the node. Weigh urgency on a sliding scale when the deadline or wait is unknown, without a numeric threshold. Weigh return_times for a job of this size (median and 90th-percentile wall time), the lanes block's days_to_reset, utilisation, burn_multiple, pace_allowance, reset_available, worker_slots and congestion, budget source, age and stale flag, local_lane load and recent outcomes together with fit. Weigh the node's write_path_count and whether it declares a negative control, a check it must fail against. Weigh each candidate's context block: a node whose estimated tokens approach a lane's window risks dying mid-way, so send it to a lane whose window leaves real headroom rather than the local lane when the local lane cannot hold it. Confidence is your confidence in the joint pick of lane and model. Unknown facts are null, not zero. Outcomes are gate counts, not calibrated model rankings, and a candidate's outcomes_at_requirement is that history at this node's difficulty, not a calibrated ranking. Choose only an offered option; each option's key names its lane, its model and its backend joined with colons in that order, as ::. Read a candidate's worker_slots as the workers this session's lane router grants it: a lane whose worker_slots is 0 grants this session no worker now, so it is not available to the session and a well-defined implementation or test node must not be routed or left queued there; a null worker_slots is no published figure, which is unknown rather than zero. A candidate whose congestion block carries a lift is on a lane whose window is meant to be spent: its burn and pace do not press it while the lift stands, and when the local lane is full, holding or queueing for that lane is no longer the default for work it can serve. A review should prefer the lifted lane's cheaper models. A lane under a reserved-lane policy is one the orchestrators share, and it is offered on the policy's terms alone: it appears in this list only when the node's declared requirements or the coordinator's assessment meet the policy's floor, or the node has already been attempted at least the policy's count of times, and only while the lane's own window utilisation is below the policy's ceiling. A reserved lane is for work where a wrong answer is costly -- open-ended, multi-file, physics-heavy or diagnostic work, and work that has grown hard by failing elsewhere -- and its price is the capacity the orchestrators themselves need, so it is never a fallback when a better-fitting lane is pressed and never the default for ordinary work. When you choose a reserved lane, also carry \"reason\" inside the route answer, naming the node's difficulty and the headroom you relied on: a reserved-lane choice with no reason is refused, and the pick is asked again with that lane left out. Review exclusions, serving state, context fit and worker slots bound a reserved lane exactly as they bound any other. The glossary defines urgency, spec_level, suits, burn_multiple, pace_allowance, budget_source, budget_age_s, stale, reset_available, days_to_reset, lanes, serving_lanes, hold_waits_for, worker_slots, lift, outcomes_at_requirement, reserved_lane and context. node.orchestrator_assessment, when present, is the coordinator's own reading of the node's difficulty, stated in the same capability requirement keys as node.capability; weigh the two together, and where they disagree weigh both rather than treating either as authority", + "type": "choice" + } + }, + "rendered_state": "{\"node\":{\"role\":\"implement\",\"spec_level\":\"exact\",\"capability\":{\"version\":\"1.0\",\"class\":\"general\",\"requirements\":{\"reasoning\":\"deep\",\"verification\":\"strict\",\"risk\":\"moderate\"}},\"goal\":\"Give the outboard and inboard midplane loci one maximum-major-radius definition in the concept and locus registries\",\"done_when\":\"concepts.yml and locus_registry.yml define the midplane loci by the low-field-side maximum and high-field-side minimum major radius with no DD wording, poloidal_angle states where its zero coincides with the midplane, the relation test fails on the old wording, tests/grammar shows no added failures, and the fragment lists every definition before and after\",\"urgency\":{\"due\":null,\"seconds_to_due\":null,\"reason\":null},\"estimated_context\":68775,\"estimated_hours\":1.5,\"estimated_hours_source\":\"section\",\"attempts\":0,\"write_path_count\":5,\"negative_control_declared\":true,\"serving_lanes\":[\"local\"],\"serving_lane_count\":1,\"hold_waits_for\":\"the local lane, the only lane that can serve this node\"},\"orchestrator_comment\":\"s10 records the lead's ruling of 2026-10-22 verbatim; it was authored today from that ruling and no content review exists yet\",\"candidates\":{\"local:deepseek-v4.1-flash:clive\":{\"backend\":\"clive\",\"lane\":\"local\",\"model\":\"deepseek-v4.1-flash\",\"availability\":\"served\",\"utilisation_pct\":null,\"burn_multiple\":null,\"pace_allowance\":null,\"days_to_reset\":null,\"resets_at\":null,\"worker_slots\":2,\"congestion\":{\"running\":8,\"waiting\":0,\"admission_verdict\":\"open\",\"stale\":false,\"slots_state\":\"measured\"},\"outcomes\":{\"passed\":4,\"failed\":0,\"not-run\":0,\"unknown\":0},\"outcomes_at_requirement\":{\"passed\":0,\"failed\":0,\"not-run\":0,\"unknown\":0,\"unrecorded\":4,\"reviewed\":0,\"review_total_median\":null,\"review_dimensions_median\":null,\"wall_seconds_median\":null,\"attempts_median\":null,\"passed_first_attempt\":0},\"context\":{\"window_tokens\":230144,\"estimated_tokens\":68775,\"headroom_pct\":70.1,\"peak_utilisation_p50_pct\":59.5,\"peak_utilisation_p90_pct\":77.3,\"peak_utilisation_runs\":8},\"budget_source\":null,\"budget_age_s\":null,\"stale\":null,\"reset_available\":null}},\"return_times\":{\"local:deepseek-v4.1-flash:clive\":{\"p50_s\":3476,\"p90_s\":3476,\"runs\":1,\"size_key\":\"time_budget\",\"size_bucket\":\"30m_to_60m\",\"budget_source\":\"ledger\",\"budget_age_s\":337490.670564,\"stale\":true}},\"lanes\":{\"local\":{\"availability\":\"served\",\"utilisation_pct\":null,\"burn_multiple\":null,\"pace_allowance\":null,\"resets_at\":null,\"days_to_reset\":null,\"worker_slots\":2,\"congestion\":{\"running\":8,\"waiting\":0,\"admission_verdict\":\"open\",\"stale\":false,\"slots_state\":\"measured\"},\"reset_available\":null}},\"local_lane\":{\"admission\":\"admitting\",\"expected_wait_s\":736.25,\"expected_wait_profile_age_s\":4321.712695,\"running\":8,\"waiting\":0,\"queue_position\":1,\"headroom\":2,\"worker_slots\":9,\"tokens_per_second\":51.347,\"read_at\":\"2026-10-22T09:37:54.821997+00:00\"}}", + "rendered_token_estimate": 704, + "stage_ms": { + "budget-snapshot": 115.203, + "context-estimate": 68.632, + "records": 15.411, + "verdict-inputs": 104.311 + }, + "template_digest": "cb9d48e7fca5878b52cc4affdedfdee9f5e04b929f720979b14d0d78b8456ced", + "usage": { + "cost": 0.000119616, + "input_tokens": 2848, + "output_tokens": 55 + } + }, + "plan": null, + "plan_impl_at_dispatch": 0.8269230769230769, + "plan_link": null, + "promoted_by": null, + "promoted_revision": "88d7af70c0c3c6a7bbd4ac04d68e2ae15ec4039a", + "resume_waiver": null, + "review": { + "absent": [], + "reviewed_base_sha": "2451ab498b0e84b42c390e7ee4a052cdb59795c2", + "reviewed_head_sha": "88d7af70c0c3c6a7bbd4ac04d68e2ae15ec4039a", + "scores": { + "durability": 15, + "evidence": 19, + "fit": 19, + "goal_fidelity": 20, + "reuse": 20, + "scope_discipline": 19 + }, + "status": "parsed", + "total": 112 + }, + "review_tier": "light", + "role": "implement", + "route_mode": "explicit", + "run_id": "r-20261022T093735018238-isn-one-midplane", + "scope_acceptances": null, + "scope_changed": false, + "section": "§10", + "session": "4f554c2d-3a28-4c55-8645-67a1e8a30dea", + "session_harness": "claude", + "session_id": "d8496771-6400-4b5e-a6d4-275036fcb386", + "session_model": "deepseek-v4.1-flash", + "shadow_controlled": null, + "shadow_patch": "", + "spec_level": "exact", + "stalled": false, + "suite_delta": null, + "tests_added": 1, + "throughput": { + "cumulative_cached_input_tokens": 0, + "cumulative_input_tokens": 9630055, + "detail": "generation and wall clock reported separately by the backend; utilisation divided by the configured lane window 230144", + "elapsed_seconds": 3822.273, + "generated_tokens": 51694, + "generation_seconds": 1230.502, + "input_budget_tokens": 230144, + "input_utilisation_pct": 63.6, + "machine_seconds": 2591.771, + "peak_input_tokens": 146473, + "tokens_per_second": 42.01, + "wall_tokens_per_second": 13.52 + }, + "time_budget": "60m", + "tool_steps": 89.0, + "unplanned_reason": null, + "unreconciled_override": { + "grace": "15m", + "requested": true, + "waived_runs": [] + }, + "wall_seconds": 3836, + "watch_override": null, + "worker_exit": { + "attempt": 1, + "ended_during": "working", + "ended_pids": [], + "exit_code": 0, + "exited_at": "2026-10-22T10:41:51Z", + "last_record_type": "result", + "launched_at": "2026-10-22T09:37:53Z", + "recorded_by": "supervisor", + "run_id": "r-20261022T093735018238-isn-one-midplane", + "signal": null, + "signal_name": null, + "stream_records_seen": 8675, + "worker_pid": 2838431 + }, + "worker_seconds": 3798, + "worker_seconds_source": "stream_events", + "worktree_retention": null +} From 14460a0e23bebb954cb424093bf4079cc583a30a Mon Sep 17 00:00:00 2001 From: Simon McIntosh Date: Thu, 22 Oct 2026 14:40:20 +0200 Subject: [PATCH 8/8] release(r-20261022T093735018238-isn-one-midplane): record workspace outcome Record the worktree and process release receipt after promotion without rewriting a commit another session may have published. --- ...0261022T093735018238-isn-one-midplane.json | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/docs/state/imas-standard-names/runs/r-20261022T093735018238-isn-one-midplane.json b/docs/state/imas-standard-names/runs/r-20261022T093735018238-isn-one-midplane.json index 73cf4499..f7f3bd2c 100644 --- a/docs/state/imas-standard-names/runs/r-20261022T093735018238-isn-one-midplane.json +++ b/docs/state/imas-standard-names/runs/r-20261022T093735018238-isn-one-midplane.json @@ -920,6 +920,61 @@ "plan_link": null, "promoted_by": null, "promoted_revision": "88d7af70c0c3c6a7bbd4ac04d68e2ae15ec4039a", + "release": { + "arms_kept": [ + { + "path": "/home/ITER/mcintos/.config/reckon/crew/runs/r-20261022T093735018238-isn-one-midplane/logs", + "reason": "outside the node-local temp root /tmp" + } + ], + "arms_logs_copied": [], + "arms_removed_paths": [], + "arms_withheld": "", + "process_signalled": false, + "process_withheld": "process is not alive", + "scratch_bytes": 0, + "scratch_path": "/tmp/reckon-crew-scratch/r-20261022T093735018238-isn-one-midplane", + "scratch_removed": true, + "scratch_removed_paths": [ + { + "bytes": 0, + "path": "/tmp/reckon-crew-scratch/r-20261022T093735018238-isn-one-midplane" + } + ], + "scratch_withheld": "", + "worktree_audit": { + "counts": { + "dirty": 0, + "disposable": 0, + "integrated": 0, + "live-referenced": 0, + "retained-for-resume": 0, + "unintegrated": 1 + }, + "worktrees": [ + { + "available": true, + "claimed_by_live_runs": [], + "classification": "unintegrated", + "commits_unmeasured_reason": "release_residue is false: this caller did not ask for the commits beyond the integration head to be measured", + "dirty": [], + "head": "88d7af70c0c3c6a7bbd4ac04d68e2ae15ec4039a", + "integrated_into": "HEAD", + "non_equivalent_commits": null, + "patch_equivalent_commits": null, + "path": "/home/ITER/mcintos/Code/.reckon-worktrees/imas-standard-names-5be88ee0fdc3/4f554c2d-3a28-4c55-8645-67a1e8a30dea/isn-one-midplane", + "reclaimable": false, + "shadow_patch": "", + "shadow_run_id": "", + "status_digest": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "status_entries": [], + "withheld": "its HEAD is not reachable from the integration revision, so removing it would destroy the only copy of that commit; merge it or discard it deliberately" + } + ] + }, + "worktree_released": false, + "worktree_withheld": "its HEAD is not reachable from the integration revision, so removing it would destroy the only copy of that commit; merge it or discard it deliberately" + }, "resume_waiver": null, "review": { "absent": [],