Commit graph

1669 commits

Author SHA1 Message Date
igneum-josh
12e569aa71 site-ui-5, deploy 1: the site in the apps' look (7 October 2026, 15:0x UK): one design layer on the app's tokens, the slim bar, the home fold on the shared scene, /download, OS and GPU marks
Josh: "a site now what is on par with our current miner and wallet app look and feel with the new animation ... simple and
beautiful ... apple and windows icons everywhere needed, GPU brand icons ... easy access to all of our pages without a header
that is crazy".

- site.css section 10: the miner and wallet apps' treatments (app.css miner-ui-5, wallet-0.1.5) over the package: buttons
  (Plex Sans 600, radius 10), the status pill, graphite cards at 16 and rows at 12 on the hairline, the wallet lock screen's
  ember glow, the mark wells; the fourteen palette tokens stay in the scene-tokens block (scene/tokens.css); light and dark.
- Navigation: the seven-item header is gone. The slim bar carries the mark, a DEVNET pill with the live dot, Mine / Network /
  Learn (each opens a panel listing every route of its group with one line), the theme toggle and Download; on phones one
  button opens a full-screen sheet with the same groups. Keyboard: arrows between groups, Escape closes and returns focus,
  Tab walks a panel, the sheet is a dialog with its focus kept. The gate's header check is the new rule
  (tools/ci/site-nav-check.mjs: the bar, the three groups with their aria, 18 routes in the panels and the sheet with their
  descriptions, Download, the burger; self-test known-failed first).
