Math Mapgenerated 2026-10-25 · a354234
PUBLIC BUILD

run 083Settled

PN-005's House named the route the one-block recursion cannot represent: a lattice crossing that passes through a top-level block without crossing it left to right. Its test records, beside each sample's threshold t, the time t_coarse at which the coarse graph of top-level blocks first crosses, a block counting as open once it is internally crossed, and splits the samples on the sign of Δ = t − t_coarse. On T, whose skewness turns back between L = 729 and 6561, and X, whose does not: is the Δ < 0 subpopulation larger on T, and does it carry the lower skewness?

slug
coarse-crossing-split
state
run
created
2026-10-01
sealed
2026-10-01
builds_on
[073, 075, 081]
concepts
[fractal-dimension]
programme
PG-01
statistic
R27_tree_groups/carpet_perc/ (Lab_Tree_Model, the M5). A variant of perc.c, perc_coarse.c, written from this specification: the same bond order (seed_rng(SEED, s), the same incremental Fisher–Yates), the same lattice union–find with the same left/right terminal flags, with the loop breaking once both k and k_coarse are recorded. Top-level blocks: with L = 9ᵍ, block (I, J) = (row ÷ 9ᵍ⁻¹, col ÷ 9ᵍ⁻¹), 64 kept. A bond is internal if both ends lie in one block. graph.bin carries no coordinates, so gen.py gains write_blocks <name> → graphs/<name>.blk: n int32 block ids (I·9 + J) and n uint8 block flags (bit 0: col mod 9ᵍ⁻¹ = 0; bit 1: col mod 9ᵍ⁻¹ = 9ᵍ⁻¹ − 1), node i being the i-th kept cell of carpet(G, g) in row-major order; perc_coarse reads both files. A second union–find runs over internal bonds only, with per-block flags marking the block's own left column (col mod 9ᵍ⁻¹ = 0) and right column (= 9ᵍ⁻¹ − 1); a block is open at the first time a cluster of its internal bonds carries both flags. A third union–find on the 64 blocks (adjacency: the pattern's kept-cell adjacency) unions a block with its open neighbours when it opens; the coarse crossing is the first time a cluster of open blocks holds a block in pattern column 0 and one in column 8. Per sample, one line of four whitespace-separated integers: k (lattice crossing, as perc.c; column 0 is perc.c's column 0), k_coarse, the number of open blocks at k, and at k_coarse; k_coarse is recorded on every line, no sentinel. Thresholds t = k/M, t_coarse = k_coarse/M, Δ = t − t_coarse. Graphs unchanged: T2, T3, T4 and X's C2, C3, C4 (L = 81, 729, 6561). Samples: 16,000 at L = 81 and 729, 8,000 at 6561; perc seeds 8301, 8302, 8303 (T at 81, 729, 6561) and 8304, 8305, 8306 (X); 8 threads (the thread count does not change the numbers). Output samples083/<graph>.txt. No statistic is computed until all six files are complete. Per graph: the share s₋ of samples with Δ < 0, with binomial error; g₁ of t in the Δ < 0 part and the Δ ≥ 0 part by unbiased k-statistics exactly as run 073, with bootstrap errors: for graph n = 0 … 5 in the order above, rng = numpy.random.default_rng(229001 + n); draw 2,000 replicates of the Δ < 0 part, then 2,000 of the Δ ≥ 0 part, then 2,000 of all samples, each replicate rng.integers(0, m, m) over that part's m samples; every error is the replicate standard deviation (ddof = 1), and the error of a difference is the quadrature sum. Seeds checked against every perc seed (49–8206, plus 490, 510, 530) and bootstrap range (up to 228402) in the carpet_perc scripts and runs 051–082: none reused except as the control states. Controls, checked first, any failure withdrawing the run: (i) reproduction: perc_coarse on T3 with seed 7002 gives, for the first 1,000 samples, exactly the k column of samples070/T3.txt (the cloud's run-070 control, the same stream); (ii) closure: per graph, one deterministic pass adding all M bonds in index order leaves every kept block open and the coarse graph crossed, and every sample line carries a k_coarse; (iii) at L = 81 and 729 the g₁ of t over all samples, pooled over both parts, lies within 3 combined errors (quadrature of run 073's error and the pooled replicate SD) of run 073's value for that pattern and size (T +0.129, +0.363; X +0.132, +0.267), so the variant's thresholds are the carpets' thresholds. Reading samples070/T3.txt's k column for control (i) computes no statistic of it, so run 081's unopened copy of T is unaffected. Script split083.py, output split083.json and RESULTS083.md.
script
R27_tree_groups/carpet_perc/perc_coarse.c and split083.py (Lab_Tree_Model)
artifacts
[R27_tree_groups/carpet_perc/RESULTS083.md, R27_tree_groups/carpet_perc/split083.json, R27_tree_groups/carpet_perc/samples083/]
outcome
unanticipated
source
../lab/runs/083-coarse-crossing-split.md

Prediction(A) The illegal route weighs more on the pattern that turns. At L = 729, s₋(T) exceeds s₋(X) by more than 3 combined binomial errors. (B) It carries the lower skewness beyond selection. Write D = g₁(Δ ≥ 0) − g₁(Δ < 0). Samples with Δ < 0 crossed early, so on any right-skewed threshold distribution D is positive by selection alone, on X as much as on T; X is the selection-only control. On T at L = 729, D_T is above +0.05, and D_T − D_X exceeds 2 combined errors. Confirmed if both hold.

Falsifier(A) s₋(T) at or below s₋(X): the route is no more used on the turning pattern. Between that and the 3-error margin, unanticipated. (B) D_T at or below zero, or D_T − D_X at or below zero: the route carries no skewness beyond what selecting early crossings does on any carpet. Between that and the confirming margin, unanticipated. If s₋ at 729 is below 0.05 on T or on X, that part is too small to read and B is unscorable; the run is then scored on A alone, falsified if A is falsified and otherwise unanticipated, never confirmed. The run is falsified if either clause is falsified, confirmed if both hold, otherwise unanticipated. A falsified B with a confirmed A says the route is T's but the skewness is not sorted by it, and the turn lives in something no per-sample event records (PN-005's RESIDUE). A falsified A with a confirmed B says the sorting is real on T but not what separates T from X.

