igneum/tools/ci
2026-10-09 08:07:06 +00:00
..
batches Merge master d14dc6bad into ci-record-verdict under the master-landing lock 2026-10-09 07:43:07 +00:00
canary Rule 33 record 1176efb9: the record's own verdict FAIL (five of six blocks FAIL at sync; the mac block's PASS stays as its row for the Mac entry); the batch re-recorded 2026-10-09 07:27:48 +00:00
fixtures Kill by exact command line or pid file, never by a name: tools/ci/kill-by-name-check.sh in the gate; the 36 pgrep/pkill literals in the tree fixed 2026-10-06 22:10:31 +00:00
no-kill-shim The founder's word by construction: the kit ISA check, kill-by-name rule 5 and the no-kill shim, the cut batch's read-back 2026-10-08 19:27:43 +00:00
notes The founder's ratification of the Token Value decisions (D01, D03, D05, D06 RATIFIED; D02, D04 RATIFIED WITH PARAMETER PENDING), each his word verbatim, through the recorder's decision form (a replayable note); the generator keeps a ratified decision at regeneration 2026-10-09 08:07:06 +00:00
windows 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 2026-10-07 18:39:50 +00:00
bash-body-check.sh CI: bash bodies in PowerShell jobs pass bash -n (the lost-quote class) 2026-10-05 21:38:41 +00:00
box-locks-check.sh 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) 2026-10-07 15:05:56 +00:00
build-from-manifest.sh build-from-manifest: vendor/igneum-node-exec is a second checkout at the node sha, never a link (an overlay ships directories only) 2026-10-08 19:26:30 +00:00
build-kind-default-check.sh Merge remote-tracking branch 'box/master' into scrub 2026-10-07 19:16:14 +00:00
canary-check.sh Kit 2's rule-33 record reads verdict FAIL (a FAIL block fails the record; the check refuses a PASS over a FAIL block); F0's mining-class row cites the node fork's pow-freeze.txt and the 202 batches' rule-19 lines; GOV-01 and INT-07 move with their pages 2026-10-09 07:25:00 +00:00
check-workflow-shell.mjs Public-testnet readiness: fee floors and pgas table analysis, testnet identity doc, G14 rewrite plan with dry run, G13 signed build inputs, testnet terms, MetaMask page 2026-10-04 22:54:56 +00:00
checks.txt Merge remote-tracking branch 'box/master' into ci-guest-format 2026-10-08 21:02:04 +00:00
ci-state.mjs Every gate gh call reads Igneum's own gh directory, never the founder's (main's rule, 8 October 2026, 10:0x UK): tools/ci/gh-env.sh sets GH_CONFIG_DIR=~/.config/gh-igneum for the gate, the hook, the merge tool and the CI-state reader 2026-10-08 08:51:55 +00:00
commit-string-check.sh Fleet: the class v4 rehearsal tooling (CUDA worker wrapper, generator-4 worker, pack re-export), the standing-fleet rule (supervisor, library, page block, gpu-fleet.md), the 0.3.15 publish script, the Devnet 2 script's ports and bps knobs, the collector's seed knobs 2026-10-06 19:46:32 +00:00
copied-sources-check.sh Merge origin/master into ca3-coord: Counter ASIC 3.0 complete (every gate green, P2 green, P1 written); the drive-ref check skips single-quoted here-strings and the copied-sources check reads code lines only (master's CI red on 471832b); main's decisions and the close in the status file 2026-10-06 18:05:54 +00:00
defaults-line-check.sh cross-remote.sh: the default cross-build runs again (a trailing comment had swallowed the defaults line); the class gets a CI check 2026-10-06 20:55:44 +00:00
docs-only-check.sh 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 2026-10-07 13:20:18 +00:00
engine-check.sh 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 84601bc9; the shipper, 7 Oct 2026), the matched name printed in the line; self-test with both names 2026-10-07 16:59:28 +00:00
export-exclude.txt Merge remote-tracking branch 'box/master' into verdict-cache-fix 2026-10-08 21:06:28 +00:00
forbidden-strings.txt Site, 7 October 2026 evening (the project lead'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 (the project lead: 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 2026-10-07 19:12:04 +00:00
founder-strings-check.sh 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) 2026-10-07 20:40:36 +00:00
gate-manifest-check.sh The gate refuses a landing on the public host while the marker stands, binds every remote rule to the URL, and its manifest check survives GNU sed 2026-10-08 12:57:40 +00:00
gh-account-check.sh Every gate gh call reads Igneum's own gh directory, never the founder's (main's rule, 8 October 2026, 10:0x UK): tools/ci/gh-env.sh sets GH_CONFIG_DIR=~/.config/gh-igneum for the gate, the hook, the merge tool and the CI-state reader 2026-10-08 08:51:55 +00:00
gh-env.sh Every gate gh call reads Igneum's own gh directory, never the founder's (main's rule, 8 October 2026, 10:0x UK): tools/ci/gh-env.sh sets GH_CONFIG_DIR=~/.config/gh-igneum for the gate, the hook, the merge tool and the CI-state reader 2026-10-08 08:51:55 +00:00
github-suspended No push, fetch or poll of GitHub while tools/ci/github-suspended stands (8 October 2026, 03:5x UK): merge-to-master.sh refuses a GitHub remote with the line and exit 2 before any gh or git call; the pre-push hook refuses any push to a GitHub remote 2026-10-08 02:52:31 +00:00
glibc-ceiling-check.sh 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 2026-10-07 00:35:18 +00:00
guest-format-check.sh The guest input format moves with the pinned guests: a GUEST_INPUT_FORMAT bump without a change under proving/igneum-prove/elf/ is refused at the merge; the gate reads the elf manifest's guest_input_format against the source constant (a pre-provenance pin is a named line); self-tests 2026-10-08 20:50:45 +00:00
identity-check.sh INT-07 on kit 2's rule-33 record (the mac block PASS, one of four; NOT RUN in progress until the other three join); F0's rule-33 row; the identity grep covers the canary records and the owner's name in a host string; the recorder takes a cell's in_progress flag (only the legacy word RUNNING had set it) 2026-10-09 01:32:22 +00:00
inline-rm-check.sh 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 2026-10-07 20:38:41 +00:00
install-hooks.sh CI hardening: one gate script for the hook and CI, the research exclusion list, the Windows paths check, the red watcher, the box runner switch, the failure classification 2026-10-06 20:58:54 +00:00
int-suite.mjs REV and INT generators keep evidence_records, blocked_on and method_recorded on regeneration (a regenerated suite dropped every recorded cell; self-tests assert they survive) 2026-10-08 20:43:52 +00:00
kill-by-name-check.sh kill-by-name rule 6: a kill chosen by a pattern (kill fed by pgrep, lsof, fuser -k, an ss or netstat pipeline, xargs kill, a loop over a listing) is refused in every tracked script and job body; allowed: a recorded pid, the pid file, pkill -F, fleet-bg.sh stop, pgrep -P <recorded pid>; the socket-sweep fault as the class's fourth instance 2026-10-08 22:50:56 +00:00
kit-isa-check.sh The founder's word by construction: the kit ISA check, kill-by-name rule 5 and the no-kill shim, the cut batch's read-back 2026-10-08 19:27:43 +00:00
kit-path-check.sh CI: run jobs test their fetched kit before use (the wiped-jobs-folder class) 2026-10-05 22:37:29 +00:00
launch-gates-check.mjs 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) 2026-10-07 20:40:36 +00:00
ledger-text-check.mjs The master's wording: the three boundaries with 'automatically' (every page and the pins), the ranking ceiling in the master's words (no present-tense rank; what an independently substantiated pass would and would not support), the proving record served as a disrupted record, not a benchmark 2026-10-08 19:30:45 +00:00
link-check.mjs Site reset to Igneum 2.0, first pass: /bench and /journey gone, no testnet, no 0.x history, the Igneum 2.0 devnet, the positioning line 2026-10-08 15:40:33 +00:00
merge-to-master.sh The VR and TV suites of the acceptance registry from the token value rules and gates (40 rules PROPOSED requiring ratification, 32 gates NOT RUN with scope and inherited links), the decisions block D01 to D06 UNAPPROVED, the counting notes; generated by tools/ci/token-value-suite.mjs, regenerated at the merge, checked in the gate 2026-10-09 08:01:02 +00:00
mirror-reset-check.sh Stale-overlay class closes with its check: tools/ci/mirror-reset-check.sh in the pre-push gate 2026-10-06 22:47:16 +00:00
never-served-check.mjs /acceptance: the Test and Acceptance Standard 1.0, case by case, rendered from docs/plans/igneum-2.0-test-registry.json 2026-10-08 17:40:41 +00:00
no-conflict-markers.sh ci: no conflict markers in tracked files (check + pre-push hook that also builds the site) 2026-10-05 16:45:09 +00:00
no-foreign-tree-writes.sh CI hardening: one gate script for the hook and CI, the research exclusion list, the Windows paths check, the red watcher, the box runner switch, the failure classification 2026-10-06 20:58:54 +00:00
no-secrets-check.sh no-secrets-check: a line marked no-secrets-ok: <reason> is a declared fixture; the wallet vault test's throwaway key marked 2026-10-06 19:33:02 +00:00
overlap-check.mjs overlap-check: a text sliver at a scroll pane's edge is scrolled away, not covered (the miner's Earnings ladder under the closed log drawer's 1 px bar at 8ddeea78 read as covered); the clean fixture now carries that shape (7 October 2026, 16:1x UK) 2026-10-07 14:03:28 +00:00
override-json-check.sh Counter ASIC 3.0 gates (node): class v4 = mx8+sh256x27 through the stack (igneum-pow ProgramClass::V4, V4_CLASS, generator 4, program_id(4, seed, attempt), the era composed as v3's; program.h and program.json class v4; packcheck, packfile.h, the CUDA and OpenCL identity rule and the Metal worker accept generator 4 and the class=v4 token, the Metal worker takes v4 from the prepared pack only; v2 and v3 byte-identical, the pinned packs diffed); the G4 harness class-v4.mjs (two switches, the never case); override-60x.json: the v4 field at never, the duplicated proving v1 block removed, the four 0.3.12/0.3.13 fields added; CI check override-json-check.sh (no duplicate key in any override file) 2026-10-06 15:58:49 +00:00
p01-vectors.py p01-vectors: the pack the worker holds is read from its ready line and every other segment is prepared (phase 3 on a worker started on the day D pack refused every day D+1 job at 22:56 UK: missing 1,048,576, no disagreement); the self-test's phase 3 runs on a day D worker 2026-10-08 22:02:08 +00:00
padding-check.mjs 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 2026-10-07 18:39:50 +00:00
pc1-step-budget-check.sh The gate refuses a landing on the public host while the marker stands, binds every remote rule to the URL, and its manifest check survives GNU sed 2026-10-08 12:57:40 +00:00
pinned-guests-check.sh ci: the pinned-guests check ignores comment lines 2026-10-05 13:01:38 +00:00
playbook-quit-check.sh The gate refuses a landing on the public host while the marker stands, binds every remote rule to the URL, and its manifest check survives GNU sed 2026-10-08 12:57:40 +00:00
pre-push.sh Merge remote-tracking branch 'box/master' into ci-guest-format 2026-10-08 21:02:04 +00:00
proof-rule-bypass-check.sh The 2.0.1 pair recorded (7cfa422a + ee0c2e11), F0 re-pinned with the founder's two rulings, and four gate tools from Review B's night 2026-10-08 19:06:04 +00:00
prover-socket-check.sh Kill by exact command line or pid file, never by a name: tools/ci/kill-by-name-check.sh in the gate; the 36 pgrep/pkill literals in the tree fixed 2026-10-06 22:10:31 +00:00
ps-drive-ref-check.sh Merge origin/master into ca3-coord: Counter ASIC 3.0 complete (every gate green, P2 green, P1 written); the drive-ref check skips single-quoted here-strings and the copied-sources check reads code lines only (master's CI red on 471832b); main's decisions and the close in the status file 2026-10-06 18:05:54 +00:00
public-api-check.mjs Public stats API: /api/stats and /api/supply, documented with live examples, contract test and a live check 2026-10-05 19:35:40 +00:00
publish-jobs-check.sh 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 2026-10-07 18:10:18 +00:00
README.md Merge remote-tracking branch 'box/master' into ci-guest-format 2026-10-08 21:02:04 +00:00
red-watch.mjs Merge remote-tracking branch 'box/master' into scrub 2026-10-07 19:16:14 +00:00
registry-evidence-check.sh Evidence rules: a new evidence file lands free (rule 2 binds modified and deleted files); the recorder refuses a missing or directory tree path at record time; the kills batch cites the two experiments' own files, not the class-v6 directory 2026-10-08 20:23:03 +00:00
release-manifest-check.mjs Key succession, the pin tool's half: elf/prior/ and the manifest's prior and succession blocks, the host embedding both pairs, the release-manifest check comparing both 2026-10-08 17:34:55 +00:00
release-manifest-check.sh release-manifest-check: a proving manifest's source_commit must be an ancestor of the tree's HEAD (V6-10 provenance); no source_commit is a note 2026-10-08 19:52:57 +00:00
release-version-check.sh 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 2026-10-07 20:35:17 +00:00
retry-once.sh 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 2026-10-07 16:37:13 +00:00
review-suite-check.sh The VR and TV suites of the acceptance registry from the token value rules and gates (40 rules PROPOSED requiring ratification, 32 gates NOT RUN with scope and inherited links), the decisions block D01 to D06 UNAPPROVED, the counting notes; generated by tools/ci/token-value-suite.mjs, regenerated at the merge, checked in the gate 2026-10-09 08:01:02 +00:00
review-suite.mjs REV and INT generators keep evidence_records, blocked_on and method_recorded on regeneration (a regenerated suite dropped every recorded cell; self-tests assert they survive) 2026-10-08 20:43:52 +00:00
route-spill-check.sh route-spill check: the unreachable-box probe points at port 1 (ssh URI), so a gate run on a build box reads it as down 2026-10-08 20:52:14 +00:00
rule24-crate-gate.sh Rule 24: a landing that touches a crate checks and tests it on the box before the merge 2026-10-08 16:25:54 +00:00
rule26-no-revert.sh A registry landing carries its batches and the merge replays them onto master's copy; tonight's three batches ride it 2026-10-08 18:21:59 +00:00
scratch-spare-check.sh build server: the remote checkout's clean spares a lane's scratch (AP-H1, the lost-scratch class) 2026-10-07 08:24:07 +00:00
scroll-width-check.mjs 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 2026-10-07 19:52:55 +00:00
second-engine-check.sh The gate refuses a landing on the public host while the marker stands, binds every remote rule to the URL, and its manifest check survives GNU sed 2026-10-08 12:57:40 +00:00
signer-pipe-check.sh C4 fix: certificate-driven reorg written into spec 3.5, 3.2 C4, 3.10 C4 and F1/F2, 3.11.7; ledger C4 fix paragraph, F16 note (the honest-partition row for option B is gone), O-3.6 narrowed; bench-log "the C4 fix" with every harness row; c4.mjs v2 mode, WINDOW knob, forced reconnect at the heal (addPeer, nodes on --unsaferpc), adopted-lock count; two tooling classes fixed: the signer piped into head (SIGPIPE panic under pipefail, four scripts, tools/ci/signer-pipe-check.sh in CI) and the one shared build-inputs.zip (build-job.mjs names every job's zip, push-build-inputs.sh --name and pruning) 2026-10-05 18:17:36 +00:00
sims-branch-check.sh 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) 2026-10-07 13:46:42 +00:00
site-contrast-check.mjs Site UI 3: one design system, the live DAG module, the home page as one screen, the litepaper as a paper, every page on the shared tokens 2026-10-06 19:27:47 +00:00
site-nav-check.mjs /prize: the disclosure prize's terms (a placed or measured adversarial implementation beating the served bracket, or a reproduced shortcut; not confirmations, synthesis-only results, outside-budget work or excluded classes; judged in-house, the finding served either way); the phrase leaves the served forbidden list on the founder's word of 8 October; the audit's prize row and the three closed open items; the og prize sub line within 80 2026-10-08 20:53:08 +00:00
site-orphan-check.mjs Site UI 3: one design system, the live DAG module, the home page as one screen, the litepaper as a paper, every page on the shared tokens 2026-10-06 19:27:47 +00:00
spec-constants-check.mjs spec-constants check: the (c'') window-cap literal is read from site_window_words (class v5 moved it out of distinct_ratio_pass); the self-test fixture follows 2026-10-07 22:58:22 +00:00
test-map-doc.mjs The acceptance layer: the test harness map, its page, and the recorder that writes runs into the registry 2026-10-08 17:35:45 +00:00
test-map-merge.py The 2.0.1 pair recorded (7cfa422a + ee0c2e11), F0 re-pinned with the founder's two rulings, and four gate tools from Review B's night 2026-10-08 19:06:04 +00:00
test-map.json The VR and TV suites of the acceptance registry from the token value rules and gates (40 rules PROPOSED requiring ratification, 32 gates NOT RUN with scope and inherited links), the decisions block D01 to D06 UNAPPROVED, the counting notes; generated by tools/ci/token-value-suite.mjs, regenerated at the merge, checked in the gate 2026-10-09 08:01:02 +00:00
test-record.mjs The founder's ratification of the Token Value decisions (D01, D03, D05, D06 RATIFIED; D02, D04 RATIFIED WITH PARAMETER PENDING), each his word verbatim, through the recorder's decision form (a replayable note); the generator keeps a ratified decision at regeneration 2026-10-09 08:07:06 +00:00
token-value-suite.mjs The founder's ratification of the Token Value decisions (D01, D03, D05, D06 RATIFIED; D02, D04 RATIFIED WITH PARAMETER PENDING), each his word verbatim, through the recorder's decision form (a replayable note); the generator keeps a ratified decision at regeneration 2026-10-09 08:07:06 +00:00
whole-body-check.sh fast time: the three-node fork-gate harness, its six-case runner and a box wrapper for harness runs (mission item 4) 2026-10-07 12:26:38 +00:00
windows-paths-check.sh CI hardening: one gate script for the hook and CI, the research exclusion list, the Windows paths check, the red watcher, the box runner switch, the failure classification 2026-10-06 20:58:54 +00:00
windows-spawn-check.mjs app: every elevated launch through one hidden-console builder; CI check for Windows spawns; PC 1 console watchers 2026-10-06 08:21:46 +00:00
workflow-timeouts-check.sh 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 2026-10-07 16:37:13 +00:00

CI checks

Check What it fails Since
no text overlaps (overlap-check.mjs) A served page, or a miner or wallet screen (behind IGNEUM_OVERLAP_APPS=1), where a visible run of text is covered by another element (a pill over a caption, a label over a value, a card over its neighbour, text under the header at rest), clipped by an overflow-hidden ancestor, or past the viewport; a page that scrolls sideways. Five widths, light and dark, the home hero at rest and at each step. A fixture with one deliberate overlap of each kind must be flagged first (--self-test). Needs a headless Chromium: CI installs Playwright; the Mac ships the pages to build-2 (infra/build-server/overlap-browser.sh). 7 October 2026: the hero's step pill sat on the caption's second line ("Two thirds of the weight sign. The checkpoint locks.") at every desktop width, found by the founder on the live site

| master takes only CI-passed commits (ci-state.mjs, merge-to-master.sh, the hook's master_ci_ok) | A push to master whose commit, or whose merge's branch parent, has no green ci run on that exact sha (the runs API through gh: red, queued, none or gh unreachable all refuse); a merge onto a master whose last compiled run is red, unless declared the fix (--fixes-master). The merge tool pushes an unrun branch for a run and waits for a queued one with the clock. A feature-branch push prints the branch's previous red first (--branch-red). | 7 October 2026: era-vdf's tip 0e2d6b1c merged with no ci run; master's igneum-pow suite red from 16:31 UK under five docs-only green merges | | every workflow job carries timeout-minutes (workflow-timeouts-check.sh) | A job in .github/workflows without timeout-minutes, or a budget off its measured line (site 15, changes 10, pow 60, sims 45). | 7 October 2026: three hosted site jobs on master hung over two hours each in the tree gate; the six-hour default was the only stop | | a box or network check gets one retry (retry-once.sh) | Nothing by itself: wraps the box-locks check, the scene parity check and the live public API check so a first failure is printed and retried once; the second is the verdict. The checks keep their own skip line on a runner without the resource. | 7 October 2026 | | the red watcher fires on cancelled and timed-out runs too (ci-red.yml, red-watch.mjs) | The watcher's if missing any of failure, cancelled, timed_out, or the conclusion not handed to the record step (the self-test reads the workflow file); the line names the kind: CI red, CI cancelled, CI timed out. | 7 October 2026 |

| gh's active account is the stored Igneum entry (gh-account-check.sh, in Igneum's own gh directory ~/.config/gh-igneum through gh-env.sh, never the founder's) | A push or a landing from this Mac while Igneum's gh directory names any other account as active, or none (the refusal names the one step: the founder or main stores the Igneum token there with GH_CONFIG_DIR=~/.config/gh-igneum gh auth login --with-token; no lane does); skipped with a line while github-suspended stands. RULE: no lane switches gh accounts on this Mac, ever; the second owner's login belongs to other projects and must never touch Igneum; the stored entry's name is in ~/.config/igneum/gh-user, never in the repository. | 7 October 2026, 21:41 UK: a lane switched gh to the other login during the suspension; nobody could say which | | F02 (Review B): the proof-rule test bypass cannot reach a release build (proof-rule-bypass-check.sh; a cell of the node matrix) | An env read of IGNEUM_TEST_SKIP_PROOF_RULE with no cfg(test) or cfg(feature) guard in the 12 lines above, or under a feature in the crate's default features; a release igneumd carrying the bypass string. Red on every node sha until the proving lane's change (the read under a non-default feature or cfg(test)) lands | 8 Oct 2026 | | the guest input format moves with the pinned guests (guest-format-check.sh; the diff rule in merge-to-master.sh, the tree rule in the gate) | A proving host whose GUEST_INPUT_FORMAT moved while the pinned guests stayed (8 October 2026, the V6-07 sub-lane: a master-built host failed every proof against the 5 October pair) | | the test map merges structurally at a landing (test-map-merge.py) and the harness page regenerates from the merged map (merge-to-master.sh) | Nothing by itself: two lanes adding cells collided as text and the regenerated page lost rule 26's race; the merge now keeps master's cells plus the branch's, minus what the branch removed and master left, and regenerates the page | 8 Oct 2026 | | a push that lost the ref race retries without re-running the hook (merge-to-master.sh push_race, 12 tries) | Nothing by itself: under one landing a minute a 70-second hook per try never won master's compare-and-swap (Review B's landing lost three in a row); once the hook has passed on the first try and the rejection is a ref race, later tries push --no-verify (both parents gated) | 8 Oct 2026 | | the kit ISA check (kit-isa-check.sh; in the gate as a self-test, in merge-to-master.sh over any executable a landing adds under packaging/kits or bin, and in the shipper's cut gate over the kit) | Any binary whose disassembly carries a zmm register, an EVEX opmask or an EVEX-only mnemonic (AVX-512): a fleet binary comes only from the cross-build kit at the x86-64-v3 baseline, never from a box's native gate build (79 fleet hosts died on one, 8 Oct 2026) | 8 Oct 2026 | | kill-by-name rule 5 and the no-kill shim (kill-by-name-check.sh, no-kill-shim/{pkill,killall} exit 97 when first in PATH) | A pgrep -f/pkill -f pattern that is a bare path, a log name or an unanchored word; only ^-anchored command patterns, the bracket form, a variable, -x or -F pass (fifteen Mac processes died to a grep, 8 Oct 2026) | 8 Oct 2026 | | a "cut" batch needs its read-back (test-record.mjs) | A batch declaring cut without the binary's build-N:/srv path, its commit string read back equal to the manifest sha, and the kit ISA check's clean line; a sha is cut only when its binary exists on build-1 with its commit string read back | 8 Oct 2026 | | rule 33: a release entry publishes only with a PASS fresh-install canary record for its sha (canary-check.sh; tools/ci/canary/<sha>.json, the form from --form; refused without by packaging/ota/publish-manifest.sh --release-sha, publish-public.sh and deploy-win.sh; the canary cell maps INT-07) | A release entry published before its sha had run a fresh install on a non-AVX-512 box with an empty datadir, synced, mined five minutes with zero refusals, claimed, proved and paid or queued one shard and quit inside a bound, every line read back (the founder's "no more lost time", 8 October 2026) | | the INT suite is generated from the master edition's integration gates (int-suite.mjs; the owner per the coordinator's crosswalk) and INT-17 is a rule of the writer: a cell declaring a missing oracle, pinned keys or mandatory real-proof fixture writes BLOCKED, never PASS | A registry whose INT suite drifts from traceability.json; a batch cell with prereqs where any is not "present" written as anything but BLOCKED | 8 Oct 2026 | | the REV suite is generated from an external review's findings.json and dispatch.md (review-suite.mjs; one case per required regression, NOT RUN, the owner from the dispatch table) | A registry whose REV suite differs from the generator's output (--check) | 8 Oct 2026 | | F03 (Review B): one release manifest (packaging/release-manifest.json on a release branch) and every component built from it (release-manifest-check.sh, build-from-manifest.sh) | A tree whose own pins disagree with the manifest: the Windows node-source pin, the proving manifest's elf and vk sha256s and the files' hashes, the node fork's freeze fingerprint, the pool's vendored node checkout, a redefined EpochSeeds in the pool (the shadow_reps seam closes by a build against the pinned node); the build script puts the fork at the manifest's node sha and checks kaspad with igneum-pow (rule 19), the miner, the pool, the app and the prove host on a box | 8 Oct 2026 | | a registry landing carries its batches (tools/ci/batches/<run id>.json; merge-to-master.sh replays them onto master's copy at the merge) | Nothing by itself: the registry is a hot file, and a branch whose own copy of it was recorded during a seven-minute gate lost the race to another lane's rows three times in a row (8 Oct 2026, 19:1x UK). A branch that adds batch files is merged with master's registry, every added batch replayed through test-record.mjs --record (idempotent), and the evidence rules run on the merged result; rule 26 does not bind the registry path for such a branch | 8 Oct 2026 | | the registry's evidence rules (registry-evidence-check.sh, called by merge-to-master.sh after rule 26) | A landing that sets a case's run_status to PASS without an evidence_path that exists (in the tree at the landing, or on a build box over ssh; a box that does not answer is a line, not a refusal); a landing that changes a file under docs/analysis/ or a path a registry row names without moving that row's updated (the row and its evidence move together, GOV-04); a PASS whose evidence record pins another manifest than the registry's pinned_manifest_sha (stale evidence reads NOT RUN, GOV-08); a run_status written while the registry carries no approval block (thresholds before results, GOV-02) | 8 Oct 2026 | | the acceptance layer (test-record.mjs, test-map.json, test-map-doc.mjs; the founder's Test and Acceptance Standard, docs/plans/igneum-2.0-test-registry.json) | An automated case of the registry with no cell in the map and no NOT RUN reason; a map naming an unknown case; a stale harness-map page (generated from the JSON); the recorder's self-test: a run batch writes run_status, run_id, evidence_path, updated and the evidence record to the mapped cases only, never an accept text, and a case with no harness reads NOT RUN with its reason, never PASS by inference | 8 Oct 2026 | | rule 26: a landing that touches a site/ or docs/ path another lane landed since the branch point carries master's copy (rule26-no-revert.sh, called by merge-to-master.sh before the merge) | A branch whose copy of such a path lacks lines master added after the merge base, or that deletes the path; refused with the path named and the fix (merge master on the branch, or name the path in the landing message as intentional). Class: 16b3e140 and 6fc57381 put the reference-apps lane's receipt.html and then all of site/lc back to older copies | 8 Oct 2026 | | rule 24: a landing that touches a .rs, Cargo.toml, Cargo.lock, build.rs or .cargo/config checks and tests its crates on the box first (rule24-crate-gate.sh, called by merge-to-master.sh before the merge and by the hook on a push of master or release-*) | A touched crate that does not cargo check or whose suite is red on the box at gate priority; a file under no crate (the root .cargo/config) runs the core pair igneum-pow and app/igneum-app; a vendor crate is named and left to its lane; docs/ and site/ alone (docs-only-check.sh) run nothing; any other diff takes the full gate alone. Class: master's igneum-pow stopped compiling at 17:07 UK under landings that never built it | 8 Oct 2026 | | no landing on the public host while the marker stands (pre-push.sh forgejo_master_frozen, merge-to-master.sh forgejo_master_refusal); the hook binds every remote rule to the remote's URL | A push of master to git.igneum.network, or a --remote naming it, while tools/ci/github-suspended stands: its master is a rewritten copy replaced at cut-over, so the landing would be lost (a branch pushed there for safekeeping passes). Before the fix the hook matched the remote NAME, so git push origin master bound neither the GitHub refusal nor the CI rule; the self-test now drives the hook by name through a fixture repo. Also: gate-manifest-check.sh and four other pipefail checks no longer pipe a file-sized producer into grep -q (GNU sed took SIGPIPE on an early match and the check read it as a missing run line on the Linux runners and boxes); mirror_master fast-forwards every box with a build-server file after a landing on ANY remote (before, only a GitHub landing fanned out, so a box landing left build-3 and build-4 at a tip 23 hours old), as a --no-verify copy of the master the gate already passed (a stale mirror had re-run the full gate for six minutes per box) | 8 Oct 2026 |

| kill by exact command or pid file (owed as a check) | 6 October 2026, 21:09Z: a Mac-side pkill -f <log file name> matched nothing (the log name was a redirect, not part of the command line), the roll-everything script lived on and wiped a box it had been told to hold. Rule: a job is stopped by its pid file (tools/fleet/fleet-bg.sh start|stop <name>) or by a pattern anchored on its exact command line (^python3 -u /root/fleet/in/box-prover.py), never by a word that may or may not appear in it. The check that flags a pkill -f/pgrep -f whose literal is a path or a name that never starts a command line is owed to the CI lane |

No inline deletion in a shell string (7 October 2026)

The desktop app asks the founder to approve any shell command that carries rm inside an inline bash -c '...' or sh -c '...' string ("runs rm and could not be checked"). Rule for every lane: never an inline rm, rm -rf, find ... -delete or a redirect-truncate inside a bash -c / sh -c string. Put the script in a file under tools/ (or the lane's scratch directory) and run it by path; on the boxes, do deletions through the lease or job tooling, which the checker reads as a plain command. tools/ci/inline-rm-check.sh greps every tracked script for the shape (self-test first, known-failed shapes named) and runs in the gate.