Commit graph

1496 commits

Author SHA1 Message Date
igneum-labs
e1aeecad40 engine: the row's countdown is set the moment a watchdog restart is scheduled; injector reads the rung over two seconds
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 11:54:33 +00:00
igneum-labs
df2617bb43 reliability injector: card-appears uses a second fake device (added, removed, revived); an empty device list is read by the engine as no answer
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 11:47:52 +00:00
igneum-labs
b9c70528fa reliability injector: reads the fake cards by name and switches a box's real GPU off through the app's own card path
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 11:40:53 +00:00
igneum-labs
43cbec0d63 miner-faults register: the commits table and which side each class is on
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 11:32:48 +00:00
igneum-labs
2efe419521 reliability injector: the catch-up step's flag no longer shadows the process list
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 11:32:15 +00:00
igneum-labs
21143c979c Miner app: plug, tune, play (the project lead, 7 October 2026): node readiness gate, the retry ladder, no permanent fault, fault lines to the intake, the signed cards job, the fault-class register
docs/plans/miner-faults.md: MF-1 to MF-7, each with its rule, test and gate line.
- MF-1/MF-2: a worker starts and is judged only when the node is READY (synced and igneum_getExecStatus reports an
  executed tip; execrpc::probe every 5 s off the engine thread); the node watchdog never counts the catch-up (settled
  once read synced; 30 min cap before that; any RPC answer is a sign of life); the watchdog restarts on a ladder 10 s,
  30 s, 2 min, 5 min, then every 5 min for ever (watchdog::RETRY_LADDER_S); the faulted state and the one-restart
  budget are gone (tools/ci/permanent-fault-check.sh in the gate); a node-caused restart resets the ladder at sync.
- MF-3: the hot-plug pass starts a recovered or revived card's worker (unchanged rule, now in the register).
- MF-4: the status clock starts at ready (program loaded), loading bounded by 300 s; a self-test failure holds the
  card 30 min with the reason on its row, released on a driver change; a crash loop climbs the ladder; the pack is
  exported once a minute for every card (a refused pack forces one).
- MF-5: the app reads template_wait=, template_ms=, identities_active= from the 0.3.20 miner's STATUS; waiting on
  the node is never the card's fault; the row says node slow; every node-wait label clears on the first rate.
- MF-6: a miners hold belongs to the job that took it and releases when that job is gone or at its own cap.
- MF-7: the engine owns every igneum-miner it started: an untracked one on this engine's node RPC is killed at start,
  after every stop and every minute, one line and one fault report per kill; a restart kills the old process first.
