generator.rs: IdRecipe (bytes + labelled parts), program_id_recipe and program_id_class_recipe build the bytes the id hashes and the text program.json prints, Program::program_id_derivation picks the form as program_id does. emit.rs prints that text. Spec 01 section 1.4.6 (the "Program id" paragraph) states the suffix, the class v5 form (generator 5, no suffix) and the rung form. tests/derivation.rs re-derives each of the 18 pinned packs' ids from its own derivation string with the pack's fields only (the plain text gives 8aa9f185d63f269e for the devnet v4 pack where the id is a785001687d8688a: the known-failed case). Packs: program.json re-exported for the 7 generator-4 packs and the 9 shadow ladder packs, one line each (the derivation); every other file byte-identical on re-export, ids and fingerprints unchanged. No object change.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The known-failed case: run-ca3-pc1-v4-eff-5090-20261007 as published at 18:27Z (--elevated) waited two minutes for a click and died with exit 251, the card switched off for nothing. The rights path is the installed app's Igneum Power Helper task (app/igneum-app/src/powertask.rs: Start-ScheduledTask by the owning user, the fixed verbs through its cmd.txt), which tools/ca3-v4-amend/pc1-v4-efficiency.ps1 uses; a job without the task reports the fact and takes its measured-only rows. Self-tests: a -Verb RunAs launch fails, a Power Helper task start passes, the publisher refuses --elevated (exit 3).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
tools/ca3-v4-amend: pc1-v4-efficiency.ps1 (the job id names the card; -lgc grid 2,850 to 1,400 with the four Ember caps on it, so the owed 5090 clock rows fall out; the fingerprint checked on every step; nvidia-smi sampler by pid; -rgc in finally; voltage: no nvidia-smi lever, the V/F curve follows the lock), pc1-v4-sub3-amd-g1.ps1 (tools/ca3-pc1-amd's G1 + ladder shape on fetch-ca3-v4-sub3-pc1-20261007, the 13 packs' Mac fingerprints as the table), pc1-amd-family-20261007.ps1 (run e, the new kit id only), pc1-ember-card.ps1 (the installed app tunes the one card named by the job id), pc1-publish-20261007.sh (the exact lines, the order, the kit sha256s). Kits built on build-1 with mingw from this tree. CI checks run locally: playbook-quit, copied-sources, bash-body green. The dr736 derive job is not in the queue (its packs are not in this tree).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Suite at c3d32437 on box 2: 103 passed, 0 failed (lib 140.8 s: every class v4 draw in the tests pays the 2^20 ratio pass). CI 37639406567 success. Census: 4,099 programs, 0 lossy sites of 65,584, 0 exhaustions, mean attempt 2.086 (af1b7c46 1.998), max 17; the ratio refuses about 4 percent of candidates that pass every other test. tools/ca3-v4-uniform draws the seeds across the available cores (the serial run became a four-hour job under the ratio pass); the analysis and the row order are unchanged.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The first 16 GB card and the first Thunderbolt card. The app's first poll listed it (vendor nvidia, 16,311 MiB,
driver 610.47 shared with the 5090, kind discrete: the app does not know it is an eGPU) and started a miner on
it by itself. Job run-5060ti-bench-20261007-b (tools/bench-5060ti/pc2-5060ti-bench.ps1, the card alone under
the runner's --cards-off, the 5090 mining, no power limit written: 180 W default read back unchanged, PC 2 lost
power twice that day): G1 PASS with 867dbc45cfb36b4d (sub-version 1) and 90f794dd556f7a3b equal to the Mac's;
the window 1,105 dispatches of 2^24 in 602 s at 30.882 MH/s, 114.8 W mean at utilisation 90 percent and over,
0.269 MH/W, PCIe 4.0 x4 through the enclosure (the hash is latency-bound, the link costs nothing measurable).
Owed: the efficient point (the app's Ember Tune; PC 2's Power Helper refuses every request since the restart)
and the prove-beside read (the shipped WSL2 host has no IGNEUM_CUDA_DEVICE selector; the floor server is on
PC 2; the prover-floor host is the cut). The kit (tools/bench-5060ti/make-kit.sh) takes the sub-version 1 packs
from ca3-v4-amend 0a62293a, since master's packs-ca3-v4 is the 6 October stream.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
the project lead's three on the live site, plus the /live key's last item:
- Mobile nav (URGENT): the sheet was position:fixed inside the bar, and the bar's backdrop-filter is a containing block for
fixed descendants, so top and bottom resolved against the 60 px bar and the sheet opened with zero height while
aria-expanded said true. It is now absolute under the sticky bar, a viewport-tall box (100dvh minus the bar), display block
over the package's grid rule. tools/site/sheet-test.mjs opens every page at 390 px, clicks the burger and asserts the first
link is on screen and on top (elementFromPoint at its centre returns the link); --self-test forces a zero-height sheet first
and must catch it; a gate line runs it where a browser exists (the box, CI) and says so where none does. On build-2: the
zero-height sheet is caught, 23 pages pass.
- Home at 375: the renderer's "Waiting for observer data" was drawn on the fold's canvas under the lead. The fold now carries
.pending until the feed is live or stale and keeps the canvas at opacity 0 meanwhile; the status pill is its own row under
the buttons on phones. ?feed=off holds the pending state for a render; the overlap sweep (whose server answers /api with
503) renders the pending state by construction and ran at 375, 390 and 1440 in both themes: 0 overlaps.
- /miner and /wallet: the light-theme screenshot variants are gone (dark only), captions unwrapped, "light and dark" dropped
from the gallery line; one gallery of frames with one caption each.
- /live: "Your block" leaves the key, the "Your blocks" filter and tile and the Mark-my-key prompt leave the page (the site
has no "you"); the stats row is three tiles; the key reads Included, Excluded, Selected chain, Proven, Locked checkpoint.
- Captures: ?motion=off (head partial) marks data-motion=off so every .reveal is drawn in a headless render; capture.sh passes it.
tools/site/serve.mjs survives a refused api origin (502, never a crash).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>