igneum/tools/finality-attacks/native
igneum-labs 4e1eae54e1 The 2.0.3 reruns of rows 1b and 1c on the fixed node (finality-2.0.3-kind-and-conflict c8d22a85, 9 October 2026, 01:27 to 01:45 UK): the lock kind reads recovery on every node, two valid certificates at one index pause finality with reason conflict and no new lock above it; rows, files and the registry batch
Three runs on real nodes (igneumd a37f4b63 built from c8d22a85's code, build-5 and build-6, lease pool, pid watchers, zero restarts): 1b with e at 0.20 (A recovered at index 10 at 55.46 percent; that certificate reads lockKind recovery on A's, B's and C's nodes; 0 conflicts, 0 disagreement, all three at 24), 1b with e at 0.30 (the same at index 11, all three at 27), 1c (A and B recovered at index 11, two recovery certificates; after the heal both holders read "conflict: two valid certificates at index 11", finalityActive false, no lock installed above it; C followed A's chain, B's never reached it). Finding 1 and finding 2 of the native runs closed on the node. Batch fin-203-20261009T0127Z recorded (FIN-02, FIN-07 PASS on node:finality-realnode, manifest c8d22a85). Harness: v4.mjs records finalityActive per node; run-row.sh takes PAIR.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 00:47:43 +00:00
..
override-60x-88-keys.json The native finality runs of 9 October 2026 (plan sections 1 to 4 and 6): rule v4 on real nodes of the 2.0.2 line e189afb4 with the 60x file's windows, rows in sim/results_v2.md and the registry batch 2026-10-08 22:45:19 +00:00
README.md The native finality runs of 9 October 2026, section 6 (F01, the two-node cache-history case): PASS on real nodes at 00:41 UK on the cache-history-node pair c591e63b + harness-unsafe, the six runs recorded with their setup faults 2026-10-08 23:57:05 +00:00
run-row.sh The 2.0.3 reruns of rows 1b and 1c on the fixed node (finality-2.0.3-kind-and-conflict c8d22a85, 9 October 2026, 01:27 to 01:45 UK): the lock kind reads recovery on every node, two valid certificates at one index pause finality with reason conflict and no new lock above it; rows, files and the registry batch 2026-10-09 00:47:43 +00:00
run-s6.sh The native finality runs of 9 October 2026 (plan sections 1 to 4 and 6): rule v4 on real nodes of the 2.0.2 line e189afb4 with the 60x file's windows, rows in sim/results_v2.md and the registry batch 2026-10-08 22:45:19 +00:00
watch-row.sh The native finality runs of 9 October 2026 (plan sections 1 to 4 and 6): rule v4 on real nodes of the 2.0.2 line e189afb4 with the 60x file's windows, rows in sim/results_v2.md and the registry batch 2026-10-08 22:45:19 +00:00
watch-s6.sh The native finality runs of 9 October 2026 (plan sections 1 to 4 and 6): rule v4 on real nodes of the 2.0.2 line e189afb4 with the 60x file's windows, rows in sim/results_v2.md and the registry batch 2026-10-08 22:45:19 +00:00

The native finality runs of 9 October 2026: box scripts

The runs of docs/plans/finality-native-runs-2026-10-09.md sections 1 to 4 and 6 on real nodes (rows in sim/results_v2.md, "The native finality runs of 9 October 2026"; result files in sim/finality-attacks-results/native-2026-10-09/). On a box (/srv/builds/_scratch/fin-runs/): the node pair under pair-fin-<sha>/ (built by tools/build-remote.sh from the lane's fork worktree; the gate artefact is never a fleet binary and this directory is never a fleet host), tools/finality-attacks/ and infra/fast-time/override-60x.json copied from the worktree (the 88-key form a 2.0.2 node accepts: the class v6 keys stripped, override-60x-88-keys.json here), prove-bin/ for section 6.

  • run-row.sh <name> <base port> <suffix> <RECOVERY 1|0> <rows...>: pid file first, then v4.mjs under lease pool 8 --class measure; the result markdown, JSON and node logs copied to results/<name>*.
  • watch-row.sh <the same>: the watcher; restarts a run that ends without its done marker (at most 3, each recorded in results/<name>.restarts); its own pid in pids/<name>.watch.pid. Stop a run by kill $(cat pids/<name>.watch.pid), then the lease's command pid from lease status; never by a name.
  • run-s6.sh / watch-s6.sh: section 6, the enforced lane's infra/fast-time/proving-cache-history.mjs on the cache-history-node pair with IGNEUM_PROOF_VERIFIER=<igneum-prove-host> exported (without it the honest nodes start with the verifier Off and nothing is verified or paid: the lane's first run, kept as s6-cache-history-run1-verifier-off).

Field names in the landed result JSONs: every vote-key hash is under keyHash (carried[].key of the cache-history harness's output is renamed on landing; eKey, leaver, stripped of v4.mjs's first runs are equivocatorHash, leaverHash, strippedHash), so the tree's secrets check (a 64-hex value beside "key") reads them as the public identifiers they are.