igneum/tools
igneum-josh b8b40a5a92 Proving: pinned guest programs, the verifier on SP1's light verifier
On 5 October 2026 the Mac's host (shard program id 0x0559759b...) rejected every
proof from PC 2's host (0x05db1aca...). Both were built from the same guest
sources: host/build.rs compiled the guests on each machine and the ELF depends
on where it is built (cargo's -C metadata for a path crate includes the checkout
path; a worktree on the same Mac gave a third id, 0x0dfade07...). The node's
verifier also spent 114 s to 138 s per proof in the prover client and both key
setups before a 0.1 s to 0.4 s verify.

- elf/: both guest ELFs, their verifying keys and manifest.json (sha256, ids);
  host/src/pinned.rs embeds and checks them at every start; the prove modes
  refuse when SP1's setup does not derive the manifest's id
- --mode verify: LightProver with the pinned key, no prover client, no key
  setup; prints the proof's own program id next to ours ("IS NOT OURS")
- --mode id; igneum-prove-pin and pin-guests.sh to re-pin; build.rs builds a
  guest only under IGNEUM_BUILD_GUESTS=1
- tools/ci/pinned-guests-check.sh: elf/ must match its manifest, no script
  builds a guest outside pin-guests.sh; make-package.sh and build-dmg.sh print
  the pinned ids
- unit tests on the pinned set; bench-log entry with the three ids, the cause
  and the timing: 127.0 s wall per verify before, 1.8 s to 2.4 s after
- rollout order in proving/README.md: every prover and verifier moves together

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 13:54:31 +01:00
..
ci Proving: pinned guest programs, the verifier on SP1's light verifier 2026-10-05 13:54:31 +01:00
dev-fee Dev fee: the test-network measurement in the bench log; run.mjs waits for the nodes and edits the override as text 2026-10-05 00:15:27 +01:00
evm-smoke Execution layer devnet v3: implementation notes, bench entry, viem smoke test 2026-10-03 22:05:33 +00:00
exec-attacks exec-attacks: execution-layer attack suite (tools + bench log) 2026-10-03 22:57:19 +00:00
finality-attacks Merge branch 'redteam' into fud-consensus 2026-10-05 02:34:21 +01:00
harness Harness s8 steady state and the bench-log paragraph: RSS per 1,000 blocks before and after the M30 fix 2026-10-05 02:49:46 +01:00
lock lock: build slots open to new builds come from ~/.config/igneum/build-slots (1 to 3) 2026-10-05 09:19:52 +01:00
observer READMEs: the console's Machines card as it is now (stale, stopped, OTA state, vendors), the parser tests, autosync's restart key and check mode, the observer's dependence on the app's node for proving 2026-10-04 22:14:45 +01:00
prove-fixtures tools/prove-fixtures: ignore node_modules 2026-10-04 11:10:32 +01:00
proving-v0 Packaging for proving v0: the Mac DMG carries igneum-prove-host and igneum-prove-export, the Windows payload carries the Linux host and exporter under wsl2/bin with the WSL2 scripts and the fixtures; the prover probes the shipped WSL2 binaries first and runs helpers by absolute path; push-inputs takes IGNEUM_NODE_SRC; the test script's --network-only mode 2026-10-04 15:36:59 +01:00
reliability Reliability measured: miner guards and the app watchdog on private test networks; M26, M27, X21 fixed in the ledger 2026-10-04 23:22:16 +01:00
repo Rotation phase 2: packagers read the intake key and the downloads token from files (IGNEUM_INTAKE_KEY_FILE, IGNEUM_DL_TOKEN_FILE, .next by default), no key literal in the tree, app header line with fingerprints, ship-app --dl-both, logs --rotation, tools/repo/fresh-repo.sh with the dry run, docs/plans/rotation-phase-2.md 2026-10-05 07:43:44 +00:00
ui-mock Miner app UI: log drawer rebuilt (open state, scroll to newest, time jump, last error and swap, search, copy, drag height, virtualised), every screen on one scale, canvas and polling idle when hidden 2026-10-04 20:51:22 +01:00
upstream Provenance: credit every borrowed component, upstream merge procedure, prover customer brief 2026-10-03 20:02:16 +00:00
build-job.mjs Igneum Miner 0.3.7: the Windows runtime DLLs come from the toolchain that linked the exes, and a gate refuses a payload whose exe imports a symbol the shipped DLL lacks 2026-10-05 10:46:49 +01:00
console.mjs Console: a machine whose app logged a clean quit or an update, with no status line after it, shows 'stopped (quit|update) N ago' instead of 'silent' (parseAppTail moved to relay/lib/parse.mjs, test) 2026-10-04 21:04:18 +01:00
jobs.mjs publish-jobs: wake the apps after a verified deploy; jobs.mjs status shows the woken latency; 0.3.6 plan 2026-10-05 09:22:02 +01:00
logs.mjs Rotation phase 2: packagers read the intake key and the downloads token from files (IGNEUM_INTAKE_KEY_FILE, IGNEUM_DL_TOKEN_FILE, .next by default), no key literal in the tree, app header line with fingerprints, ship-app --dl-both, logs --rotation, tools/repo/fresh-repo.sh with the dry run, docs/plans/rotation-phase-2.md 2026-10-05 07:43:44 +00:00
relay.mjs Merge origin/build-job into release-0.3.5 2026-10-04 22:32:48 +01:00
ship-app.mjs Rotation phase 2: packagers read the intake key and the downloads token from files (IGNEUM_INTAKE_KEY_FILE, IGNEUM_DL_TOKEN_FILE, .next by default), no key literal in the tree, app header line with fingerprints, ship-app --dl-both, logs --rotation, tools/repo/fresh-repo.sh with the dry run, docs/plans/rotation-phase-2.md 2026-10-05 07:43:44 +00:00
tuning.mjs Fleet learning for the kernel race: the TUNING record, the aggregator, the manifest's tuning object, the PC 1 race job 2026-10-04 20:08:45 +01:00