Commit graph

592 commits

Author SHA1 Message Date
igneum-labs
eba136073d prover: a stale igneum-prove-export is named when the node's export carries the account dump and the exporter never reads it
PC 1 on 0.3.14 (6 October 2026, 18:16Z, block 140,662): "segment 140661: port state root 0xe45c... differs from the
node's 0xddd7...". The export was [140661, 140662] with the dump; the 0.3.14 exporter seeds from segment 140,661 and
never replays it, so the only exporter that replays 140,661 (from the restart state, hence the mismatch) is the one
from before 0.3.14: the installed binary was not replaced, the same class as the stale verifier host. The prover's
failure line now names the stale exporter by path when the export carries preState and the output has no "account
dump" line (exporter_failure, unit-tested with the PC 1 text); the real line stays when the exporter did read the dump.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:25:02 +00:00
igneum-labs
320129933c exec-sync harness case 7: the PC shape (tip-0 pair, peer flag) recovers over p2p; bench-log line
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:13:44 +00:00
igneum-labs
d4f2a80c8c bench log: the first segment above the restart cut from a snapshot-restored node on the new export (8 blocks, roots equal node 1)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:57:54 +00:00
igneum-labs
2e307c96c8 infra/fast-time/override-60x.json: the four exec restart fields at their never values (the devnet-profile test wants every override field present; the 0.3.14 node added them)
Measured: IGNEUM_FAST_TIME_FILE=<this file> cargo test -p kaspa-consensus-core --lib fast_time_60x: 1 passed (fork 1f59c5d0, 6 October 2026 17:54Z).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:54:52 +00:00
igneum-labs
d0366fd815 exec-sync plan and bench log: the 15:43Z reorg incident, the 0.3.13.1/0.3.14 rules, the harness numbers
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:51:39 +00:00
igneum-labs
7101273dcb exec 0.3.14 app side: the prover exports from one block below and seeds from the account dump; the reorg harness; the 4060 rows
- app/igneum-app/src/prover.rs: igneum_exportSegments [n-1, n] for a shard and [first-1, last] for a segment (never
  from 0: on a restarted node the records below the restart carry zero roots and the exporter refused every cut,
  the fleet 16:02Z); exec_boundary() reads igneum_getExecStatus.restartNumber (or the startedFrom text on a
  0.3.13 node) and the prover never claims a shard or a segment below it
- proving/igneum-prove/export: seeds the port from the export's preState, checks its root against the node's at the
  dump's block and replays from the next segment; the restart-replay path stays for exports without a dump
- tools/exec-sync/reorg.mjs: a 300-chain-block reorg on a private fast-time simnet, two cases (the ring, the
  persisted-generation fallback after a restart), 18 checks; A's lone miner casts no finality vote because one key
  at 83% of the window certified its own branch in the first run and the finality rule refused B's chain, by design
- tools/exec-sync/net.mjs: case 5 (an unreadable flag file blocks loudly, never genesis) and case 6 (the export from
  one block below carries the dump; the exporter cuts from it), 15 checks
