The R15 suite of the acceptance registry: the ten packages of the 1.5x Research Programme (every one NOT RUN, the gate verbatim, the owner capability and artefact, the X and B lanes as cross-references), the two rules in the suite's note (WITNESS or BOUND on every chip figure; no raw hashes-per-second comparison without an approved equivalence); generated by tools/ci/r15-suite.mjs, regenerated at the merge, checked in the gate

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-09 09:07:39 +00:00
parent 76ee67d8fe
commit aea0e3751d
8 changed files with 609 additions and 12 deletions

View file

@ -0,0 +1,128 @@
{
"document": "IGNEUM - The 1.5x Research Programme (9 October 2026)",
"source": "igneum-1p5x-research-plan.md, section 10 'Proposed execution packages' (the table whose rows begin '| R15-')",
"status": "PROPOSED; every package NOT RUN; the plan claims no pass",
"lane_map_note": "the X and B cross-references on each package are the research-landing hand's reading of the plan against the brief's matrix and track B, for the coordinator to confirm; the lanes block names the owner lanes as the coordinator named them on 9 October",
"packages": [
{
"id": "R15-01",
"owner_capability": "Release + measurement",
"required_artefact": "Latest exact pack, physical assumptions, source manifest, current ratio reconciliation",
"gate": "No cross-version mixed baseline",
"lanes": [
"X0"
],
"status": "NOT RUN"
},
{
"id": "R15-02",
"owner_capability": "GPU + hardware",
"required_artefact": "Component power/traffic model and sensitivity analysis",
"gate": "No device/whole-machine boundary mismatch",
"lanes": [
"X0",
"X5"
],
"status": "NOT RUN"
},
{
"id": "R15-03",
"owner_capability": "GPU + memory analysis",
"required_artefact": "Layer-8-off control and held-out cache curves",
"gate": "Distinct benefit after best cache adaptation",
"lanes": [
"X1"
],
"status": "NOT RUN"
},
{
"id": "R15-04",
"owner_capability": "GPU systems",
"required_artefact": "Compaction, exact-fold alternatives and tuning results",
"gate": "Byte agreement, real accepted-work savings",
"lanes": [
"X2",
"X3",
"X4"
],
"status": "NOT RUN"
},
{
"id": "R15-05",
"owner_capability": "Cryptography",
"required_artefact": "Exact published MHPoW control, theorem audit, malicious fixtures",
"gate": "No improvised sampled-memory soundness",
"lanes": [
"B1"
],
"status": "NOT RUN"
},
{
"id": "R15-06",
"owner_capability": "GPU + cryptography",
"required_artefact": "Theorem-preserving layout/parallelisation feasibility",
"gate": "GPU competitiveness and cheap-enough verification",
"lanes": [
"B3"
],
"status": "NOT RUN"
},
{
"id": "R15-07",
"owner_capability": "Cryptography + hardware",
"required_artefact": "Joint accepted-proof resource frontier with concrete constants",
"gate": "No invalid theorem composition",
"lanes": [
"B2",
"B4"
],
"status": "NOT RUN"
},
{
"id": "R15-08",
"owner_capability": "Independent ASIC team",
"required_artefact": "Re-optimised SRAM/DRAM/hybrid/recompute/PIM scenarios",
"gate": "Full-storage adversary not excluded by price",
"lanes": [
"X5",
"B5"
],
"status": "NOT RUN"
},
{
"id": "R15-09",
"owner_capability": "Measurement + economics",
"required_artefact": "Blind cohort confirmation and separate P12 outcomes",
"gate": "Strongest credible ratio, not average",
"lanes": [
"X6"
],
"status": "NOT RUN"
},
{
"id": "R15-10",
"owner_capability": "Protocol/security",
"required_artefact": "Network and pool integration, no-rescue exercise, public evidence",
"gate": "Correctness and safe operation remain intact",
"lanes": [
"B6"
],
"status": "NOT RUN"
}
],
"lanes": {
"B1": "a4490b2dfe9114a55",
"B2": "a717f5c9730229ea6",
"B3": "a8e608abf1567ff87",
"B4": "a46974623d72b032c",
"B5": "a1a9876a88f5a72fc (inside X5)",
"B6": "a283f5f0d364ceef0",
"X0": "a1a9876a88f5a72fc with a690540514aa453d7",
"X1": "a6decc31f55cfbd00",
"X2": "a884c7bf29d150268",
"X3": "ae16e56dd365a2ea6",
"X4": "adf5683e5bcd9042b",
"X5": "a1a9876a88f5a72fc with the floor lanes",
"X6": "a2ecfa95d3206016c"
}
}

View file

