Commit graph

899 commits

Author SHA1 Message Date
igneum-labs
2f528ebed3 ember-tune-pc1.ps1: a fresh scratch root per run (run 3 at 11:45Z: the folder an earlier elevated engine had locked refused the settings copy, the engine exited in 6 s on stale files), the installed engine preferred from 0.3.12 on, the address guard hard
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 11:47:08 +00:00
igneum-labs
34335763c3 ember-tune-pc1.ps1: budget 45 min (two NVIDIA cards, 19 steps)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 11:44:58 +00:00
igneum-labs
c9eb7d3a58 make-payload.sh: the AMD telemetry helper is taken from the unpacked inputs on CI (the worker glob missed igneum-gpu-telemetry.exe, so the 0.3.12 payload of run 37435975425 lacked it)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:34:41 +00:00
igneum-labs
3afb051727 app: every elevated launch through one hidden-console builder; CI check for Windows spawns; PC 1 console watchers
The console-window class (the project lead, 5 October 2026: "Windows Command Processor" windows on PC 1 whenever a remote job runs).
Measured on PC 1 (ae432dc7, Windows 11 Pro 26200, default terminal "Let Windows decide" = Windows Terminal 1.24) with
tools/windows/console-watch.ps1 (job run-20261005-182528): no child a job script starts from the app's headless
console opens a window (powershell, cmd, query, curl, nvidia-smi, wsl --status, a distro, interop cmd and powershell,
powershell -WindowStyle Hidden: 0 windows each); Start-Process in a new console opens a Terminal window (the known-failed
case: 2 windows), the same with -WindowStyle Hidden opens none (the known-finished case). The elevated path
(Start-Process -Verb RunAs -WindowStyle Hidden through the AppInfo service) is the one road left; its watcher
(console-watch-elevated.ps1, job run-20261005-184610) was cancelled at the UAC prompt.

- platform.rs: elevated_ps_line + elevated_command build the one PowerShell line every elevated launch uses (the NVIDIA
  power cap, the sweep helper, the clock sync, an elevated remote job), -WindowStyle Hidden by construction; unit
  tests on the line, the quoting and the Command.
- jobrun.rs: the elevated job path uses it; the relaunch helper's Start-Process carries the reason it has no
  -WindowStyle Hidden (igneum-app.exe is a windows-subsystem program).
- tools/ci/windows-spawn-check.mjs (+ ci.yml): fails when a Command::new in app/igneum-app/src is not quieted,
  a creation_flags is not CREATE_NO_WINDOW alone, a Start-Process the Rust code writes lacks -WindowStyle Hidden or
  -NoNewWindow, or host.cpp spawns without CREATE_NO_WINDOW / SW_HIDE; self-test on known-good and known-bad samples.
- tools/windows/console-watch.ps1, console-watch-bg.ps1, console-watch-elevated.ps1: the watchers (run jobs).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:21:46 +00:00
igneum-labs
59461cc020 Merge release-0.3.12 (aac607c) into ember-tune: 0.3.11's six-section View and card order kept, Ember Tune's line and switches re-added on it; the tune fields move into hotplug::apply_pref; the power-cap plan keeps present(); both CI test lists; 132 app tests, 26 UI tests, every gate green
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:20:46 +00:00
igneum-labs
aac607c25e release 0.3.12: merge hive-words: the bundled node takes the override from the Flight Sheet
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:17:02 +00:00
igneum-labs
3aa57acfe4 release 0.3.12: merge card-order: the GPU list by performance
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:16:26 +00:00
igneum-labs
70477589c8 release 0.3.12: merge update-catchup: an old update skips the hourly slot
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:16:26 +00:00
igneum-labs
cd1c459e21 release 0.3.12: merge proving-v1 app: paid_wei as a decimal string
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

