Commit graph

174 commits

Author SHA1 Message Date
igneum-labs
3db6ff7901 Gate: the inline-rm check's run line once (the restore and the build-server lane's registration both carried it; identical text, run twice for nothing); the manifest to match
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 22:59:01 +01:00
igneum-josh
eddd7a4320 Merge remote-tracking branch 'build/master' into HEAD 2026-10-07 22:47:23 +01:00
igneum-josh
f8d2783672 Merge build-server 12c34192 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 22:34:58 +01:00
igneum-josh
9dc414a66a Merge build/master 1da9a3d3 into site-fresh-23 (scrub-3's live.mjs comment and live page taken; the Devnet 3 pill re-stamped from the partial)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 22:29:41 +01:00
igneum-labs
bf4d99cd6c The gate restored and given a manifest (7 October 2026, 22:2x UK): tools/ci/checks.txt names every check and a push is red when a name has no run line or a run line no name
At 21:43 UK a merge on the box mirror (73b7fe9b, site-land-dn3) resolved its conflict in tools/ci/pre-push.sh by taking an old copy: 88 lines gone, among them the hook's CI rule (master_ci_ok, the remote and exception logic), the branch red line, the overlap wall clock and the self-tests of the timeouts check, retry-once, ci-state, the public ledger and the gh-account check; every landing for 40 minutes ran the weaker gate and nothing said so. This commit restores the file (the one real addition of the other side, the inline-rm check, kept) and adds tools/ci/gate-manifest-check.sh in the never-push set: every push on every branch, and the merge's own push, compares pre-push.sh's run lines with tools/ci/checks.txt both ways; known-failed first (a dropped check and an unlisted check each red and named). Adding or removing a check edits checks.txt in the same commit; --write regenerates it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 22:23:59 +01:00
igneum-labs
dcf82441b5 Merge remote-tracking branch 'box/master' into scrub-3
# Conflicts:
#	tools/ci/pre-push.sh
2026-10-07 22:21:36 +01:00
igneum-labs
a3200310fe gh's active account on this Mac is the stored Igneum entry, checked before every push and every landing (main's rule, 7 October 2026, 21:5x UK)
tools/ci/gh-account-check.sh reads `gh auth status` for the account marked active and refuses with the line when it is not the stored entry (~/.config/igneum/gh-user) or when none is active; a machine without gh or without the file skips with a line. Known-failed first: a fake gh whose active account is another login is refused and named; the stored one passes; no active account is refused; no gh skips. The pre-push hook runs it live before any push; merge-to-master.sh before any landing; the gate carries its self-test. The rule row in tools/ci/README.md: no lane switches gh accounts on this Mac, ever. At 21:41 UK a lane switched gh to the second owner's login during the suspension; no transcript or history on the Mac shows which; the check closes it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 22:14:53 +01:00
igneum-josh
ff7f51de74 Merge build/master 41942c11 into site-fresh-23 (the Counter ASIC lane's chip text wins the row 17 and chip-paragraph conflicts; the sweep's Devnet 3, version, testnet, repository and dev-fee edits re-applied; the class v4 premium quoted at the lock, unlocked and the best points)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 22:13:34 +01:00
igneum-josh
41942c1155 Merge site-land-dn3 1f8f510b into master on the box mirror (the site reads Devnet 3 from master; repository links on the git host; the inline-rm gate) 2026-10-07 22:04:24 +01:00
igneum-josh
fe14eff15e Site freshness sweep, 7 October 2026 evening (site-fresh-23): every served page against tonight's facts
Devnet 3: the litepaper's live table reads Devnet 3 (first block 18:06 UK, first lock 20:02 UK, every upgrade on from block zero), its status chip, the precedents rows, the roadmap's phase 3 and the journey's phase 3; the nav pill names igneum-devnet-3 and chain id 4463 on every page (the live-dn3 edit had been made on the injected copy, which the build overwrote from the partial); evidence rows 7 and 10 carry Devnet 3's first block and first lock, row 17 the 5090 class v4 efficiency pass (136.84 MH/s at 475.5 W unlocked, 134.98 at 316.3 W at the 1,400 MHz lock, class v3 control 134.68 at 228.0 W), and a "what moved on 7 October" table.
Versions: Ember 0.3.22 and Wallet 0.1.5 wherever the litepaper and the MetaMask page named 0.3.9, 0.3.13, 0.3.14 or 0.1.4; downloads.json refreshed from the live index (hive 0.3.22; the Mac and Windows aliases still read 0.3.20 there).
Testnet: "weeks away, when the go checklist closes" becomes "armed, opens on the go word" on the home, download and miner pages, the litepaper (twice, plus roadmap row 5), the journey's phase 5, the ledger's X31 and O-X.2 rows and the ledger text check; no date anywhere.
Repository: the nav and footer partials point at git.igneum.network/igneum-network/spec (label Source, a neutral glyph); the X1 sentence no longer says "private repository until the public testnet" (litepaper, ledger X1, the public ledger table, the text check); evidence rule 1 and the "what would move a row" table drop the private-repository condition; provenance drops "before the repository goes public" and gains a tooling table (Forgejo, Caddy, SP1, CaDiCaL, licences approximate).
Cryptanalysis: the in-house adversarial pass replaces "paid independent cryptanalysis" on the litepaper (twice) and the public ledger page; the ledger page drops the USD 50,000 prize clauses (decision item 1 of 6 October: no bounty; nothing public about a prize). The staged outside-check clause stays as main's own cut.
Dev fee: the miner page's fee table (and /dev-fee from it) adds the pool row: no software fee in pool mode, the pool's own fee is the only one (docs/plans/pool.md C6, the Hive README).
MetaMask: Devnet 3 answers chain id 4463 until its class v5 floor, then 4464. Two founder-name comments reworded (site/api/live.mjs, tools/ci/README.md).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 22:03:10 +01:00
igneum-josh
e57da45af4 Public chip texts: the X9 wording retired (its claimed ratio is against a CPU core); the floor and the premium as measured numbers at the 5090's knee (2.1x at k = 1, 3.4x at a core three times better, the premium 81.8 W, Ember Tune named); the ledger pins X35 and X36 moved; Counter ASIC 3.0 status: the research file's two orders
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 21:59:56 +01:00
igneum-josh
88b1468d0b The manifest digest guard (the shipper and main, 7 Oct 2026 21:4x BST, from the Devnet 3 sweep that split the network): publish-manifest.sh refuses an app entry whose node pin reads another consensus params digest than the network's current one unless --move-clock \"HH:MM UTC, <reason>\" records the move (logged in the notes); tools/digest-read.sh reads a digest from a pinned binary started bare or from a running node's log or journal (read on build-1: the 0.3.23 pin ba75bf6f against the running Devnet 3 83eb50cd); known-failed self-test (2720d8d2 entry against 83eb50cd refused, accepted with the clock) in the gate. tools/ci/README.md = master's scrubbed copy plus the inline-rm rule
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 21:53:54 +01:00
igneum-josh
edbb290af6 tools/ci/README.md: the scrubbed master copy with the inline-rm rule appended (the landing had carried a stale copy over the scrub)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 21:52:40 +01:00
igneum-josh
c5ad5f09f4 Merge site-land-dn3 4acb736a into master on the box mirror (the site reads Devnet 3 from master; repository links on the git host; the inline-rm gate) 2026-10-07 21:50:18 +01:00
igneum-labs
71f38aeec1 Merge scrub-3 7b54e8b6 into master (gate: green on 7b54e8b6, recorded by tools/ci/pre-push.sh; landed on the box mirror under the exception declared by main: main's ruling, 7 Oct 2026 19:5x UK: the GitHub account is suspended, lanes land on the box mirror's master, the box gate stamp is the verdict; GitHub gets the fast-forward when it answers) 2026-10-07 21:46:40 +01:00
igneum-josh
73b7fe9b64 Merge site-land-dn3 d968cbb3 into master on the box mirror (the site reads Devnet 3 from master; repository links on the git host)
# Conflicts:
#	tools/ci/pre-push.sh
2026-10-07 21:43:06 +01:00
igneum-labs
7b54e8b656 Scrub: the founder list leaves the repository in every encoding; the never-push founder check decodes base64, hex and .b64 blobs too (7 October 2026, 21:4x UK)
tools/ci/founder-strings.b64 was the founder check's pattern list base64-encoded: a grep could not read it, any reader of the public host could (git.igneum.network was public from 21:26 UK; read off at 21:36). The list now lives only in a private file (~/.config/igneum/founder-strings on the Mac, /srv/discord-hooks/founder-strings on build-1 for the Discord guard; $IGNEUM_FOUNDER_STRINGS overrides) and site/forbidden-strings.txt carries no encoded copy. Readers: founder-strings-check.sh (skips with a line where the file is absent; the Mac's hook is the guard), site/scrub.mjs and launch-gates-check.mjs (the private file's patterns added where it exists), discord-hooks.mjs (three locations; the test writes a fixture list and loads the module after it), fresh-repo.sh (the private file; drops tools/ci/founder-strings.b64 from every commit; rewrites the base64 of every list regex out of every blob and scans for it).

The check's second pass (main's addition): every base64 literal of 24 characters or more, every hex literal of 24 or more and every *.b64 file is decoded and scanned, so no encoding hides a term again; the self-test plants each fixture sample in plain text, in a .b64 file, as a base64 literal and as a hex literal, each caught and named, and a tree without the list skips with its line.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 21:40:36 +01:00
igneum-josh
4acb736a5c 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 21:38:41 +01:00
igneum-josh
1b71978c20 rule 15 at six places; release 0.3.22: the 0.3.22 Windows take 2 fault and the skip, the version miss's second layer, the 0.3.23 pairs
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 21:35:17 +01:00
igneum-josh
f21c802122 Gate: no deletion inside an inline bash -c / sh -c string (main, 7 Oct 2026 21:33 BST: the desktop app asked the founder to approve lanes' commands carrying rm in an inline string); tools/ci/inline-rm-check.sh with a known-failed self-test (rm, find -delete, truncate, PowerShell -c list) and the tree scan, registered in pre-push.sh; the rule in tools/ci/README.md
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 21:34:29 +01:00
igneum-josh
af903c9b7b tools/ci/release-version-check.sh (rule 15): a release-0.3.N branch reads 0.3.N in Cargo.toml, Cargo.lock and version.h from its first commit; self-test on the 0.3.23 shape; wired into the pre-push gate
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 21:29:07 +01:00
igneum-labs
310fa49f06 The founder-strings check is the third never-push class (every push, every branch, 7 s): a site lane's branch, green-stamped before the check existed, carried the founder's name onto the mirror's master in tools/ci/scroll-width-check.mjs at 20:3x UK; the word is fixed here
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 20:52:55 +01:00
igneum-labs
6dd92ec6c6 Merge scrub b5ced6e2 into master (gate: green on b5ced6e2, recorded by tools/ci/pre-push.sh; landed on the box mirror under the exception declared by main: main's ruling, 7 Oct 2026 19:5x UK: the GitHub account is suspended, lanes land on the box mirror's master, the box gate stamp is the verdict; GitHub gets the fast-forward when it answers) 2026-10-07 20:28:40 +01:00
igneum-josh
9ab30a2163 Merge site-22 6886a4be into master (gate: green on 6886a4be, recorded by tools/ci/pre-push.sh; the full gate runs in CI on this merge) 2026-10-07 20:17:32 +01:00
igneum-labs
b5ced6e2a5 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 20:16:14 +01:00
igneum-josh
6886a4be95 Site, 7 October 2026 evening (Josh's four asks through main, one landing): (1) the bar's nav to the right: the mark and the devnet pill on the left, Mine, Network, Learn and the controls right-aligned with the same gaps and sizes, each open panel anchored under its button (the script sets --panel-left) and a panel that would run past the container aligned to its button's right edge, the phone sheet unchanged; (2) no lateral scroll: tools/ci/scroll-width-check.mjs on the gate (scrollWidth equals clientWidth on every route at 390, 768, 1024, 1280 and 1440 in both themes; only a table, code or diagram scrolls inside its own overflow-x box; self-test with a 100vw plus 20 px fixture known-failed first); (3) LG-5, the launch text: the front page leads with the three wants (hardware that stays useful, income without a cliff, a fair supply) and the live network with finality is the second screen; the litepaper's regulatory note reads "Not legal advice." alone over its eight sentences from future.md 8.3 (Josh: counsel not yet; the string "counsel is engaged" is in both forbidden-strings lists and gone from the research heading), the pay sentence stays; the journey's phase line reads Devnet 3 live, testnet next; (4) LG-1, /income: docs/analysis/income-tiers.md published as a page by tools/launch/income-page.mjs (checked on the gate against the document), listed under Learn, labels on every number, no price of IGN anywhere
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 20:12:04 +01:00
igneum-labs
111672909b Merge remote-tracking branch 'box/master' into ci-steward-2
# Conflicts:
#	tools/ci/merge-to-master.sh
#	tools/ci/pre-push.sh
2026-10-07 19:57:47 +01:00
igneum-labs
3b4b6c6396 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 19:56:08 +01:00
igneum-josh
cb6d72e3f1 merge-to-master --remote <name>: land on a box mirror's master while GitHub is unreachable (the box gate stamp as the verdict, the exception named in the merge message); the CI rule binds the GitHub remote only (main's ruling, 7 October 2026, 19:5x UK)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:50:20 +01:00
igneum-josh
700d5de146 Merge branch 'ci-steward' into ci-steward-2 2026-10-07 19:49:47 +01:00
igneum-josh
464eb77f84 Hook: the CI rule binds a GitHub remote; a box mirror remote or a declared IGNEUM_MASTER_EXCEPTION takes the local gate, printed with the push (main's ruling, 7 October 2026, 19:5x UK: the account suspended, lanes landing on the mirror's master)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:49:47 +01:00
igneum-josh
1d09d0f348 Merge remote-tracking branch 'box/master' into live-22
# Conflicts:
#	docs/plans/release-0.3.21.md
2026-10-07 19:41:19 +01:00
igneum-josh
9b8eb23a2e 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-josh 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 19:39:50 +01:00
igneum-josh
eb88ac2864 merge-to-master: a landed master is pushed to both box mirrors (the stale-mirror class: build-2's /srv/igneum.git master sat at 15:27's a4bca198 while GitHub carried cf7d6ccb, 7 October 2026, 18:25 UTC; three branches were cut from the stale tip)
mirror_master runs after the push to origin: one fast-forward push per mirror in IGNEUM_MIRRORS (default: the two box files' hosts at /srv/igneum.git), best effort, a line per mirror, a down or diverged mirror never fails the landing. Self-test: a bare mirror behind master is fast-forwarded; a non-fast-forward push leaves it and is reported.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:30:15 +01:00
igneum-josh
7365eb5629 Build boxes to near max (Josh, 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 19:23:14 +01:00
igneum-josh
ee3924bcae live-22: the gate script is master's own plus the legend, shard-words and leaderboard test files (the release branch's copy had carried a line for a file master does not hold)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:22:23 +01:00
igneum-josh
64d6be24c8 merge-to-master.sh takes MERGE_REMOTE (default origin): the box mirror's master while GitHub is suspended, 7 October 2026
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:19:47 +01:00
igneum-josh
2c56be7516 /live: the shard sentence from the block's facts and the leaderboard's top ten (7 October 2026). scene/live-dag.js 2.0.6 (IgneumDag.shardWords, the one shard sentence; legend 2.0.5) synced into site/live-dag.js; the /live inspector prints it per shard and as the count line (a planned shard with no prover reads awaiting a prover with the block's age; an empty plan reads loading, excluded, not yet ordered or off the selected chain, never one fixed sentence); the weight leaderboard shows the top 10 by default with a toggle under the table (Show top 20, then Show all N with the live count, then back), the viewer's own key pinned as an extra row below the ten when it sits outside them, the table in a box of fixed height so the page below never jumps, the tag line unchanged (site/leaderboard.js carries the row logic, site/lib/leaderboard.test.mjs on the gate); tools/site-serve.mjs answers /api/live from IGNEUM_LIVE_FIXTURE for captures and tests off the database; the scene tests bind each half where it lives (site on master, app on the release branches)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:13:23 +01:00
igneum-josh
5bd879144a Jobs publisher: a remove refuses a job the target's latest report shows running, and any job published with --installs-app, unless --force \"<reason>\" (7 Oct 2026 18:53 BST: a removal reached PC 2 one second after its job launched a silent installer over the running app; the runner's abort ended the process tree and the app went dark); tools/ci/publish-jobs-check.sh in the gate
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 19:10:18 +01:00
igneum-josh
543aa572bc merge-to-master: an unknown CI read is waited through inside the deadline, not refused at once (7 October 2026, 18:0x UK: 500s on pushes, a 404 on a live run id, then the account suspension; the rule refuses only a verdict, and a missing verdict only at the deadline)
ci_gate: unknown prints the reason and asks again until --ci-wait runs out (CI_WAIT_SECS for the self-test). master_gate: three reads
over a minute before an unknown counts; a lasting unknown still refuses (no verdict, no merge). Self-test: a blip (unknown, then
green) merges; a lasting unknown is refused at the deadline; the same two shapes for master's read.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 18:04:22 +01:00
igneum-josh
9189aea685 Engine gate: any igneum-pow*/src/ directory pairs (the fork pairs through a paths override that may name the tree igneum-pow-amend, the archive of 017e7037; the shipper, 7 Oct 2026), the matched name printed in the line; self-test with both names
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:59:28 +01:00
igneum-josh
cb448b5f6d Merge remote-tracking branch 'origin/master' into ci-steward 2026-10-07 17:57:56 +01:00
igneum-josh
df002ea541 Merge remote-tracking branch 'origin/master' into build-server 2026-10-07 17:56:30 +01:00
igneum-josh
fc8064a299 Build boxes: the engine gate (igneumd and igneum-miner fetched by build-remote must carry igneum-pow/src/ paths; a commit string alone does not prove the engine: the stub-engine 21d8f454 that rejected every block on the Devnet 3 hub, 7 Oct 2026); tools/ci/engine-check.sh with its self-test in the gate
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:55:43 +01:00
igneum-josh
2098581bb8 Merge remote-tracking branch 'origin/master' into site-ui-5 2026-10-07 17:37:57 +01:00
igneum-josh
18377b3b34 CI steward (7 October 2026, 17:3x UK): master takes only CI-passed commits; every job has a budget; the watcher reads cancelled and timed-out runs; box and network checks retry once
Thirteen failure emails between 15:26 and 16:53 UK. The classes and what closes them:
- the box-locks check on a hosted runner (10 runs): closed by c3271ac3 and fa5d4596 earlier
- windows-ci's stale payload-inputs pin (3 runs): closed on master by 6996ad3f; update-return's dispatches still carry e69e8a39
- three hosted site jobs on master hung in the tree gate for over two hours (no timeout-minutes): ci.yml now carries
  site 15, changes 10, pow 60, sims 45, the overlap sweep runs under a 10-minute wall clock where GNU timeout exists, and
  tools/ci/workflow-timeouts-check.sh fails a job without a budget (self-test: a job without the key, a wrong budget)
- a branch merged with no ci run of its own (era-vdf 0e2d6b1c, 16:31 UK): master's igneum-pow suite went red and five
  docs-only merges landed green over it because their runs skip the compile job. tools/ci/ci-state.mjs reads the runs
  API through gh (a commit's newest run, master's last COMPILED run, a branch's last red); merge-to-master.sh pushes an
  unrun branch for a run, waits for a queued one printing the clock, refuses a red one and refuses any merge onto a red
  master except the declared fix (--fixes-master); the pre-push hook refuses a push to master whose commit, or whose
  merge's branch parent, has no green run on that exact sha; a feature-branch push prints the branch's previous red
  first. Self-tests with a fake gh in all three.
- ci-red.yml fires on failure, cancelled and timed_out and hands the conclusion to red-watch.mjs, whose line names the
  kind (CI red, CI cancelled, CI timed out); the self-test reads the workflow file for the three conclusions
- tools/ci/retry-once.sh: one retry before red for the box-locks check, the scene parity check and the live public API
  check (each keeps its own skip line on a runner without the resource)

GitHub's branch protection cannot be applied: the organisation is on the free plan and the repository is private (the
API answers 403, "Upgrade to GitHub Pro or make this repository public"), so the two scripts are the enforcement; the
rule is one line in CLAUDE.md under the CI block.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:37:13 +01:00
igneum-josh
b34d19328f site: the chip claim launch-first in the four public places (Counter ASIC lane, docs/plans/counter-asic-3-public-text-2026-10-07.md sections 1 to 4, on Josh's "I thought we were making it 2.1 from launch?")
Home row 03, the litepaper's chip section at /litepaper#chip-model (paragraph and table; the class v3 row last, "never the launch
state"), the miner page's line and evidence.md row 17 in its eight columns: 2.1x to 3.9x under class v4 from the first block,
class v5 removing the stored-dataset chip as a category, the 5x to 9x only as the class v3 baseline, the devnet's activation
height as a devnet fact. The litepaper's abstract carried the same claim in the old form ("5x to 9x today; class v4, now on
the vote") and now reads launch-first too. tools/ci/ledger-text-check.mjs follows the sentences (X35 on the home page and the
litepaper). No disclosure prize anywhere.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:34:12 +01:00
igneum-josh
d79ed8120b Merge remote-tracking branch 'origin/master' into site-ui-5 2026-10-07 17:30:59 +01:00
igneum-josh
693a0e0ada site-ui-5: the padding and visuals sweep (7 October 2026, 17:xx UK): the /wallet band's padding, tools/ci/padding-check.mjs in the gate, every finding fixed in site.css, the eye pass
Josh: the ember band on /wallet had no vertical padding (the heading on the band's top edge, the button on its bottom), then
"run a full site sweep for padding and visuals".

- The band: .band .wrap carried the padding and the three bands use .container; both selectors now, 56 px (40 on phones), and
  24 px at the sides on phones.
- tools/ci/padding-check.mjs: renders every served page at 390, 768, 1024, 1440 and 1600 in both themes and flags TIGHT (text or
  a control under 24 px from the edge of the filled band, card or section that holds it; rows of radius 12 and under are the
  app's compact rows and keep their own padding; small filled things such as buttons, pills, badges, tabs, cells and the bar are
  never containers), SCALE (a section's vertical padding not 0 and not a multiple of 4 from 24), TOUCH (controls under 6 px
  apart outside segmented groups), OVERRUN (an image or canvas past its frame) and UNDER-BAR (a heading under the sticky bar on
  load, an anchor the bar would cover). --self-test builds the fixture from the site's own stylesheet and bar with the exact
  /wallet band with its padding lost, a touching pair, an image over its frame and a heading under the bar; each must fail,
  the clean twin must pass. A gate line runs it (self-test, then the built site); where no browser exists it says so.
- Findings fixed (first run 2,740, then 1,040, then 48, now 0 at 230 renders): page heroes 64/48 (were 65/45), the
  observatory head and the 404 the same, the footer's bottom 24, doc sections and the litepaper's 40 (were 42), .sec 72 at
  tablet (was 70), the 404 card 36, /live's motion block 24 (was 25), the scenes lab 48 (was 50); every card at 24 inside
  (download cards, home tiles, the live tiles and stats, the evidence labels, the wallet state cards, the journey phases, the
  live inspector and toolbar, the download card on phones).
- The eye pass over every page at 1440 and 390 dark: the journey's phases are cards now, so the old timeline rail and marker
  (drawn for an unboxed list, sitting on the card's top border) go and the when column keeps clear of the body; tables keep
  words whole (break-word, not anywhere: "regenerat es" on the litepaper) and give the label column 14ch (one word per line on
  /randomx); the litepaper's body paragraphs share one measure; the ledger's count-table chips stay on one line; orphan words
  go through text-wrap: pretty on body text (copy law 18, "measurement." alone on /claims); the dev-fee page lost its doubled
  gutter (a lifted section keeps its own .container) and its table clears the text above; /faucet and /metamask keep a gap
  between headline and lead, line their two cards up at the top and end 72 px above the footer; a heading after a card grid
  gets 40 px.
- The overlap sweep at the same five widths and both themes: 0 overlaps at 290 renders.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:30:58 +01:00
igneum-josh
8a977afc51 Site currency (currency-21's site side, for master tonight): site/money.js is the miner app's currency rules for the site (navigator.language picks the currency and the typical tariff, a saved switch wins, one Intl.NumberFormat call for every money figure, no exchange rate anywhere; tables generated from the app's View block, site/lib/money-regen.mjs rewrites them, site/lib/money.test.mjs fails on drift once the app side reaches master and waits until then); the card picker (yourcard.js on /miner and /app) shows the card's electricity a day at the typical tariff with a currency switch saved in localStorage igneum-currency, loading /money.js itself so no page was edited
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 17:30:22 +01:00