@ -1,6 +1,6 @@
# Igneum 2.0 test harness map
Generated from tools/ci/test-map.json by tools/ci/test-map-doc.mjs; edit the JSON, never this page. Registry: docs/plans/igneum-2.0-test-registry.json (262 cases).
Generated from tools/ci/test-map.json by tools/ci/test-map-doc.mjs; edit the JSON, never this page. Registry: docs/plans/igneum-2.0-test-registry.json (272 cases).
Rule: a case maps to a cell only where the cell's tests visibly answer it; coverage names what the cell proves and what remains; a mapped cell's green writes RUNNING, PASS only when coverage is full and the evidence file exists; an automated case with no cell reads NOT RUN with its reason, never PASS by inference.
@ -620,7 +620,17 @@ Rule: a case maps to a cell only where the cell's tests visibly answer it; cover
- TV-30 Energy and claims discipline: TV-30 (token value gate, scope CORE): no gate executed; the harness is the owner role's (GPU + measurement); a supplemental layer, never counted as independent evidence; not yet named in the map
- TV-31 Public-claim and activity review: TV-31 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Qualified counsel); a supplemental layer, never counted as independent evidence; not yet named in the map
- TV-32 Observed leadership, not a roadmap certificate: TV-32 (token value gate, scope LEADERSHIP CLAIM): no gate executed; the harness is the owner role's (Independent acceptance panel); a supplemental layer, never counted as independent evidence; not yet named in the map
- R15-01 R15-01: Release + measurement: R15-01 (1.5x programme package): no package executed; the harness is the lane's (X0); its batch names the case when it lands; not yet named in the map
- R15-02 R15-02: GPU + hardware: R15-02 (1.5x programme package): no package executed; the harness is the lane's (X0, X5); its batch names the case when it lands; not yet named in the map
- R15-03 R15-03: GPU + memory analysis: R15-03 (1.5x programme package): no package executed; the harness is the lane's (X1); its batch names the case when it lands; not yet named in the map
- R15-04 R15-04: GPU systems: R15-04 (1.5x programme package): no package executed; the harness is the lane's (X2, X3, X4); its batch names the case when it lands; not yet named in the map
- R15-05 R15-05: Cryptography: R15-05 (1.5x programme package): no package executed; the harness is the lane's (B1); its batch names the case when it lands; not yet named in the map
- R15-06 R15-06: GPU + cryptography: R15-06 (1.5x programme package): no package executed; the harness is the lane's (B3); its batch names the case when it lands; not yet named in the map
- R15-07 R15-07: Cryptography + hardware: R15-07 (1.5x programme package): no package executed; the harness is the lane's (B2, B4); its batch names the case when it lands; not yet named in the map
- R15-08 R15-08: Independent ASIC team: R15-08 (1.5x programme package): no package executed; the harness is the lane's (X5, B5); its batch names the case when it lands; not yet named in the map
- R15-09 R15-09: Measurement + economics: R15-09 (1.5x programme package): no package executed; the harness is the lane's (X6); its batch names the case when it lands; not yet named in the map
- R15-10 R15-10: Protocol/security: R15-10 (1.5x programme package): no package executed; the harness is the lane's (B6); its batch names the case when it lands; not yet named in the map
## Count
203 automated cases: 91 mapped to a cell, 170 NOT RUN with a reason.
213 automated cases: 91 mapped to a cell, 180 NOT RUN with a reason.

View file