# Conflicts:
#	docs/bench-log.md
2026-10-06 08:16:26 +00:00
igneum-labs
45eaa1ad60 app: an update published over an hour before the engine started skips the hourly rollout slot
PC 1, 6 October 2026 06:58:47Z: the app came up after the 0.3.11 publish, had the installer verified 44 s
later and sat on "installs at the next safe moment" with its slot at minute 35; the project lead pressed Install now at
07:00:48Z. The slot staggers a fleet through a NEW publish; a machine that was off through the publish has
nothing to stagger. Now: published_at + 3,600 s <= engine start => slot_ok, logged once. The other safe-moment
guards (node synced, miner idle, boundary, network drop) are unchanged. manifest::unix_from_rfc3339 with tests.
For 0.3.12.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:13:51 +00:00
igneum-labs
3e24a59d2a ember-tune.md: the next-cut note names the right commit
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:03:19 +00:00
igneum-labs
f4370f9112 a job that cannot mine never burns its budget silently: the elevated job path follows its output file while the script runs (the 5-minute progress reports carry the lines; 0.3.12), and the tune playbook's watchdog fails a run that mines nothing within 120 s of its first status line (the engine's last log line in the RESULT, the tree ended, mining restored by the runner)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 08:03:13 +00:00
igneum-labs
c277e6d937 bench log: run 2 (07:21 to 07:56Z): the BOM in the copied settings, no miner started, nothing set, mining paused 36 min 13 s, the hold released by the runner itself
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:59:21 +00:00
igneum-labs
ad2354cf6f playbooks: the scratch settings.json is written without a BOM (PowerShell 5.1's -Encoding utf8 adds one, the engine's JSON parser refuses it, the copy read as defaults with no payout address and nothing mined in runs 1 and 2); the address is read back and the job fails at once if it is empty; the CI check fails any playbook writing JSON with Set-Content -Encoding utf8
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:58:39 +00:00
igneum-labs
d448fe769b app: order the GPU list by performance (usable, discrete before integrated, rate in 5 MH/s buckets, memory)
the project lead, 6 October 2026: on PC 1 the integrated card sat between the 5090 and the 9070 XT. The list now shows
usable cards first, ordered by the measured rate since the start in 5 MH/s buckets (no flicker), discrete,
external and Apple before integrated, then memory; removed and unusable cards last; ties keep the detection
order. The row signature follows the order, so a reorder re-renders. Three UI tests. For 0.3.12.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:23:25 +00:00
igneum-labs
0645c23295 ember-tune-pc1.ps1: find the AMD helper under any amd-kit job folder
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:20:36 +00:00
igneum-labs
6ee8cf6d82 ember-tune-pc1.ps1: both cards stay on their best points (the project lead, 6 October 2026 07:25Z); no reset at the end
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:17:21 +00:00
igneum-labs
3a40210dd0 ember-tune-pc1.ps1: the copy runs with Power control off (the installed setting is read and reported, never a prompt: the project lead, 6 October 2026 07:20Z), the kit paths after the update, the AMD card reset to factory at the end
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:15:43 +00:00
igneum-labs
99053c92dc bench log: the 22:31 UTC installer run was a second install of 0.3.10 over 0.3.10 (PC 1 took 0.3.10 at 21:40:41Z through update-now), not how PC 1 got 0.3.10
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:03:26 +00:00
igneum-labs
6a27d5ab7d release 0.3.11: C35's cause on PC 1 and the ember-tune guard e600e63 in the next-cut list
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:03:10 +00:00
igneum-labs
55ab578208 C35 named: PC 1's 22:31 UTC quit was the per-user installer launched by the second engine's own updater (0.3.9 under min_supported_version = urgent, beating auto_update = false); a second engine never runs the updater (IGNEUM_APP_NO_OTA=1, implied by --sweep; the playbooks set it; the CI check demands it); bench log and plan carry the named source
Source: the scratch engine's own log in collect ember-c35-collect-1 (06:59Z): 22:31:02Z '0.3.10 is available: downloading',
22:31:05Z 'update: starting the installer first ... ota-apply.ps1', and the installed app's 'quit:' at 22:31:06Z.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 07:01:57 +00:00
igneum-labs
e4e972667b app: /api/state never answers {} again (paid_wei over u64::MAX broke to_value; the field is a decimal string, the error is logged once)
serde_json's to_value refuses a u128 over u64::MAX (18.45 IGN) and state_json turned the error into json!({}). A paid shard is 1.23 IGN on average, so a proving machine's dashboard went blank about 15 paid shards after every app start. Unit test over the boundary; 114 app tests pass.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 00:27:35 +00:00
igneum-labs
52226255b5 plan: the prover-floor agent's sweep 3 rows (the patched server proves the v1 shard at 10.3 GB on the 12 GB profile, 12.9 GB at 2^27; the 12 and 16 GB rows move from nothing to proves alone, the pairs pending)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 00:18:32 +00:00
igneum-labs
dd0c08515f release 0.3.11: the plan's merge and push section
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 00:14:19 +00:00
igneum-labs
048d50ab89 release 0.3.11: the plan's step 2, the digest sweep and the open items; sections in order
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 00:12:23 +00:00
igneum-labs
a9bfa3f3e2 release-0.3.11 plan: the push and both CI runs, step 1 (the hand nodes and the seed at 4d8f8bb6, the manifest with the override carried over, the Mac, PC 2 and its epoch-boundary recovery, the stall and the Mac's resume, the laptop), the next-cut list
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:56:46 +00:00
igneum-labs
f9e868f879 HiveOS: the bundled node takes the override from the Flight Sheet (C41)
The finding (release-0.3.11.md section 5): h-run.sh started the rig's node with --devnet --appdir
--rpclisten --listen and the peers and no --override-params-file, so a HiveOS rig in local mode ran
on genesis parameters, printed the no-override digest and was refused by every devnet peer; no
package ever carried the override.

h-config.sh: OVERRIDE=<json object> in the Flight Sheet's extra config, read as a whole line (JSON
may carry spaces; single or double quotes around it are stripped), refused unless it is {...},
written to igneum.conf single-quoted (sq helper; EXTRA gets the same quoting, the same class: a
value with shell characters sourced unquoted). Still sourceable (return, never exit).

