diff --git a/docs/plans/morning-2026-10-04.md b/docs/plans/morning-2026-10-04.md new file mode 100644 index 00000000..b7b47146 --- /dev/null +++ b/docs/plans/morning-2026-10-04.md @@ -0,0 +1,63 @@ +# Morning summary, 4 October 2026 + +Written overnight for the project lead. Every number below is in `docs/bench-log.md` with the command that produced it. Failures are listed with the passes. + +## The headline + +The devnet ran all night with your PC mining against its own node. Every piece the design promised now exists in code and has run on a network of our own nodes, and most of them were attacked before you woke up. + +| Piece | State | Measured | +|---|---|---| +| Real-hash mining, three vendors | running since yesterday | 5090 at 190 MH/s through its own node; 20,000 plus blocks tonight | +| Finality v2 | built, attacked, fixed | 93 of 93 locks, median lock 0.80 s, 34% minority refused to lock, heal in 30 s | +| EVM execution layer | built, attacked, fixed | 87 of 87 and 98 of 98 checks, state roots identical on three nodes | +| Igneum difficulty rule | built, attacked, hardened | 50x step settles in 62 to 79 s where Kaspa's rule never did; timestamp forging now +1% | +| Compile-ahead swap and prefetch | built | boundaries crossed with no pause, under 1% idle | +| First real proof of a block | measured | SP1 core proof 22.0 s on this Mac's CPU, verified in 0.16 s | +| Browser verifier | live on the homepage | a real BLS certificate verified in the tab in 15 to 66 ms | +| Weak-program census | done | 100,000 programs; a generator change is needed (see decisions) | +| Integration | done | devnet-v4 branch, 628 tests pass, 3-node run with everything together | + +## Attacks run tonight and what they found + +| Suite | Scenarios | Result | +|---|---|---| +| Ordering layer harness | 7 | 6 pass; a 45% withholding miner reached 50.7% of blue blocks once (ledger entry, re-run under the weight lens) | +| Execution layer | 6, 98 checks | all pass; two griefing findings fixed on the branch (over-budget transactions now pay and advance) | +| Finality | 8 | 5 pass; 3 failed and 2 are fixed (sortition by weight, first-month rule); 1 is a decision (the floor, below) | +| Difficulty rule | 7 | timestamp forging broke the rule (rate fell to a fifth); hardened with a sanitised clock, now +1%; flood panic fixed | +| Hostile review round 3 | 7 roles | 0 fatal, 18 serious, 8 minor; public text corrected; cache-build attack fixed (50 junk headers: 10.6 s of rebuilds before, 14 ms after) | +| External review (your ChatGPT run) | 29 points | 13 already answered, 15 new ledger entries, 1 wrong | + +## Decisions waiting for you + +1. **The finality floor.** The 56.7% floor keeps finality alive when up to 43% of weight goes quiet, but across a long partition it lets an equivocating 13.3% of weight create conflicting locks, and a mined-on side can cross the floor after days (9 days at mainnet for a 50/50 split). Raising the floor toward two thirds buys safety against a third at the price of finality pausing whenever under two thirds is connected. Ledger O-3.15. My lean: raise it, and say finality pauses honestly. +2. **The generator change.** 95% of today's programs repeat loads inside a hash. The census proposes a fixed 16 load slots with register provenance so every hash does 128 distinct reads. It changes every test vector and is a gate-1 change. My lean: do it now, before any public vector ships. +3. **Publish the public repository.** Prepared at `~/Projects/igneum-public`, scrubbed, zero identity hits, tests passing. Command in `docs/plans/public-repo.md`. Needs your yes. +4. **Funding and bounty.** The funding table and security-budget stress are in `docs/plans/funding.md` and `docs/analysis/security-budget.md`; the bounty terms need a fund. + +## The cut-over to v4 + +v4 changes the chain's formats, so it starts fresh from genesis and every node moves together. Runbook: `docs/plans/cutover-2026-10-04.md`. Ten minutes: + +1. You stop the PC's mining and node windows. +2. I cut the Mac over and restart the observer. +3. The seed node switches to its staged v4 build. +4. You extract `igneum-windows-v4.zip` to a fresh folder and start it. +5. We watch the live page: blocks, then the first lock after the window fills. + +Packages: `https://dl.igneum.network/dl/***DL-TOKEN-REMOVED***/igneum-windows-v4.zip` (your PC, node and miners), `igneum-node-windows-v4.zip`, and `Igneum-Miner-0.2.0.dmg` for Sam, which dials the seed node first. The proof run for your 5090: `igneum-prove-wsl2.zip`, same folder; needs a reboot for WSL2 and twenty minutes of setup. + +## What went wrong tonight, plainly + +- An agent's broad `pkill` took node 1 down for three minutes at 23:21; your PC's node carried the chain. Rule added: no broad kills. +- The credits ran out around midnight and killed ten agents mid-task; you topped up and all were resumed. +- The GitHub CLI drifted back to your personal account twice; switched back each time, rule recorded. +- The hash-rate decay was a miner bug, not the card: the miner re-walked the hour's chain for every job. Fixed in v4 together with the spinning CPU threads. + +## Still open after tonight + +- Proving: only one block proven, on a CPU; the GPU run on your PC is the next number, and the end-to-end benchmark standard is written but not run. +- Finality: the floor decision; the unexplained three-node stall seen once; two spec rules not yet enforced (C3, F3 pruning bound). +- Difficulty: the pool hopper's 0.7-point edge over Kaspa; upstream's integration tests not re-run. +- The ledger: 73 open items, each with its experiment, in `docs/fud-fixes.md`.