igneum/docs/analysis/class-v6/census-packs.md

22 KiB

Class v6 census, lane 2: the six class v6 packs through the sub-version 3 harness

8 October 2026, 15:4x to 17:55 UK, the census lane under the Counter ASIC coordinator (Igneum 2.0 Deliverable 1's harness, pinned by digest at the 23:30 freeze). Every row measured on build-4 (igneum-build-4, 96 threads) through lease pool, class v5, nice 19, owner class-v6-census, pid files under /srv/builds/v6-census/pids/; build-3 ran hl-v6-rw and the first half of hl-v6-rw2 before it went unreachable at 16:40 UK (its rows are in the sheet from the read taken at 16:35; its files could not be copied). Nothing here touches a served page, the spec or any consensus object.

0. The sheet

Pack Program id (reproduced from the pack's seeds before any row) Crate Harness (branch, commit) (A) the rule with (c''') on the pack's program (B) attempts census, 256 chain-shaped seeds under the pack's era and state (C) F8 on the live state-keyed dataset Verdict
hl-v6-fold (the index fold alone, W = 4, base mix) 482dc0dad937135b, attempt 1 class-v6-fold 7880bc96 class-v6-census-fold 5b3486f0 accepted; min site ratio 0.99986; bucket +5.25 sigma; worst free bit 2.84 sigma; no site over 6 sigma (class v5's own program on the same state: -448 sigma at one site) 256 of 256, 0 exhausted, r 0.701, mean attempt 2.34, max 14, (c''') 0.35 percent 16 seeds p18 to p33 at 2^22: 16 PASS, at most 1.0455x of the window model (the class v5 control on the same seeds: 5 of 16 flagged on the 6-sigma bucket); the known-failed set at 2^24: p4 1.0057x (from 1.2163x), p8 1.1663x (+6.6 sigma bucket; from 1.3787x), p10 1.1868x (from 1.5052x), p15 PASS, p212 1.0411x (+27 sigma; from 1.1917x), p225 1.2414x BEYOND (from 1.2457x: the value-level class, unmoved), p34 1.0486x with a +11.9 sigma bucket (from +5.06: the one regression) PASS
hl-v6-rw (the k lane's table rw1: 16,14,4,12,4,11,10,2,10,0 in draw order, sum 83, or never drawn) 30628f8adcf6035e, attempt 0 class-v6-fold 7880bc96 the same accepted; min ratio 0.99990; bucket +5.5; worst bit 2.89; no site over 6 sigma 256 of 256, 0 exhausted, r 0.117, mean attempt 0.13, max 2, (c''') 0.34 percent 16 seeds: ratio at most 1.1526x (within), 4 of 16 flagged on the 6-sigma bucket (the control's own rate is 5 of 16); known-failed under this table's draw: p4, p34, p225 PASS, p8 +22 sigma, p10 +14, p15 +8.8, p212 +37 sigma buckets at ratios 1.00 to 1.15x PASS
hl-v6-foldrw (fold and rw1) 605d06cabc489f94, attempt 0 class-v6-fold 7880bc96 the same accepted; min ratio 0.99993; bucket +5.75; worst bit 3.49; no site over 6 sigma 256 of 256, 0 exhausted, r 0.117, mean 0.13, max 2, (c''') 0.34 percent 16 seeds: 15 PASS, 1 flagged (p18), at most 1.0932x; known-failed: every ratio within (p4 1.0002x, p8 1.0138x, p10 1.0100x, p15 1.0088x, p34 1.0121x, p212 1.1111x, p225 1.0000x), buckets flagged on p15 (+9.3) and p212 (+24.5) PASS
hl-v6-rw2 (the census lane's table 13,11,6,10,8,8,7,2,6,4, sum 75) 09e91b0dcd458c77, attempt 1 class-v6-fold 7880bc96 the same accepted; min ratio 0.99990; two sites with the stride bit at -64 sigma (no fold) 256 of 256, 0 exhausted, r 0.410, mean 0.70, max 8, (c''') 1.15 percent 16 seeds: seed p30 1.3111x over the window model (the control 1.0004x; hl-v6-rw's worst 1.1526x), BEYOND the 1.2x gate; known-failed under its draw: p8 1.2507x (+42.8), p10 1.5044x (+100.9), p225 1.4049x beyond, p34 +70.7 and p15 +13.2 sigma buckets, p4 and p212 PASS FAIL on the F8 line
hl-v6-win (the 64-register full-chain window alone, +reg64c) f42d4a743ce7d4fa, attempt 0 (the v5-dn3-epoch0 seeds and state) reg64-v5 198d171d class-v6-census-reg64 b29e690d2 accepted (with the liveness probe); min ratio 0.99923; bucket +5.5; the base program's stride-bit site at -448 sigma (no fold) 256 of 256, 0 exhausted, r 0.716, mean 2.52, max 15, (c''') 1.66 percent (the window does not enter the draw: class v5's rows) the window's own address stream through the interpreter's tracing probe, 32 sites of the interleaved schedule, 16 seeds at 2^22, the era laid over, closed form: per-site distinct ratio 1.0026 to 1.0027 on every site (the (c'') form; the control 0.9946 to 1.0027); the item histogram's top-0.1-percent share 1.0645 to 1.5624x of a flat control against the control's 1.0738 to 1.5074x, paired by seed 0.968 to 1.036x of the control. The attack-f8 mirror and the known-failed set do not apply (eight registers) PASS (the live-dataset point owed)
hl-v6-all (window, fold and rw1) 9d40978601a7df2a, attempt 0 class-v6 3f25a8305 (the texts at c245d50b9, the verifier unchanged) class-v6-census-all 2d54a4633 accepted; min ratio 0.99993; bucket +5.75; worst bit 3.49; no site over 6 sigma 256 of 256, 0 exhausted, r 0.117, mean 0.13, max 2, (c''') 0.34 percent the trace on 32 sites: per-site distinct ratio 1.0026 to 1.0027; item share 1.0443 to 1.5132x flat against the foldrw control's 1.0398 to 1.4616x, paired 1.004 to 1.035x PASS (the live-dataset point owed)

The controls: the freeze's class v5 pack v5-dn3-epoch0 (e5a4ac5978462156) through the whole harness at 15:53 UK (the dry run: the known-failed set reproduces the record to three places, p4 1.2163x, p8 1.3787x, p10 1.5052x, p212 1.1917x, p225 1.2457x) and class v5 on the node1 state over the same 16 seeds at 2^22 (16 of 16 within 1.2x, worst 1.0698x; 5 of 16 flagged on the 6-sigma windowed bucket: the statistic's own rate on the family at 2^22, so a pack's 4 or 5 flags is the control's and a pack's 0 of 16 is a gain).

What the sheet means. The index fold does what it was drawn for: the stride-bit bias is gone from every program it ships, the F8 tails of 1.22 to 1.50x come inside the gate (1.01 to 1.19x) and the bucket concentration at narrow-window sites falls from the control's 5 of 16 seeds to 0 of 16; p225's value-level class is untouched and p34 gains one bucket statistic. The k lane's table (rw1, or never drawn, mul at 4) reads clean and gives the lowest rejection rate measured on the family (0.117); the census lane's table (rw2, or 4, mul 6) keeps the lossy writers the tails come from and fails the F8 line, so the re-weight is sound in the rw1 form only. The window changes nothing the rule or the F8 form sees at 2^22 on the closed form and carries the fold's and the table's rows unchanged; its value is the chip-side cost the adversary lane prices.

1. The harness

The class v5 crate of each pack's branch plus lane D's family-gate harness diff (docs/analysis/class-v6/logs/harness-family-gate-v5-3dc3117c.diff: IGNEUM_FAMILY_GATE widens the class v4 rules to the family's shapes, with every new class flag set aside in is_family_shape: state, fold, rw, wide8, reg64, reg64_chain), plus: a sitestats command (the whole rule with (c'''), then per site over 2^20 evaluations the distinct ratio against the window model, the largest 256-item bucket in sigma, the largest index-bit excess in sigma over the free bits); the accept walk at the class's own cap under the flag; the attack-pass lane's attack-f8 with --load-class <string> (the program drawn from a class string with the spec's era laid over it) and --dataset-words N (the ds55 geometry through load_index_geom; not exercised: a state class refuses the non-power-of-two count); the uniform trace tool tools/attack/v6-census/uniform on verify::Probe { trace_loads } (every load's index per lane through the interpreter itself). Binaries pinned per crate under /srv/builds/v6-census/bin/<tag>/ with sha256: fold-5b3486f0 (igneum-pow 50903d30, attack-f8 9ba2210b), reg64-1b676975 (v6census-uniform b2214265 after the fixes), all-d7d441be (igneum-pow 5a221e56, v6census-uniform 2ebd92c1).

2. The commands

# per pack, steps A (show + sitestats), B (the attempts census), C (attack-f8: the known-failed set at 2^24, 16 seeds p18 to p33 at 2^22)
/srv/builds/v6-census/pack-run.sh <tag> <bin-tag> <class> <epoch-hex> <day-hex> <era-hex> <state> <day-index> <era-widths-bytes> ABC
# e.g. ./pack-run.sh hl-v6-fold fold-5b3486f0 mx8+sh256x27+state+fold edc4fa84...fb07 69676e65756d2d6461792ffa50000000000000 edc4fa84...fb07 /srv/builds/v6-census/packs/node1-state.igsd1 20730 4 ABC
# the window packs' F8-form read (the trace), beside a control class on the same seeds
lease pool 16 --min 4 --nice 19 --class v5 -- env IGNEUM_FAMILY_GATE=1 v6census-uniform --class mx8+sh256x27+state+reg64c --seeds 16 --nonces 4194304 --threads {cores} --era 0:<hex> --era-widths 4 --prefix igneum-attack-f8/program
# the sheet
python3 pack-summ.py packs-out/<tag>

3. The instrument's definition (the hot-set reconcile, for the record)

Three reads. The acceptance's index-bit read: per program, per site, the one-count of each address bit over the 64 units' 16,384 addresses, judged inside the site's own era window and above the width's alignment, 6 sigma. The sitestats bucket: per program, per site, the largest 256-item bucket in sigma of its window expectation. attack-f8 census: per program, per item over the whole dataset, the cross-hash item histogram of all sites' reads against the WINDOW-MODEL control (the density the program's 16 drawn windows imply), the top-0.1-percent share ratio (1.2x), the 6-sigma largest 64-item bucket, the hot-set test; the flat-control ratio printed beside it and not used (1.1 to 1.7x on every pack: layer 8 by design, the adversary lane's 72 percent read against the other null).

4. Faults found and fixed on the way (the record, so no one repeats them)

  • The uniform tool's distinct sets as HashSet took 16 GB a thread at 2^22 nonces and were killed by the lease's memory cap; bit vectors over the dataset's words now.
  • The reg64 interleaved schedule runs 32 load rows per iteration (instruction k on window 0 then window 1); the first read mapped them onto 16 sites (doubling N, ratios 1.35 to 1.80), the second mapped site s to load s mod 16 (the wrong window's expectation, ratios 0.84); site s is load instruction s / 2.
  • The all pack's attack-f8 chain died at start on the fold-base tool (+reg64c unparsed); the class-v6 tool parses it but its mirror interprets eight registers, so the mirror is not the window's instrument.
  • The lease pool is a race, not a queue; env VAR="a b" through it splits on spaces.

5. Owed

The live-dataset F8 point at 2^24 for the two window packs (the mirror would need the two-window interpreter: four to six hours); the 64 x 2^24 point per pack (45 to 100 core-hours each); hl-v6-rw's files (on build-3, unreachable); the exact or = 0 attempts rows are lane D's.

6. The per-site address census (the external review's A03), 8 October 2026, 18:4x to 19:10 UK

The question (the coordinator's order from the review landing, finding A03): the acceptance's per-hash distinct-address check can pass a program where one load site reads the same address in about 15 percent of hashes across nonces and headers (seed SHA256("igneum-review/139"), iteration 5 instruction 51 on the old V2 tree, address 0x0fffffff in 312 to 325 of 2,048 hashes). Does the current class v5 object or the v6 freeze candidate carry that class, and what cache-hit rate would a 1 GiB, 256 MiB or 64 MiB cache get per site and over the program?

The instrument: igneum-pow addrsite on the harness branch (class-v6-census-all at 9893b4c9, build-4 binary 2c76893e...): the live epoch (the memory-hard dataset, the state leaves of the object's state file, the era laid over), four headers (prehash h = the seed words of igneum-review/header/<h> as 32 bytes, the init words through bind::block_init_words with h as the high nonce word, so every header changes the init words the way a mined block does), 2^16 nonces per header (and 2^18 in the x16 runs) through the interpreter's tracing probe; per (iteration, site) cell and per site the address histogram, the most read address and its share, the distinct count, and an ideal cache's hit rate (the site's or the program's top K items by read count, K = cache bytes / 64, beside the window model's expectation min(1, K / window items)). Commands: addrsite --count 4 --warps 2048 --threads 16 --epoch-hex <hex> --day-hex <hex> --class <class> --era 0:<hex> --state <igsd1> (--warps 32768 for x16; --class v2 --epoch-hex <sha256 of the label> for the known-failed case). The TSVs are under logs/census-packs/addrsite/, the window draws in windows.txt.

The known-failed case reproduces. Class v2 at the epoch bytes SHA256("igneum-review/139") = c5ffc49e..., program 675fa2e2bd0dfd6d: instruction 51 (site 10) reads 0x0fffffff in 317,690 of its 2,097,152 reads over four headers and 2^16 nonces each (15.15 percent), 15.12 to 15.19 percent at every one of the eight iterations (the review's 312 to 325 of 2,048 at iteration 5 is 15.2 to 15.9 percent on its sample); every other site's worst address reads 3 to 4 times in 2 million. The cause on that tree: the site's source register is saturated (all ones) in a seventh of hashes and x AND mask of all ones is the top address; the rule of 4 October 2026 (part (c): the distinct-address sum over 2,048 hashes) does not see it because the other 127 loads of the hash are distinct. The two sub-version 2 rules of 7 October 2026 are the fix on every later class: (c') refuses a load site whose source is saturated in more than 1 percent of its 16,384 evaluations, and (a') refuses a load whose source's last writer is or, mul or mulhi (the writers that saturate or zero a register). This is not A08's Mad collapse: a mad at a load's source leaves the product's low bits biased (the stride-bit class of sections 0 and 3, which the fold closes); it never pins the whole address.

Class v5 and the v6 candidate carry nothing of the class. The rows, every object on its own state file and era, four headers:

Object (program, state) Hashes Reads per site Worst (iteration, site) cell: top address count of the cell's reads Worst site: top address count of the site's reads Distinct items touched of 16,777,216
class v2, SHA256("igneum-review/139") (675fa2e2bd0dfd6d; the known-failed case) 2^18 2,097,152 39,928 of 262,144 (15.2 percent) at site 10 317,690 (15.15 percent) at site 10 (instruction 51), address 0x0fffffff 14,200,379
class v5, Devnet 3 epoch 0 (e5a4ac5978462156, v5-dn3-epoch0 state) 2^18 2,097,152 3 of 262,144 (1.1e-5) 4 of 2,097,152 (1.9e-6) 13,555,305
the same, x16 2^20 33,554,432 5 of 4,194,304 (1.2e-6) 8 of 33,554,432 (2.4e-7) 16,777,216 (all)
class v5, the freeze's seeds on the node1 state (6554474f410f36f3, attempt 1) 2^18 2,097,152 3 (1.1e-5) 4 (1.9e-6) 13,433,475
the same, x16 2^20 33,554,432 5 (1.2e-6) 9 (2.7e-7) 16,777,213
class v5, chain seeds p18 (f1ca3ca995c57b7a) and p19 (116d921a2211b1e2, attempt 5), node1 state 2^18 each 2,097,152 3 (1.1e-5) 4 (1.9e-6) 14,269,676 and 13,982,239
v6 freeze candidate, hl-v6-all (9d40978601a7df2a: window, fold, rw1; node1 state), 32 sites 2^18 2,097,152 3 (1.1e-5) 4 (1.9e-6) 16,122,715
the same, x16 2^20 33,554,432 5 (1.2e-6) 9 (2.7e-7) 16,777,216 (all)
v6 class on chain seeds p18 (7202548bfc7f98e9) and p19 (dd6b285ae45e7b9b, attempt 1) 2^18 each 2,097,152 3 (1.1e-5) 4 (1.9e-6) 16,329,983 and 16,055,477

Every v5 and v6 figure is the Poisson maximum of a uniform stream on its window (the expected largest count of 2 million draws over 2^26 cells is 3 to 4; of 33 million over 2^26, 8 to 9), five orders below the known-failed case, and the finer sample moves the worst address's share down with it, so there is no address, site or cell any cache can key on. The per-site distinct ratio against the window model read 1.0026 to 1.0027 on every site of both v6 window packs and 0.9946 to 1.0027 on class v5's at 2^22 (section 0): uniform inside each site's window.

The cache-hit rates are the era windows', by design, and equal on v5 and v6. A quarter-window site's reads fit whole in a 256 MiB cache, a half-window site's half of them, a full-window site's a quarter; with the program's windows the hit rate of a 256 MiB cache over the program is the densest quarter's share of all reads, and a 64 MiB cache's a quarter of that (the density is flat inside a quarter, so no smaller cache does better than its size's share of the best quarter):

Object Window draw (full, half, quarter sites) 1 GiB 256 MiB, the window model 256 MiB, measured (top K items by count at 2^20 hashes; the excess over the model is the sampling noise of ranking items by count) 64 MiB, the window model 64 MiB, measured (the same noise, larger) Hottest-half share (the adversary lane's 72 percent)
class v5, Devnet 3 epoch 0 5, 8, 3 1.000 0.391 0.409 0.098 0.116 0.719
class v5, the freeze's seeds on node1 7, 2, 7 1.000 0.422 0.428 0.105 0.124 0.531
v6 candidate, hl-v6-all 5, 7, 4 1.000 0.359 0.367 0.090 0.102 0.656
class v5, p18 and p19 7, 3, 6 and 1, 6, 9 1.000 0.328, 0.328 0.498, 0.512 at 2^18 (sample-bound) 0.082, 0.082 0.594, 0.531
v6 class, p18 and p19 7, 3, 6 and 6, 6, 4 1.000 0.328, 0.344 0.434, 0.466 at 2^18 (sample-bound) 0.082, 0.086 0.594, 0.688

Per site: 1.000 for every site under 1 GiB; under 256 MiB 1.000 on a quarter site, 0.500 on a half site, 0.250 on a full site by the window; the measured per-site top-K figures at 2^18 hashes read 1.000 everywhere because 2 million reads touch fewer items than the 4 million the cache holds (sample-bound, which is why the x16 runs exist), and at 2^20 hashes they read 0.69 to 0.74 summed over sites, above the model for the same ranking reason. The adversary lane's 72 percent for the Devnet 3 epoch 0 program is this table's 0.719: the window draw (5 whole, 8 half, 3 quarter sites), not an address concentration.

Against the one acceptance rule (a hash change passes only when the best adversarial implementation becomes worse relative to the best practical GPU implementation, within pre-agreed cost and verification limits): on the address axis the v6 candidate is the class v5 object (both uniform inside their windows to 2.7e-7 at the worst address; both with the era windows' cache shares, which a GPU's L2 sees as well as a chip's SRAM), and the v6 candidate is better on the one address bias the record carried (the stride-bit class, closed by the fold: section 0). A03's class is closed on both by (c') and (a'); nothing in it names a generator cause on v5 or v6 because the concentration is absent at 1e-6 resolution. The window draw's cache shares are layer 8 of the era layout by design (the research lane's reconcile: 0.72 is the Devnet 3 program at about p98 of the draw, mean 0.58), and the "every site on the whole dataset" variant that flattens them (win = 0 everywhere) is the D2 experiment already named, at zero GPU cost.

The x16 rows for the four chain seeds (19:20 UK): worst site 8 to 9 of 33,554,432 reads on every one (2.7e-7), worst cell 5 to 6 of 4,194,304; the pooled 256 MiB figure 0.345 and 0.369 on class v5's p18 and p19 (the window model 0.328 and 0.328), 0.335 on the v6 class's p18 (0.328), with the v6 p19 row in the TSV. Owed: a sample-free cache figure (an LRU trace rather than a top-K ranking) if anyone wants the measured column to equal the model to the third digit.

7. The post-review object: the freeze's (c''') read (8 October 2026, 19:5x to 20:34 UK)

The external review's fixes moved the v6 draw (every v6-flagged class reserves five non-load slots as shuffles over the five lane dimensions in a drawn order; a mad never names its destination as its second source; the id recipe carries v6draw/, then generator 6 and ProgramClass::V6), so the packs were re-exported. The harness was rebuilt on each tip (class-v6-census-all2 at c566ae2b1 on 04442d9ca; class-v6-census-all3 at 6debbac1a on b24dfc162, whose draw and acceptance the tips 9415e9c89 and ac86d791 keep), the family predicate setting the window, layer 8 off and the width aside as the crate's own predicate now does, and every id reproduced from the pack's seeds before its row. The read-back from build-1 at 20:24 UK (the founder's rule: a pack is named only when read back): hl-v6-all.tgz sha256 6df3d4307202fe68b9e846b38c8c7758effd65daca47c65103401f9092a6ddb5, program 0x4de7b836cc40a4ea, generator 6, class mx8-erad810f22d+sh256x27+state+reg64c+fold+rw, attempt 0.

Object Harness (A) the rule with (c''') on the pack's program (B) attempts census, 256 chain-shaped seeds, the pack's era and the node1 state (C) the window trace, 16 seeds at 2^22 Verdict
class-v6 04442d9ca's all class (program 46a8008fac7787a5, generator 5; the first re-export's draw) all2-c566ae2b, build-6 accepted; min site ratio 0.99994; bucket +5.00 sigma; worst free bit 3.40; no site over 6 sigma 256 of 256, 0 exhausted, r 0.129, mean attempt 0.15, max 2, (c''') 0; parts (a') 23, (b) 7, (a) 4, reg64 liveness 3, (c) 1 per-site distinct ratio 1.0026 to 1.0027 (every site); the item share 1.11 to 1.41x flat against the foldrw control's 1.10 to 1.37x on the same seeds, paired 1.015 to 1.032x PASS
hl-v6-all, the freeze's object (4de7b836cc40a4ea, generator 6; the same instructions under the generator-6 id) all3-6debbac1, build-4 (build-6's pool held by lane D at release class) accepted; min site ratio 0.99994; bucket +5.00; worst free bit 3.40; no site over 6 sigma 256 of 256, 0 exhausted, r 0.129, mean 0.15, max 2, (c''') 0 of 294 the 04442d9ca trace stands (the same draw) PASS

The review's draw changes read in the parts: the reg64 liveness rule now fires on 3 of 294 candidates (the probe in the crate), and the rejection rate on the all class falls from 0.117 (the rw1 table alone) to 0.129 with the five reserved shuffles, every seed still accepted inside two attempts.