Commit graph

225 commits

Author SHA1 Message Date
igneum-josh
c16af2cc2c 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 630b537 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 19:18:17 +01:00
igneum-josh
0396580a86 tools/ci/playbook-quit-check.sh: the executable bit back (lost in the rebuild on master's text) 2026-10-06 19:12:30 +01:00
igneum-josh
35776fef44 Merge commit '88f5026' into ca3-pc1-amd
# Conflicts:
#	app/igneum-app/src/engine.rs
#	tools/ci/playbook-quit-check.sh
2026-10-06 19:10:29 +01:00
igneum-josh
19c63c1b46 Counter ASIC 3.0 PC 1 AMD: the scripts stop switching cards (jobs 1, 2, 4 and the watts job read the card's state only; the runner's --cards-off at publish), the watts job split into the read-only control row in the app and the candidate row alone, the README's record of the 17:52Z death (the 0.3.14 relaunch under the job) and the rule
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 19:07:52 +01:00
igneum-josh
54557cc2e6 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 19:07:52 +01:00
igneum-josh
88f5026d41 Merge origin/master into ca3-coord: Counter ASIC 3.0 complete (every gate green, P2 green, P1 written); the drive-ref check skips single-quoted here-strings and the copied-sources check reads code lines only (master's CI red on 0dc4392); main's decisions and the close in the status file 2026-10-06 19:05:54 +01:00
igneum-josh
0dc43926f6 Merge workers-dash: the worker dashboard on the fleet URL (collector on igneum-build-1, Mac pusher, workers.html)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:59:54 +01:00
igneum-josh
d1036db7fb Worker dashboard: collector on igneum-build-1, Mac pusher, workers.html next to the fleet page (Josh, 6 October 2026)
tools/workers/collect.mjs runs every 30 s on the box (infra/build-server/workers/igneum-workers.{service,timer},
install.sh) and writes /srv/workers/workers.json from the machine itself: /proc/stat deltas per core, meminfo, df on
/srv, net bytes, hwmon temperatures, the flock state of /srv/builds/_locks, cargo processes with worktree, target and
start time, flock waiters, /srv/builds/_log/builds.jsonl (the format agreed with the build-server agent), sccache
--show-stats, headline.json. tools/workers/push.mjs (launchd every 60 s) adds the Mac's with-lock slots and waiters
and the two PCs' relay job states from the intake, drops them on the box so its file is whole, merges the box's file
and writes the fleet folder's workers.json; it deploys only when the live copy is over 6 min old, otherwise the
fleet orchestrator's 5-minute deploy carries it. The page (tools/workers/page/workers.html, shape.js) tries
https://build.igneum.network/workers.json first and falls back to the folder copy; core strip, arcs, now building,
queue, recently done with closing lines, headline timings, analytics; UK time with UTC tooltips; phone width.
node --test tools/workers/test: 13 tests over /proc/stat, lock dir, JSONL and sccache fixtures and the page shaping.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:59:07 +01:00
igneum-josh
7bd2943d8b Counter ASIC 3.0 PC 1 AMD: the amd:1:gfx1201 flag job (the entry back to enabled, as before the watts job) 2026-10-06 18:58:23 +01:00
igneum-josh
39ebba0ca5 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 18:50:39 +01:00
igneum-josh
16f5375502 Build server: remote-run.sh with the JSONL build log, benchmark plan docs/plans/build-server.md, commit hash in box builds
remote-run.sh runs on the box behind BR_* exports: slot, sccache stats, the RESULT line and one JSON line per run in
/srv/builds/_log/builds.jsonl (v 1, id, host, tool, worktree, crate, kind, command, target, branch, sha, label, agent, slot,
wait_s, queued_at, start, end, secs, exit, compiles, sccache, load_end, artefacts; written on success, failure and the 2 h
slot give-up), the label ending in '; agent=<name>' (IGNEUM_AGENT, default the worktree). The remote checkout is a branch and
build-remote.sh cleans kaspa-build-info (release profile) on a new commit, so the box's igneumd carries its commit hash
(no Mac worktree build does: .git is a file there). cross-remote.sh fetches the GCC 13 runtime DLLs beside an exe that
imports libstdc++-6.dll. The plan holds the three benchmarks: clean node build 1 min 27 s (Mac 12 to 18 min), incremental
7 s (Mac 2 to 15 min), Windows cross 1 min 44 s (Mac 4 min 49 s to 12 min 28 s), their consequences and the proposed rules.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:41:26 +01:00
igneum-josh
d3c069e74d Build server: tools/build-remote.sh, tools/cross-remote.sh, infra/build-server/{lib,run-from-mac}.sh
build-remote.sh runs a cargo command on igneum-build-1 from any crate directory of any worktree: HEAD through the bare
mirror (a real .git for kaspa-build-info), uncommitted changes by rsync --checksum with the written files re-stamped, a
remote slot (/srv/builds/_locks, never the Mac's), sccache, -j 90, artefacts back into target-remote/ with size and sha256.
cross-remote.sh is the Windows cross-build with the PC job's Ubuntu mingw-posix recipe plus the Mac's static flags, DLL
list and sha256 per exe, --compare against the Mac's exes. run-from-mac.sh ships provision.sh, writes
~/.config/igneum/build-server, adds the build remotes and pushes every branch of both repos. shellcheck and the CI checks clean.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:26:51 +01:00
igneum-josh
b33e28878f Counter ASIC 3.0 PC 1 AMD: family run e takes the 9070 XT alone (job 1's switch, process-list confirmation, per-entry restore in finally; the other AMD columns beside the miners after the restore); mm8 stays exact=unverified with the reason
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:23:22 +01:00
igneum-josh
5967d8bdd0 Counter ASIC 3.0 PC 1 AMD: the family script's probe parameter renamed (the automatic unbound-arguments variable shadowed it, so nothing was splatted); the CI check gains the rule 2026-10-06 18:12:18 +01:00
igneum-josh
5185e3b1f6 Merge branch 'ca3-pc1-amd' into ca3-coord 2026-10-06 18:05:54 +01:00
igneum-josh
f2cc980b13 Counter ASIC 3.0 PC 1 AMD: the identities job posts the app's cards-array shape (400 on the flat object) and prints the live lines from the caller (a function's output joins its return value) 2026-10-06 18:05:17 +01:00
igneum-josh
04d8940eb0 release 0.3.14: merge exec-app-0314 bfebff1 (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 18:04:54 +01:00
igneum-josh
eebf7f4b05 Counter ASIC 3.0 PC 1 AMD: run a's build failures classed by their log lines (amd_perm undeclared: no path on AMD; sudot4 and WMMA: RDNA 2 target-feature refusals, decided by run b on the 9070 XT)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:04:54 +01:00
igneum-josh
9988fee73a Merge branch 'ca3-pc1-amd' into ca3-coord 2026-10-06 18:04:35 +01:00
igneum-josh
82ea3e956e Counter ASIC 3.0 PC 1 AMD: the family probe picks the card by name on its newest platform (never ordinal 0; device name, CUs and platform on every row; refuses without a match), the family job run b with its own kit, the ordinal-0 fault and the AMD OpenCL C builtin finding recorded
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 18:04:07 +01:00
igneum-josh
f952ad30b4 Counter ASIC 3.0: the identities job's ${appDir}: fix and the class guard tools/ci/ps-drive-ref-check.sh in CI (a $name: inside a double-quoted string is a PowerShell 5.1 parse error; backtick-escaped dollars ignored) 2026-10-06 18:03:32 +01:00
igneum-josh
bfebff1b8f 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 220dc03, 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 220dc03); 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 17:59:18 +01:00
igneum-josh
bdf59ac810 Counter ASIC 3.0 PC 1 AMD: the identities job (one POST api/cards for the 9070 XT's live entry back to 8, the rate before and after; main's go 17:0x UTC) 2026-10-06 17:57:31 +01:00
igneum-josh
0c9cf5f19a playbook-quit-check: the three allow entries expire at 0.3.15 (the check fails the tree at 0.3.15 or later while they stand)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:55:49 +01:00
igneum-josh
b899030bc8 playbook-quit-check: ember-tune-pc1.ps1 and the two agg-cost playbooks allowed under a dated note (the coordinator's 15:30Z ruling; pending --stop-miners and the Ember playbook's rewrite)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:55:27 +01:00
igneum-josh
96f569f5c1 release 0.3.14: merge ember-tune c04a0da (the engine commits 200362a, bd7fcf4, 185c333 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 17:54:36 +01:00
igneum-josh
c38dfef6cd Counter ASIC 3.0 PC 1 AMD: the 9070 XT ADLX factory-reset job with the identities read, and the watts job revised to the app's path (control row from /api/state with the card on, the helper calibrated beside it, the candidate row alone through the kit worker with the calibration ratio)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:49:57 +01:00
igneum-josh
560f51c647 Counter ASIC 3.0 PC 1 AMD: G2 takes the class token from the pack (v4 for the generator-4 candidate), the G2 kit rebuilt from the merged tree, digests unchanged on the Mac, the wrong-token refusal checked
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:42:23 +01:00
igneum-josh
aa4e9e0df4 Merge branch 'ca3-v4-hash' into ca3-coord 2026-10-06 17:39:24 +01:00
igneum-josh
ca61dec382 Counter ASIC 3.0 gates (hash): follow-up 1 on the program-id fix (7c22d0d merged): crate suite 97 of 97, the seven v4 packs re-exported byte-identical (generator 4, id c120d7963abdcd96), fingerprints unchanged on Metal and Apple OpenCL, Mac G2 16 x 1,024 of 1,024 through the v4 class token, the harness 4 of 4 on the class and on the era with the id assert_ne holding; the job scripts take the class token from the pack
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:38:48 +01:00
igneum-josh
5314771910 Merge commit '7c22d0d' into ca3-v4-hash 2026-10-06 17:24:47 +01:00
igneum-josh
91574e0476 Counter ASIC 3.0 PC 1 AMD: gate G2 on the 9070 XT (the hash lane's form: found lines to g2-<pack>.found, count and sha256 per pack, digest_match against the verifier's digests derived on the Mac), the G2 kit maker with the chain-seed packs, README rows
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:22:01 +01:00
igneum-josh
5cf1edc38b Merge commit 'b7cd99e' into ca3-pc1-amd 2026-10-06 17:19:48 +01:00
igneum-josh
b7cd99ee26 Counter ASIC 3.0 gates (hash): the G2 job writes its found lines to g2-<pack>.found and prints the count and sha256 (no found line in the report, every RESULT line inside the cap, the log and collect glob named); tools/ca3-v4/g2-recheck.sh derives the digest from hash-bound and diffs a found file; trusted on a known-good and a known-bad file
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:18:57 +01:00
igneum-josh
601f152103 Merge branch 'ca3-v4-node' into ca3-coord 2026-10-06 17:16:21 +01:00
igneum-josh
7a48950c3a Merge branch 'ca3-v4-hash' into ca3-coord 2026-10-06 17:16:21 +01:00
igneum-josh
131b2c5cf3 Review round 4 (reddit, 6 October 2026): eight personas, 2 fatal, 11 serious, 9 minor; the believe-list; site/ledger.html drafted from the ledger (167 entries) with its generator; six public-text fixes
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:06:42 +00:00
igneum-josh
e546d0a36b Counter ASIC 3.0 PC 1 AMD: the watts re-run script (sampler proven on the idle window, never blind), the sampler fed through the environment (the unquoted ArgumentList class), per-entry card restore in jobs 1 and 4, the README's record of job 1's first run
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 17:02:55 +01:00
igneum-josh
a522d046e1 Counter ASIC 3.0 gates (node): class v4 = mx8+sh256x27 through the stack (igneum-pow ProgramClass::V4, V4_CLASS, generator 4, program_id(4, seed, attempt), the era composed as v3's; program.h and program.json class v4; packcheck, packfile.h, the CUDA and OpenCL identity rule and the Metal worker accept generator 4 and the class=v4 token, the Metal worker takes v4 from the prepared pack only; v2 and v3 byte-identical, the pinned packs diffed); the G4 harness class-v4.mjs (two switches, the never case); override-60x.json: the v4 field at never, the duplicated proving v1 block removed, the four 0.3.12/0.3.13 fields added; CI check override-json-check.sh (no duplicate key in any override file)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:58:49 +01:00
igneum-josh
63303a25a5 Counter ASIC 3.0 gates (hash): the class v4 packs (mx8+sh256x27 with the era at devnet epoch 0 and eras 0 to 5, the v3 control), the PC 2 G1+G2 playbook, hash-bound --count ported from ca2-era, the mixer harness on a class and an era (IGNEUM_MIXER_CLASS, IGNEUM_MIXER_ERA, the shadow contract)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:57:40 +01:00
igneum-josh
e054ed71a1 Counter ASIC 3.0 PC 1 AMD: the four PC 1 job scripts (G1 + ladder on the 9070 XT with ADLX watts, family step costs, dr736 derive, the 4070 ladder), the kit maker and the README with the publish commands
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:39:51 +01:00
igneum-josh
6f46cd40dc A card never shows 0 MH/s without a reason word (Josh, 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 16:36:07 +01:00
igneum-josh
db97665a5e playbook-quit-check: the ruling of 6 October 2026 15:30 UTC (a job script never pauses or resumes the installed app's miners, not even as a fallback; --stop-miners is the way): the two agg-cost allow entries dropped, so the gate names tools/proving-v1/pc2-agg-cost.ps1 and pc2-agg-cost-restore.ps1 until they move to --stop-miners
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:05:37 +01:00
igneum-josh
4deea567c5 release 0.3.13: merge ember-tune 32b2688 (master merged into the branch, the dry-run-3 bench entry, the playbook-quit gate's allow entry)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:05:00 +01:00
igneum-josh
32b26882ac playbook-quit-check: pc2-agg-cost.ps1 and pc2-agg-cost-restore.ps1 allowed pending the rule owner's word (they pause and resume the installed app as the fallback of a card switch)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:04:35 +01:00
igneum-josh
fd1917c363 Merge master 494c9c7 into ember-tune (0.3.12's version files and the proving-v1 app merge; my own 7f6c4e6 came back as ebea8b6) 2026-10-06 16:03:37 +01:00
igneum-josh
71f08d5b9c release 0.3.13: merge ember-tune 07d5a72 (the Power Helper: one approval registers a per-user elevated scheduled task, no prompt after; the folder-lock ACL; the verbatim settings copy; the watchdog; no firewall prompt for a sweep engine; the jobrun follow_file)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 16:03:27 +01:00
igneum-josh
0b7f9afa7b run 4's cause: the playbook's PowerShell JSON round trip rewrote the copied settings (big integers as doubles), the engine read the file as defaults (no payout address, every card off, 96 old remote jobs run in the scratch root). Fix: the copies are verbatim and a --sweep engine applies Settings::for_measurement in memory (remote jobs, updates, proving and Power control off, not paused, tune on, every card due and unpinned); the CI check fails any playbook that rewrites settings.json through ConvertTo-Json; unit test
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 15:21:06 +01:00
igneum-josh
68f5825c10 tools/fleet: publish the rented-GPU fleet page's data to the downloads host
The page lives at an unlisted path on dl.igneum.network (name in ~/.config/igneum/fleet-path) and reads fleet.json
every 30 s; this script copies a fleet.json in and deploys, then checks the edge serves it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 12:52:18 +01:00
igneum-josh
4629c81a14 tools/ci/playbook-quit-check.sh: the standing rule of 5 October 2026 23:05 UTC as a gate (a playbook that reads the installed app's URL file and sends quit, pause or resume fails; the installer's own stop step is the one allowed sender; self-test on a bad and a good case); shard-test.ps1 loses its api/quit to the installed app; ember-tune-pc1.ps1's refusal guard reworded
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 12:52:08 +01:00