At 21:43 UK a merge on the box mirror (e1f7113f, 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>
Open: P3 to Answered by design (the measurement named: a wrapped segment proof on a 12 GB and a 24 GB card verified on a phone, the proving lane, the phase 2 benchmark); L5 to Answered with evidence (the clearance search of 3 October 2026 is in docs/legal/trademark-search-2026-10-03.md, one verdict per register); X15 to Answered by design (O-X.2 named on the public testnet, the testnet lane, inside its first month); P22 to Answered by design (spec 7.7 item 6 and the native veto contain it; the consensus proof of design 7 in phase 2 makes the rewards outputs); L1, L2 and L4 stay Open with the one sentence each that only the founder's decision with counsel answers. Other: M34, C2, X34 and X35's first status lines lead with Conceded or Fixed; tools/ledger-page.mjs takes the LAST status line of an entry (the export's rule), which is why the page counted four entries as Other that docs/ledger-public.md did not. The Counter ASIC lane's closing lines for X35, X36 and AP-F8-1 written in with its words and the commits named, and a new row X37 for the class v4 energy premium (Answered with evidence, 82 W at the 5090's knee). docs/ledger-public.md regenerated: 191 items, Open 3, Other 0.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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>
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>
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>
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>
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>
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>