Commit graph

367 commits

Author SHA1 Message Date
igneum-josh
dccdabdedb app: the job relaunch helper starts with CREATE_NO_WINDOW only (DETACHED_PROCESS exits powershell without a console, the OTA stall class)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 09:28:19 +01:00
igneum-josh
73fff4fe3f Merge job-wake: instant job wake-up (relay /wake long-poll, 2-minute fallback poll, publisher wake)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 09:26:07 +01:00
igneum-josh
7481bcbc96 app jobs: wake long-poll on the relay, fetch within seconds of a publish; safety-net poll 2 minutes (was 10)
Josh, 5 October 2026: "why is it taking so long for pc2 and pc1s tasks to spin up?". The PCs have no inbound ports
and one miner is off the LAN, so one thread per app now long-polls the relay's public /wake with the last stamp
(GET <url>?since=<stamp>, held up to 45 s there). A changed stamp sends Event::Wake and the engine fetches the jobs
file at once (signature check unchanged); a wake during a fetch in flight fetches again right after it. The first
reply only seeds the stamp. Backoff 5, 15, then 60 s while the relay is unreachable, a 10 s floor between requests,
a full hold when the relay has no stamp yet: never a busy loop. One log line per wake, one when it falls back, one
on recovery. IGNEUM_APP_JOBS_WAKE_URL overrides the URL (set and empty: no waker).

CHECK_EVERY_S 600 -> 120: the poll is the fallback now; the first poll stays 40 to 60 s after start. An unchanged
file is no longer logged on every poll. Remote jobs off stops the waker too.

