Commit graph

185 commits

Author SHA1 Message Date
igneum-labs
8472843f8b Merge build/master into build-programme: the swap page (dex-devnet3) joins the Build group in the nav, the footer, the sitemap and the nav check; /build links /swap
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 10:39:07 +00:00
igneum-labs
e6535e0f85 fast-time: override-60x.json taken whole from ca3-v4-node (81 keys: master's 75 plus base_unit_decimals, pool_split_activation_daa, program_class_v5_activation_daa, proving_base_fee_ceiling_multiple, proving_fee_ceiling_activation_daa, subsidy_per_block_activation_daa; no shared value differs), the file the 0.3.25 node line's test fast_time_60x_file_is_the_devnet_at_60x reads key by key; a single added field moved the red to the next key (8 October 2026, 11:2x UK)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 10:24:47 +00:00
igneum-labs
cb2b8a2578 Builder programme (8 October 2026): /build, /grants, the Devnet 3 faucet on build-1, docs/build as the source
- site/build.html and site/grants.html rendered by site/build.mjs from docs/build/build.md and docs/build/grants.md (the gate's site-only copy keeps the committed pages, as for /bench); site-relative links in the markdown renderer
- the nav's fourth group, Build (/build, /faucet, /grants), in the partial, the sheet, the footer, the sitemap and tools/ci/site-nav-check.mjs; the faucet leaves the Mine panel
- site/faucet.html is the Devnet 3 faucet: 10 IGN per address per day, 500 a day, chain id 4463, no value, resets without notice; the page posts to https://faucet.igneum.network/api/faucet and shows the balance
- infra/build-server/faucet: faucet.mjs (zero dependencies, signs with site/lib/eth.mjs, limiter self-test known-failed first, 100 IGN cap on the amount), the unit, faucet.sh install/status; live on build-1 behind Caddy since 10:16Z, funded 2,000 IGN by the fleet's funder at 10:01Z; first drip 0x8620e9d8 at 10:17Z
- docs/build: README, first-contract.md with its test script and the PASS line (24 s end to end through the public RPC and faucet, Foundry 1.8.5, Counter deployed at block 27055), rpc.md read from the node (75 methods probed, served and not served), faucet.md, verify-a-block.md, grants.md
- .forgejo/issue_template/grant.md: the grant application template on git.igneum.network

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 10:24:07 +00:00
igneum-labs
4191027e04 fast-time: base_unit_decimals 8 in override-60x.json, the field the node line's test fast_time_60x_file_is_the_devnet_at_60x demands (0e4ec18a's change, added by hand after its cherry-pick conflicted; the 0.3.25 pre-pin matrix read core RED on every box without it, 8 October 2026, 11:1x UK)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 10:16:33 +00:00
igneum-labs
d292d8958b Merge build-server 75c3a6fa 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
75c3a6fa57 remote-run.sh: two founder-name comments reworded (the pre-public scrub)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 21:34:33 +00:00
igneum-labs
27a6320cb4 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
476af738b8 lease pool pre-emption (main, 7 Oct 2026 22:2x BST: the F8 gate sat behind two adv leases of 32 and 30 with the pool full): a release or v5 waiter that has waited 120 s pre-empts adv-class holders at ANY size, oldest first, as many as cover its ask; measure-class holders above 32 the same after 300 s; every TERM in _log/preempt.log and shown by lease status for ten minutes; the ca4 research label first among measure rows; known-failed self-test on tonight's shape (two adv holders filling the pool, a v5 waiter asking more than one of them frees, zero free) and a small measure row left alone
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 21:21:55 +00:00
igneum-labs
78befb1fd0 Site on master: live reads Devnet 3 (the live-dn3 edit, cherry-picked onto master so a master deploy carries it; main 7 Oct 2026 21:2x BST, every site deploy is master only from now) and every repository link flips from github.com/igneum-network to git.igneum.network/igneum-network (the public Forgejo host, by the founder word through main at 21:2x BST; GitHub is dark). Also: the runner pool classes in remote-run.sh (two founder-name comments reworded), infra/build-server/forgejo.sh (the git host stand-up), and the gate check tools/ci/inline-rm-check.sh (no deletion inside an inline bash -c / sh -c string; main 21:33 BST; known-failed self-test first, three proving-v1 lines allow-listed by name) with the rule in tools/ci/README.md
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 20:38:41 +00:00
igneum-labs
4ed80163b7 Site on master: live reads Devnet 3 (the live-dn3 edit, cherry-picked onto master so a master deploy carries it; main 7 Oct 2026 21:2x BST, every site deploy is master only from now) and every repository link flips from github.com/igneum-network to git.igneum.network/igneum-network (the public Forgejo host, by the founder word through main at 21:2x BST; GitHub is dark). Also: the runner pool classes in remote-run.sh and infra/build-server/forgejo.sh (the git host stand-up, bracket-form greps)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 20:30:44 +00:00
igneum-labs
182da21b3f Runner pool classes + the git host script: a bounded build-remote run takes its pool cores as class release (v5 when its label names a v5 gate or kit), writes the class into its wait line so lease-pool sweeps yield to it, and yields itself only to a higher class (slot self-test green on build-2); infra/build-server/forgejo.sh = the Forgejo stand-up on build-1 as run at 20:29 BST (docker, Caddy block, ufw 2222, app.ini with generated secrets kept on the box)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:56:50 +00:00
igneum-labs
13c87846da Merge build-server 00f7f9e9 into master on the box mirror (GitHub suspended; the box gate stands in for CI)
# Conflicts:
#	infra/build-server/remote-run.sh
2026-10-07 19:49:37 +00:00
igneum-labs
00f7f9e98f lease pool: four priority classes (main, 7 Oct 2026 20:37 BST: the class v5 census sat behind eleven adversarial waiters): release > v5 > measure > adv, from --class or the owner and label; a higher class takes the next freed cores before any lower class whatever the arrival order (lower classes yield while a higher one waits); a lower-class holder above 32 threads is pre-empted (TERM to its command, the lane re-queues) when a higher class has waited 120 s; the class in every line; self-test: the known-failed class-order case (a sweep must not take cores a waiting v5 gate asked for) and the pre-emption case. Also: provision.sh ROLE=sweep (a rented cloud sweep worker, minus runner, caddy, cuda, night, chromium, zig) and infra/build-server/cloud-sweep.sh (Hetzner Cloud CCX workers up/list/cost/down with the lease tool)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:40:32 +00:00
igneum-labs
1b97a25332 lease pool <threads> -- cmd (main, 7 Oct 2026 20:17 BST: adversarial binaries started by hand at 64 to 89 threads, several beside each other, read load 601): a sweep takes up to its thread count of FREE cores from the same 88-core bounded pool as the builds, never fewer than --min, waits while fewer are free, runs pinned at nice 10 with {cores} and {cpuset} substituted and LEASE_CORES exported; the rule is no sweep starts except through it; self-test case added; installed on both boxes
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:23:56 +00:00
igneum-labs
f3be8d2ead Merge remote-tracking branch 'box/master' into scrub
# Conflicts:
#	CLAUDE.md
#	docs/plans/counter-asic-3-status.md
#	docs/plans/release-0.3.21.md
#	docs/plans/release-0.3.22.md
#	tools/ci/merge-to-master.sh
#	tools/ci/pre-push.sh
#	tools/ci/red-watch.mjs
2026-10-07 19:16:14 +00:00
igneum-labs
629eeff702 Build boxes: the bounded POOL (main, 7 Oct 2026 20:0x BST: every bounded run took 88 threads and the boxes read load 280 to 527): cores 8 to 95 form one pool of 88 per box; a bounded run leases free cores from it (one flock per core, shared with the measurement leases), up to its class cap or --jobs and never fewer than 16, waiting in the queue when fewer are free; CARGO_BUILD_JOBS and taskset follow the cores taken, so the sum of bounded threads on a box never passes 88; self-test updated
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:03:35 +00:00
igneum-labs
8ff25e170f Pre-public scrub, second pass (7 October 2026, 20:0x UK, main's rulings 2 and 4): the public tree names igneum-labs only; the public ledger generated from the full ledger
Ruling 2: every tracked text mention of the login's pre-rename spelling becomes igneum-labs (29 files); the commit identity in the scripts becomes igneum-labs <337424239+igneum-labs@users.noreply.github.com> (the same noreply id); the three scripts that hand the stored gh keyring name to gh (register.sh, fetch-ci-artifacts.sh, ship-app.mjs) read it from ~/.config/igneum/gh-user (never in the repository), default igneum-labs; fresh-repo.sh reads the login to rewrite from the encoded list's row 10; the old spelling joins the founder-strings list, so no tracked file may spell it; CLAUDE.md's GitHub paragraph rewritten. The red watcher's self-test fixtures use a neutral author.

Ruling 4: docs/ledger-public.md, one row per ledger item (id, the claim in one line, status, what was done in one line, the evidence link or the evidence in words), generated by tools/ledger/export-public.mjs from docs/fud-ledger.md: no round or status-update sections, no commit ids, no time of day, no lane, agent or branch names. 190 items. The gate runs its self-test (a fixture with a commit id, a time, a lane and a branch name comes out clean; --check fails on drift) and its --check on every merge; the founder check reads the output like every tracked file.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 18:56:08 +00:00
igneum-labs
7e2ff33b01 Merge remote-tracking branch 'box/master' into genesis-forward
# Conflicts:
#	infra/fast-time/override-60x.json
2026-10-07 18:46:35 +00:00
igneum-labs
8bb638f843 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
fb179aed23 fast-time 60x file: latency_ladder_cache_rung_activation_daa at never (the cache rung's own switch, the Devnet 3 digest, 7 October 2026; the fork's 60x test reads every field)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 18:35:12 +00:00
igneum-labs
deae3803ab Build boxes to near max (the project lead, 7 Oct 2026 19:4x BST): the bounded class is 88 of 96 cores with -j 88 (8 reserved for release builds, the seed and the observers), the jobs rule 88 alone / 44 shared, the spill line 80; checks updated. testnet-go.md: LG-2 waived by the owner, the new gate, the seeds held armed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 18:23:14 +00:00
igneum-labs
8e00e19acc Devnet 3: devnet3.sh passes the argument line base64-encoded over ssh (ssh flattens its argument list: the first --go started the seed on the OLD devnet, digest c562d70e, port 26611, 7 Oct 2026 18:22 BST) and refuses a line without --devnet-suffix=3
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:26:14 +00:00
igneum-labs
a64bc532b4 Devnet 3: devnet3.conf names the 0.3.22 candidate 69d1b56e (genesis timestamp fix)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:06:20 +00:00
igneum-labs
5cb2c67b98 Devnet 3: devnet3.env becomes devnet3.conf (the no-secrets gate refuses any tracked *.env by name; the file holds ports and a binary path, no secret)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:59:56 +00:00
igneum-labs
ea13334230 Devnet 3: devnet3.env names the 0.3.22 candidate 21d8f454 artefact (the file is tracked on purpose: ports and the binary path, no secret; a *.env ignore rule caught it)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:54:12 +00:00
igneum-labs
697fb35ed3 Devnet 3 on build-1: ports reconciled with the fleet lane (its observer-node-dn3 on 26650/28650/26651/26850 is the observer instance; node1-dn3 moves to 26671/26670/28670/26870; ufw 26671 open 16:39Z); the units installed as root, disabled
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:40:39 +00:00
igneum-labs
ef96851311 Devnet 3 (0.3.22) staged on build-1: the seed as a bare process and the hands' second instances (infra/build-server/devnet3, dry run by default; NET_FLAGS and IGNEUMD placeholders until the node lane names the object and the candidate); ufw and P2P_PORTS carry 26631 and 26651
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:28:34 +00:00
igneum-labs
337df42c42 Build boxes: provision defaults for build-4 (an AX162-1 beside build-3: three slots, the runner pool at 32 cores); the Hetzner cart of 7 Oct 2026 carries both
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 16:21:16 +00:00
igneum-labs
70c42664b0 Build boxes: ufw opens 26621 (the Devnet 2 seed on build-1 listened behind the firewall since it started; opened by hand 7 Oct 2026 16:40 BST, found by the fleet lane)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 15:42:28 +00:00
igneum-labs
6433f3ab95 Era VDF lane (7 October 2026): spec 04 sections 4.2, 4.4, 4.5 and 4.6 completed for the era path (the scheme byte and the hash-chain fallback, the cut rule under the O-4.3 reading, the day-of-blues input, the delay, the seed, the era constants as measured), spec 01 section 1.13.1 and era-layout.md section 8 updated, open items O-4.8 closed and O-4.10 to O-4.12 added, FUD ledger F11 updated, two decisions for the project lead in ledger-decisions.md, the record docs/analysis/era-vdf-2026-10-07.md (what was built, the parameters and measured rates, the harness gate with both runs, the cut rule for the finality lane, the verify gate, the tiers), the F7 re-roll harness against the real era cut (tools/era-vdf/reroll.mjs: --vdf off fires 6 of 6, --vdf on silent 0 of 6; the adversary evaluates asynchronously with the node's own code and is found by the node's own log line), the fast-time file's era fields 2026-10-07 15:24:22 +00:00
igneum-labs
98fd5d31a9 Gate: the box lock self-tests read the same on an idle box and on one at load 120 (private lock directories, no pinning in the fixture, file-driven waits, a 3 s settle, a quiet that outlives the slot settle); the check runs them one at a time with one retry each (the horizon lane, 7 Oct 2026: one red on a full gate, green a minute later)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 15:05:56 +00:00
igneum-labs
58230080e5 Merge remote-tracking branch 'origin/master' into peer-directory
# Conflicts:
#	infra/fast-time/fork-gate.mjs
#	infra/fast-time/override-60x.json
2026-10-07 14:18:50 +00:00
igneum-labs
f9f7186ef7 Merge horizon 090ee505 into master (gate: green on 090ee505, recorded by tools/ci/pre-push.sh; the full gate runs in CI on this merge) 2026-10-07 14:17:38 +00:00
igneum-labs
1f0b80568c Merge genesis-forward 048c4b6c into master (gate: green on 048c4b6c, recorded by tools/ci/pre-push.sh; the full gate runs in CI on this merge) 2026-10-07 14:10:57 +00:00
igneum-labs
385bb05329 Merge remote-tracking branch 'origin/master' into peer-directory 2026-10-07 14:07:42 +00:00
igneum-labs
048c4b6c2e Merge branch 'master' of https://github.com/igneum-network/igneum into genesis-forward 2026-10-07 14:06:24 +00:00
igneum-labs
090ee5059e Merge remote-tracking branch 'origin/master' into horizon 2026-10-07 14:05:21 +00:00
igneum-labs
111aff5747 Genesis forward-compatibility: key hashes in the harness summaries cut to 16 hex characters (the no-secrets gate reads committed summaries; the writer redacts at write time)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:02:24 +00:00
igneum-labs
0fc3c35ccc Merge remote-tracking branch 'origin/master' into ui-overlap 2026-10-07 13:57:31 +00:00
igneum-labs
1158b24430 Merge remote-tracking branch 'origin/master' into ui-overlap 2026-10-07 13:55:13 +00:00
igneum-labs
36054da2b7 Text-overlap sweep (tools/ci/overlap-check.mjs) and the first fixes it found: the home hero's step pill no longer sits on the caption (pill at the corners' baseline, caption above it, at every width), the address page title wraps, the ledger's status badges wrap, the litepaper's mobile contents bar bleeds by the real gutter, the verify harness table scrolls (7 October 2026, 15:5x UK)
The sweep renders every served page in a headless Chromium at 390, 768, 1024, 1280 and 1600 in light and dark (the hero at rest and at each step), reads every visible run of text and flags text covered by another element, clipped by overflow hidden, or past the viewport; a fixture with one deliberate overlap of each kind is flagged before any sweep is trusted. It runs on a build box when this machine has no browser (infra/build-server/overlap-browser.sh installs Chromium there without root).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:55:13 +00:00
igneum-labs
0855cfc2fc Gate: the green stamp and the fast path for merges (a full gate that ends GREEN over a clean tree records its commit; the hook lets a merge of a stamped branch onto the exact remote tip through on the light gate, CI runs the full one on landing); tools/ci/merge-to-master.sh; the wave script's seeds mode takes --wipe-genesis with the genesis and base-unit read-backs for the testnet go
Main, 7 October 2026: a 100 s hook gate on the merge commit against a master that moves every minute lost six pushes in a row.
Self-test: a fixture repository (unstamped branch, stamped branch, stale stamp, wrong tip, plain commit, dirty tree).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:54:10 +00:00
igneum-labs
7489e0ff0a CI and boxes: the simulators job runs on master and release-* pushes and pull requests into them only (a feature-branch code push runs the igneum-pow tests alone; tools/ci/sims-branch-check.sh); the box lock self-tests run in parallel in one ssh; build-2 and build-3 join the runner pool bounded to 32 cores; the 0.3.20 first-wave script (seeds, hands, RPC-filter lift; dry run by default)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:46:42 +00:00
igneum-labs
d37d3e14d7 Mission item 12 gate on igneum-build-2 (13:27 to 13:34 UK): switch off, expect one PASS; switch off, expect eight FAIL as it must; switch on, expect eight PASS (the fresh node with one genesis peer reached 8 outbound at 231.7 s, 9 connections from the directory, node 0 logged every listing); the harness reads is_outbound (RpcPeerInfo is not camelCased in the fork)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:35:51 +00:00
igneum-labs
751c4e6cea Merge remote-tracking branch 'origin/master' into build-server 2026-10-07 13:33:24 +00:00
igneum-labs
fcbf48221c Build boxes: the measure file is retired; a pinned measurement leases its cores only (lease.sh cores), a whole-box quiet measurement is its own class (refused beside a slot or a lease, 20-minute cap, named owner), bounded suites never take it, every run keeps off leased cores, stopped holders are reaped after 5 minutes by every keeper, every waiter has a label file; the box-side self-tests in the gate; provision installs the lease tool and the headless Chromium libraries
Main, 7 October 2026, 15:07 UK: one global exclusive measure flock across unrelated measurements stalled build-1 at load 120 with
free slots (a stopped probe held it 5.5 h; an exclusive waiter queued every new shared taker) and build-2 behind a one-core VDF
bench. lease.sh (installed at /srv/builds/_bin/lease by provision.sh and by hand on both boxes) takes one flock per core for a
pinned measurement and the quiet file for a whole-box one; remote-run.sh takes quiet shared only for unbounded runs, excludes
leased cores from its set, and its keeper refreshes the holder file and calls lease reap (a STOPPED holder of a lease, quiet or a
slot for 5 minutes is killed with a line in _log/reaped.log). Keepers close the lock descriptors they inherit (an orphaned sleep
held a slot and the worktree lock 20 s past the release; the slot self-test had rotted on that since the worktree lock landed).
tools/ci/box-locks-check.sh runs lease.sh --self-test and remote-run.sh --self-test-slots on build-1. provision.sh also carries
the 16 libraries headless Chromium needs (installed by hand on both boxes at 14:5x UK) and a headless self-test step.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:30:40 +00:00
igneum-labs
71953bb157 CI queue: a second self-hosted runner (igneum-build-2 joins the pool label), docs-only pushes skip the compile jobs, the red watcher pinned to the box that posts
31 runs were queued on igneum-build-1's one runner at 13:15 UK on 7 October 2026 and nothing had concluded since 13:03Z, so no lane could read a conclusion.
- ci.yml: a `changes` job (ubuntu-latest) classifies the push with tools/ci/docs-only-check.sh (docs/, site/, *.md only = code=false; a new branch, a pull request, a force push or an API error = code=true); pow and sims need it and run only on code=true. The site job is unchanged on ubuntu-latest for every push. The classifier's self-test is in the gate.
- provision.sh and runner/register.sh: `--host <ip>` registers another box, forwarding BOX_HOSTNAME, RUNNER_NAME, RUNNER_LABELS, RUNNER_CPUS and RUNNER_JOBS (plain words only); RUNNER_CPUS writes AllowedCPUs into the service drop-in beside Nice=10, so igneum-build-2's runner is bounded like a suite (32 cores). The pool label is igneum-build-1 (both boxes carry it); ci-red marks the box with the record file and the poster, the default labels carry it, and igneum-build-1 got it through the runners API today.
- ci-red.yml runs on the ci-red label, so the red line always lands where the poster reads it.
- CLAUDE.md: the rule reads "read the conclusion when it lands, own a red before the next push"; pushes are never held.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:20:18 +00:00
igneum-labs
3da14f7dc0 fast-time key-succession harness: the carried-once check reads the RPC-first node's 'now carried by' line as well
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:19:44 +00:00
igneum-labs
c97de6a7f5 Merge branch 'master' of https://github.com/igneum-network/igneum into genesis-forward 2026-10-07 13:18:41 +00:00
igneum-labs
441c7ec0a4 Merge remote-tracking branch 'origin/master' into build-server 2026-10-07 13:17:19 +00:00