h-run.sh, local branch: writes data/override-params.json from OVERRIDE when set and passes
--override-params-file=<that path> to igneumd; when empty, a WARNING in the main log that the node
runs on genesis parameters and devnet peers will refuse it. After the node answers, the switch
lines and the "Consensus params digest" line from node.log are copied into the main log as
"node: ..." so the operator can compare the digest with the downloads page.

README: the Flight Sheet table gains the OVERRIDE row with the four-field devnet object as the
example (nine fields after the 0.3.11 switch; the downloads page carries the live one), the rule
"set OVERRIDE from the downloads page when it changes", the sentence that a rig without it is
refused, the digest check in the requirements, and the gap entry. No "every override publish
needs a package republish" sentence exists in packaging/hive/README.md on this branch or master,
so nothing was replaced; the new rule stands alone.

selftest.sh: a fake igneumd that records its argv and prints the real digest line; OVERRIDE
single-quoted on its own line beside other keys round-trips through the conf; OVERRIDE=notjson
refused; empty OVERRIDE named in the summary; the main h-run run checks the file, the flag on the
node and the digest and switch lines in the main log; a second short run without OVERRIDE checks
the warning and the absence of the flag. bash packaging/hive/selftest.sh on this Mac:

== h-config.sh OVERRIDE
   OVERRIDE (single-quoted, own line) sourced back intact beside the other keys ok
   OVERRIDE that is not {...} refused ok
   no OVERRIDE: empty in the conf and named in the summary ok
== h-run.sh (fake GPUs: 2 NVIDIA, fake node, fake miner)
   data/override-params.json written from OVERRIDE ok
   the node got --override-params-file ok
   the node's digest and switch lines reached the main log ok
   NVIDIA cards got the cuda worker ok
   exit 42 restarted the miner and re-exported the pack ok
== h-stats.sh (sourced)
   stats JSON ok: hs [118500.0, 118500.0] temp [61, 58] ar [24, 0] bus [1, 2]
== h-run.sh without OVERRIDE (the warning)
   no OVERRIDE: warning in the main log, no flag on the node ok
