Commit graph

180 commits

Author SHA1 Message Date
igneum-labs
6bb83f5b36 The wallet's History row: a recovery lock reads "finalised (recovery lock)", never plain final (review B F04, the founder's ruling)
The node lane's lockKind word for a transaction under a recovery lock ("finalised by a recovery lock") reads on the
row as "finalised (recovery lock)" with the why: the surviving majority's lock after a long pause, not a certified
checkpoint, not yet verified here. Known-failed first on build-2 (the word fell through to the label); 22 wallet UI
tests green. Until the node carries the field the pause word stands (wallet-words-20).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 19:17:13 +00:00
igneum-labs
ffdb709bbf The wallet's History row: a block under a locked checkpoint is finalised even in a pause; the window audit records the founder's v2.0.1 calls
docs/spec/finality-guarantees.md section 9: one vocabulary, included, executed, proven, finalised; the network's pause
is the network's word, never a transaction's. The wallet's History row read the node's "finality not active" word for a
transaction under a locked checkpoint while finality was paused; it reads "finalised" now, with the pause in the why
("under a locked checkpoint, not yet verified here; finality is paused on the network above it"). Known-failed first on
build-2 (view.test.mjs: the row's word and the vocabulary set); 21 wallet UI tests green.

docs/design/app-audit-2026-10-08.md gains section 7: the founder's reversals and additions for v2.0.1 (the Cards tab
back, the first-block card once per address, the four words, one positioning line, the watchdog's waiting words), each
with where it lands (branch cards-201 on release-2.0.1; this branch for the wallet).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 17:27:45 +00:00
igneum-labs
03b7bf05a1 Class v6 floor lane 4: the RX 7600 (8 GB) measured on PC 1 (13.88 MH/s at 113 W, 8.14 microjoules, the card-in job 15:50 UK) added to the tiers table and the AMD estimates re-based on it; 10 of 10 on build-3
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documents-only replay of 394da98a9 (394da98a91) for the box mirror master
2026-10-08 15:04:38 +00:00
igneum-labs
611c3975f5 Class v6 floor lane 4: the sweep closed (20 rows, the 4060 Ti's class v5 stock row, the three cards not reached), sections 2, 6 and 8 regenerated; 10 of 10 on build-3
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documents-only replay of 2a8572e48 (2a8572e489) for the box mirror master
2026-10-08 13:41:15 +00:00
igneum-labs
f2d9d9f829 Class v6 floor lane 4: the 4070 balanced row above its efficiency row (10 of 10 on build-3)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documents-only replay of 25cf4f33a (2a8572e489) for the box mirror master
2026-10-08 13:41:14 +00:00
igneum-labs
fe1935896c Class v6 floor lane 4: the 3060 and 4070 class v5 stock rows measured (the 4070's lock takes 34 percent of its class v5 draw)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documents-only replay of 82f1580ef (2a8572e489) for the box mirror master
2026-10-08 13:41:14 +00:00
igneum-labs
7c87d54d61 Class v6 floor lane 4: class v5 stock watts measured on the 5080, 4080, 4090 (250 W host cap), 5060, 5060 Ti, L40S, 3080 (cap-bound twice); the estimated knees re-based on them
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documents-only replay of 43135de87 (2a8572e489) for the box mirror master
2026-10-08 13:41:14 +00:00
igneum-labs
377c89fbea Class v6 floor lane 4: the first sweep's stock rows (5080, 4070, 3080, 3060) in the tiers table
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documents-only replay of 05b95df3f (2a8572e489) for the box mirror master
2026-10-08 13:41:14 +00:00
igneum-labs
876ccc1975 Class v6 floor lane 4: the 3090, H100 and A100 class v5 stock rows measured (the denominator sweep, 13:25 UK), stock with the lock owed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documents-only replay of af23bd60e (2a8572e489) for the box mirror master
2026-10-08 13:41:14 +00:00
igneum-labs
43c94502ad Class v6 floor lane 4: floor lane 1's stock rows taken (the 4090 and H100; the occupancy knob 1 to 2 percent), the class v5 watts driver and the memory-clock try (box-cardbench-v2m.sh) on 16 card classes in parallel
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documents-only replay of 2b7cafee1 (2a8572e489) for the box mirror master
2026-10-08 13:41:13 +00:00
igneum-labs
00744e5fdf Class v6 floor lane 4: the class v5 tiers table the app can read (app/igneum-app/tiers/class-v5-tiers.json in the tier_from_json shape: 30 card classes, 5 measured, the re-measure rule on a class flip; the validator and node test, 10 of 10 on igneum-build-3)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documents-only replay of 4a9d3e2d8 (2a8572e489) for the box mirror master
2026-10-08 13:41:13 +00:00
igneum-labs
967ebc555a The wallet line's text under master's founder scrub: the name replaced in the README, updater.rs's comment, the three wallet plan documents and the capture script (the files predate the scrub; the facts stay)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 11:36:47 +00:00
igneum-labs
ba9319f84b Merge master into wallet-bridge (the wallet's line meets master for the landing of the page bridge)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

# Conflicts:
#	packaging/ota/publish-manifest.sh
#	site/index.html
#	site/wallet.html
2026-10-08 11:33:30 +00:00
igneum-labs
f3c2f7800a Igneum Wallet 0.1.6: the page bridge (main's order of 8 October 2026: igneum.network/swap connected any injected wallet, the Igneum Wallet signed only inside its own window). The engine listens on a fixed loopback port, 127.0.0.1:26811 (src/bridge.rs, igneum_common::http::serve_on), beside its token-guarded window server; a page's provider (site/wallet-provider.js: window.ethereum when nothing is injected, window.igneum beside MetaMask, announced through EIP-6963) POSTs JSON-RPC there with the X-Igneum-Bridge header (a preflight first; the private-network allow header answered) and polls a request the window has to answer. Rules: a site is approved once (eth_requestAccounts raises a connect request; Approve in the window stores the origin in the settings, Decline or five minutes ends it with 4001); every other method from an unapproved origin answers 4100 and creates nothing; eth_sendTransaction (priced by the node: gas with the call's data, the fees, the balance check), personal_sign (EIP-191) and eth_signTypedData_v4 (EIP-712, src/eip712.rs, the specification's Mail vector) each wait as their own request, shown with the origin and the facts and confirmed in the window (Touch ID or Windows Hello when enrolled, the same gate as a send); after a transaction the card keeps the node's word and the checkpoint this wallet verified; reads go to the wallet's node for a connected site; wallet_switchEthereumChain accepts the wallet's chain and refuses another with 4902. Settings: a Websites card with the switch and the connected sites (Disconnect); the lock screen says which site waits. Known-failed first: a page without approval gets nothing (bridge::tests::a_page_without_approval_gets_nothing, the view and provider tests on build-2 before the files existed). Tests: bridge.rs (4), eip712.rs (3), tx.rs (the digest signer recovers), ui/view.test.mjs (the words), site/wallet-provider.test.mjs (5). Versions 0.1.6 in the three places; rust-toolchain.toml taken from master so cargo on the Mac reads the pinned 1.99.0.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 11:13:27 +00:00
igneum-labs
16839685e4 Merge build/master c862a233 into ca3-v4-amend (the ledger keeps both sides) and the AP-F8-4 ledger row (the program id derivation text; igneum-pow against a5d735b2 differs in the recipe refactor, the exporter's print and the new test only; program.json outside the digested pack bytes) 2026-10-07 22:11:07 +00:00
igneum-labs
a0751feb43 Ember Tune: the core-clock knob (0.3.24, main's order of 7 October 2026): the clock ladder continues below 45 percent in 100 MHz steps to a 20 percent floor; the search stops at the knee (the first row more than the tolerance under the cap point's rate) or on a faulted row (a rejected or mismatched hash: the fingerprint check), the best MH per watt within tolerance is the point; lock_result and the card's lock_* fields for the UI; tests known-failed first on a fake helper
ember.rs: CLOCK_FLOOR_PCT 45 -> 20 (the PC 1 passes of 7 October: the 5090's best MH/W at 1,200 to 1,300 MHz, 39 to 42 percent of 3,090, under the old floor), CLOCK_FINE_STEP_MHZ 100, Plan.clock_fine, Plan::cap_row, Plan::clock_stop_reason ("rate fell 5.2 percent at 1200 MHz", "fingerprint mismatch at 2163 MHz, clocks reset", "the floor at 700 MHz"), the stop rule in Plan::next, LockResult + lock_result (lock_mhz/mhs/w/mhw, unlocked_mhs/w, lock_note; "no lever" without a clock maximum). state.rs: CardState lock_mhz, lock_mhs, lock_w, lock_mhw, unlocked_mhs, unlocked_w, lock_step, lock_steps, lock_at, lock_note. engine.rs: sweep_finish fills them (Baseline: "no lever" on Apple or without a maximum clock), the progress tick fills lock_step/lock_steps while a clock step runs. Tests: the ladder to the floor (2,781 .. 1,390, 1,300 .. 700), the knee at 1 and 1.5 percent on the measured 5090 rows (1,854 and 1,300 as the points), a Faulted clock row ends the search and the note says so, and the Run-level fake helper: a mismatch during 2,163's hold -> the row Faulted, no next step, the final Apply is the chosen 2,472 (the reset), Finished; the existing full-plan test updated to the stop rule. The 18 Ember tests green on box 2.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 22:08:34 +00:00
igneum-labs
406149e979 Merge build-server c4d7fbb6 (the spawn-check fix) into the landing 2026-10-07 21:41:24 +00:00
igneum-labs
c4d7fbb66d jobrun tests: the banned cmdlet name is assembled in the prelude test so the windows-spawn gate does not read the assertion as a spawn
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 21:41:00 +00:00
igneum-labs
69e5de2d6e Merge build-server a3f15d28 into master on the box mirror: lease pool classes and pre-emption, the runner prelude, the manifest digest guard, the inline-rm gate, the site deploy checks, cloud-sweep, forgejo (tools/ci conflicts resolved as the union of both sides)
# Conflicts:
#	tools/ci/README.md
#	tools/ci/pre-push.sh
2026-10-07 21:34:58 +00:00
igneum-labs
807ecd5989 Job runner: the detached-helper prelude (main's rule, 7 Oct 2026 21:3x BST, from the 0.3.22 take 2 fault): every PowerShell job gets Start-IgneumDetached ahead of its script, which starts a hidden PowerShell through Win32_Process.Create (Invoke-CimMethod; a one-shot scheduled task as the fallback) outside the job's tree, prints RESULT detached pid, and never uses Start-Process (the known-failed shape, asserted by the test; jobrun::tests green on build-1). Also: forgejo.sh container check without ps|grep; devnet3.conf IGNEUMD at the 0.3.23 hands pair (the 21:30Z move)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 21:33:37 +00:00
igneum-labs
7355d53fde Pre-public scrub, the text pass (7 October 2026, 19:5x UK): no founder name, personal login, earlier business or personal address in any tracked text file, and a gate check that keeps it so
The sweep (main's item 1): 199 tracked text files, 783 lines. The founder's full name, first name and possessive become "the founder" (sentence starts capitalised); the lowercase operating-system user name in WSL paths and commands becomes <user>; the second owner login becomes "the second owner login"; the three earlier businesses and the two other brands become "the other business", "the earlier entity", "the earlier business" and "another brand"; the Chrome profile rule names the igneum.network profile, not the profile's label. The standing commit login igneum-labs is not a founder term here: the fresh-repository step renames it in the history (docs/plans/history-rewrite.md, tools/repo/fresh-repo.sh).

The patterns never appear in plain text in the tree (a plaintext list would be the hit): tools/ci/founder-strings.b64 (perl regex, tab, a sample per row) is read by tools/ci/founder-strings-check.sh (every tracked text file, perl, known-failed first: the self-test plants each row's sample in a fixture and the hit must name the file), by tools/community/discord-hooks.mjs (the guard's founder and business rows; the test takes its fixtures from the samples) and by tools/repo/fresh-repo.sh (the business names of the rewrite rules). site/forbidden-strings.txt carries the same patterns as b64: lines, decoded case-insensitive by site/scrub.mjs and tools/ci/launch-gates-check.mjs (whose fixture now plants an encoded made-up name). The check runs in the gate's tree checks on every merge.

Not in this commit, by main's word: the 105 commit messages and 40 personal-identity commits that need the history rewrite (listed, not run), and the secrets found by gitleaks over the history (reported with owners).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 18:39:50 +00:00
igneum-labs
6ba44e51c9 Reproducible builds: SOURCE_DATE_EPOCH from the commit's author time, TZ=UTC and one fixed target path in every build path; self-test
Main's rule of 6 October 2026 from the 0.3.14 repro (docs/evidence/reproduced/0.3.14.md): prost's protowire.rs embeds OUT_DIR,
libmimalloc-sys embeds __DATE__/__TIME__, sccache hid both. lib.sh bs_repro_env exports SOURCE_DATE_EPOCH=<author time> TZ=UTC in
front of every remote command (build-remote.sh, cross-remote.sh, workers-remote.sh); remote-run.sh exports BR_SDE too and logs it
as source_date_epoch; proto-cuda/windows-node/cross-build.sh exports the same; the PC job carries node.commit_time in the manifest
(push-build-inputs.sh) and exports it before every cargo build of a stage (jobbuild.rs, unit test asserts it; 4 of 4 pass on the
box). Target dirs stay one fixed path per target. tools/build-remote.sh --self-test-repro [--full] from a fork worktree, run on
the box: igneum-miner twice a minute apart without sccache (RUSTC_WRAPPER=/usr/bin/env, an empty value is unset to cargo) MATCH
91e130f5..., a per-run target path differs (OUT_DIR shown); --full: kaspad with libmimalloc-sys recompiled a minute later MATCH
70219bc2..., without the epoch differs (__DATE__ shown).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:09:23 +00:00
igneum-labs
0720a81d77 no-secrets-check: a line marked no-secrets-ok: <reason> is a declared fixture; the wallet vault test's throwaway key marked
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 19:33:02 +00:00
igneum-labs
a5f053f0ad Igneum Wallet UI 3: the wallet on the miner's system (audit, design, build, site)
The audit (docs/plans/wallet-ui-3-audit.md, 24 before-captures), the design (docs/plans/wallet-ui-3.md) and the
build: five sections in the miner's rail (Home, Send, Receive, History, Settings), the balance first with the money
line ("no market price on devnet: coins have no value" until price_gbp_per_ign exists), one node line with Details,
Send confirmed in place with the fee behind Details and the pending row after, Receive with the address box and the
QR, History with the node's ONE state word per row (pending, included, executed, proven, finalised; the wallet's own
verified final wins; failed from the receipt) and a reason line, Settings as plain rows (Security, Backup, This
machine with Appearance, the Igneum Wallet update card, Node with the endpoint, Advanced with the remove ask), no
dialogs, dark and light, a bottom tab bar under 720 px. The Rust engine is untouched: the node words come from the
existing GET /api/tx/<hash>. One Swift line removed so the window follows the Mac's appearance.

view.test.mjs (11) with lock-screen (5) and update-card (4): 20 pass. tools/ui-mock/wallet.mjs and shoot-wallet.mjs
(one niced headless chromium, closed after the batch). Result captures n00 to n24 beside the audit's, and the real
Mac window m00 to m06 from this worktree's engine on a scratch data dir with a throwaway wallet (deleted after).
Site: wallet.html and the wallet section of index.html on the shipped design; wallet-home.webp and wallet-final.webp
from the mock with example addresses.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:38:49 +00:00
igneum-labs
3155d375f4 Merge release-0.3.14: Igneum Miner 0.3.14 (exec-sync deep-reorg reload, miner-ui-3, ember-tune), publish 1 on the thirteen-field object
The node pin moves to 4c6b129d (release-0.3.14-node), which is what the live payload inputs carry, so windows-ci's payload-inputs step is green again (red since e9eca23 on master's 0.3.13 pin against the 0.3.14 inputs).
Conflicts: infra/fast-time/override-60x.json keeps master's side (the fresh-rule field was already there at u64::MAX; the release line would be a duplicate key); tools/ci/playbook-quit-check.sh keeps master's rule 2 and pre-rule list with the release side's Ember allow entry and the 0.3.15 expiry check.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:18:17 +00:00
igneum-labs
eb2301b68c Merge commit '711a12c' into ca3-pc1-amd
# Conflicts:
#	app/igneum-app/src/engine.rs
#	tools/ci/playbook-quit-check.sh
2026-10-06 18:10:29 +00:00
igneum-labs
6607e4d414 Counter ASIC 3.0 PC 1 AMD: the runner owns a job's card switch: --cards-off <key,key> (matched with or without the device index, switched through the app's card path before the script, restored exactly on any exit including the app quitting; report lines; two tests, igneum-app 114 of 114 on igneum-build-1); playbook-quit-check rule 2 fails any script that requests api/cards (pre-rule playbooks on a dated allow list)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:07:52 +00:00
igneum-labs
d6c4956403 Build server adopted: box-first build rule in CLAUDE.md, reproducible Windows exes, the commit-string gate, PC and Mac recipes
Main's decision of 6 October 2026. CLAUDE.md 'Running agents on this Mac': every Linux and Windows cargo build and every
Linux test suite goes to igneum-build-1 through tools/build-remote.sh and tools/cross-remote.sh; the PCs keep GPU and
Windows-runtime jobs; the Mac keeps macOS binaries, the DMG and Metal tests under the lock. -Wl,--no-insert-timestamp in
cross-remote.sh, proto-cuda/windows-node/cross-build.sh and jobbuild.rs (two box builds byte-identical, verified).
The empty-commit class: tools/ci/commit-string-check.sh (self-test in ci.yml, shown firing on a Mac worktree build and
passing on a box build) runs on every igneumd from the three build scripts; push-build-inputs.sh adds node.commit_full,
the PC job writes a minimal node/.git from it at extract and cleans kaspa-build-info on a new commit (4 jobbuild tests
pass, run on the box); cross-build.sh refuses a worktree and cleans on a new commit. Plan: second worktree's clean build
1 min 18 s with sccache 604 hits of 993.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:50:39 +00:00
igneum-labs
8df4aa7800 release 0.3.14: merge exec-app-0314 5841c62 (the prover exports from one block below and seeds the exporter from the account dump; nothing claimed below the restart; the exporter; the fast-time file deduplicated)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:04:54 +00:00
igneum-labs
ac700130b5 release 0.3.14: merge ember-tune 8b86870 (the Measured wording for a baseline row; the helper's commands under its fixed folder)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:04:54 +00:00
igneum-labs
8b86870e28 Ember: every task command goes to the helper's fixed folder (platform::fixed_data_root, powertask::helper_dir, engine helper_cmd_dir): a scratch-root engine wrote under its own root, where the task never reads; test. The shipped-app window playbook: the installed app tunes itself through the task (AMD ladder, then the NVIDIA climbs), asked and watched over its API, never stopped
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:59:33 +00:00
igneum-labs
5841c62ece exec 0.3.14 app side on release-0.3.14: the prover exports from one block below and seeds from the account dump; nothing claimed below the restart; the harnesses
On 3f70f83, by hand, the app half of the exec fix (fork exec-sync-0313 1f59c5d0 is the node half):
- app/igneum-app/src/prover.rs: igneum_exportSegments [n-1, n] for a shard and [first-1, last] for a segment,
  never from 0 (on a restarted node the records below the restart carry zero roots and the exporter refused every
  cut, the fleet 16:02Z); exec_boundary() reads igneum_getExecStatus.restartNumber (or the startedFrom text on a
  0.3.13 node) and the prover claims no shard and no segment below it
- proving/igneum-prove/export: seeds the port from the export's preState (the node's account dump after the first
  segment), checks its root against the node's there and replays from the next segment; without a dump the
  restart-aware replay (execRestart) and the genesis replay stay
- tools/exec-sync/net.mjs (15 checks: the persisted state, the file, the wrong pin, another chain, the unreadable
  flag file, the account-dump cut) and tools/exec-sync/reorg.mjs (18 checks: a 300-block reorg from the ring and
  from the persisted generation)
- infra/fast-time/override-60x.json: the duplicate proving_v1 block from the 0.3.12 merge removed (the
  consensus-core test fast_time_60x_file_is_the_devnet_at_60x failed on it)
The three UI files are untouched (byte-equal to 3f70f83); the igneum-prove-r0 tree is not in this cut.

Green on this tip (6 October 2026): cargo test in app/igneum-app 28 + 8; node --test app/igneum-app/ui 35; the 13
CI checks of ci.yml that run on this Mac; tools/exec-sync/net.mjs 15/15 in 97.2 s against this exporter and the
fork's igneumd (IGNEUM_EXEC_BIN, IGNEUM_EXPORTER).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:59:18 +00:00
igneum-labs
6bc2ff58d1 Ember: a baseline (measure-only) result's row reads Measured, not Tuned; the event line no longer doubles the words; test; next-cut table row
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:56:24 +00:00
igneum-labs
13a4fd4db0 release 0.3.14: merge ember-tune 4a22a2b (the engine commits 0aea6e8, c896a44, eaaa736 and the helper repoint: task_exe prefers the installed exe; a power step on a card with no limit readback is skipped)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

# Conflicts:
#	app/igneum-app/ui/app.js
#	app/igneum-app/ui/index.html
#	docs/bench-log.md
2026-10-06 16:54:36 +00:00
igneum-labs
c896a44939 Ember: a power step on a card with no limit readback (AMD through ADLX reports an offset, never watts) is applied on the acknowledgement; run 6 aborted the 9070 XT's ladder at its first step on "card reports 0 W"; test
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:43:26 +00:00
igneum-labs
0aea6e8fce Ember run 6: the helper registered on the scratch copy, so task_exe prefers the installed exe for every path that is not itself an install candidate, and the helper gains a reregister verb (no path argument; re-points the task at the install folder it finds itself, logs the action read back); the clock ladder and floor go to 45% with the 1% rate tolerance as the guard; a chosen point on the floor says floor, not optimum; the 5090 row (84 W saved for 0.15% of rate) on the fleet page; the re-point and no-prompt proof playbook; run 6 notes, threat note, bench log
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:35:03 +00:00
igneum-labs
74134166ad release 0.3.14: merge miner-ui-3 52f2acf (index.html, app.css, app.js rewritten; the engine untouched)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:22:01 +00:00
igneum-labs
52f2acfc34 miner-ui-3: the card row is the product (audit, design, build)
The audit (docs/plans/miner-ui-3-audit.md, 27 screenshots): no money anywhere, three red n/a per Apple row,
tuning split across two pages, 370 px of controls per card, Prove's 95 words and four zeros, Node's eleven
numbers, the jobs table on every Updates page, fixes two taps away, no light mode, no layout under 900 px,
developer lines on user surfaces.

The design (docs/plans/miner-ui-3.md): four sections (Mine, Earnings, Prove, Settings); the card row carries the
state word with its reason, MH/s, W with MH/W, £ a day at the user's electricity price, °C, Tune, the switch,
and its details under a chevron (cap slider, identities, pin, telemetry, the tune table); the tune line per row
(not tuned yet / tuning: step k of n with a bar / tuned N ago · point · next check <weekday> / measured only and
why / pinned / stopped / fleet pause); Tune all; the goal (Efficiency, Balanced, Maximum) with its £ a day; Power
control as one switch where it is the fix; the node as one line with Details; updates as one card; earnings money
first, IGN second; proving as a tier sentence per card; every costly action confirmed in place (quit, change
address, show key, trust mode), no dialogs; light and dark; a bottom tab bar under 720 px.

The build: index.html, app.css, app.js rewritten on the same engine routes; the pure blocks keep their API and
carry ember-tune's tuneNotice, tuneWord, toggle states and tune-line test (e9738dd) so the merge is clean; the
update card is named Igneum Miner; the Rust side is untouched. node --test on the four UI files: 35 pass.
Screenshots of the result: docs/plans/miner-ui-3/n00 to n26.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:19:53 +00:00
igneum-labs
2c254d41d9 Ember 2: the plan's section 6b (the clocks, the hill-climb, the goal, the price, the curve, the fleet prior, what is owed); Settings: the goal, the electricity price, the climb switch; the card detail: £ a day for the tuned point and the measured curve; UI test
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:56:22 +00:00
igneum-labs
c1fd40ea70 Igneum Wallet 0.1.5: the three version files (the 0.3.14 node and the thirteen-field consensus object bundled; the wallet's node peers again)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:56:07 +00:00
igneum-labs
c36705f846 wallet 0.1.5: merge release-0.3.13 (the 0.3.13 tree under the wallet app: igneum-common, packaged-config, the ten-to-thirteen-field objects)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

# Conflicts:
#	.github/workflows/ci.yml
#	.gitignore
#	docs/bench-log.md
#	packaging/README-ship.md
#	packaging/mac/packaged-config.sh
#	packaging/ota/publish-manifest.sh
2026-10-06 15:54:57 +00:00
igneum-labs
1736d4a3ac Igneum Miner 0.3.14: the six version files (node-only: the exec layer survives a deep reorg and a moved pruning point)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:54:14 +00:00
igneum-labs
d4208f9c40 Ember 2: the climb's tests (a synthetic memory-bound card converges in five probes; a refused probe backs the knob off for good; each goal picks its point; the £/day formula) and the fleet prior carrying the memory clock (climb records aggregate)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:50:34 +00:00
igneum-labs
fb07429719 state: tune_period_s on the settings state (the manifest's period), so the UI derives the next tune from sweep_at
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:48:44 +00:00
igneum-labs
c4a21d6afd The one approved Power control step on PC 1 failed with exit 1 (15:45:21Z, no cap applied, no helper registered): cmd.exe strips the first and last quote of a /c line that starts with one and holds more than two (two NVIDIA cards, or a cap plus the registration script); both launchers now wrap the line in one outer pair (platform::cmd_c_args, host.cpp runElevated), unit-tested; Ember 2: the memory clock set through nvidia-smi -lmc/-rmc (direct and through the helper's lmc/rmc verbs), the goal, the electricity price and the hill-climb switch in Settings and /api/tune/goal, the chosen point's memory clock and the measured curve on the card
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:48:14 +00:00
igneum-labs
db0c17b95e Run 5 (15:28 to 15:39Z): the 5090's five power rows in the bench log (the cap does not bind: 0.41 MH/W flat at 310 W); the playbook's watchdog killed the live three-card tune at the first clock step, so: idle = three consecutive status lines reading 0.00 MH/s and 300 s, never a missing match; the after snapshot and the engine-log dump on every exit; an elevated tune engine registers the Igneum Power Helper itself before its first step (the --sweep engine skipped the cap path where the registration lived); Ember 2 groundwork: the memory-clock knob in Point and Limits, the goal, the hill-climb plan (not yet wired to the engine)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:44:06 +00:00
igneum-labs
7a6c9bce9a A card never shows 0 MH/s without a reason word (the project lead, 6 October 2026, watching PC 1 during the table run): the Mine row reads 'tuning: step k of n · measuring W W' with the live rate, 'held for a remote job: <title>' while a job holds the miners, and the Tuned line at the end; the big button reads 'Tuning, mining again in about N min'; the strip carries one tune line; a measurement engine prints a TUNE progress line every 10 s and the playbook forwards it (and TUNE chosen as done) to the installed app's POST /api/tune-progress, a post of state, never quit, pause or resume; the rule in ember-tune.md 6a; UI tests for the three states
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:36:07 +00:00
igneum-labs
59b237ac92 powertask: a kit run from a jobs folder registers the INSTALLED exe as the task's action (the 15:28Z run on PC 1 registered jobs\ember-kit-5\igneum-app-ember.exe); the playbook uses a kit only on an app that predates Ember Tune
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:30:42 +00:00
igneum-labs
2c1305e95d ember: a registered Igneum Power Helper task counts as permission for the tune (an unelevated measurement engine, Power control forced off, still sets NVIDIA limits through the task with no prompt)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:11:37 +00:00
igneum-labs
fc55311b46 Merge master 47da68c into ember-tune (0.3.12's version files and the proving-v1 app merge; my own 3afb051 came back as 36c894b) 2026-10-06 15:03:37 +00:00