Commit graph

1468 commits

Author SHA1 Message Date
igneum-labs
cd5d2ca6e6 class v5: the RTX 4090 rows (the fleet's pod cv5-2, 10:23 to 10:30 UK): class v5 against class v4 on the two pinned packs, 63.058 against 63.066 MH/s (equal within 0.01 percent), the build +0.24 ms with the devnet's 93 leaves, watts a warm-up drift with the classes interleaved inside it, every dataset sample and vector warp bit-exact on the card; the hot-set bound's number and its generator-draw form recorded; the time line
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 09:31:22 +00:00
igneum-labs
3a9bd0873a class v5 harness: the previous run's survivors (two nodes of the known-failed case were still bound at 08:49Z and the flip run read a stranger's chain): a pid file per data dir killed at start, a node whose log says a port was in use fails the run at once, a port base per case (IGNEUM_V5_BASE, BASE= in harness-remote.sh)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 09:13:13 +00:00
igneum-labs
76b7cee8d6 class v5 design page: the attack-pass lane's AP-F4-1 mixer-draw acceptance rule recorded as a v5 item beside the hot-set bound (NAF sum under 163 redrawn, NAF weight at least 4 per word, at least 4 distinct rotations; 6.1e-4 rejections per day; F4's 2^24-day census as the gate)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 09:00:55 +00:00
igneum-labs
ba799d4750 class v5: the ledger page rendered with M35 (the litepaper's link), the harness's two own faults fixed (the stateless node's byte is the highest signalled byte; the refusal reaches the miner as a template error, counted from either log) after the known-failed case FAILED as it must on the box (no flip at 7,519 bps of byte 5, 665 blocks, 0 rejected, four sinks equal), the Counter ASIC lane's hot-set acceptance bound recorded as a v5 item with its F8 gate
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:49:44 +00:00
igneum-labs
f63ee1be4a class v5: the verifier measured on igneum-build-1 (tools/class-v5/verify-bench-remote.sh, the ladder's method, box at load 70): class v5 adds 0.28 ms cold and 0.20 ms on average over class v4 on the loaded reference core (8.74 to 9.03 ms cold with the sibling loaded), both under the 10 ms gate; the raw lines under docs/design/class-v5-bench; the page's time line with the fork suites and the packs test
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:38:41 +00:00
igneum-labs
659a7be280 class v5: the pinned packs proto-cuda/packs-ca3-v5 (v4-genesis the control, v5-genesis with leaves.bin and the devnet's state stream state.igsd1 of 7 October 2026: node 1's exec snapshot at chain block 159,357, 93 records, root 0x1c583d35..., program id 7c54302b487340a1 against the v4 pack's 853a971d7813fd5c), the pack test's vectors key, tools/class-v5/harness-remote.sh (the fast-time gate run on igneum-build-1 from this worktree's mirror)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:33:22 +00:00
igneum-labs
661e800ce7 class v5: ledger row M35 (the pool-ships-it objection answered with the state-size floor and the WAN line), the litepaper's 'The dataset is the chain' paragraph after the ladder's, the pinned-pack test for proto-cuda/packs-ca3-v5 (the v4 control pack's vectors agree with the v5 epoch on no lane; the hash kernel text equal, the build kernel and the leaves the difference), the design page's time line
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:17:01 +00:00
igneum-labs
41f055abc5 class v5: the fast-time gate infra/fast-time/class-v5-signal.mjs (the class v4 signal gate's shape: three signalling nodes with their executors on loopback ports, a fourth node with --evm-disable that must mine nothing after the flip, a --stale miner that keeps its first stream and must fall off at the first refresh, the v5 floor far away so the signal decides, the no-flip, flip, object-off, floor and known-failed cases, every node's state root for the flip epoch compared), the v5 floor in the 60x profile (never), proto-newpow/class-v5/bench.cu (one pack-generic 4090 bench: cache, leaves, build, the pack's self-test and vector warps, hash rate, watts), DatasetSource::refreshed_or_clone
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 08:13:33 +00:00
igneum-labs
6b17c79087 igneum-pow: class v5, proof of stored state (docs/design/class-v5-stored-state.md): blake2b (RFC 7693, the crate stays dependency-free, the RFC vectors pinned), state leaves (D[i] = Blake2b-512('igneum-sd1/' || root || i || record), leaf(t) = D[t mod n], the keyed sample above the dataset size, the IGSD1 stream file), the leaf XOR before the first mixer in both item derivations behind Shape.state, the cache shared by Arc so a window refresh swaps the leaves and keeps the day's 256 MiB, V5_CLASS = mx8+sh256x27+state with generator 5 and program_id(5, seed, attempt) at rung 0 (the state tag in the class-bearing id above it), the emitters' build kernel with the leaf buffer in the three dialects and the state lines of program.h and program.json, leaves.bin in the pack, packcheck's class v5 rules, the CLI's --program-class v5 --state <stream>; tests, the known-failed case first: a hasher with no leaves, another root, a stream one record short or the previous window's leaves is wrong on 64 of 64 items and 32 of 32 lanes; 66 unit and 39 integration tests green on igneum-build-1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:56:12 +00:00
igneum-labs
851fbf6ee5 class v5 design page, section 2a proof of following: the leaves refresh every window (pow_state_window_daa, 3,600 on the devnet = the epoch, so the reference block is the epoch's seed block and the refresh rides the existing program swap with no dip), the state after it, uncertified by rule so a finality pause never stops mining, how a miner learns it (stateBlock in the template, the leaves from its node), what a pool can and cannot centralise, the farm attack bounded honestly (anything derivable is shippable: the floor is the state size, 6 KB today; the WAN line is about 700,000 state records for 10,000 members at 1 Gbit/s; a LAN farm is never bounded below the 2 GiB cap), the cost per refresh (32 ms per hour on a 4090), the hostile review
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:42:03 +00:00
igneum-labs
0a5e743411 igneum-pow and the fast-time profile from release-0.3.18 (the ladder's b0af074f and 0bc76818: v4_class_at, chain_program_shadow, the three ladder fields of the 60x file, the ladder harness and bench script), which the 0.3.18 fork builds against and master does not yet carry
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:38:08 +00:00
igneum-labs
7af226d5c5 class v5 design page: proof of stored state (Horizon lane 8 scheme C) as a program class behind program_class_v5_activation_daa: the day's reference block one hour below the day on the header's selected chain, the state after it as the canonical day stream (accounts, slots, code chunks), Blake2b-512 leaves keyed by the state root folded into every item (leaf(t) = D[t mod n], so a stateless hasher is wrong on every item), the sample above the dataset size, the trusted-data path (a stream rebuilds to its root), the 95 percent seven-window signal on object byte 5, sizes at today's devnet state (93 records, 8,619 bytes, measured on igneum-build-1), the hostile review, the fast-time gate, the litepaper paragraph; nothing touches the devnet
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:36:37 +00:00
igneum-labs
8b878ba43c Merge site-ui-3: the one-screen home page is back
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:14:26 +00:00
igneum-labs
fc77e88683 site: the one-screen home page is back (84b349e), with the wording that landed since
The owner's word this morning: the 56 px header, the eleven-word
statement, two buttons, the step scene full bleed, three facts, the
downloads and one line to the ledger. Kept from the nights since: the
X31 testnet sentence, the X35 chip range with k stated, the Discord
line. The RandomX correction (X34), G4, C2 and X8 stand on the
litepaper; the ledger notes and the text check say so. The app showcase
moves to the miner page in the next step.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 07:14:24 +00:00
igneum-labs
3cc5e5c2f0 Hands mover: on 0.3.18 trees the restart read-back takes powEngine and the blockrate object from igneum_getNodeInfo; a stub answer stops the sequence
The shipper's read-back for 0.3.18 (7 October 2026): igneum_getNodeInfo exists again and must answer powEngine igneum-pow (a stub
is a FAIL) with a blockrate object, which the mover prints; a tree before 0.3.18 answers -32601 and the engine is still read from
the binary's igneum-pow source paths. The parser is checked against the three answer shapes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 06:25:12 +00:00
igneum-labs
081f832b01 Hands plan: the 0.3.17 hotfix run log (hands and seed on 5899f603, read-backs, times, the pairs held for 0.3.18)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 05:33:45 +00:00
igneum-labs
fd4785d2bc lib.sh: bs_pin gives an empty pin for a tree without rust-toolchain.toml (a failed sed under pipefail ended the caller silently)
The b3c228fa builds under the 0.3.16 app tree 5d118f58 (no rust-toolchain.toml yet) died right after the pairing line with no
message: sed on the missing file failed, pipefail carried its status into the assignment, set -e ended the script. A guard and a
tolerant pipeline; checked alive against a tree without the file.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:44:26 +00:00
igneum-labs
db6475def5 Build tools: whole-body blocks (the edited-while-running class, with its check), the igneum-pow pairing line, move-hand.sh restart with its readbacks
Three classes from the 0.3.17 night. (1) bash reads a script incrementally: tools/build-remote.sh was edited while a four-minute remote
build ran, the running copy continued at shifted bytes and died with a syntax error after the build had succeeded on the box; the
four long-running tools (build-remote, cross-remote, workers-remote, move-hand) now keep their body in one brace block ending in exit,
parsed whole before a line runs; tools/ci/whole-body-check.sh (in the gate, self-test with a block-less copy) holds the shape.
(2) A fork build pairs with the igneum-pow of the igneum worktree it sits in: a fork at 12153428 under a master worktree failed in
kaspa-pow four minutes in (no chain_program_shadow; master's igneum-pow predates release-0.3.17's); build-remote.sh says the
pairing on its first line ('pairs with igneum 6f8d7a7e (detached): igneum-pow 0.2.0') and the JSONL line carries pairs_with.
The first version of that line used '[ -n ... ] && echo' inside an assignment's $( ) and set -e ended the script on the false
status; fixed. (3) move-hand.sh restart <hand> [--digest <hex>] [--go]: after binary installed a release, restart ONE unit and read
it back (first exec line, commit string in the running binary, digest against the wanted one, igneum_getNodeInfo powEngine over the
node's loopback EVM RPC); the digest readers tolerate a missing line.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 03:12:51 +00:00
igneum-labs
3720c40bce glibc ceilings per artefact class: hive and rig 2.31, seed and linux 2.35, native unchecked; proven in ubuntu:20.04 and 22.04 on the box
Main's order of 7 October 2026 after RunPod's Ubuntu 22.04 canaries (glibc 2.35) refused the box's GLIBC_2.38 binaries and HiveOS
turned out Ubuntu 20.04 based (2.31). The table lives once, in tools/ci/glibc-ceiling-check.sh (--class, --ceiling-of; self-test
covers the table, an unknown class and a 2.34 need against hive); tools/build-remote.sh --ship hive|rig|seed|linux (default seed)
and tools/workers-remote.sh --class (default rig) build with zig at the class's glibc and check against it. provision.sh installs
docker.io (user build in the docker group) for the proof. Proof: fork 3bfe346f at class hive, igneumd and igneum-miner need
GLIBC_2.30; the workers at class rig need GLIBC_2.17; all four run in ubuntu:20.04 (ldd 2.31) and ubuntu:22.04 (ldd 2.35) and
print their version or usage lines (the OpenCL worker its own no-libOpenCL message, the binary running in a GPU-less container).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 00:35:18 +00:00
igneum-labs
01aa9fae83 Deploy key: the plan's section 5c (the project lead's four steps and the public half) that 9215d624 named but did not carry; observer-sync.sh runs git as build
The previous commit's plan edit aborted on a changed anchor, so section 5c was missing; written now with the public half
(ssh-ed25519 ... igneum-build-1 observer read-only) and the CI-runner row closed. observer-sync.sh ran git rev-parse as root
against the build-owned clone (safe.directory refused it, 'up to date at' with no commit); every git call runs as build now.
Verified on the box: one sync pass prints 'source: mirror (the deploy key is not accepted by GitHub yet ...)' and the commit.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:49:20 +00:00
igneum-labs
9215d624d2 Observer clone: a read-only deploy key made on the box, GitHub preferred over the mirror once accepted; the project lead's steps in the plan
Main's order of 7 October 2026. install-hands.sh creates /srv/observer/.ssh/deploy_igneum (ed25519, user build, mode 600; the private
half never leaves the box and nothing prints it) and the ssh alias github-igneum-observer; observer-sync.sh tests the key with
ssh -T on every pass, pulls from GitHub when it is accepted and from the mirror otherwise, saying which. docs/plans/build-server.md
5c: the four steps for the project lead (print the public half, Settings > Deploy keys > Add, read-only, start one sync pass) and the public
half itself. Verified on the box: key created, alias written, one sync pass reads 'source: mirror (the deploy key is not accepted by
GitHub yet)'. The CI-runner row is closed (the box-work agent's runner service).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:47:10 +00:00
igneum-labs
49ca718c9c rust-toolchain.toml: one pin for every side (1.99.0, the two cross targets); the mismatch refusal reads it
Main's order of 7 October 2026. The repo root carries rust-toolchain.toml (channel 1.99.0, targets x86_64-pc-windows-gnu and
x86_64-unknown-linux-gnu); rustup resolves the nearest file walking up from the crate, so the fork worktrees under vendor/ are
covered, and the fork's master carries its own copy (vendor/igneum-node 37f1206b). lib.sh bs_toolchain_check reads the pin
and refuses a build when the pin, the Mac's rustc as resolved in the crate dir, or the box's rustc differ (the message says
the three commands that align them); run-from-mac.sh passes the pin to provision.sh as RUST_TOOLCHAIN. The 1.99.0 toolchain
with both targets is installed on the Mac so no agent's build stalls on rustup's auto-install. Verified: the Mac resolves
1.99.0 in a fork worktree, the box runs 1.99.0, the check prints 'pinned 1.99.0 by rust-toolchain.toml'.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:44:20 +00:00
igneum-labs
fff352e52f workers-remote.sh: the host's /usr/include stays out of the zig build (the OpenCL headers through a CL-only symlink dir); both workers proven at glibc 2.36
The previous commit's 'the workers at 2.36' was not yet true: the first zig build died on __isoc23_strtol because -I /usr/include
for CL/cl.h put Ubuntu's glibc 2.39 stdlib.h in front of zig's bundled 2.36 headers. Fixed; proof on the box (6 s):
igneum-worker-cuda 6,759,272 B sha256 690c8e91..., igneum-worker-opencl 307,264 B sha256 329fb6a9..., each needing GLIBC_2.34
and libc only, the ceiling check passing. The two static flags zig ignores are dropped on the zig path (zig links its libc++ in).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:40:14 +00:00
igneum-labs
7089aa161f Build server: zig and cargo-zigbuild on the box; build-remote.sh --ship builds glibc 2.36 Linux artefacts for seeds and HiveOS; the glibc ceiling check
Main's order of 7 October 2026 after a seed took 14 restarts and three minutes down on a glibc 2.39 binary. provision.sh:
step_zig (zig 0.17.0 from ziglang.org, sha256 from the official download index) and cargo-zigbuild 0.23.4 in the cargo tools.
tools/build-remote.sh --ship [--glibc 2.36]: cargo zigbuild --target x86_64-unknown-linux-gnu.2.36 with zig as the C/C++
toolchain (the Mac's infra/cross/build-linux.sh recipe), artefacts from the target-triple dir, each checked by
tools/ci/glibc-ceiling-check.sh (need at most the ceiling; self-test fires on 2.38 against 2.36, passes 2.34 and 2.36;
--symbols reads a saved objdump -T text so CI needs no ELF tools). tools/workers-remote.sh builds the two GPU workers with
zig at 2.36 by default (GLIBC=native for clang). Proof on the box: fork 3bfe346f igneumd needs GLIBC_2.34 (47,023,120 B,
sha256 345dfb95...), igneum-miner GLIBC_2.34 (9,248,808 B, d09dc27b...), 3 min 17 s cold through zig; the workers at 2.36.
Rule: anything that ships to a seed or a HiveOS rig is built with --ship; a plain build (glibc 2.39) is for the box and
Ubuntu 24.04 hosts only.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:37:33 +00:00
igneum-labs
2750361894 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-06 23:35:37 +00:00
igneum-labs
89300aafe6 Merge branch 'gpu-fleet' into HEAD 2026-10-06 23:33:54 +00:00
igneum-labs
db1cebd1f8 Fleet: the last two process patterns (a top-level alternation; the canary's node path by its basename)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:33:54 +00:00
igneum-labs
9e6a325128 Merge branch 'gpu-fleet' into HEAD
# Conflicts:
#	.github/workflows/ci.yml
2026-10-06 23:33:28 +00:00
igneum-labs
22ef7c3f97 Fleet: the last process patterns in the bracket-first form; the fleet's own pgrep check withdrawn (master's kill-by-name check covers the class)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:31:55 +00:00
igneum-labs
d41cb3876c Merge branch 'gpu-fleet' into HEAD 2026-10-06 23:29:39 +00:00
igneum-labs
238fccfce6 Fleet scripts: no path into another worktree (sys.path from the file, the ship tree from the environment)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:29:39 +00:00
igneum-labs
6aad8d8a53 Merge branch 'gpu-fleet' into HEAD 2026-10-06 23:28:55 +00:00
igneum-labs
ccfa6e6cb4 Fleet scripts find their helpers inside their own tree (the CI checks, the Discord hook, the publish script), env-overridable; the library's node patterns inline
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:28:55 +00:00
igneum-labs
0cb0e413b8 Merge branch 'gpu-fleet' into HEAD 2026-10-06 23:25:53 +00:00
igneum-labs
c704c8263c Fleet: the last three process patterns in the bracket-first form
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:25:53 +00:00
igneum-labs
95281941af Hands moved to igneum-build-1 (run log); the overlay carries directories a crate reaches by include_bytes!; two mover fixes
docs/plans/hands-on-build-1.md section 6: the move of 6 October 2026 23:06 to 23:22 UTC, observer node, observer, node 1, unload,
each hand's first executing line, digest eada4bda MATCH, IBD and acceptance, the open readback (the Mac's Miner app has not
started its own node since 26610/26611 were freed). lib.sh: the shipper's class from the 0.3.17 tree, the fork's igneum-exec
embeds proving/igneum-prove/elf/*.vk by include_bytes! five levels up, which is no path dependency; every .rs in the trees that
travel is scanned for include_bytes!/include_str! paths leaving the crate's repository and their directories join the overlay;
proving/igneum-prove/elf is the fixed fallback for a fork build. move-hand.sh: igneumd --version exits 1 (tolerated; it ended
the binary step before the override was written), and the launchd pid lookup used \s in macOS awk (printed 'pid none').

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:25:36 +00:00
igneum-labs
b8b807ca15 Merge branch 'gpu-fleet' into HEAD 2026-10-06 23:25:10 +00:00
igneum-labs
0e10fcfe30 Fleet scripts: process patterns in master's bracket-first form (the kill-by-name check), anchors dropped
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:25:10 +00:00
igneum-labs
859b79b2d4 Merge branch 'gpu-fleet' into HEAD 2026-10-06 23:23:46 +00:00
igneum-labs
4d5b80f791 Merge gpu-fleet: the rented fleet's tooling (box library, standing supervisor and library, the 10 percent and 75 percent gates, the deploy gate, publish and canary scripts, Devnet 2 scripts and gate reader, the wind-down) and the night's analyses (prover tiers, block rate, the fleet night rows 1 to 18, the bench-log entries)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:23:46 +00:00
igneum-labs
ddaeaf076a lib/box.py: the node path pattern in the bracket form; the pgrep check allows the variable it is read through
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:17:48 +00:00
igneum-labs
25d2fe8275 Fleet scripts: every pgrep/pkill -f literal in master's bracket form (the kill-by-name check); the rehearsal chain's end script
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:14:41 +00:00
igneum-labs
4573b6f3ed Fleet: the deploy gate (syntax + master's defaults-line check + the comment-with-code class) in lib.box.put; the 75 percent table gate (standing.table_gate, the wind-down holds under it)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:04:29 +00:00
igneum-labs
7b3594ab46 box-dn2.sh: the UNSYNCED comment moved above its line (it had swallowed the port variables; three Devnet 2 nodes failed to start under set -u)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:02:49 +00:00
igneum-labs
c5ebf5cf7c Merge site-ui-3: chip headline range (X35) and the latency ladder on the site (M34)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:02:46 +00:00
igneum-labs
6e5e35c8d0 site: the class v4 chip headline is a range, 2.1x to 3.9x with k stated (ledger X35); the latency ladder described (M34)
The X9 made the k = 0.33 column of the chip model a product class, so
every public sentence that stated 2.1x alone now states 2.1x (k = 1) to
3.9x (k about 0.33), with the ladder's second rung taking the X9 bracket
to about 2.8x. The ladder lane's litepaper paragraph 'The work that waits
can grow' and ledger row M34 are taken from branch ladder (7003f9f, those
two hunks only) so the ladder is on the site before the code ships.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 23:02:43 +00:00
igneum-labs
b180ac0403 dn2-check: the reorg read ignores the exec follower's replay of old history after a restart (lines far below the exec tip)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:52:30 +00:00
igneum-labs
5e4dc171e9 box-dn2.sh: unsynced mining is opt-in (a fresh genesis only); the standing Devnet 2 nodes restart synced-first
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:51:54 +00:00
igneum-labs
3e8e7a5dfc Hands mover: the node tree defaults to the Mac agent's own build, a digest readback per hand against the Mac hand, a 16-field guard on the override
Main's hold of 6 October 2026 (23:xx UK): the hands move only on the shipper's 'publish 2 live: digest <x>' line, each hand read back by
commit string and consensus digest. move-hand.sh binary now derives --node from the fork tree behind the Mac's node1 launchd agent
(igneum-wt-ship0315/vendor/igneum-node-0315 at f1ea7a38 tonight; the box's igneumd rebuilt from it is sha256 7f0bde70...), warns when the
Mac's override still has 13 fields (publish 2 writes the sixteen-field object when it restarts the hands), and after each hand's first
executing line prints the box binary's commit string and the hand's digest against the Mac hand's last digest (MATCH or DIFFER, DIFFER
stops the sequence). Dry run clean against the live Mac.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:51:06 +00:00
igneum-labs
b53b217e56 Fleet: the publish-2 object move for the standing boxes (file swap, node restart by the supervisor, digest table)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 22:50:03 +00:00