- bench/proof-systems: the rented RTX 4060 8 GB rows (46) and the table

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:50:25 +00:00
igneum-labs
dfadd7e97b proving v2 plan: the CUDA rows (4090, 3060, 4060, PC 2) and the per-tier table; the verdict: SP1 patched 4 to 6x faster on every card, RISC Zero's edge the 5.7x smaller proof
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:11:45 +00:00
igneum-labs
cb89e10c13 bench-log: the exec-sync harness (12 checks) and the fresh node's run on the rented 4090
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:08:24 +00:00
igneum-labs
ceb4341f34 exec-sync plan: what the first 45,537 DAA lost (about 124,600 IGN of producer rewards and 31,100 IGN of escrow from the schedule, approximate; the per-address split unrecoverable) and the before column
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 14:57:14 +00:00
igneum-labs
9bcafc2158 bench/proof-systems: the rented RTX 3060 12 GB and RTX 4090 24 GB rows (SP1 stock, SP1 patched at four thresholds, RISC Zero at po2 20 and 19; the v1 shard, the empty shard, the 23.6 M-cycle shard, the prototype shard; every proof verified) and the table
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 14:53:37 +00:00
igneum-labs
2332ff326f exec-sync plan: the fresh node's IBD finding (10 retries over 40 min from the finality route's capacity; the igneum-pow feature needed to join)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 14:49:10 +00:00
igneum-labs
0b75539b1c exec sync: the plan (what happened, the fork commits, the copy measurements, the per-tier consequence) and the bench-log entry; the exec-sync harness
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 13:46:31 +00:00
igneum-labs
1ab198cd61 bench/proof-systems: block-72854-empty-block-first is a 23.6 M-cycle shard; the empty shard is block-58927-empty-reward
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 13:44:22 +00:00
igneum-labs
791ce9f7c6 bench/proof-systems: a failed run keeps its logs beside the row, labelled rows do not overwrite each other
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 12:56:07 +00:00
igneum-labs
37516b54a8 bench/proof-systems: a wall-clock cap per prove run (the patched server hangs on a card too small, the fleet finding), --r0-po2
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 12:53:54 +00:00
igneum-labs
5ef9102fd1 bench/proof-systems: the Mac RISC Zero rows (CPU HAL: the v1 shard 574 s at po2 20 and 10.2 GB RSS, 699 s at po2 19 and 8.0 GB; the empty shard 46 to 49 s at 7.9 GB; receipt 223,882 B, verify 0.21 s)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 12:44:55 +00:00
igneum-labs
6666cb09b3 the Apple route corrected from the measurement: RISC Zero 3.0.6 has no Metal HAL (the analysis's Metal sentence, route D's header, route I, the ranking and the Apple tier line rewritten); the Apple route is SP1 on the CPU, 71.7 s a v1 shard on the M5 Max (the tier line in both plans, the app's Apple default line); RISC Zero stays in the v2 slot for the 8 GB CUDA tier and its 5.7x smaller proof
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 12:44:21 +00:00
igneum-labs
67cceb998a proving v2: the Mac measurement of RISC Zero 3.0.6 (CPU HAL, no Metal path in 3.0.6), bench-log entry and plan
v1 shard 574.4 s at po2 20 (10.66 GB RSS), 698.7 s at po2 19 (8.40 GB), 560.9 s at po2 21 (20.44 GB); empty shard
47.9 s (8.32 GB); receipt 223,882 bytes at every po2; verify 9 to 10 ms in process, 0.21 s verify mode; every
receipt verified against the pinned image id; CPU build 585.8 s for the ratio 0.98. Metal: no circuit in 3.0.6
selects the Metal HAL and this Mac has no metal compiler, so no Metal figure exists; PC 2 (CUDA) measures next.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 12:42:05 +00:00
igneum-labs
267d9f16a5 plan: the 12 GB row measured on the 4070 itself (mines and proves compressed at 2^26, 9,034 MiB of 12,282 beside its miner, 24.1 s a v1 shard)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 12:18:56 +00:00
igneum-labs
a10eb8a736 bench/proof-systems: PC 2 rows (job bench-a-pc2, beside the miner): SP1 stock v1 shard 14.8 s at 22,477 MiB, patched default 15.1 s at 18,637 MiB, patched 2^26 27.0 s at 12,012 MiB; the prototype full shard 37.6 s at 30,413 MiB stock, 138.0 s at 12,129 MiB patched 2^26; every proof verified in 0.32 s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 12:06:56 +00:00
igneum-labs
4055c9c866 bench/proof-systems: the fixtures named right (block-338-shard1 is the prototype full shard, the empty shard is block-72854)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 12:06:18 +00:00
igneum-labs
e0bbd8e7b4 proving v2: RISC Zero 3.0.6 workspace (guest, pinned image id, host with the SP1 host's CLI and results keys, Metal and CUDA features, pin script)
The same shard statement bytes as the SP1 guest, committed as the journal. RISC Zero's accelerated crates pinned by
tag (k256 0.13.4, crypto-bigint 0.5.5, tiny-keccak 2.0.2, sha2 0.10.9 and 0.11.0). Pinned image id
0x9ae0f416ee43e9ea8908c555d424fe23e3592677ffc42a763476623d0eb5cf72 under elf/manifest-r0.json. This Mac has no
metal compiler (Command Line Tools, no Xcode) and risc0 3.0.6 selects no Metal HAL in any circuit, so a local
risc0-build-kernel patch writes an empty metallib behind RISC0_SKIP_METAL_KERNELS.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 11:58:34 +00:00
igneum-labs
2e783eaa84 bench: run.sh --patched-env; the PC 2 bench job A script (SP1 stock and patched, default and 2^26, beside the miner)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 11:57:57 +00:00
igneum-labs
c6dacb5690 bench/proof-systems: run.sh portable (GNU time on Linux, host and out paths, a row label, the patched server's HOME), the table keys on the label and fixture
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 11:56:22 +00:00
igneum-labs
3e48415e5f bench/proof-systems: the first Mac rows (SP1 stock on the M5 Max CPU: 4,717,439 cycles, 71.7 s, 27,821 MiB RSS, 1,272,897 B, verify 0.258 s; sp1-patched and jolt n/a with the reason) and the table
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 11:55:11 +00:00
igneum-labs
29bc922422 bench-log: the proof-system slot on the fast-time harness (21 and 34 checks)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 11:54:40 +00:00
igneum-labs
796a67eb52 proving v2: the harness gains --v2 <daa> (case 5: both proof systems and the switch; version 3 and version 2 records refused before, paid from it, an SP1 fresh chain after a system 2 segment), the fast-time file carries the switch; bench/proof-systems: the proof-system watch (run.sh one row per candidate, table.mjs, README)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 11:51:19 +00:00
igneum-labs
4f5cc29d26 app, proving v2: the proof system is a setting (prove_system, 1 = SP1 default, 2 = RISC Zero), /api/prove takes {on, system}, the prover runs the system's host (igneum-prove-r0-host next to the SP1 host, WSL2 too) and signs shard records with --system, the segment path and the aggregator stay on SP1 proofs (one system per segment), the tile has the selector
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 11:41:49 +00:00
igneum-labs
b68ddd59b3 Funding plan: proof-system audit line item beside the hash cryptanalysis row
Scope (SP1 shard and aggregator guests, pinned ids and pin script, the node's
verifier path and record rules of spec 7.7 and 7.8, the version 2 RISC Zero
guest when it lands), deliverables, six candidate reviewers with published
zkVM audits and their sources, cost basis from public rate cards and
comparable engagement sizes, and when it bites. Totals refreshed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 11:36:10 +00:00
igneum-labs
ee8b766470 plan: 12 GB mine-and-prove met on the 5090's allocation by a core-only prover at 2^25 (8.1 GB before the display, 19.8 s a shard), pending the core-proof hand-off path and the card itself
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 09:14:28 +00:00
igneum-labs
2501308b6a plan: the prover-floor agent's route 2 rows (core-only prover 7.8 GB own beside the miner; the core-only server is the step to 12 GB mine-and-prove)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:54:38 +00:00
igneum-labs
f0a40cdb9e bench-log: the fast-time harness on the fresh-record rule, both cases
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:35:13 +00:00
igneum-labs
f380ccc7c7 proving v1 harness: under --fresh-rule the second offer of segment 3's record is a duplicate, not a chain-rule refusal
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:32:42 +00:00
igneum-labs
a96776883b bench-log and plan: the segment-aligned prover on PC 2 (9 whole segments in 30 min, 72 of 72 shards paid, 11.0% of the miner) and the chain rule's 8-DAA fresh window, its fix behind the switch
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:26:59 +00:00
igneum-labs
f3a98cd291 proving v1 harness: --fresh-rule <daa> (default never keeps the known-failed line; set, case 3 expects a fresh record accepted while the previous segment is pending and freshAdmissible true)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:05:04 +00:00
igneum-labs
a113557da2 prover: a segment record the chain rule refuses is held and offered again every pass until the segment's deadline (the fresh-record window on the 0.3.11 rule is one segment length in DAA); the tile counts held records; the fast-time file sets the fresh-rule switch
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:03:46 +00:00
igneum-labs
7bdc8a9060 pc2-segments: int64 segment keys (a double never matched the int64 hashtable keys, so job b claimed nothing in 88 passes); the work-list line; the log search widened
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:50:46 +00:00
igneum-labs
9ea77aa2ae pc2-segments: the port probe sets the port before the call (the first run dialled an empty port and refused itself)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:19:15 +00:00
igneum-labs
a1f05d6888 plan: segment-aligned proving (the change, item 2 answered from the relay source, the arithmetic; the PC 2 numbers to follow)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:18:59 +00:00
igneum-labs
8bb3c892d6 proving v1: the PC 2 segment-aligned prover job (tools/proving-v1/pc2-segments.ps1) and the CPU validation of --save-shards records and --prev
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:18:15 +00:00
igneum-labs
3671918fb4 prover: segment-aligned work (proving v1): a free prover claims a whole segment, proves every shard from one export in one chain run, submits the shard records and the segment record; the host's chain mode takes --prev and writes per-shard records with --save-shards
One prover at 2.2% coverage never had 8 consecutive proven blocks (C47, 6 October 2026); claiming whole segments makes it complete about 1 segment in 75 instead of none. The choice is deterministic per key (FNV of first block and key hash) over the untouched whole segments inside their deadline by a margin (240 DAA or 1.5x the last segment's time); the per-block path stays as the fallback. Unit tests for the grid, the grouping, the margin, the attempted set and the per-key order; 120 app tests, 8 core and 9 host tests pass.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:12:23 +00:00
igneum-labs
7dade79bcb Aggregation cost on the 5090 (5 October, night): the chained aggregation is 2.1 s alone and 9.7 s beside the miner, the batch-log2 curve (2^16 buys 1.6x for a fifth of the hash rate), batch and tree folds estimated, two streams and SP1 knobs closed; the host times the stdin build and names the knobs, --save-shards; the PC 2 job scripts and the readers
The statement and the pinned guests are unchanged; every fixture proof verifies as before. The defaults stay (batch-log2 22, SP1 defaults): the one knob that moves a mining card's prover costs a fifth of the hash rate; the plan carries the trade for the project lead and the batch fold for the next pin. Measured: docs/bench-log.md "aggregation cost on the RTX 5090"; the plan line: docs/plans/proving-v1.md "Aggregation cost (5 October, night)". Also: make-package's gate skips the exporter's .node-plan.json side files and takes the run lock for its execute step; the state-reply class (/api/state answering {} once paid_wei passes u64::MAX) found on the way and fixed on the app branch at 42f36b3.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit ea38ece9eaa5949dd657cbfea5308c4948177ff8)
2026-10-06 07:04:50 +00:00
igneum-labs
0e6a4cd333 plan: C47 card counts from the fleet table (47 as shipped, 18 chain mode, 6 proving-only)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 04:18:14 +00:00
igneum-labs
d02f3fb1b7 plan: v1 live on devnet, no segment record because one prover cannot cover 8 consecutive blocks (C47)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 04:17:51 +00:00
igneum-labs
559a5a0648 plan: the beside-the-miner pair (floor-sweep-4): 16 GB mines and proves at 12.7 GB and 17 s a shard on the patched server; 12 GB proves alone, mine-and-prove 9.9 GB before the display, over the 9.0 GB line
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 00:38:51 +00:00
igneum-labs
e054c914e6 plan: the /api/state fix heads 0.3.12 (0.3.11 closed at a2f08e3)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 00:28:27 +00:00
igneum-labs
42f36b3fd3 app: /api/state never answers {} again (paid_wei over u64::MAX broke to_value; the field is a decimal string, the error is logged once)
serde_json's to_value refuses a u128 over u64::MAX (18.45 IGN) and state_json turned the error into json!({}). A paid shard is 1.23 IGN on average, so a proving machine's dashboard went blank about 15 paid shards after every app start. Unit test over the boundary; 114 app tests pass.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 00:27:35 +00:00
igneum-labs
047932f2e1 plan: the prover-floor agent's sweep 3 rows (the patched server proves the v1 shard at 10.3 GB on the 12 GB profile, 12.9 GB at 2^27; the 12 and 16 GB rows move from nothing to proves alone, the pairs pending)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 00:18:32 +00:00
igneum-labs
2f2bdb5a70 plan: the prover-floor agent's first sweep (the v1 shard at 12.7 GB with the 2^26 split, 5.3 s; the 9.7 GB Setup is next) and the 12 GB profile decision
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 22:42:12 +00:00
igneum-labs
a2f08e3f70 prover loop: a PermissionDenied from the host names the root-owned GPU-server socket and the fix (the root-socket class); the plan's two times
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 22:38:22 +00:00