Unit tests: the stamp logic (seed, same, changed, empty), the backoff sequence and the recovery flag, the floor,
the URL and query. cargo test -p igneum-app: 60 + 22 pass; cargo build --release -p igneum-app: finished.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 09:25:29 +01:00
igneum-josh
7a174ecdfb relay: the packaged intake key reports too (build job uploads got 'no token' after the key split)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 09:24:31 +01:00
igneum-josh
3da3c88184 publish-jobs: wake the apps after a verified deploy; jobs.mjs status shows the woken latency; 0.3.6 plan
publish-jobs.sh --deploy POSTs the new stamp (published_at plus 8 hex of the file's sha256) and the added id to the
relay's /wake once the live file verifies. The relay token goes in a 600-mode header file, never on the command line
or the screen. Prints "woke the apps (stamp ...)" or a one-line warning; the apps' 2-minute poll still catches it.

tools/jobs.mjs status reads relay_wake (one row per publish with the ids it added) and prints "woken +N s after the
publish" for a machine's latest job that a publish added; nothing when the table does not exist yet.

docs/plans/release-0.3.6.md: "Instant jobs" section with the design, the expected latency and a TODO row per machine
for the measured number once 0.3.6 is live. packaging/ota/README.md: the 10-minute poll is history.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 09:22:02 +01:00
igneum-josh
5ee7909d5c relay: /wake long-poll for the apps' remote jobs (public GET held 45 s, authenticated POST of the stamp)
GET /wake?since=<stamp> is public (the apps hold no token) and rate limited (30 a minute per IP). It holds up to
45 s, re-reading the stamp every 2 s, and answers {stamp, at, added, changed, held_ms} the moment the stored stamp
differs from since, else the unchanged stamp at the deadline. POST /r/<token>/wake {stamp, added} (the relay's
auth, also x-relay-token or x-igneum-key on /wake) records a stamp; one row per stamp in relay_wake, created by the
first POST. maxDuration 60 s for api/wake.mjs in vercel.json. api/relay.mjs is untouched.

The handler lives in lib/wake.mjs with its dependencies injected; relay/test/wake.test.mjs drives it with a fake
database, a fake clock and a fake sleep (the hold, the change, the deadline, the rate limit, the hold cap, auth, a
database error). CI's site job runs it with the other relay tests.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 09:22:02 +01:00
igneum-josh
ecc286de96 lock: build slots open to new builds come from ~/.config/igneum/build-slots (1 to 3)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 09:19:52 +01:00
igneum-josh
ae9e326134 build inputs: ship igneum-pow beside the zip root and the coin image the engine embeds
The first PC build (job build-20261005-075300) failed in 52 s: the node's crates depend on ../../../../igneum-pow,
which the zip did not carry, and the engine embeds brand/igneum-coin-1024.png, which the staged brand/ lacked.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 09:01:17 +01:00
igneum-josh
21e896373d site: Igneum Wallet on the home page (section, buttons, nav link on every page)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 08:54:01 +01:00
igneum-josh
1d382db113 app ui: a finished job's banner stays 5 minutes when it succeeded, 30 when it failed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 08:50:57 +01:00
igneum-josh
3763da77c4 docs: release 0.3.6 plan from the proving activation (verifier gap, payload, lessons)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 08:45:45 +01:00
igneum-josh
c8b7852efd Ledger: merge conflict markers removed, both sides kept 2026-10-05 08:25:45 +01:00
igneum-josh
eabeed7bd7 Site: rebuilt after the E15 and ledger-sweep merge 2026-10-05 08:25:30 +01:00
igneum-josh
236fd47800 E15 decided: the 4 billion cap stays, no tail emission; spec 5.10 with the measured security-budget table and the review trigger, O-5.11 closed, litepaper and homepage state the cap and the years
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 08:24:38 +01:00
igneum-josh
2054ae3a2a Igneum Miner 0.3.5: Pruning proofs on the lottery hash (M20), memory fix (M30), coinbase limit on every network (M31), chain-decided equivocation bans (F23), re-determination after reorgs (F24), params digest in the handshake (G12, X18), miner fee 1% switchable, efficiency sweep, variant racing, reliability watchdog, log panel and screens, PC build job, Windows updater launch fix 2026-10-05 07:33:18 +01:00
igneum-josh
a130c6361f release-0.3.5 plan: the final fork suites and totals filled in
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 04:16:42 +01:00
igneum-josh
e68ac6bbdb release-0.3.5 plan: final round from fork 20139145, every suite green, header and digest confirmed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 04:16:14 +01:00
igneum-josh
8e8b739bc0 release-0.3.5 plan: fud-consensus fork results, the scratch run, m20-pruning merged (final-round hashes to follow)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 03:43:56 +01:00
igneum-josh
5695424e6b release-0.3.5 plan: fud-consensus on both repos (fork results to follow)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 03:21:12 +01:00
igneum-josh
7abce72165 Merge origin/fud-consensus into release-0.3.5
bench-log.md: both appended entries kept (the round-4 consensus items and the red team next to the branch's own).
2026-10-05 03:19:41 +01:00
igneum-josh
0420c887e2 Round-4 consensus items: final runs on 977db931 (reorg-final2, the red team's f23 / f24b / f24c), the M31 and un-determination entries, result files
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 03:17:49 +01:00
igneum-josh
6332f7aa92 Ledger F23, F24, G12, X18, M30, M31, F25 to 'Fix built, pending rollout' with the measured runs; bench-log entry for the round-4 consensus items; red team branch merged
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 02:57:24 +01:00
igneum-josh
eee7030321 Merge branch 'fud-memory' into fud-consensus 2026-10-05 02:56:28 +01:00
igneum-josh
afb2ce38d5 Harness s8 steady state and the bench-log paragraph: RSS per 1,000 blocks before and after the M30 fix
s8-steady.mjs: two nodes, one honest vmine miner at 1 block/s, no flood,
RSS and cache-build count every 60 s, vmmap -summary at 0, 500, 1,000 and
1,500 blocks. Both builds ran 1,500 blocks on the 60x profile: before
41 to 1,342 MB by 514 blocks (9 cache builds, five 256 MiB chunks resident:
KEEP 4 plus one evicted chunk the allocator keeps) then flat, 27 builds in
1,529 blocks; after 319 MB at 510 blocks (1 build), 589 at 1,029 (the second
day's cache, by design), 603 at 1,526, 2 builds. Residual 30 MB per 1,000
blocks on both builds, read as the consensus database and caches filling,
not the PoW cache. JSON and vmmap files under
docs/benchmarks/memory-floods-2026-10-04/.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 02:49:46 +01:00
igneum-josh
2ca10df22d Merge branch 'redteam' into fud-consensus
# Conflicts:
#	docs/fud-ledger.md
2026-10-05 02:34:21 +01:00
igneum-josh
815c659b0b fud.mjs: node logs kept per scenario, pre-F24 refusal wording counted, reorg criterion as the rule promises; first-pass and control results kept
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 02:34:04 +01:00
igneum-josh
ca813aa372 FUD ledger sweep, round 5: s5 and s4 on the finality-fixes build (F1 burster locks nothing alone, F3 vote-dropping adds 0 ms), F2 floor note, final counts
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 01:17:45 +00:00
igneum-josh
9a3583461a release-0.3.5 plan: master merged once more
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 02:14:24 +01:00
igneum-josh
619cf30690 Merge remote-tracking branch 'origin/master' into release-0.3.5 2026-10-05 02:14:23 +01:00
igneum-josh
5556f7870a release-0.3.5 plan: round-3 binaries from fork 2e75a238 (build-info fix), header igneumd/2.1.0-2e75a238 confirmed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 02:14:05 +01:00
igneum-josh
25d48ef4f2 Merge branch 'fud-memory' into fud-consensus 2026-10-05 02:12:27 +01:00
igneum-josh
c40fd8652c Lock: three run slots for functional runs; a measurement waits for all of them
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 02:10:17 +01:00
igneum-josh
96c46ad800 FUD ledger sweep, round 4: M25 confirmed on a real-PoW test node (mismatched day length rejected with no reason named), fix row 127
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 01:09:07 +00:00
igneum-josh
f9b186c679 bench-log: M30 floods re-run on the committed fork build 796f758d (second after pass)
s6 +6/+3/+1 MB per load, s7 302 to 318 MB, 0 cache builds, epochs 0 to 3
rolled, 202 blocks accepted; the pass-1 column stays beside it. Result JSON
after-{s6-exhaustion,s7-flood}.json added. The s6 one-instant sink check is
noted as a harness flake.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 02:06:07 +01:00
igneum-josh
33888fb550 release-0.3.5: master 2897e21 and bugfix-collect-exit merged, site rebuilt, plan rows (round-3 hashes to follow)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 02:04:17 +01:00
igneum-josh
2c0bb2f0ac Red team 4 Oct 2026: every attack suite against the 0.3.4 finality-fixes build (rule v3 on, fast time); 30 scenarios, ledger F25 M30 M31 new, F21 F23 F24 measured
Report docs/review/redteam-2026-10-04.md: finality attacks s1-s8 plus 34% withholding, 50/50 long partition, F23 and
F24 custom runs, ordering harness, execution suite and EVM smoke, proving hostile tests and a proof flood, difficulty v2
timestamp forging in the simulator. New fails: the fast-time harnesses corrupt the u64::MAX sentinels of the override
(F25), a block or transaction flood grows the node by hundreds of MB in a minute (M30), the coinbase does not fit the
204-byte limit on mainnet, testnet and simnet parameters (M31). F23 and F24 reproduced on this build; F21's bound
measured at one window of the side's own DAA. Scenario scripts under tools/finality-attacks/redteam/.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 02:03:08 +01:00
igneum-josh
e53d337a87 Merge remote-tracking branch 'origin/bugfix-collect-exit' into release-0.3.5 2026-10-05 02:02:23 +01:00
igneum-josh
1c338980f1 Merge remote-tracking branch 'origin/master' into release-0.3.5 2026-10-05 02:02:23 +01:00
igneum-josh
5a7ec15265 Harness: port and data-dir overrides, per-load RSS deltas, cache-build counts; bench-log entry for ledger M30
tools/harness: IGNEUM_HARNESS_BASE_PORT and IGNEUM_HARNESS_TMP move the test
network's ports and data directory so two agents can run it at once; the u64
sentinel round-trip in overrideParams is fixed with the BigInt reviver from
tools/finality-attacks (ledger F25); s6 records rss_start, rss_delta and
cache_builds per load and reports per-load growth (the old row subtracted one
baseline taken before all three loads, which is how the mempool flood was
read as +270 MB); s7 counts "PoW cache built" lines beside every RSS sample;
--live-only skips the s7 simulator part.

docs/bench-log.md: the 4 October 2026 (night) entry: the floods' growth was
one 256 MiB PoW cache per epoch roll (the engine kept a cache per (epoch,
day) pair, KEEP 4), measured before and after the fork fix (fork branch
fud-memory, 796f758d): submit load +263/+257 MB with 1/1 builds before,
+9/+2 MB with 0/0 after; block flood 302 to 1,085 MB with 3/3 builds before,
300 to 315 MB with 0/0 after. Result JSON under
docs/benchmarks/memory-floods-2026-10-04/.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 01:38:33 +01:00
igneum-josh
2897e21474 bugs.md: the stopped detector's second live firing (a plain quit)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 01:18:05 +01:00
igneum-josh
a840b8682b FUD ledger sweep, round 3: the simulator batch (M14 under rule v2, E17 at 124 MH/s, F1 zero-history ramp)
attacks.py scenario 2 under rule v2 and Kaspa's DAA: a pulse never earns more blocks per hash than steady mining
(weight per hash 0.26 and 0.98); the economy simulator at the devnet's 124 MH/s; finality_sim scenario A (the
window is full on day 35 to 41 from zero history). The first fast-time s5 attempt failed on an override field the
integration build does not know; the re-run on the finality-fixes build is queued.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 00:14:12 +00:00
igneum-josh
f48d317397 Round-4 consensus items: the fud.mjs runner (digest, ban, reorg scenarios on the fast-time 3-node network, ports 29400+), per-node override files and --equivocate-at in the harness, spec 02 section 2.8, spec 03 C1/C4/3.6 and the 3.10 rows, spec 08 section 8.7
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 00:53:35 +01:00
igneum-josh
7e453f00e6 release-0.3.5 plan: final binaries from fork 6ef230d5 with hashes, every test result
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 00:29:59 +01:00
igneum-josh
bd578668ce release-0.3.5 plan: the second dev-fee merge
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 00:17:07 +01:00
igneum-josh
1b287d49ca Merge origin/dev-fee (293fc0b) into release-0.3.5
bench-log.md: both appended entries kept; the generated site pages rebuilt with node site/build.mjs.
2026-10-05 00:16:45 +01:00
igneum-josh
293fc0be80 Site: bench page and journey rebuilt with the dev-fee entry
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 00:15:41 +01:00
igneum-josh
161e48c953 Dev fee: the test-network measurement in the bench log; run.mjs waits for the nodes and edits the override as text
9 fee blocks in the 785 blocks of the two fee-paying miners (1.15%, expected 1 in 100 templates), the miners' fee
counters equal the chain's count on both nodes, the control miner at --dev-fee 0 paid nothing.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 00:15:27 +01:00
igneum-josh
448d537be2 release-0.3.5 plan: dev-fee and miner-reliability merged on both repos, fork branch and build table (hashes of the final round to follow)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 00:04:03 +01:00
igneum-josh
f28bdfc805 FUD ledger sweep, round 2: spec 06 rows restated, M20 exposure dated, the sweep's status-update section and the morning findings
Spec 06 rows O-3.1, O-3.14, O-5.9 and O-5.11 carry the sweep's evidence (fix row 124 done). M20: the devnet's pruning
point leaves genesis between DAA 108,000 and 151,200, about 14:00 UTC 5 October to 01:00 UTC 6 October, after which a
fresh node rejects the honest pruning proof under the stub. The ledger ends with the sweep's status-update section;
the review file carries draft counts and the three findings.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 22:43:59 +00:00
igneum-josh
1e53aa9032 FUD ledger sweep, round 1: 63 entries reconciled with the day's evidence, the security-budget grid and the launch-month arithmetic
Status lines updated from the bench-log, sim/results_v2.md, sim/difficulty/attacks and sim/economy where the
evidence existed and the ledger still said Open (M15, M17, M19, M24 fixed and live; F1, F7, F19, E12, E15 answered
with evidence; M26, M27, X21 fix built on miner-reliability; the rest annotated with what the experiment needs).
New: sim/economy/security_budget.py (E15 fee grid, price paths, hashrate response), fud-fixes section 2.5 (rows
117 to 126), docs/review/ledger-sweep-2026-10-05.md (the running table).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 22:39:54 +00:00