igneum-labs
3ab752d117
0.3.17: the node pin at b49c58c1
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 00:32:39 +00:00
igneum-labs
f51144970b
Plan 0.3.17: 812c3ac2 (the silence read fixed, replay gate green) rides 0.3.18
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 00:31:31 +00:00
igneum-labs
25e2b0b539
Plan 0.3.17: the Linux-by-glibc rule (HiveOS 2.31 from the build-server lane, seeds 2.35; the HiveOS row waits)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 00:27:48 +00:00
igneum-labs
95aa5f5dac
build-dmg: a DMG never ships without the prover pair (the warning branch built a 0.3.17 DMG 18 MB short)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 00:25:32 +00:00
igneum-labs
85d3ebc7fb
Plan 0.3.17: the fork gate's green line (aa0182aa rides 0.3.18; the switch is at never)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 00:16:21 +00:00
igneum-labs
b5daa3a2b4
Igneum Miner 0.3.17: the class v4 vote's seven-window rule and the node's new switches (every one off on the devnet), igneum_getNodeInfo, the miner's stall guard, Ember's helper fix, the Overview's node source, an external node that goes away hands the ports back
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:46:27 +00:00
igneum-labs
8df47f6c21
Plan 0.3.17: exec-sync-0313 40fd8d8c in; the final node tree 02d15a87
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:45:55 +00:00
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