Sealed 2026-10-01, after PN-005 was filed and before any coarse-crossing time existed (codifier). Known at sealing: the carpets' thresholds and skewness at every size (runs 072–073), the one-block recursion's (075), PN-005's House forecasts F3 and F4 with their intervals, and the ladder probe P-049. Nothing about Δ.

What this run is for, and what it pins that the House left open. The House's test 3 asked Ledger to pin the coarse open-rule and whether Δ < 0 is reachable. Pinned here: a block is open on its internal bonds alone, the coarse crossing is site percolation on the pattern's block graph through open blocks, and inter-block bonds play no part in the coarse crossing. Then Δ < 0 is reachable (a lattice path through a block that is not internally crossed), and Δ > 0 is too (adjacent open blocks whose facing cells are not joined, or joined on the wrong cells). Both signs mean something; the sign is the split, as the House wrote it. The House's F3 intervals (T: g₁(Δ<0) in +0.15 to +0.34, g₁(Δ≥0) in +0.36 to +0.52; X: g₁(Δ<0) in +0.18 to +0.31, g₁(Δ≥0) in +0.24 to +0.36) and F4 (s₋(T) in 0.15 to 0.45, s₋(X) in 0.08 to 0.35, T larger) are scored by the codifier from the report; they are not the lab's to score. The House's "81 top-level blocks" was corrected to 64 by its checker (H1-25). The House's test 5 also asked for the count of blocks a crossing traverses without being internally crossed; this run records the open-block counts at k and k_coarse instead, which is cheaper and carries the same sign.

The codifier's lead. The turn is a mixture: the Δ ≥ 0 part tracks the one-block recursion (T: +0.316 at 729, +0.434 at 6561, rising) and the Δ < 0 part sits low and grows with L on T, so the pooled g₁ turns. That is P-049's rung-1 picture read on the carpet itself. It predicts, beyond the clauses: s₋(T) at 6561 above s₋(T) at 729, and g₁(Δ ≥ 0) on T at 6561 above its 729 value. Both are reported, not scored, because they are read at the size whose fall run 081 is still replicating.