== self-test passed (scripts and stats shape; Hive itself is untested)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:35:03 +00:00
igneum-labs
9f500d765b igneum-census: build against class v3 (Instr width/win/off, Program class/era_bytes, fetch layout, Scratch/Hot arms)
The ci run on b2a79ee (37387751432) failed in the census release build only; windows-ci was green.
The census generates the lottery hash's class, so every new field takes its v2 value and the two
experiment ops are unreachable.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:25:52 +00:00
igneum-labs
b2a79ee2f3 Windows payload inputs: node 89dfcb95 (push-inputs.sh, the PC 2 build, the class-aware workers, signed); release-0.3.11 plan: the PC 2 job
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:18:28 +00:00
igneum-labs
081094ec22 release-0.3.11 plan: the three digests on the 0.3.11 binary (4d8f8bb6 with the live file, measured), the two-publish order (C39, C40), the HiveOS package's missing override
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:15:20 +00:00
igneum-labs
a6e0e3f5b2 release-0.3.11 plan: the PC 2 job id, the rollout order as agreed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:10:03 +00:00
igneum-labs
9b4f5aaed2 release-0.3.11 plan: the relay's PC1 is the 1ccfe586 box (PC 2 restarted twice by my tasks, PC 1 unreachable until the morning), the combined PC 2 job, C38 complete
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:08:52 +00:00
igneum-labs
3c233a8fdf Merge ca2-coord (936f260) into release-0.3.11: the Counter ASIC 2.0 docs commits (N4 rows, gate cells, digests, rules, status; the five cited documents already in the tree)
# Conflicts:
#	docs/bench-log.md
2026-10-05 23:06:38 +00:00
igneum-labs
dd74b11a98 prover-floor: the three other PC 2 scripts test their kit file before the first use (C32)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:06:38 +00:00
igneum-labs
936f26089b Counter ASIC 2.0 status 23:05: C38 closed, the four branches merged into ca2-coord 2026-10-05 23:05:34 +00:00
igneum-labs
85c6176d3f ca2-coord: verify.rs and tests/scratch.rs set to the release tree's versions (408e1fa carries them through ca2-mixer), so the docs merge changes no shipped code 2026-10-05 23:04:59 +00:00
igneum-labs
8f2305f116 prover-floor: pc2-floor-sweep3-miner.ps1 tests its kit file before the first use (the kit-path check, C32)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:04:52 +00:00
igneum-labs
33620a755f Merge branch 'prover-floor' into ca2-coord 2026-10-05 23:04:46 +00:00
igneum-labs
3a7397ab76 Merge branch 'ca2-epoch' into ca2-coord
# Conflicts:
#	docs/bench-log.md
2026-10-05 23:04:46 +00:00
igneum-labs
75ce9953d0 Merge branch 'ca2-soundness' into ca2-coord
# Conflicts:
#	docs/bench-log.md
#	proto-metal/packbench.swift
2026-10-05 23:04:45 +00:00
igneum-labs
03f09d3739 ca2-soundness: docs/analysis/scratch-soundness.md alone (its code is already in the tree through the mixer merge; the branch merge conflicted there); release-0.3.11 plan: C37 and C38
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:04:38 +00:00
igneum-labs
e4810005e2 Merge branch 'ca2-analysis' into ca2-coord
# Conflicts:
#	docs/bench-log.md
2026-10-05 23:04:14 +00:00
igneum-labs
1e62f53950 Merge prover-floor (83cc77a) into release-0.3.11: docs and standalone probe sources the evidence rows cite (C38); nothing a built artefact reads 2026-10-05 23:03:46 +00:00
igneum-labs
93f49d33f4 Merge ca2-epoch (7427289) into release-0.3.11: docs and standalone probe sources the evidence rows cite (C38); nothing a built artefact reads
# Conflicts:
#	docs/bench-log.md
2026-10-05 23:03:46 +00:00
igneum-labs
c59d42b5e2 Merge ca2-analysis (d5c1e1b) into release-0.3.11: docs and standalone probe sources the evidence rows cite (C38); nothing a built artefact reads
# Conflicts:
#	docs/bench-log.md
2026-10-05 23:03:45 +00:00
igneum-labs
abcd75ff51 Counter ASIC 2.0 status 23:03: C38, the four analysis branches' documents and the two options 2026-10-05 23:03:33 +00:00
igneum-labs
f56d7a5f63 release-0.3.11 plan: the tree, the builds and tests so far, the override object and both digests, PC 1's hung engine and the relaunch, the next cut
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:02:07 +00:00
igneum-labs
e170973401 bench log + plan: C35 corrected (the quit was not the 0.3.11 update; what is established, the hang, the orphans, the prompt, the fixes)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:00:52 +00:00
igneum-labs
80ad843be7 Counter ASIC 2.0: ember-tune 8ab9068 on the next-cut list with the second-engine rule; status 23:00 2026-10-05 23:00:32 +00:00
igneum-labs
6e8a513f92 C35 class: a second engine gets no pipe (its output goes to a file the playbook tails) and its whole tree is ended at the end and on the budget; ember-tune-pc1.ps1 and sweep-5090.ps1 fixed; tools/ci/second-engine-check.sh fails any playbook without both; the rule in ember-tune.md
PC 1, 22:31 UTC: the installed engine's quit hung 24 minutes in the jobs runner's abort, waiting for EOF on the script's
stdout pipe whose write end the second engine and its miners had inherited (Process.Start with redirection inherits
every inheritable handle), while the orphaned miners mined on against the relaunched app.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 23:00:06 +00:00