- Home: one fold. The mark on the ember glow, one line, Download for Windows and Download for macOS with the OS glyphs and the
  stamped version (the visitor's platform first), "Linux and HiveOS" to /download, IgneumDag 2.0.3 painting underneath from
  /api/live through IgneumFeed (window 60, fps 60, poll false, no fork). Below: three lines on what a miner gets (E5 and X35
  verbatim), the live network in three tiles (hash rate, blocks a second, locked checkpoint; X2 and X31 verbatim), the
  community row (Discord, GitHub, Reddit), the footer (X7). The scene scripts are deferred; fonts preload with swap.
- /download: a new route. Windows, macOS, Linux and HiveOS cards with their marks, the stamped version, size and sha256, the
  HiveOS flight sheet, the three steps, the card picker with the vendor badge, the wallet for macOS; Windows wallet named as
  next with no file.
- Marks: brand/marks/vendor-marks.mjs (gpu-logos lane, ba5d9cea) copied byte for byte to site/lib/marks.mjs (the build and a
  gate line refuse drift); site/lib/os-marks.mjs adds Linux and HiveOS in the same treatment. The build stamps
  <span data-os> and <span data-gpu> and puts the vendor's mini badge in front of every table cell that names a card
  (/miner, /miners, the bench table), writes the --mark-* tokens into site.css between markers, and hands yourcard.js the
  badges as JSON for the card picker. The vendor well is scoped to [data-mark] so the ledger's and the journey's own
  .badge keep their look.
- The footer carries the four OS download chips; the nav's group wrappers are .nav-group (the wallet page owns .group).
- tools/site/serve.mjs and capture.sh: the site as Vercel serves it with /api passed to the live observer, captured on
  igneum-build-2 at 390 and 1440, dark and light (docs/plans/site-ui-5-shots, the home set in this commit). The overlap
  lane's detector ran over every page on build-2: 0 overlaps after the two fixes here (the explorer's hash titles wrap, the
  ledger's status badges wrap at 390).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:46:23 +01:00
igneum-josh
96f6ac979d Counter ASIC 3.0 status: the Linux CUDA G1 for sub-version 2 PASS on p1-5090 (eight of eight equal to the Mac)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:45:31 +01:00
igneum-josh
a94d73b7d2 Counter ASIC 3.0 status: PC 2 back (a power loss, not the update); the Windows G1 ordered on PC 2 before the publish
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:44:38 +01:00
igneum-josh
80dc32b39c Counter ASIC 3.0 status: the fleet G1 package, the PC 2 run job withdrawn (would have fired before the sweep), the lock released
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:43:04 +01:00
igneum-josh
d4cb6358e5 Counter ASIC 3.0 status: main's byte-7 ruling (fleet 5090 G1 now, all green by 19:00Z or byte 5), 0.3.21's first digest gate PASS on 55768f88, the 0.3.21 order
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:39:52 +01:00
igneum-josh
8b85c342b9 Counter ASIC 3.0 status: the pin stays c4459193 (main's word), 55768f88 is 0.3.21's first; PC 1 offline for cable work; the G1 waits for a PC
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:37:44 +01:00
igneum-josh
880d4907b0 Counter ASIC 3.0 status: the proving-ids child 55768f88 built (sha256 279b1b690e854fc9), the pin candidate, its gates from 13:37Z
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:36:44 +01:00
igneum-josh
8f9aca98ee Merge remote-tracking branch 'origin/master' into ca3-coord 2026-10-07 14:35:55 +01:00
igneum-josh
5792104999 Counter ASIC 3.0 status: the 4,096-seed census at 8bdcbdd8 (r = 0.674, 0 exhaustions); the control's verdict (statement passes, the race to a 24 GB box)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:35:11 +01:00
igneum-josh
819cc52df9 CLAUDE.md: a code push goes out only after that commit's crate suite is green on a build box (7 October 2026, 15:4x UK)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:35:11 +01:00
igneum-josh
99e2455e4e Counter ASIC 3.0 status: the suite line at 8bdcbdd8 (101 of 101 on box 2)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:34:17 +01:00
igneum-josh
4cc1657861 Counter ASIC 3.0 status: the proving-ids control (the environment names the ids on c4459193), the late-join commit 70e4601e for 0.3.21
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:33:16 +01:00
igneum-josh
ffc7270e67 Counter ASIC 3.0 status: AP-F8-2 fixed on 8bdcbdd8 (MAX_ATTEMPTS_V4 256, the last-resort draw, the stream unchanged, the census continues)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:32:26 +01:00
igneum-josh
b333340b0b Merge remote-tracking branch 'origin/master' into ca3-coord 2026-10-07 14:30:23 +01:00
igneum-josh
20d830fda1 Counter ASIC 3.0 status: the proving-ids cause (the bare start environment, not the binary), the child's embedded-key fallback, the gate carry under rule 4a
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:29:40 +01:00
igneum-josh
f774353461 Chain scene 2.0.3: /live and the home fold paint on every push whatever the document's visibility says; the renderer, its palette and its feed contract move to one shared folder scene/ with byte-equal copies checked by the gate (7 October 2026, 15:2x UK)
The blank /live (Josh, 14:3x UK): IgneumDag 2.0.2 painted only from a requestAnimationFrame loop gated on document.hidden and
the IntersectionObserver, so a page that loaded with document.hidden true (the desktop pane, a background tab) and whose embedder
never fired visibilitychange took every push, reported live and never drew a frame. 2.0.3 paints the current picture synchronously
on push, size and theme change; the motion loop alone waits for a visible document and an intersecting canvas. Confirmed headless
on build-2 against the live feed: hidden document 0 lit pixels before, 110,007 after; the never-intersecting observer repaints
on every push. Known-failed test tools/scene/paint-test.cjs (the 2.0.2 renderer draws nothing in the same world).

The second 2.0.3 change: the phone rule (30 s window, four lanes) keys on the viewport width, not the canvas width; a 640 px hero
on a 1,440 px laptop was rendering as a phone while the app's card beside it was not.

scene/ is the one source: live-dag.js, proof-core.js, tokens.css (the fourteen palette tokens, the brand package's values, dark and
light), feed-contract.md and .json (one JSON shape for the observer's /api/live and the app's api/live), a recorded reply as the
fixture. tools/scene/sync.mjs writes the copies and the scene-tokens block into site.css and app.css; --check is the gate line
(byte-equal scripts, an equal block, the names defined nowhere else, a print block excepted), --self-test fails five known cases
first. The site's token definitions move out of the package's :root line into the block; no value changes on the site.
tools/scene/feed-contract.mjs validates a reply against the key lists; its test refuses a miner rewritten to "you", a float now,
a stray key. Three new lines in tools/ci/pre-push.sh. The app side (branch scene-parity, for 0.3.21) takes the same folder.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:29:38 +01:00
igneum-josh
6de7b8f760 Counter ASIC 3.0 status: main's AP-F8-2 ruling (a total draw, no panic); the 12 GB line on c4459193 refused (shard program id unknown, statement zeros), the cut set not complete
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:28:05 +01:00
igneum-josh
c7a6034d61 Counter ASIC 3.0 status: AP-F8-2, draw exhaustion under (a') on sub-version 2 (one seed in 331,672, a liveness halt class); not green
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:27:04 +01:00
igneum-josh
8eaab8ac29 Counter ASIC 3.0 status: the PC 1 G1 variant staged (a2714d43, the 5090 by index-free key, published only on the go line)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:21:41 +01:00
igneum-josh
bdbc154beb Merge remote-tracking branch 'origin/master' into ca3-coord 2026-10-07 14:20:55 +01:00
igneum-josh
37aba3fbab Counter ASIC 3.0 status: the PC 1 G1 gated on the shipper's "PC 1 on 0.3.20" line, about 15:30 to 15:40Z
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:20:55 +01:00
igneum-josh
483bb56e04 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 14:20:18 +01:00
igneum-josh
31236f881f Counter ASIC 3.0 status: main's word on PC 2 (hand restart asked of Josh; go PC 1 for the G1 at 15:00Z if silent)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:19:36 +01:00
igneum-josh
c3ddc0a424 Merge remote-tracking branch 'origin/master' into ca3-coord 2026-10-07 14:18:34 +01:00
igneum-josh
ee54a28ac9 Counter ASIC 3.0 status: sub-version 2's suite line (526fa757, 100 of 100 on box 2, the route line), the re-gate carries from 07a809a7
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:17:56 +01:00
igneum-josh
9b68deea2b Merge remote-tracking branch 'origin/master' into build-server 2026-10-07 14:17:19 +01:00
igneum-josh
a07a6bdffe Build boxes: the box probe carries its own ssh options (bash 3.2 under set -u refused the unset BS_SSH_OPTS array before bs_host built it; every unpinned route on the Mac died, the pool lane 7 Oct 2026); the router check runs the ssh path under /bin/bash
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:16:39 +01:00
igneum-josh
b945f2b10c Merge remote-tracking branch 'origin/master' into ca3-coord 2026-10-07 14:16:25 +01:00
igneum-josh
d0ff42b60c Counter ASIC 3.0 status: PC 2 silent since the 0.3.19 update-now; G1 and the Windows kept-datadir gate wait on a hand restart
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:15:44 +01:00
igneum-josh
09fcd76b6f CI red watcher: its own workflow_run workflow (ci-red.yml) so the copy on master watches every branch's run whatever ci.yml the branch carries
GitHub runs a workflow_run workflow from the default branch only, so a feature branch no longer waits for a merge of master before its reds are posted. record() reads the FAILED run from RED_WATCH_* (id, attempt, workflow, branch, sha, event, url, actor, title, author: the workflow_run payload) and asks the jobs API for that run, not the watcher's own; the inline GITHUB_* shape stays for a branch with the old `red` job (one line per run id either way). The inline job leaves ci.yml. Self-test covers the workflow_run shape and the full line.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:15:11 +01:00
igneum-josh
cbe42a5dc8 Counter ASIC 3.0 status: sub-version 2's static census (0 lossy-sourced sites of 16,432), the attempt cost, G1 blocked on PC 2's intake
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:14:03 +01:00
igneum-josh
8e1153b178 Counter ASIC 3.0 status: main's word on the floor move, the CI lever and the rule's reading
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:13:02 +01:00
igneum-josh
0704f52171 Merge remote-tracking branch 'origin/master' into ca3-coord 2026-10-07 14:11:22 +01:00
igneum-josh
8dc58cebcd Counter ASIC 3.0 status: 0.3.20's cut set as it stands, 0.3.21's clock and the byte-5 fallback, the CI queue note
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:11:22 +01:00
igneum-josh
36e08c800b CLAUDE.md: after every push the pushing lane reads its CI conclusion and owns any red before its next push; a red on any branch goes to main at once
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:09:06 +01:00
igneum-josh
5e28845d02 CI red watcher: every branch, one line per failed run naming the branch, the commit, the red check and the pushing author
The red job's condition drops the master/release-* clause; record() keeps GITHUB_ACTOR and the head commit's author name (RED_WATCH_AUTHOR from the workflow) and formatLine prints "pushed by <actor> (commit by <author>)" before the failed job and step. The self-test covers a feature-branch run and the author in the line. Same updates channel, same box file, same one-line-per-run idempotence.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:09:06 +01:00
igneum-josh
275859cecf CI gate: the feature-branch hook runs the never-push classes (no-secrets, identity grep) beside the structural checks; harness summaries write keys through a redacting writer with its own check
The class (7 October 2026, 11:26 to 12:47 UK): three fork-gate summaries on ca3-v4-node carried the miners' vote-key hashes under "key" and eight CI runs went red on "no secret file names and no 64-hex secrets in the tree" while the pushing lanes saw nothing: the light gate ran only conflict markers and Windows paths.

- tools/ci/pre-push.sh: never_push_checks() (identity grep, no-secrets) runs on every ref from --hook, and inside the full gate where the identity grep already sat; the self-test asserts the wiring; the light gate is about 20 s on the Mac.
- infra/fast-time/lib/redact-keys.mjs: writeSummary() shortens every 64-hex value under a key-shaped field to 8 hex and an ellipsis and refuses a text the no-secrets rule would flag (line named); --self-test and --check; the gate runs the self-test. fork-gate.mjs adopts it on ca3-v4-node.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:09:06 +01:00
igneum-josh
819d536bc6 Merge branch 'build-server' into HEAD 2026-10-07 14:08:22 +01:00
igneum-josh
b28f808b67 Build boxes: the class router is a preference with spill-over (a held or overloaded box hands the job to the other one); build-2 gets a third slot and every run there is bounded on its own 32-core band; the spill decision in the first route line, the slot label and the JSONL row
Josh, 7 October 2026 15:02 UK: build-1 at load 139 / 114 / 90 with both slots held and a 1 h 40 min queue while build-2 read 4.5 with
free slots, because the class router pinned each class to its box. Now lib.sh bs_route_spill reads the preferred box (free slots,
1-minute load) with one ssh and hands the job to the other box when the preferred one has no free slot or sits above load 64 and the
other qualifies; neither qualifying queues on the class's own box. The decision travels as BR_ROUTE_* into the JSONL "route" object
for the dashboard. build-2's slots file reads 3; everything on box 2 runs at nice 10 / 32 cores / -j 32, and a bounded run takes
the band its slot owns so three never share a core. Self-test tools/ci/route-spill-check.sh (thirteen cases) in the gate.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:08:19 +01:00
igneum-josh
d267c2683d Counter ASIC 3.0 status: sub-version 2 committed (07a809a7, id a788661687db4bb3, the fixpoint rule, seven fingerprints, packs sha256)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 14:03:19 +01:00
igneum-josh
430edbebbe Counter ASIC 3.0 status: the F8 re-gate verdict on sub-version 1 (53 of 64 PASS, 11 FAIL, worst 29.27x), the three residual classes, the fixpoint requirement for sub-version 2
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:57:40 +01:00
igneum-josh
e50206dc07 Counter ASIC 3.0 status: the shipper's reason for gating on the cases (dc141409 to c4459193 touches the class signal byte)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:54:49 +01:00
igneum-josh
58c14e9148 Counter ASIC 3.0 status: the cut gated on CASES END, the word about 15:15Z, publish on green, sweep PC 1 first
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:54:05 +01:00
igneum-josh
20e10203b8 Counter ASIC 3.0 status: the cases rerun slips to about 15:10Z; the wipe canary holds 14:17Z; the kept read in hand
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:52:55 +01:00
igneum-josh
3848ac88bd Counter ASIC 3.0 status: c4459193's mixed-version gate PASS, the restart step green
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:46:58 +01:00
igneum-josh
44e9cab565 Counter ASIC 3.0 status: c4459193's build line and digest gate PASS
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:46:16 +01:00
igneum-josh
c31da40dfb Counter ASIC 3.0 status: the wipe canary on c19-1 started 12:38:55Z, synced about 14:17Z
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:40:00 +01:00
igneum-josh
f9e05fc0b7 Counter ASIC 3.0 status: c4459193's binary sha256 in the fleet's hand, the wipe pod c19-1, synced line about 14:20Z
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:39:00 +01:00
igneum-josh
454d9e2fc6 Counter ASIC 3.0 status: the shipper's clock call (a second one-shot pod for the wipe canary, line about 14:15Z)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:36:29 +01:00
igneum-josh
d971e3656b Counter ASIC 3.0 status: the fleet's clock on c4459193 (wipe line about 14:40Z, past the checkpoint)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 13:35:10 +01:00