Commit graph

1527 commits

Author SHA1 Message Date
igneum-labs
f06bf2af49 Plan 0.3.17: the final node tree 75467244 (the rebased finality and emission commits, the igneum-pow default, the N5 rule, the fork gate's open line)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:42:14 +00:00
igneum-labs
d26b28c430 Plan: Igneum Miner 0.3.17 (the node and app trees as cut, what waited and why)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:38:48 +00:00
igneum-labs
6c20670f22 Merge miner-ui-4 59bbf466 for 0.3.17: an external node that goes away hands the ports to the app after 60 s; node.mode and mode_reason in api/state
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:35:41 +00:00
igneum-labs
59bbf46689 miner-ui-4: an external node that goes away hands the ports to the app after 60 s
The mode (own | external | none) is re-decided every 5 s while the app reads or refuses another node; gone for 60 s, the app starts its own node and says so in Activity. node.mode and node.mode_reason in api/state and on the Node details. Pure extnode::step with the goes-away test first.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:31:42 +00:00
igneum-labs
1c99053aad Merge miner-ui-4 4f6cfbfb for 0.3.17: ui/ whole (Ember's finality words folded), extnode.rs on igneum_getNodeInfo, N4 stall exits, the port-collision check, POST /api/shot; src/live.rs is ember-tune's merged module
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:28:51 +00:00
igneum-labs
4f6cfbfba7 miner-ui-4: fold Ember's finality-paused words, read igneum_getNodeInfo (params, network, powEngine stub fault)
View.finalityWords with Ember's test (41 UI tests). extnode reads the node lane's reply shape: params compared value by value, network must match, a stub engine is refused and a fault on the app's own node. 168 box tests green.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:28:24 +00:00
igneum-labs
49daffbf9d Merge commit '4c3d68b6' into release-0.3.17
# Conflicts:
#	docs/bench-log.md
2026-10-06 23:20:19 +00:00
igneum-labs
4c3d68b63e Ember shipped-app window playbook: the gate at 0.3.17 (0.3.16 carries cause F and would repeat the 22:16Z result)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 44e2a355c4)
2026-10-06 23:19:24 +00:00
igneum-labs
fa99216dd3 Ember: the 0.3.16 window in the plan and the bench log (A to E held, the 9070 XT measured, cause F and its fix)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit d5f236afc0)
2026-10-06 23:19:24 +00:00
igneum-labs
16ec189a0b Ember helper (F), from the 0.3.16 window on PC 1: the tune path wrote its request index as the wire sequence ("00 dev 1", "01 pl 160") below the cap path's unix-based numbers, so the helper skipped every tune command as stale and both climbs stopped on "the helper did not run sequence 1 within 15 s"; every writer now draws from one monotonic space (powertask::wire_seq), the acknowledgement matches the wire number; test
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 9007792742)
2026-10-06 23:19:08 +00:00
igneum-labs
c88504b47b Ember plan: 0.3.16 is the corrective cut of 0.3.15; the Miner UI 4 and Horizon rows ship as 0.3.17
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 454ec0a762)
2026-10-06 23:19:08 +00:00
igneum-labs
d5d8e76a7a Finality pause and /api/live pinned to the node's landed shape (ca3-v4-0316 b2e21447, eec34ac3): finalityActive decides paused when present, the node's "paused: " prefix dropped from the sentence, heldBy not repeated when the reason names the table, timestamp_source header | chain_block, a null vote_key_hash reads as empty; tests on the node's exact words
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit b43d329d10)
2026-10-06 23:19:08 +00:00
igneum-labs
740c35783e Finality pause (0.3.16): the node lane's structured carrier on igneum_getProvingStatus (finalityReason, finalityProvisional, heldBy {tableIndex, stayersShareBps, expiresDaa}, pausedSinceMs) read on the 30-s RPC cadence; the node's pausedSince wins over the engine's own; state.finality.provisional and cause_source; the log line and "finality resumed" kept; tests with the node lane's field names
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit a7b5ecccf0)
2026-10-06 23:19:08 +00:00
igneum-labs
c1e3204481 publish-manifest.sh: the activation height check as a function with --self-test-height (the known-bad case 33000 against 201776, at the DAA, pending, unknown), the shape the shipper's 0.3.15 guard had; the public /api/live stays the source
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit e54a87bc44)
2026-10-06 23:19:08 +00:00
igneum-labs
39b8df93cd Horizon polish for 0.3.16: (Q4) fork_is_close treats a passed activation as not close (every update since the 0.3.14 manifest read it as 0 blocks away and skipped every guard), publish-manifest.sh refuses an activation height at or below the live DAA unless --allow-passed-activation; (Q83, Q84, Q2) the finality pause shown: state.finality.paused, paused_since, reason, held_by, line ("Finality paused since 18:39 UTC: under two thirds of the weight is signing", the node's cause when it carries finality_reason/held_by), on the node line, the Overview's state and the Finality card, no lock called final while paused; tests
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit e5e1e92e37)
2026-10-06 23:18:34 +00:00
igneum-labs
447cd019b9 Updater (0.3.16, Horizon frontier lane): nothing installs while the network's finality is paused (a synced node with no checkpoint lock for 15 min); the update card reads "waiting for finality"; only the signed manifest's own urgent flag installs through a pause, a fork-close or unsupported urgency does not; slot, catch-up and patience rules unchanged; the known-failed case tested
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 700312688a)
2026-10-06 23:18:16 +00:00
igneum-labs
4e4b1fab15 Ember for Miner UI 4 (0.3.16): state.mining.watts_total and pounds_per_day (the fleet's fresh draw, the price from settings), state.address.balance_wei with balance_age_s and balance_note (eth_getBalance through the node's RPC every 30 s), state.address.price_gbp_per_ign null with its one documented source (a signed manifest field); GET /api/live from a local source (src/live.rs: igneum_getRecentBlocks when the node carries it, else the public site's reply cached 60 s, source and age_s on every reply); tests
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 0276163301)
2026-10-06 23:16:29 +00:00
igneum-labs
98c1f05eff Publish 2 read-backs (0.3.17): a node on the app's ports is checked and said out loud (src/extnode.rs: chain id and consensus overrides over RPC; match = used and named, mismatch = 'Node not started: port N is taken', unknown = used and marked); api/state names whose node it reads (node.source, rules_check, port_note); the digest comes from igneum_getNodeInfo every 30 s (digest_source rpc | log) with the stdout line as the fallback; node logs pruned to the newest 10 per start; the Node details show whose node. Tests on decide and prune.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
172696bb26 shot_path and its test move from src/live.rs into src/server.rs beside the /api/shot route, so src/live.rs is ember-tune's file whole at the 0.3.17 merge
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
4793cca547 Miner UI 4 (b): a screenshot from the machine itself: POST /api/shot asks the window host over the SHOT line; the Mac host snapshots the web view, the Windows host captures through WebView2, both to <data root>/shots/; app-shot.ps1 plus a collect glob bring it back. 152 app tests on the box.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
24adda1025 ui-mock replays a captured machine's state and chain feed (IGNEUM_MOCK_STATE, IGNEUM_MOCK_LIVE); the fleet watts count mining and tuning cards only; PC 2's 0.3.16 state rendered in light and dark
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
6dd3c3686b relay: app-state-grab writes into the app's data root for a collect job (send.ps1 is not on every PC)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
5e3e6a1664 relay: app-state-grab playbook (two GETs of the installed app's state and chain feed, sent back through the relay; read-only)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
214333d5e6 N4: the test module imports the new helpers; app-shot-light take 3 (old headless mode, cwd fallback, Edge version and stderr in the report)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
116e767c0d N4, the app half (0.3.17): a frozen tip is never 'synced'; the miner's stall exit restarts the miner once and the node on the second; the Overview shows the tip age
engine::sync_decision_v2 gates the old decision on the watch line's tip_age_s (<= 120 s; -1 on an older node gates
nothing) and peers >= 1, with the cause word frozen | no peers | syncing | behind on node.sync_cause; the node state
reads 'behind' or 'no peers', never 'synced' on a tip that stopped moving. engine::is_stall_exit: code 45 or a
"STALLED '" tail line (the node lane, ca3-v4-0316); the first restarts the miner, the second since the node started
restarts the node and re-dials its peers (restart_node). The known-failed case is the first test: the old rule says
synced on a tip frozen 3,180 s with one peer. UI: 'Node behind · 1 peer · 133,000 blocks · last block 53 min ago'
with the cause line, 'Node no peers', the pill 'Node behind' in ember, the big button 'waiting: the node is behind
the chain'. 39 UI tests pass; the app crate's tests run on the box.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
d695948d2e relay: app-shot-light uses its own Edge profile and waits for the headless browser (the first run handed off to the user's Edge and wrote nothing)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
a9c3167802 relay: app-shot-light playbook (two light-mode screenshots of the installed app, GETs and headless Edge only, for the site's showcase card)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
d969588aac miner-ui-4: the Ember line with Ember Tune off no longer promises a start ('Tune starts one by hand'); the 0.3.16 live-app screenshots (read-only, miner paused)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
011443a76f miner-ui-4: the numbering (0.3.16 = the corrective cut of 0.3.15; the engine-field pinning ships as 0.3.17)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
a621a04b29 miner-ui-4: 'you' matches the 0.3.16 engine's head6..tail6 lane key and the site's 8 hex against the cards' vote-key ids (6 hex of common head); the test file's duplicate const fixed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
93c530d0a1 miner-ui-4: 'you' on the chain scene matches a lane key of any length against the cards' 8-hex vote-key ids (the 0.3.16 engine's live.rs keeps 12 hex, the site 8)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
d0c98db2fa miner-ui-4: pinned to the 0.3.16 engine fields (ember-tune 7003126): watts_total, pounds_per_day, balance_wei with its age and note, price_gbp_per_ign, tune_floor, the chain scene's source word
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:29 +00:00
igneum-labs
0750b2bb35 Merge commit '85c712f' into release-0.3.17 2026-10-06 23:13:57 +00:00
igneum-labs
568395b78b Ember plan: 0.3.15 took ember-tune at 441d1ea (merge 02627f3); card.tune_floor (1f0f784) rides the next cut
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 6e8a64d1a3)
2026-10-06 23:13:48 +00:00
igneum-labs
741424dfce Ember for Miner UI 4 (0.3.16): card.tune_floor (the chosen clock is the ladder's floor), persisted as CardPref.sweep_floor
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 1f0f7849db)
2026-10-06 23:13:47 +00:00
igneum-labs
9d162e4302 override-60x.json: the duplicated exec_restart_state_root from the merges removed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:13:42 +00:00
igneum-labs
ced26f4e4e Merge commit 'e39d966' into release-0.3.17 2026-10-06 23:12:13 +00:00
igneum-labs
690e7dc12a Merge commit '1065b81' into release-0.3.17
# Conflicts:
#	.github/workflows/ci.yml
2026-10-06 23:10:56 +00:00
igneum-labs
b8010abf82 Merge commit '1e9ddb4' into release-0.3.17
# Conflicts:
#	docs/bench-log.md
2026-10-06 23:10:27 +00:00
igneum-labs
6084a7ea64 Plan: owed rows from publish 2's read-back (the Mac app's port collision, the node's digest line in the app log, the box's 26611, the safe-moment hold)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:06:06 +00:00
igneum-labs
708b1e0fc8 Plan: publish 2 as run (the sixteen-field object, digest eada4bda, every node moved, the vote open)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:04:35 +00:00
igneum-labs
e39d966840 latency ladder: the step2 harness case passes on all 18 checks; the four runs' summaries and logs under docs/design/latency-ladder-harness
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:58:39 +00:00
igneum-labs
770eca9daf latency ladder design doc: the no-step case passes (5,833 bps weakest of seven holds rung 0 over 10 epochs)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:47:54 +00:00
igneum-labs
057b489107 latency ladder design doc: the test lines and the first two harness results (the known-failed case fails, the step case stepped at epoch 8; the two harness faults named)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:38:20 +00:00
igneum-labs
0bc7681875 igneum-pow show: --shadow-reps reaches the show path too (the step case's id check, 22:37Z: the CLI printed the rung-0 id for --shadow-reps 35 because show built its program without the rung; the three miners' rung-1 ids agreed with each other and differed from rung 0, as the chain requires)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:37:56 +00:00
igneum-labs
85c712f01a bench log: Devnet 2 zero program-id class closed (paidSegments 4 at 22:28Z)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:31:16 +00:00
igneum-labs
d33fa30f89 Plan 0.3.15: the live retry and the forced poisoned-peer confirmation in the gate table
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:30:19 +00:00
igneum-labs
1e8bcf7cb1 Plan: the 0.3.17 merge rule names ember-tune d5f236a (the helper's wire-sequence fix)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:30:05 +00:00
igneum-labs
b3cd2d21f4 Plan: the 0.3.17 merge rule names miner-ui-4 57bb4f7 (N4's app half with the node lane's miner half)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:29:37 +00:00
igneum-labs
c4d29c58fd Plan: wallet 0.1.5 published, publish 2's floor a week past publish
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:28:05 +00:00