@ -17506,6 +17506,8 @@
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
"run_status": "NOT RUN",
"master_status": "NOT RUN",
"run_id": "tv-d02-20261009-01",
"evidence_path": "docs/plans/igneum-2.0-master/token-value/phase0/d02/README.md",
"updated": "2026-10-09T09:00:20.590Z",
"evidence_record": {
"requirement_id": "TV-01",
@ -17555,15 +17557,13 @@
"note": "TV-01: the D02 comparison the decision register asks for (BLOCKED rows B0 to B4 in the README: the founder's pick, TV-01's supply spec, TV-04's budget base, TV-03's cohort inputs, D01's tail wording). TV-03: issuance timing under alternative same-cap schedules and the subsidy a delayed entrant sees (tables 1, 4, 5); arrival times as people wait on TV-03's inputs. TV-04: falling issuance at horizons 1, 5, 10 and 20 and the fee-dependence year at the .25x/1x/4x/10x multiples against a stated 1 percent yardstick, the fee series a parameter (table 6); TV-04's role budget replaces the yardstick. | D02, the same-cap emission comparison (Token Value Phase 0, the D02 lane, 9 October 2026): the node fork's emission rule at release-2.0.2-node a284380b replayed by tools/token-value/d02/d02_emission.py for the current pacing (A), the volume's longer same-cap distribution (B, time axis x2, with x3 and x4 swept) and the lane's smooth-glide alternative (C); years 1, 2, 5, 10 and 20; the node's own EmissionTable prints byte-identical rows (evidence/node-crosscheck.log); the outputs regenerate byte-identically (d02-manifest.sha256). No schedule is picked: the founder's word reads 'the schedule pending evidence'. NOT RUN until the independent panel reads it. Recorded by the CI steward at 09:5x UK from docs/plans/igneum-2.0-master/token-value/phase0/d02/registry-batch-tv-d02-20261009-01.json (master 0673ecf8, sha256 f21ffda7...), the requested map cell added; in progress until the decision's evidence is complete."
}
},
"in_progress_since": "2026-10-09T09:00:20.590Z",
"approvals": {
"scope_approved": null,
"implementation_complete": null,
"evidence_reproduced": null,
"claim_authorised": null
},
"run_id": "tv-d02-20261009-01",
"evidence_path": "docs/plans/igneum-2.0-master/token-value/phase0/d02/README.md",
"in_progress_since": "2026-10-09T09:00:20.590Z"
}
},
{
"id": "TV-02",
@ -17666,6 +17666,8 @@
"threshold_status": "PROPOSED - FREEZE BEFORE TEST",
"run_status": "NOT RUN",
"master_status": "NOT RUN",
"run_id": "tv-d02-20261009-01",
"evidence_path": "docs/plans/igneum-2.0-master/token-value/phase0/d02/README.md",
"updated": "2026-10-09T09:00:20.590Z",
"evidence_record": {
"requirement_id": "TV-03",
@ -17715,15 +17717,13 @@
"note": "TV-01: the D02 comparison the decision register asks for (BLOCKED rows B0 to B4 in the README: the founder's pick, TV-01's supply spec, TV-04's budget base, TV-03's cohort inputs, D01's tail wording). TV-03: issuance timing under alternative same-cap schedules and the subsidy a delayed entrant sees (tables 1, 4, 5); arrival times as people wait on TV-03's inputs. TV-04: falling issuance at horizons 1, 5, 10 and 20 and the fee-dependence year at the .25x/1x/4x/10x multiples against a stated 1 percent yardstick, the fee series a parameter (table 6); TV-04's role budget replaces the yardstick. | D02, the same-cap emission comparison (Token Value Phase 0, the D02 lane, 9 October 2026): the node fork's emission rule at release-2.0.2-node a284380b replayed by tools/token-value/d02/d02_emission.py for the current pacing (A), the volume's longer same-cap distribution (B, time axis x2, with x3 and x4 swept) and the lane's smooth-glide alternative (C); years 1, 2, 5, 10 and 20; the node's own EmissionTable prints byte-identical rows (evidence/node-crosscheck.log); the outputs regenerate byte-identically (d02-manifest.sha256). No schedule is picked: the founder's word reads 'the schedule pending evidence'. NOT RUN until the independent panel reads it. Recorded by the CI steward at 09:5x UK from docs/plans/igneum-2.0-master/token-value/phase0/d02/registry-batch-tv-d02-20261009-01.json (master 0673ecf8, sha256 f21ffda7...), the requested map cell added; in progress until the decision's evidence is complete."
}
},
"in_progress_since": "2026-10-09T09:00:20.590Z",
"approvals": {
"scope_approved": null,
"implementation_complete": null,
"evidence_reproduced": null,
"claim_authorised": null
},
"run_id": "tv-d02-20261009-01",
"evidence_path": "docs/plans/igneum-2.0-master/token-value/phase0/d02/README.md",
"in_progress_since": "2026-10-09T09:00:20.590Z"
}
},
{
"id": "TV-04",
@ -19910,6 +19910,374 @@
"text": "Counting note (main's order, 9 October 2026, by 11:00 UK): the VR rules (40) and TV gates (32) are a supplemental layer over the master's 128 cases, the 18 integration gates and the 44 review regressions, never added to them as independent evidence; no TV gate has executed; every VR rule is PROPOSED and requires ratification by the founder and its owner role; the decisions D01 to D06 are UNAPPROVED, the founder's."
}
]
},
{
"code": "R15",
"title": "R15: the 1.5x Research Programme packages (proposed; every package NOT RUN; the plan claims no pass)",
"source": "docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json (igneum-1p5x-research-plan.md, section 10 'Proposed execution packages' (the table whose rows begin '| R15-'))",
"gate": "1.5x programme packages closed",
"owner": "the X and B lanes per package; the coordinator confirms the cross-references",
"fixtures": [
"F0"
],
"summary": "10 packages from IGNEUM - The 1.5x Research Programme (9 October 2026); PROPOSED; every package NOT RUN; the plan claims no pass; the X and B cross-references on each package are the research-landing hand's reading of the plan against the brief's matrix and track B, for the coordinator to confirm; the lanes block names the owner lanes as the coordinator named them on 9 October",
"tests": [
{
"id": "R15-01",
"title": "R15-01: Release + measurement",
"owner_capability": "Release + measurement",
"required_artefact": "Latest exact pack, physical assumptions, source manifest, current ratio reconciliation",
"accept": "No cross-version mixed baseline",
"setup": "Package R15-01 of the 1.5x Research Programme (docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json); the required artefact: Latest exact pack, physical assumptions, source manifest, current ratio reconciliation",
"procedure": "The lane(s) X0 produce the required artefact; the package's gate is read against it by the independent review.",
"evidence": "The run record of the package's lane(s) as recorded through tools/ci/test-record.mjs; every chip figure labelled WITNESS or BOUND; no raw hashes-per-second comparison without an approved equivalence.",
"priority": "P0",
"profile": "P04",
"cadence": "Once per programme round",
"method": "Automated + independent review",
"source": [
"R15"
],
"gate": "1.5x programme package closed",
"owner": "the X0 decider (hash lane) baseline batch",
"owner_lane": "X0",
"lanes": [
"X0"
],
"cross_reference": [
{
"lane": "X0",
"batch": "the X0 decider (hash lane) baseline batch"
}
],
"manual_page": null,
"run_status": "NOT RUN",
"plan_status": "NOT RUN"
},
{
"id": "R15-02",
"title": "R15-02: GPU + hardware",
"owner_capability": "GPU + hardware",
"required_artefact": "Component power/traffic model and sensitivity analysis",
"accept": "No device/whole-machine boundary mismatch",
"setup": "Package R15-02 of the 1.5x Research Programme (docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json); the required artefact: Component power/traffic model and sensitivity analysis",
"procedure": "The lane(s) X0, X5 produce the required artefact; the package's gate is read against it by the independent review.",
"evidence": "The run record of the package's lane(s) as recorded through tools/ci/test-record.mjs; every chip figure labelled WITNESS or BOUND; no raw hashes-per-second comparison without an approved equivalence.",
"priority": "P0",
"profile": "P04",
"cadence": "Once per programme round",
"method": "Automated + independent review",
"source": [
"R15"
],
"gate": "1.5x programme package closed",
"owner": "the X0 decider (hash lane) baseline batch; the X5 lane (co-optimised opponents) batch",
"owner_lane": "X0, X5",
"lanes": [
"X0",
"X5"
],
"cross_reference": [
{
"lane": "X0",
"batch": "the X0 decider (hash lane) baseline batch"
},
{
"lane": "X5",
"batch": "the X5 lane (co-optimised opponents) batch"
}
],
"manual_page": null,
"run_status": "NOT RUN",
"plan_status": "NOT RUN"
},
{
"id": "R15-03",
"title": "R15-03: GPU + memory analysis",
"owner_capability": "GPU + memory analysis",
"required_artefact": "Layer-8-off control and held-out cache curves",
"accept": "Distinct benefit after best cache adaptation",
"setup": "Package R15-03 of the 1.5x Research Programme (docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json); the required artefact: Layer-8-off control and held-out cache curves",
"procedure": "The lane(s) X1 produce the required artefact; the package's gate is read against it by the independent review.",
"evidence": "The run record of the package's lane(s) as recorded through tools/ci/test-record.mjs; every chip figure labelled WITNESS or BOUND; no raw hashes-per-second comparison without an approved equivalence.",
"priority": "P0",
"profile": "P04",
"cadence": "Once per programme round",
"method": "Automated + independent review",
"source": [
"R15"
],
"gate": "1.5x programme package closed",
"owner": "the X1 lane (window-free control) batch",
"owner_lane": "X1",
"lanes": [
"X1"
],
"cross_reference": [
{
"lane": "X1",
"batch": "the X1 lane (window-free control) batch"
}
],
"manual_page": null,
"run_status": "NOT RUN",
"plan_status": "NOT RUN"
},
{
"id": "R15-04",
"title": "R15-04: GPU systems",
"owner_capability": "GPU systems",
"required_artefact": "Compaction, exact-fold alternatives and tuning results",
"accept": "Byte agreement, real accepted-work savings",
"setup": "Package R15-04 of the 1.5x Research Programme (docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json); the required artefact: Compaction, exact-fold alternatives and tuning results",
"procedure": "The lane(s) X2, X3, X4 produce the required artefact; the package's gate is read against it by the independent review.",
"evidence": "The run record of the package's lane(s) as recorded through tools/ci/test-record.mjs; every chip figure labelled WITNESS or BOUND; no raw hashes-per-second comparison without an approved equivalence.",
"priority": "P0",
"profile": "P04",
"cadence": "Once per programme round",
"method": "Automated + independent review",
"source": [
"R15"
],
"gate": "1.5x programme package closed",
"owner": "the X2 lane (compaction) batch; the X3 lane (Ember tuning) batch; the X4 lane (reg64 alternatives) batch",
"owner_lane": "X2, X3, X4",
"lanes": [
"X2",
"X3",
"X4"
],
"cross_reference": [
{
"lane": "X2",
"batch": "the X2 lane (compaction) batch"
},
{
"lane": "X3",
"batch": "the X3 lane (Ember tuning) batch"
},
{
"lane": "X4",
"batch": "the X4 lane (reg64 alternatives) batch"
}
],
"manual_page": null,
"run_status": "NOT RUN",
"plan_status": "NOT RUN"
},
{
"id": "R15-05",
"title": "R15-05: Cryptography",
"owner_capability": "Cryptography",
"required_artefact": "Exact published MHPoW control, theorem audit, malicious fixtures",
"accept": "No improvised sampled-memory soundness",
"setup": "Package R15-05 of the 1.5x Research Programme (docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json); the required artefact: Exact published MHPoW control, theorem audit, malicious fixtures",
"procedure": "The lane(s) B1 produce the required artefact; the package's gate is read against it by the independent review.",
"evidence": "The run record of the package's lane(s) as recorded through tools/ci/test-record.mjs; every chip figure labelled WITNESS or BOUND; no raw hashes-per-second comparison without an approved equivalence.",
"priority": "P0",
"profile": "P04",
"cadence": "Once per programme round",
"method": "Automated + independent review",
"source": [
"R15"
],
"gate": "1.5x programme package closed",
"owner": "track B1 (the exact published MHPoW control)",
"owner_lane": "B1",
"lanes": [
"B1"
],
"cross_reference": [
{
"lane": "B1",
"batch": "track B1 (the exact published MHPoW control)"
}
],
"manual_page": null,
"run_status": "NOT RUN",
"plan_status": "NOT RUN"
},
{
"id": "R15-06",
"title": "R15-06: GPU + cryptography",
"owner_capability": "GPU + cryptography",
"required_artefact": "Theorem-preserving layout/parallelisation feasibility",
"accept": "GPU competitiveness and cheap-enough verification",
"setup": "Package R15-06 of the 1.5x Research Programme (docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json); the required artefact: Theorem-preserving layout/parallelisation feasibility",
"procedure": "The lane(s) B3 produce the required artefact; the package's gate is read against it by the independent review.",
"evidence": "The run record of the package's lane(s) as recorded through tools/ci/test-record.mjs; every chip figure labelled WITNESS or BOUND; no raw hashes-per-second comparison without an approved equivalence.",
"priority": "P0",
"profile": "P04",
"cadence": "Once per programme round",
"method": "Automated + independent review",
"source": [
"R15"
],
"gate": "1.5x programme package closed",
"owner": "track B3 (theorem-preserving GPU feasibility)",
"owner_lane": "B3",
"lanes": [
"B3"
],
"cross_reference": [
{
"lane": "B3",
"batch": "track B3 (theorem-preserving GPU feasibility)"
}
],
"manual_page": null,
"run_status": "NOT RUN",
"plan_status": "NOT RUN"
},
{
"id": "R15-07",
"title": "R15-07: Cryptography + hardware",
"owner_capability": "Cryptography + hardware",
"required_artefact": "Joint accepted-proof resource frontier with concrete constants",
"accept": "No invalid theorem composition",
"setup": "Package R15-07 of the 1.5x Research Programme (docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json); the required artefact: Joint accepted-proof resource frontier with concrete constants",
"procedure": "The lane(s) B2, B4 produce the required artefact; the package's gate is read against it by the independent review.",
"evidence": "The run record of the package's lane(s) as recorded through tools/ci/test-record.mjs; every chip figure labelled WITNESS or BOUND; no raw hashes-per-second comparison without an approved equivalence.",
"priority": "P0",
"profile": "P04",
"cadence": "Once per programme round",
"method": "Automated + independent review",
"source": [
"R15"
],
"gate": "1.5x programme package closed",
"owner": "track B2; track B4 (the accepted-proof resource frontier)",
"owner_lane": "B2, B4",
"lanes": [
"B2",
"B4"
],
"cross_reference": [
{
"lane": "B2",
"batch": "track B2"
},
{
"lane": "B4",
"batch": "track B4 (the accepted-proof resource frontier)"
}
],
"manual_page": null,
"run_status": "NOT RUN",
"plan_status": "NOT RUN"
},
{
"id": "R15-08",
"title": "R15-08: Independent ASIC team",
"owner_capability": "Independent ASIC team",
"required_artefact": "Re-optimised SRAM/DRAM/hybrid/recompute/PIM scenarios",
"accept": "Full-storage adversary not excluded by price",
"setup": "Package R15-08 of the 1.5x Research Programme (docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json); the required artefact: Re-optimised SRAM/DRAM/hybrid/recompute/PIM scenarios",
"procedure": "The lane(s) X5, B5 produce the required artefact; the package's gate is read against it by the independent review.",
"evidence": "The run record of the package's lane(s) as recorded through tools/ci/test-record.mjs; every chip figure labelled WITNESS or BOUND; no raw hashes-per-second comparison without an approved equivalence.",
"priority": "P0",
"profile": "P04",
"cadence": "Once per programme round",
"method": "Automated + independent review",
"source": [
"R15"
],
"gate": "1.5x programme package closed",
"owner": "the X5 lane (co-optimised opponents) batch; track B5 (re-optimised opponents on fresh state and PIM)",
"owner_lane": "X5, B5",
"lanes": [
"X5",
"B5"
],
"cross_reference": [
{
"lane": "X5",
"batch": "the X5 lane (co-optimised opponents) batch"
},
{
"lane": "B5",
"batch": "track B5 (re-optimised opponents on fresh state and PIM)"
}
],
"manual_page": null,
"run_status": "NOT RUN",
"plan_status": "NOT RUN"
},
{
"id": "R15-09",
"title": "R15-09: Measurement + economics",
"owner_capability": "Measurement + economics",
"required_artefact": "Blind cohort confirmation and separate P12 outcomes",
"accept": "Strongest credible ratio, not average",
"setup": "Package R15-09 of the 1.5x Research Programme (docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json); the required artefact: Blind cohort confirmation and separate P12 outcomes",
"procedure": "The lane(s) X6 produce the required artefact; the package's gate is read against it by the independent review.",
"evidence": "The run record of the package's lane(s) as recorded through tools/ci/test-record.mjs; every chip figure labelled WITNESS or BOUND; no raw hashes-per-second comparison without an approved equivalence.",
"priority": "P0",
"profile": "P04",
"cadence": "Once per programme round",
"method": "Automated + independent review",
"source": [
"R15"
],
"gate": "1.5x programme package closed",
"owner": "the X6 blind run (CI steward) batch",
"owner_lane": "X6",
"lanes": [
"X6"
],
"cross_reference": [
{
"lane": "X6",
"batch": "the X6 blind run (CI steward) batch"
}
],
"manual_page": null,
"run_status": "NOT RUN",
"plan_status": "NOT RUN"
},
{
"id": "R15-10",
"title": "R15-10: Protocol/security",
"owner_capability": "Protocol/security",
"required_artefact": "Network and pool integration, no-rescue exercise, public evidence",
"accept": "Correctness and safe operation remain intact",
"setup": "Package R15-10 of the 1.5x Research Programme (docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json); the required artefact: Network and pool integration, no-rescue exercise, public evidence",
"procedure": "The lane(s) B6 produce the required artefact; the package's gate is read against it by the independent review.",
"evidence": "The run record of the package's lane(s) as recorded through tools/ci/test-record.mjs; every chip figure labelled WITNESS or BOUND; no raw hashes-per-second comparison without an approved equivalence.",
"priority": "P0",
"profile": "P04",
"cadence": "Once per programme round",
"method": "Automated + independent review",
"source": [
"R15"
],
"gate": "1.5x programme package closed",
"owner": "track B6 (network, pool and verification budgets)",
"owner_lane": "B6",
"lanes": [
"B6"
],
"cross_reference": [
{
"lane": "B6",
"batch": "track B6 (network, pool and verification budgets)"
}
],
"manual_page": null,
"run_status": "NOT RUN",
"plan_status": "NOT RUN"
}
],
"notes": [
{
"at": "2026-10-09T09:07:24.204Z",
"text": "Two rules for every R15 row (main's order, 9 October 2026, by 12:30 UK): (1) every chip figure is labelled WITNESS (a measured or placed figure on a named device or model with its evidence path) or BOUND (a modelled limit with its assumptions named), never a bare number; (2) no work unit is compared by raw hashes per second without an approved equivalence (the accepted-work equivalence the independent review approves for the pair of objects compared). The ten packages cross-reference their X and B lanes; the lane's batch names the case when it lands; the plan claims no pass and every package reads NOT RUN until its gate is read against the required artefact."
},
{
"at": "2026-10-09T09:07:39.321Z",
"text": "Two rules for every R15 row (main's order, 9 October 2026, by 12:30 UK): (1) every chip figure is labelled WITNESS (a measured or placed figure on a named device or model with its evidence path) or BOUND (a modelled limit with its assumptions named), never a bare number; (2) no work unit is compared by raw hashes per second without an approved equivalence (the accepted-work equivalence the independent review approves for the pair of objects compared). The ten packages cross-reference their X and B lanes; the lane's batch names the case when it lands; the plan claims no pass and every package reads NOT RUN until its gate is read against the required artefact."
}
]
}
],
"profiles": {

View file

@ -177,6 +177,10 @@ merge_with_batches() { # <tip> <sha> <msg> [branch]: in a worktree at <tip> me
node tools/ci/token-value-suite.mjs --write >/dev/null || { echo "merge-to-master: the VR and TV suites do not regenerate on the merged tree" >&2; git merge --abort 2>/dev/null; return 1; }
echo "merge-to-master: regenerated the VR and TV suites on master's registry"
fi
if [ -f tools/ci/r15-suite.mjs ] && [ -f docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json ]; then
node tools/ci/r15-suite.mjs --write >/dev/null || { echo "merge-to-master: the R15 suite does not regenerate on the merged tree" >&2; git merge --abort 2>/dev/null; return 1; }
echo "merge-to-master: regenerated the R15 suite on master's registry"
fi
for f in $BATCHES; do
[ "$f" = . ] && continue
git checkout -q "$( [ "$mode" = branch ] && echo "$tip" || echo "$sha" )" -- "$f"
@ -381,7 +385,7 @@ bash tools/ci/rule24-crate-gate.sh "$BASE" "$SHA" || { echo "merge-to-master: RE
REGISTRY_PATH="${REGISTRY_PATH:-docs/plans/igneum-2.0-test-registry.json}"
BATCHES=$(git diff --name-only --diff-filter=AM "$BASE" "$SHA" -- tools/ci/batches/ | grep -E '\.json$' || true)
NOTES=$(git diff --name-only --diff-filter=AM "$BASE" "$SHA" -- tools/ci/notes/ | grep -E '\.json$' || true) # {suite, text}, replayed through test-record.mjs --note-file
REVGEN=0; git diff --quiet "$BASE" "$SHA" -- tools/ci/review-suite.mjs tools/ci/int-suite.mjs tools/ci/token-value-suite.mjs docs/analysis/review-2026-10-08-b/findings.json docs/analysis/review-2026-10-08-b/dispatch.md docs/plans/igneum-2.0-master/traceability.json docs/plans/igneum-2.0-master/token-value/rules-and-gates.json 2>/dev/null || REVGEN=1 # the REV and INT suites regenerate on the merged tree
REVGEN=0; git diff --quiet "$BASE" "$SHA" -- tools/ci/review-suite.mjs tools/ci/int-suite.mjs tools/ci/token-value-suite.mjs tools/ci/r15-suite.mjs docs/analysis/review-2026-10-08-b/findings.json docs/analysis/review-2026-10-08-b/dispatch.md docs/plans/igneum-2.0-master/traceability.json docs/plans/igneum-2.0-master/token-value/rules-and-gates.json docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json 2>/dev/null || REVGEN=1 # the REV and INT suites regenerate on the merged tree
[ -n "$NOTES" ] || [ "$REVGEN" = 1 ] && BATCHES="${BATCHES:-.}" # the registry is rebuilt from master's copy whenever any transform rides
RULE26_SKIP_PATHS=""; [ -n "$BATCHES" ] && RULE26_SKIP_PATHS="$REGISTRY_PATH"
# the harness map page is generated from tools/ci/test-map.json (test-map-doc.mjs); a branch that changed the map regenerated the

View file

@ -0,0 +1,4 @@
{
"suite": "R15",
"text": "Two rules for every R15 row (main's order, 9 October 2026, by 12:30 UK): (1) every chip figure is labelled WITNESS (a measured or placed figure on a named device or model with its evidence path) or BOUND (a modelled limit with its assumptions named), never a bare number; (2) no work unit is compared by raw hashes per second without an approved equivalence (the accepted-work equivalence the independent review approves for the pair of objects compared). The ten packages cross-reference their X and B lanes; the lane's batch names the case when it lands; the plan claims no pass and every package reads NOT RUN until its gate is read against the required artefact."
}

72
tools/ci/r15-suite.mjs Normal file
View file

@ -0,0 +1,72 @@
#!/usr/bin/env node
// The R15 suite of the acceptance registry (main's order through the coordinator, 9 October 2026, by 12:30 UK): the ten packages of
// "IGNEUM - The 1.5x Research Programme", generated from docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json, never by hand;
// --check refuses drift. Every row NOT RUN, method "Automated + independent review", the package's gate text verbatim as accept, its
// owner capability and required artefact carried, its X and B lanes as cross-references (the lane's batch names the case when it lands).
// Two rules ride the suite's note (tools/ci/notes): every chip figure is labelled WITNESS or BOUND, and no work unit is compared by raw
// hashes per second without an approved equivalence.
// node tools/ci/r15-suite.mjs --file <packages.json> [--write | --check] node tools/ci/r15-suite.mjs --self-test
import fs from 'node:fs'; import path from 'node:path';
const args = process.argv.slice(2); const arg = (n) => { const i = args.indexOf(n); return i >= 0 ? args[i + 1] : undefined; };
const ROOT = process.env.TEST_RECORD_ROOT || path.resolve(path.dirname(new URL(import.meta.url).pathname), '..', '..');
const REG = process.env.TEST_REGISTRY || path.join(ROOT, 'docs/plans/igneum-2.0-test-registry.json');
const MAP = process.env.TEST_MAP || path.join(ROOT, 'tools/ci/test-map.json');
const SRC = 'docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json';
export const LANE_BATCH_HINT = { X0: 'the X0 decider (hash lane) baseline batch', X1: 'the X1 lane (window-free control) batch', X2: 'the X2 lane (compaction) batch', X3: 'the X3 lane (Ember tuning) batch', X4: 'the X4 lane (reg64 alternatives) batch', X5: 'the X5 lane (co-optimised opponents) batch', X6: 'the X6 blind run (CI steward) batch', B1: 'track B1 (the exact published MHPoW control)', B2: 'track B2', B3: 'track B3 (theorem-preserving GPU feasibility)', B4: 'track B4 (the accepted-proof resource frontier)', B5: 'track B5 (re-optimised opponents on fresh state and PIM)', B6: 'track B6 (network, pool and verification budgets)' };
export function suite(d) {
const tests = (d.packages || []).map((p) => ({ id: p.id, title: `${p.id}: ${p.owner_capability || ''}`.trim(), owner_capability: p.owner_capability || '', required_artefact: p.required_artefact || '',
accept: p.gate || '', setup: `Package ${p.id} of the 1.5x Research Programme (${SRC}); the required artefact: ${p.required_artefact || ''}`, procedure: `The lane(s) ${(p.lanes || []).join(', ')} produce the required artefact; the package's gate is read against it by the independent review.`,
evidence: 'The run record of the package\'s lane(s) as recorded through tools/ci/test-record.mjs; every chip figure labelled WITNESS or BOUND; no raw hashes-per-second comparison without an approved equivalence.',
priority: 'P0', profile: 'P04', cadence: 'Once per programme round', method: 'Automated + independent review', source: ['R15'], gate: '1.5x programme package closed',
owner: (p.lanes || []).map((l) => LANE_BATCH_HINT[l] || l).join('; ') || 'unassigned', owner_lane: (p.lanes || []).join(', ') || 'unassigned', lanes: (p.lanes || []).slice(), cross_reference: (p.lanes || []).map((l) => ({ lane: l, batch: LANE_BATCH_HINT[l] || l })),
manual_page: null, run_status: 'NOT RUN', plan_status: p.status || 'NOT RUN' }));
return { code: 'R15', title: 'R15: the 1.5x Research Programme packages (proposed; every package NOT RUN; the plan claims no pass)', source: `${SRC} (${d.source || ''})`, gate: '1.5x programme packages closed', owner: 'the X and B lanes per package; the coordinator confirms the cross-references', fixtures: ['F0'],
summary: `${tests.length} packages from ${d.document || 'the plan'}; ${d.status || ''}; ${d.lane_map_note || ''}`, tests };
}
const LIVE = ['run_status', 'run_id', 'evidence_path', 'updated', 'evidence_record', 'evidence_records', 'blocked_on', 'method_recorded', 'in_progress_since', 'deferral_note', 'approvals'];
export function merge(reg, s) {
const old = (reg.suites || []).find((x) => x.code === s.code); const live = new Map((old?.tests || []).map((t) => [t.id, t]));
for (const t of s.tests) { const o = live.get(t.id); if (o) for (const k of LIVE) if (k in o) t[k] = o[k]; }
if (old?.notes) s.notes = old.notes;
reg.suites = [...(reg.suites || []).filter((x) => x.code !== s.code), s]; return reg;
}
const canon = (o) => JSON.stringify(o, (k, v) => (v && typeof v === 'object' && !Array.isArray(v)) ? Object.fromEntries(Object.keys(v).sort().map((x) => [x, v[x]])) : v);
export function mapReasons(map, s) {
const mapped = new Set(Object.values(map.cells || {}).flatMap((c) => c.cases || [])); map.not_run = map.not_run || {}; let n = 0;
for (const t of s.tests) { if (mapped.has(t.id)) { delete map.not_run[t.id]; continue; } map.not_run[t.id] = `${t.id} (1.5x programme package): no package executed; the harness is the lane's (${t.owner_lane}); its batch names the case when it lands; not yet named in the map`; n++; }
return n;
}
function stripLive(s) { return { ...s, notes: undefined, tests: s.tests.map((t) => { const c = { ...t }; for (const k of LIVE) delete c[k]; return c; }) }; }
if (args.includes('--self-test')) {
let fails = 0;
const d = { document: 'doc', source: 'sec 10', status: 'PROPOSED', lane_map_note: 'n', packages: [
{ id: 'R15-01', owner_capability: 'Baseline freeze', required_artefact: 'pins', gate: 'No cross-version mixed baseline', lanes: ['X0'], status: 'NOT RUN' },
{ id: 'R15-04', owner_capability: 'Compaction', required_artefact: 'rows', gate: 'Byte agreement, real accepted-work savings', lanes: ['X2', 'X3', 'X4'], status: 'NOT RUN' } ] };
const s = suite(d);
if (!(s.code === 'R15' && s.tests.length === 2 && s.tests[0].accept === 'No cross-version mixed baseline' && s.tests[0].run_status === 'NOT RUN' && s.tests[0].owner_lane === 'X0' && s.tests[1].lanes.join() === 'X2,X3,X4' && s.tests[1].cross_reference.length === 3 && /X3 lane/.test(s.tests[1].owner))) { console.log('self-test failed: the R15 rows do not carry the gate verbatim, NOT RUN, the lanes and their cross-references'); fails = 1; }
const reg = { suites: [{ code: 'R15', notes: [{ text: 'n' }], tests: [{ id: 'R15-01', run_status: 'NOT RUN', in_progress_since: 't', evidence_records: { 'c:x': { decision: 'PASS' } }, run_id: 'r' }] }] };
merge(reg, s); const t = reg.suites[0];
if (!(t.tests[0].in_progress_since === 't' && t.tests[0].evidence_records?.['c:x']?.decision === 'PASS' && t.tests[1].run_status === 'NOT RUN' && t.notes?.length === 1)) { console.log('self-test failed: regenerating lost live fields or notes'); fails = 1; }
const map = { cells: { c: { cases: ['R15-01'] } }, not_run: {} }; if (!(mapReasons(map, s) === 1 && !map.not_run['R15-01'] && /X2, X3, X4/.test(map.not_run['R15-04']))) { console.log('self-test failed: the map reasons for unmapped packages'); fails = 1; }
if (canon(stripLive(suite(d))) !== canon(stripLive(s))) { console.log('self-test failed: the generator is not deterministic'); fails = 1; }
if (!fails) console.log('self-test passed: one R15 row per package (the gate verbatim as accept, NOT RUN, the owner capability and artefact, the lanes as cross-references); regenerating keeps live fields and notes; unmapped packages get their map reasons; the output is deterministic');
process.exit(fails);
}
const file = arg('--file') ? path.resolve(arg('--file')) : path.join(ROOT, SRC);
if (!fs.existsSync(file)) { console.error(`r15-suite: no ${file}`); process.exit(2); }
const d = JSON.parse(fs.readFileSync(file, 'utf8')); const s = suite(d);
const reg = JSON.parse(fs.readFileSync(REG, 'utf8')); const map = fs.existsSync(MAP) ? JSON.parse(fs.readFileSync(MAP, 'utf8')) : { cells: {}, not_run: {} };
if (args.includes('--check')) {
const cur = (reg.suites || []).find((x) => x.code === 'R15');
if (!cur) { console.error('r15-suite: the registry has no R15 suite; run --write'); process.exit(1); }
if (canon(stripLive(cur)) !== canon(stripLive(s))) { console.error('r15-suite: the registry\'s R15 suite differs from the generator\'s output; run --write and commit'); process.exit(1); }
console.log(`r15-suite: the R15 suite (${s.tests.length} packages) matches ${SRC}`); process.exit(0);
}
if (args.includes('--write')) {
merge(reg, s); const n = mapReasons(map, s);
fs.writeFileSync(REG, JSON.stringify(reg, null, 2) + '\n'); fs.writeFileSync(MAP, JSON.stringify(map, null, 2) + '\n');
console.log(`r15-suite: R15 written (${s.tests.length} packages, every one NOT RUN); ${n} NOT RUN reasons in the map`); process.exit(0);
}
console.error('usage: r15-suite.mjs --file <packages.json> [--write | --check] | --self-test'); process.exit(2);

View file

@ -5,3 +5,4 @@ node tools/ci/review-suite.mjs --self-test | grep -v '^self-test passed' || true
node tools/ci/review-suite.mjs --findings docs/analysis/review-2026-10-08-b/findings.json --dispatch docs/analysis/review-2026-10-08-b/dispatch.md --prefix REV --check
if [ -f docs/plans/igneum-2.0-master/traceability.json ]; then node tools/ci/int-suite.mjs --self-test | grep -v '^self-test passed' || true; node tools/ci/int-suite.mjs --traceability docs/plans/igneum-2.0-master/traceability.json --check; fi
if [ -f docs/plans/igneum-2.0-master/token-value/rules-and-gates.json ]; then node tools/ci/token-value-suite.mjs --self-test | grep -v '^self-test passed' || true; node tools/ci/token-value-suite.mjs --check; fi
if [ -f docs/plans/igneum-2.0-master/1p5x/research-plan/packages.json ]; then node tools/ci/r15-suite.mjs --self-test | grep -v '^self-test passed' || true; node tools/ci/r15-suite.mjs --check; fi

View file

@ -941,6 +941,16 @@
"TV-29": "TV-29 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + operations); a supplemental layer, never counted as independent evidence; not yet named in the map",
"TV-30": "TV-30 (token value gate, scope CORE): no gate executed; the harness is the owner role's (GPU + measurement); a supplemental layer, never counted as independent evidence; not yet named in the map",
"TV-31": "TV-31 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Qualified counsel); a supplemental layer, never counted as independent evidence; not yet named in the map",
"TV-32": "TV-32 (token value gate, scope LEADERSHIP CLAIM): no gate executed; the harness is the owner role's (Independent acceptance panel); a supplemental layer, never counted as independent evidence; not yet named in the map"
"TV-32": "TV-32 (token value gate, scope LEADERSHIP CLAIM): no gate executed; the harness is the owner role's (Independent acceptance panel); a supplemental layer, never counted as independent evidence; not yet named in the map",
"R15-01": "R15-01 (1.5x programme package): no package executed; the harness is the lane's (X0); its batch names the case when it lands; not yet named in the map",
"R15-02": "R15-02 (1.5x programme package): no package executed; the harness is the lane's (X0, X5); its batch names the case when it lands; not yet named in the map",
"R15-03": "R15-03 (1.5x programme package): no package executed; the harness is the lane's (X1); its batch names the case when it lands; not yet named in the map",
"R15-04": "R15-04 (1.5x programme package): no package executed; the harness is the lane's (X2, X3, X4); its batch names the case when it lands; not yet named in the map",
"R15-05": "R15-05 (1.5x programme package): no package executed; the harness is the lane's (B1); its batch names the case when it lands; not yet named in the map",
"R15-06": "R15-06 (1.5x programme package): no package executed; the harness is the lane's (B3); its batch names the case when it lands; not yet named in the map",
"R15-07": "R15-07 (1.5x programme package): no package executed; the harness is the lane's (B2, B4); its batch names the case when it lands; not yet named in the map",
"R15-08": "R15-08 (1.5x programme package): no package executed; the harness is the lane's (X5, B5); its batch names the case when it lands; not yet named in the map",
"R15-09": "R15-09 (1.5x programme package): no package executed; the harness is the lane's (X6); its batch names the case when it lands; not yet named in the map",
"R15-10": "R15-10 (1.5x programme package): no package executed; the harness is the lane's (B6); its batch names the case when it lands; not yet named in the map"
}
}