Power, stated. At 16,000 samples a share near 0.2 has binomial error 0.003, so A resolves any difference above 0.015. A is not forced by the threshold level: T's higher p* (0.83 against X's 0.74) makes its blocks more likely to be internally crossed by the time the lattice crosses, which works against a large s₋(T). If the parts are near 0.3 and 0.7 of 16,000, the g₁ errors are about 0.036 and 0.024 (scaling run 073's), so D_T's +0.05 is about 1.2 combined errors and the 2-error clause on D_T − D_X needs about 0.085 between the patterns. The House's F3 puts D_T near 0.2 and D_X near 0.05.

The reductio this seal passed first. By construction: Δ is not the threshold (PN-005's FORCED 1 ruled out Bound's split for that reason); it is the lag between two crossing times on the same bond order, and either sign can occur. Conditioning on a sub-population will move g₁ by selection alone (FORCED 2), which is why B is a sign-and-size clause on the ordering and A is about the share, not the shape. Negation: if the turn is not in any per-sample route, Δ still correlates with t (early lattice crossings have Δ < 0), so D is positive on both patterns by selection and D_T − D_X is near zero; B's falsifier fires. s₋ then differs between T and X only through geometry at threshold, with no reason to favour T, and A has no reason to hold. Cost: three union–finds per bond instead of one, so about twice perc.c's work as an estimate: T4 took 2,601 s at 8 threads for 8,000 samples (run 053), so about 1.5 hours each for T and X at 6561; the 729 and 81 graphs take minutes. About 3.5 hours; time is reported, not a condition. The internal union–find needs no block ids on its flags: internal clusters never leave a block.

Reported, not scored. - Every graph's s₋, the pooled g₁, and g₁, g₂ and the mean of t in each part, with errors; the distribution of Δ (its quantiles) and of the open-block counts at k and at k_coarse. - s₋ against L on both patterns; the Δ ≥ 0 part's g₁ against the one-block recursion's at the same level. - The House's F3 and F4 intervals beside the numbers that decide them. - The reproduction control's exact match count (1,000 of 1,000).

Reviewed before commit by a second reader (OPS.md); its edits are folded in: the block file the variant reads; the loop's stop and the closure control made deterministic; clause B made comparative against X, since selection on early crossings lowers g₁(Δ < 0) on any right-skewed carpet; the lone-clause rule when B is unscorable; the bootstrap sequence and the pooled error; the House's X intervals quoted correctly; the output format.

Scored 2026-10-01 — unanticipated

Scored by the codifier from RESULTS083.md and split083.json (63c6693), as written.

Controls first — all three pass. - (i) perc_coarse on T3 with seed 7002: the k column matches samples070/T3.txt on 1,000 of 1,000 lines. - (ii) One deterministic pass per graph leaves all 64 blocks open and the coarse graph crossed; every one of the 80,000 sample lines carries a k_coarse. - (iii) The pooled g₁ lies within 3 combined errors of run 073 at every checked point: T +1.78, −1.43 errors (81, 729); X −0.07, +0.69.

(A) Unanticipated. At L = 729, s₋(T) − s₋(X) = +0.0028 ± 0.0040 (+0.71 errors): above zero, so not falsified, and far short of the 3-error margin. The route is used equally on the two patterns at this size (0.854 against 0.852). Nor is the sign stable in L: +0.044 (+8.9 errors) at 81, −0.015 (−2.8 errors) at 6561. The illegal route's weight does not separate T from X at the size the seal chose, and reverses across the sizes it reported.

(B) Confirmed. On T at 729, D_T = +0.241 ± 0.062, above +0.05; D_T − D_X = +0.188 ± 0.087, 2.17 combined errors, above 2. The sorting on T is real beyond selection: X, the selection-only control, sorts by +0.053 ± 0.060.

Neither part is below 0.05 of the samples, so B is scorable. B confirmed and A neither: the run is unanticipated. The seal's reading for a confirmed B without A — the sorting is real on T but is not what separates T from X — stands, with the share equal rather than reversed at 729.

What the numbers say beyond the clauses.

  1. The illegal route is the majority, not a channel. s₋ is 0.764, 0.854, 0.875 on T and 0.721, 0.852, 0.889 on X, rising with L on both: three samples in four at L = 81 and seven in eight at 6561 cross the lattice before the coarse graph of blocks crosses. The one-block recursion's route, through internally crossed blocks, is the minority at every size. The House's "channel" (F4: shares 0.15–0.45 on T, 0.08–0.35 on X) is low by a factor of two to six on T and two to eleven on X, and what grows faster with L is X's share (+0.169 over 81→6561 against T's +0.111): ASSERTED 1 fails in direction.
  1. The Δ ≥ 0 part is mostly the exact tie. Δ = 0 — the bond that completes the lattice crossing completes the coarse crossing too — is 12.4, 10.2, 10.2% of samples on T and 6.7, 5.5, 5.3% on X; strictly positive Δ is 11.1, 4.4, 2.3% on T and 21.2, 9.3, 5.8% on X. On T the "legal" part is mostly ties at 729 (70%) and 6561 (82%), and the tie share is nearly twice X's at every size (1.85–1.92). That is a difference between T and X the run shows and the seal did not clause. (Open blocks at k, at 729: about 37 of 64 in the Δ < 0 part against 49 on T and 45 on X in the Δ ≥ 0 part.)
  1. The sign of Δ does not resolve the turn. On T, g₁ in the Δ < 0 part is +0.129, +0.157, +0.121 over the three sizes (the 729→6561 step −0.036 ± 0.038) and in the Δ ≥ 0 part +0.094, +0.399, +0.230 (step −0.168 ± 0.100). On X both parts' point values rise with L (+0.016, +0.159, +0.269 and +0.153, +0.213, +0.403). Neither of T's steps clears 2 errors, nor does their difference (+0.132 ± 0.107): the split does not resolve where the turn sits, if it is there. What it does show is that the Δ < 0 part is not where a fall is concentrated. If the turn holds, that is the PN-005 House's second branch: "the omitted structure is not the coarse-crossing channel and no per-sample quantity will expose it — the next object would be a two-sample correlation across neighbouring blocks".
  1. On fresh seeds the turn itself is marginal. The pooled T g₁ is +0.186, +0.312, +0.250: the 729→6561 step is −0.062 ± 0.035 (1.8 errors), where run 073 read −0.191 ± 0.038. Control (iii) holds at 81 and 729, so these are the carpet's thresholds; 073's T at 6561 (+0.172) is not among the controls. This bears on run 081's clause A and the House's F1 and is scored from 081, not from here (seeds 8301–8306 are distinct from 081's 8101–8104).
  1. The codifier's lead, where it was wrong. s₋(T) at 6561 is above 729 (+0.0205 ± 0.0046), as the lead said, but X's rises more. g₁(Δ ≥ 0) on T at 6561 is below 729 (−0.168 ± 0.100), the opposite of the lead, and the Δ ≥ 0 part does not track the one-block recursion where it is read with power: T at 6561 is 0.230 ± 0.081 against the recursion's 0.434 (2.5 errors); elsewhere within 2 errors (T at 729: 0.399 against 0.316; X at 6561: 0.403 against 0.261), and X at 729 matches (0.213 against 0.212). The mixture picture — a legal part that is the recursion and an illegal part that drags the pooled value down — fails at the size the turn is about. The recursion's route is a minority event on the lattice, and at 6561 on T its shape is not the recursion's.

House forecasts, scored (rows in panels/SEAT-RECORD.md). F3 on T: g₁(Δ<0) < g₁(Δ≥0) — hit; g₁(Δ<0) = +0.157 in +0.15 to +0.34 — hit; g₁(Δ≥0) = +0.399 in +0.36 to +0.52 — hit. F3 on X: +0.159 against +0.18 to +0.31 and +0.213 against +0.24 to +0.36 — both miss, narrowly; the ordering holds but is not resolved (+0.053 ± 0.060). F4: s₋(T) = 0.854 against 0.15 to 0.45 and s₋(X) = 0.852 against 0.08 to 0.35 — both miss; "T larger" unresolved (+0.0028 ± 0.0040); F4's own NULL, "equal fractions within 0.03", is what obtained. ASSERTED 1 (the channel grows in weight with L faster on T than on X): falsified — X's grows faster and the order reverses by 6561. FORCED 3 (a lattice crossing through a block it does not cross, a route the one-block recursion cannot represent): confirmed as a recordable quantity, and it is the majority route.

What it does to PG-01's L1. The candidate mechanism — the coarse-crossing route as a channel that grows on T — is closed: the route is real, majority on both patterns, and sorts skewness on T at 729 beyond selection, but its weight does not differ between T and X at 729 (and reverses across sizes) and the sign of Δ does not resolve the turn. L1 stays open on run 081 (does the turn come back at 073's size, or at this run's 1.8-error size). If 081 keeps the turn, the next object is the House's second branch, a correlation across neighbouring blocks, not a per-sample event; and the tie share (item 2) is the one per-sample quantity this run found that differs between T and X.

Lab notes. T4 took 22,947 s at 8 threads (6.4 hours, sharing the M5 with run 084's chains until they were paused for it); C4 5,391 s. Peak memory 3.54 GB per L = 6561 graph. The analysis was chained after the sixth file closed; no statistic was computed before. gen.py's write_blocks went in with 6986954, perc_coarse.c and the samples with 63c6693.

generated 2026-10-25the lab index