- Every fault line posts one FAULT line to the log intake (label fault-<id8>, app and node version, 60/h cap).
- The signed cards job kind (per card enabled, identities, power_pct; refused for a card the machine lacks; applied
  through the app's own card path, persisted, read back): packaging/ota/publish-jobs.sh add --kind cards.
- LG-4 as a job: relay/playbooks/first-share.ps1 and tools/fleet/first-share-gate.mjs (no Windows box yet).
- tools/reliability: the fault injector with one step per class (catch-up, card-appears, own-restart, zero-ladder,
  no-status, node-silent, one-card-fails, orphan-miner); fake-worker.mjs lists devices and fails self-tests on command.
- master's build tooling (97255a4e) and release-0.3.20's igneum-pow taken into the worktree for the box routes.
Box: app 198 + 27 + 8 tests green on igneum-build-2; the tree gate green (33 checks).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 11:27:55 +00:00
igneum-labs
5b54bfc63c 0.3.19: version strings (the app-only cut: the 0.3.18 tree plus miner-ui-4, miner-ui-5 and the execrpc gate, node pin 5899f603)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 10:13:20 +00:00
igneum-labs
69682eeecc execrpc: one gate for every execution-layer RPC call the app makes (ledger N7, main's rule for 0.3.19)
A node before the exec RPC bounds fix (every 0.3.17 node) dies when a method that resolves a block number or indexes the record vector is asked while its exec follower holds no record; PC 1 crash-looped on two callers in one night (eth_getBlockByNumber from the clock sample, then igneum_getAssignedShards from the prover loop: 'panicked at igneum/exec/src/rpc.rs:808:35: range start index 1 out of range for slice of length 0'). Every caller (prover.rs's evm_rpc, update.rs's clock sample, extnode's rpc for chainfacts and the external-node probe) now goes through execrpc::call: SAFE_ON_EMPTY methods go out, GATED ones wait for igneum_getExecStatus's executedTipHash, an unclassified method is refused. The test every_caller_goes_through_the_gate scans src/ for JSON-RPC requests built elsewhere and for unclassified exec method names.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 09:59:57 +00:00
igneum-labs
16bd5f7347 Merge commit 'e22d2425' into release-0.3.19 2026-10-07 09:39:34 +00:00
igneum-labs
4570f92ab9 Merge commit '032e1f87' into release-0.3.19
# Conflicts:
#	app/igneum-app/src/update.rs
2026-10-07 09:39:34 +00:00
igneum-labs
927895a69d prover loop: no records-indexing poll until the node's exec follower holds a record (ledger N7, PC 1 on 0.3.18)
The 0.3.18 clock-sample gate stopped one caller; the prover's first igneum_getAssignedShards after the node reads synced killed PC 1's 0.3.17 node the same way (rpc.rs:808, records[1..=0] on an empty vector) because its follower loads after the sync flag. The loop now waits on igneum_getExecStatus's executedTipHash, the same gate.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 09:34:17 +00:00
igneum-labs
e22d24253a miner-ui-5: u04 and u14 reshot on live-dag.js 2.0.1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 09:10:42 +00:00
igneum-labs
49db28fb9c miner-ui-5: live-dag.js 2.0.1 (the site lane's real-data options, byte-identical), window 60 on both scenes
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 09:09:54 +00:00
igneum-labs
f508274fe2 miner-ui-5: the plan, the captures, the first-share runbook for the shipper, the Discord rung shapes (not posted)
docs/plans/miner-ui-5.md (what is built, gate results, owed, the RPC fields the node does not expose yet, what the
site lane takes); docs/plans/miner-ui-5-shots/ (light and dark at 1440 and 390, the saved block card PNG);
docs/plans/miner-ui-5-first-share-runbook.md; docs/community/discord/ladder.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 09:05:52 +00:00
igneum-labs
32793b686a miner-ui-5 (0.3.19): the ladder on every page, the count-up, the block card, Earnings in IGN first, EMBER 02 scene
View: poisson, ignPerDay, ladderRungs (every threshold from the node's params: dust, weightWindow, presenceWindow),
blockCard, earningsLines (IGN first, the typed price never fetched, the share and rank, IGN per kWh), cardIgnDay,
timeline, profileWords; FIELDS names every number's RPC field for the title on hover. Overview: the Poisson
count-up until the first block, the block card in place with Save the card (a canvas PNG, no network call), Copy the
link and the explorer, the ladder strip. Earnings: the six lines, the ladder card, Your first hour. Prove: the shard
card. Cards: IGN a day per card. Settings: Make my page public. The chain scene is the site lane's EMBER 02 pack
(live-dag.js and proof-core.js byte-identical): the compact card fed by the page's own api/live read, Inspect opens
the full scene with the block inspector in the site's words. ui-mock: scenarios firstwait, firstblock, ladder,
api/ladder, api/card. view.test.mjs: a Devnet 2 key walks every rung; 47 UI tests.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 09:05:52 +00:00
igneum-labs
959c4a5fa9 miner-ui-5 (0.3.19): the ladder's engine half: ladder.json, api/ladder chain facts, the block card's PNG
src/ladder.rs: this machine's record (first block by card, hash joined to the miner's ACCEPTED line by nonce from the
node's PoW accepted line, blocks per UTC day, VOTE and LOCK lines as the signing record and streak, paid shards, the
milestone at 1, 100, 1,000, every 10,000th and the first block of a new card, the first-hour marks); persisted, in
api/state.ladder. src/chainfacts.rs: GET /api/ladder, getFinalityWeights through the node's EVM port when it answers
igneum_getFinalityWeights (owed), else the observer's relay plus /api/stats; this machine's keys ranked; the source
named. src/card.rs and POST /api/card: the page's 1200x630 PNG written under <data root>/cards/ and revealed.
settings.profile_public behind api/settings. Hooks in engine.rs (block, node line, vote, lock, synced, mining) and
prover.rs (paid shard). Box: 190 + 27 + 8 tests.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 09:05:51 +00:00
igneum-labs
0d05308e8d release 0.3.18 plan: published 08:39Z on the project lead's word
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:43:47 +00:00
igneum-labs
644461d7e2 release 0.3.18 plan: staged (installer, scratch manifest, runbook)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:34:39 +00:00
igneum-labs
032e1f8717 miner-ui-4: carry the clock sample's exec-record gate (0f6b4650, ledger N7); version words follow the 0.3.19 renumbering
Only update.rs from 0f6b4650; its version bumps stay with the shipper's cut.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:32:03 +00:00
igneum-labs
754d22c6ea release 0.3.18 plan: the app-only clock-sample cut
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:31:41 +00:00
igneum-labs
0f6b4650b6 0.3.18 (app only): the clock sample asks igneum_getExecStatus first and takes no block from a follower without a record (ledger N7)
A node before 0.3.18's exec RPC fix dies on eth_getBlockByNumber when its exec follower holds no record (rpc.rs indexes records[0] on an empty vector; the panic hook exits the process), and this sample ran every 9 s once blocks arrived, so a fresh install's IBD and PC 1's restart crash-looped. The sample now waits for executedTipHash. No node change; the pin stays at 5899f603. Version 0.3.18 on the 0.3.17 app tree.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:23:44 +00:00
igneum-labs
8084d88d23 miner-ui-4: light 390 px Overview and Cards rendered from PC 2's live state for the site
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:58:09 +00:00
igneum-labs
a7a9e5c231 release 0.3.17 plan: the cases' verdict (PASS; relay-into-target void by topology); 0.3.17 closes
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 06:36:51 +00:00
igneum-labs
017553b8c5 release 0.3.17 plan: the cases' interim (c17-1 clean, relay case void by topology, poison mining)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 06:26:34 +00:00
igneum-labs
e619bc96c3 miner-ui-4 (0.3.18): a miner whose template fetches time out is not faulted on silence
PC 1's read-back: the node reported synced while its finality replay blocked the template RPC for three minutes; the miners printed only timeouts and the watchdog faulted every card. The timeout line is the miner's heartbeat: silence clocks start over from it, the card says it waits for templates, one Activity line per episode. Recorded sequence as the test; 173 box tests.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:46:31 +00:00
igneum-labs
447a7d82fc release 0.3.17 plan: PC 1's cause from its logs (template fetch timeouts under the finality catch-up, node synced)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:45:24 +00:00
igneum-labs
3fa25b2d23 release 0.3.17 plan: the Mac row; 0.3.17 live
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:43:05 +00:00
igneum-labs
4b597d73ae release 0.3.17 plan: hands and seed rows, PC 1 after the miners restart
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:33:42 +00:00
igneum-labs
e602e7cda6 release 0.3.17 plan: the standing fleet's per-box table (14 of 14 on 5899f603)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:29:53 +00:00
igneum-labs
4ec47b6b62 miner-ui-4 (0.3.18): workers come back after an OTA relaunch
The card watchdog judges a miner only while the node is synced; a silence fault from the node's sync is released at the synced transition and the card starts again with an Activity line; a worker silent from its start is faulted at 60 s; one Activity line per card at its first start. Known-failed test from PC 1's 04:51Z relaunch; 173 box tests.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:19:07 +00:00
igneum-labs
faa7955101 release 0.3.17 plan: PC 1 read-back, the workers-after-relaunch fault, the restart job
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:16:06 +00:00
igneum-labs
53a1b1c5e5 release 0.3.17 plan: canary full form PASS, rollout boxes 1 and 2
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:05:39 +00:00
igneum-labs
8d33d2722d release 0.3.17 plan: the HiveOS row live
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:02:55 +00:00
igneum-labs
110960376c release 0.3.17 plan: canary synced and mining, rollout box 1, the Mac, PC 2 offline
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 04:57:31 +00:00
igneum-labs
3307351d79 release 0.3.17 plan: main's (b) ruling, the deploy as run
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 04:53:10 +00:00
igneum-labs
5012c1ddc8 release 0.3.17 plan: the block stage finding, the diff argument, the open deploy question
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 04:44:53 +00:00
igneum-labs
f59fb2d05b release 0.3.17 plan: the decisive read passes (headers through in one session)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 04:32:01 +00:00
igneum-labs
00e35af4bc release 0.3.17 plan: canary first lines (past the guard mark), the log flood is f1ea7a38's own
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 04:08:04 +00:00
igneum-labs
029fd440d1 release 0.3.17 plan: seed and hive pairs, the hive package smoke, the Windows run, the staged manifest
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:57:43 +00:00
igneum-labs
cb272df466 release 0.3.17 plan: the suite and the integration check
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:54:17 +00:00
igneum-labs
4e1dc54973 miner-ui-4: note the node's blockrate object (6e4ace3f) behind the merge depth read
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:53:41 +00:00
igneum-labs
40f4c1d860 release 0.3.17 plan: the hands' and seed's pairs, the OUT_DIR non-equality
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:51:24 +00:00
igneum-labs
e5a55d1b05 release 0.3.17 plan: builds on 5899f603, digests, the engine read-back on this tree
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:49:37 +00:00
igneum-labs
d283472386 0.3.17: the node pin at 5899f603 (f1ea7a38 plus the IBD-guard fix)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:48:09 +00:00
igneum-labs
068f5889df release 0.3.17 plan: the node-only hotfix, trees and the renumbering
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:42:36 +00:00
igneum-labs
f9816b1c18 miner-ui-4: the 0.3.18 Mac check as decided (own node after the apply, mode own, digest from RPC, synced; miner paused)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:40:23 +00:00
igneum-labs
0e6c3b42ec rust-toolchain.toml: the one pin (1.99.0) from master, so master's build tools run against this tree
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 29740ce6cfed30836aff3c1550741d00dbaeceef)
2026-10-07 03:40:19 +00:00
igneum-labs
45fd85dcdb miner-ui-4 (0.3.18): the merge depth reads blockrate.mergeDepth, not params; 3,600 stands until the node carries it
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:39:48 +00:00
igneum-labs
3d6af04893 miner-ui-4: version words follow the renumbering (0.3.17 is a node-only hotfix; this branch ships as 0.3.18)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:36:51 +00:00
igneum-labs
dcc758264d packaged-config: the packaged object is the live sixteen-field one (a fresh 0.3.17 install peers at once; the thirteen-field object would be refused until the first manifest read)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit bd7b307699c018e2065d602b319bad76eb61465e)
2026-10-07 03:35:46 +00:00