diff --git a/docs/plans/igneum-2.0-test-registry.json b/docs/plans/igneum-2.0-test-registry.json index 126fd59fd..4573cf5a1 100644 --- a/docs/plans/igneum-2.0-test-registry.json +++ b/docs/plans/igneum-2.0-test-registry.json @@ -7526,7 +7526,7 @@ "run_status": "PASS", "evidence_path": "sim/finality-attacks-results/native-2026-10-09/s1b2.md", "run_id": "fin-recovery-note-20261009-01", - "updated": "2026-10-09T00:13:52.356Z", + "updated": "2026-10-09T00:22:15.430Z", "evidence_record": { "requirement_id": "FIN-02", "decision": "PASS", @@ -7547,7 +7547,8 @@ }, "claim_impact": "FIN-02 and FIN-08 keep their decisions; the recovery certificate's kind on non-forming nodes and the conflicting-certificate report are 2.0.3 items (known-failed tests ride it)", "reviewer": "", - "at": "2026-10-09T00:13:52.356Z" + "at": "2026-10-09T00:22:15.430Z", + "note": "Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note. | Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note. (Replayed once the recorder stores notes, 01:1x UK.)" }, "approvals": { "scope_approved": null, @@ -7576,7 +7577,8 @@ }, "claim_impact": "FIN-02 and FIN-08 keep their decisions; the recovery certificate's kind on non-forming nodes and the conflicting-certificate report are 2.0.3 items (known-failed tests ride it)", "reviewer": "", - "at": "2026-10-09T00:13:52.356Z" + "at": "2026-10-09T00:22:15.430Z", + "note": "Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note. | Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note. (Replayed once the recorder stores notes, 01:1x UK.)" } } }, @@ -8045,7 +8047,7 @@ "run_status": "NOT RUN", "evidence_path": "sim/results_v2.md", "run_id": "fin-recovery-note-20261009-01", - "updated": "2026-10-09T00:13:52.356Z", + "updated": "2026-10-09T00:22:15.430Z", "evidence_record": { "requirement_id": "FIN-08", "decision": "NOT RUN", @@ -8066,7 +8068,8 @@ }, "claim_impact": "FIN-02 and FIN-08 keep their decisions; the recovery certificate's kind on non-forming nodes and the conflicting-certificate report are 2.0.3 items (known-failed tests ride it)", "reviewer": "", - "at": "2026-10-09T00:13:52.356Z" + "at": "2026-10-09T00:22:15.430Z", + "note": "Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note. | Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note. (Replayed once the recorder stores notes, 01:1x UK.)" }, "in_progress_since": "2026-10-08T19:43:19.697Z", "approvals": { @@ -8096,7 +8099,8 @@ }, "claim_impact": "FIN-02 and FIN-08 keep their decisions; the recovery certificate's kind on non-forming nodes and the conflicting-certificate report are 2.0.3 items (known-failed tests ride it)", "reviewer": "", - "at": "2026-10-09T00:13:52.356Z" + "at": "2026-10-09T00:22:15.430Z", + "note": "Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note. | Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note. (Replayed once the recorder stores notes, 01:1x UK.)" } } } @@ -8109,6 +8113,10 @@ { "at": "2026-10-08T20:10:24.812Z", "text": "REC-01 (the master edition's one unresolved interpretation, finality pause-only healing: R1's I03 stale predicate against R2's F04 backfill caveat): closure evidence as the finality and node lanes recorded it on 8 October 2026: rule v4 at release-2.0.0-node 12424341's line, mode recovery by the founder's 19:57 ruling (the lock labelled recovery, never final), both real-node lines PASS tonight by the 6.7 pause criterion, FIN-02 PASS at 0218d6bf1 on the simulator half; status RUNNING until the beyond-window healing case with and without historical data is run natively (the node lane's case tomorrow)." + }, + { + "at": "2026-10-09T00:22:15.485Z", + "text": "FIN-02 and FIN-08: Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note." } ] }, @@ -14905,6 +14913,12 @@ "claim_authorised": null } } + ], + "notes": [ + { + "at": "2026-10-09T00:22:15.538Z", + "text": "F04 closure rows (R2-F04-R01 to R04): Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note." + } ] }, { diff --git a/tools/ci/batches/fin-recovery-note-20261009-01.json b/tools/ci/batches/fin-recovery-note-20261009-01.json index 52fbf2a4f..a6be15784 100644 --- a/tools/ci/batches/fin-recovery-note-20261009-01.json +++ b/tools/ci/batches/fin-recovery-note-20261009-01.json @@ -5,7 +5,7 @@ "evidence_dir": "docs/analysis (the finality runs lane's rows 4566eb1e4)", "boxes": [], "claim_impact": "FIN-02 and FIN-08 keep their decisions; the recovery certificate's kind on non-forming nodes and the conflicting-certificate report are 2.0.3 items (known-failed tests ride it)", - "note": "Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note.", + "note": "Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note. (Replayed once the recorder stores notes, 01:1x UK.)", "cells": [ { "cell": "node:finality-realnode", diff --git a/tools/ci/notes/fin-recovery-fin-20261009.json b/tools/ci/notes/fin-recovery-fin-20261009.json new file mode 100644 index 000000000..8f1515bc6 --- /dev/null +++ b/tools/ci/notes/fin-recovery-fin-20261009.json @@ -0,0 +1,4 @@ +{ + "suite": "FIN", + "text": "FIN-02 and FIN-08: Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note." +} diff --git a/tools/ci/notes/fin-recovery-rev-20261009.json b/tools/ci/notes/fin-recovery-rev-20261009.json new file mode 100644 index 000000000..1743cd33c --- /dev/null +++ b/tools/ci/notes/fin-recovery-rev-20261009.json @@ -0,0 +1,4 @@ +{ + "suite": "REV", + "text": "F04 closure rows (R2-F04-R01 to R04): Dated note, 9 October 2026 01:0x UK (the coordinator, from the finality runs lane's native rows 4566eb1e4): a received recovery certificate reads lockKind \"final\" on every node but the forming one (recovery_lock is stamped only in evaluate), and a node holding two certificates at one index reports \"active\" and keeps locking; both ride 2.0.3 with known-failed tests (the node lane's 06:00 line). Recovery kind correct on the forming node only until 2.0.3; conflicting-certificate reporting open. No decision changed by this note." +} diff --git a/tools/ci/test-record.mjs b/tools/ci/test-record.mjs index 62d922f26..17996f796 100644 --- a/tools/ci/test-record.mjs +++ b/tools/ci/test-record.mjs @@ -122,6 +122,7 @@ function record(reg, map, batch) { c.evidence_record = { requirement_id: id, decision: status, method, cell: cell.cell, manifest_sha: batch.manifest_sha, run_id: batch.run_id, evidence: cell.evidence || batch.evidence_dir, in_progress: inProgress, coverage: (m.coverage || {})[id] || m.coverage || {}, release_identity: { commit: ri.commit || batch.manifest_sha || '', lockfile: ri.lockfile || '', binary: ri.binary || '', network_object: ri.network_object || '', activation: ri.activation || '', profile_hashes: ri.profile_hashes || '' }, claim_impact: cell.claim_impact || batch.claim_impact || '', reviewer: cell.reviewer || batch.reviewer || '', at: now, + ...(cell.note || batch.note ? { note: [cell.note, batch.note].filter(Boolean).join(' | ') } : {}), // the cell's note and the batch's note are the record's note (9 October 2026, 01:1x UK: every note written tonight had lived in the batch file alone) ...(missing.length ? { blocked_on: missing, reason: `INT-17: missing ${missing.join(', ')}; never PASS without them` } : {}) }; if (cell.network_label) c.evidence_record.network_label = cell.network_label; if (!c.evidence_record.network_label && (status === 'PASS' || status === 'FAIL') && method !== 'static' && ISLAND_RE.test(JSON.stringify([c.evidence_record.release_identity?.network_object, c.evidence_record.evidence, c.evidence_record.note]))) c.evidence_record.network_label = ISLAND_LABEL; @@ -156,7 +157,8 @@ if (args.includes('--self-test')) { if (!(rv.bad === 1 && /vocabulary/.test(rv.lines[0]))) { console.log(`self-test failed: a RUNNING row passed --check: ${rv.lines}`); fails = 1; } const map2 = { cells: { pow: { ...map.cells.pow, cases: ['C1', 'C9'] } }, not_run: {} }; r = check(reg, map2); if (!(r.bad >= 2 && r.lines.some((l) => l.includes('unknown case C9')) && r.lines.some((l) => l.includes('C2') && l.includes('no harness')))) { console.log(`self-test failed: an unknown id or an unmapped Automated case was not refused: ${r.lines.join('; ')}`); fails = 1; } - const before = acceptSnapshot(reg); const touched = record(reg, map, { run_id: 'r1', manifest_sha: 'abc', evidence_dir: '/e', method: 'native', cells: [{ cell: 'pow', status: 'PASS', evidence: '/e/pow.log' }] }); + const before = acceptSnapshot(reg); const touched = record(reg, map, { run_id: 'r1', manifest_sha: 'abc', evidence_dir: '/e', method: 'native', note: 'the batch note', cells: [{ cell: 'pow', status: 'PASS', evidence: '/e/pow.log', note: 'the cell note' }] }); + if (reg.cases[0].evidence_record.note !== 'the cell note | the batch note') { console.log(`self-test failed: the cell and batch notes did not land in the record: ${reg.cases[0].evidence_record.note}`); fails = 1; } if (!(reg.cases[0].evidence_record.method === 'native' && reg.cases[0].evidence_record.decision === 'PASS' && reg.cases[0].evidence_record.requirement_id === 'C1' && reg.cases[0].evidence_record.reviewer === '' && reg.cases[0].approvals.claim_authorised === null)) { console.log(`self-test failed: the p.139 record fields or the four approvals (never inferred) are wrong: ${JSON.stringify(reg.cases[0].evidence_record)} ${JSON.stringify(reg.cases[0].approvals)}`); fails = 1; } record(reg, map, { run_id: 'r1r', manifest_sha: 'abc', method: 'native', cells: [{ cell: 'pow', status: 'RUNNING', evidence: '/e/pow.log' }] }); if (!(reg.cases[0].run_status === 'NOT RUN' && reg.cases[0].in_progress_since)) { console.log('self-test failed: RUNNING did not become NOT RUN with in_progress_since'); fails = 1; }