Math Mapgenerated 2026-10-25 · a354234
PUBLIC BUILD

run 082Settled

Probe P-049 builds, for any census pattern, the rung-k lattice F_k: the carpet with its block-crossing bonds thinned to k per shared edge at every level, so that adjacent blocks of any level are joined by exactly k bonds. F_k is finitely ramified and its crossing recursion closes on the connectivity partition of 4k terminals; rung 0 is the one-bit iterated map of run 075, which never turns. On the lattice, T's skewness turns back between L = 729 and 6561 and X's does not (run 073). Does the turn appear already at rung 1, the first object with a route through a block that does not cross it, and does rung 1's exponent for T lie between the one-bit value and the measured one?

slug
ladder-rung-one
state
run
created
2026-10-01
sealed
2026-10-01
builds_on
[075, 073, 079]
programme
PG-01
concepts
[fractal-dimension]
statistic
A Claude Code session with the repository (the cloud container or the M5), in R27_tree_groups/carpet_perc/. Patterns T (census #26) and X (#6). Two computations of the same object, F₁ with S₁ = {4}. (a) Recursion Monte Carlo, script rung082.py: the level-g state is the connectivity partition of the four side terminals {N, E, S, W} (15 states). Level 1: the 9×9 block of the pattern with all its bonds open independently at p, the four terminals its ring cells N = (0,4), E = (4,8), S = (8,4), W = (4,0) in (row, col) as gen.py's masks; the partition distribution estimated from 10⁶ samples per grid point. Level g+1 from level g: 64 sub-blocks drawn independently from the level-g distribution, joined by one bond, open at p, between each adjacent kept pair at the designated midpoints; union–find on the resulting graph; the outer terminals are the sub-blocks' outer terminals at positions (0,4), (4,8), (8,4), (4,0) of the pattern. 10⁶ draws per grid point per level. Grid: p on a grid chosen per level after a coarse pass, extended until R < 10⁻⁵ and R > 1 − 10⁻⁵, with step at most w/100 inside R ∈ [0.02, 0.98] and at most w/20 outside; the step and span are recorded. From the W–E crossing probability R_{1,g}(p) on the grid: p*(g) with R = ½; width w(g) = p(R = 0.8) − p(R = 0.2) by linear interpolation; 1/ν₁ = −slope of ln w against ln L over L = 81, 729, 6561 (levels 2, 3, 4), equal to the endpoint slope, with both local slopes reported; skewness g₁(g) and kurtosis g₂(g) of the threshold distribution whose distribution function is R_{1,g}, by Stieltjes sums Σ h(p̄ⱼ)·ΔRⱼ over grid cells plus the two endpoint masses, no finite-difference density. Random streams: numpy.random.default_rng(208001 + 100·g + i + 1000·b), i = 0 for T and 1 for X, g the level, b = 0 for the point estimate; one stream per (pattern, level, b) over the whole grid. Errors: B = 20 independent replicates of the whole level chain, b = 1 … 20 (seeds up to 228402); the error of a quantity is the standard deviation (ddof = 1) over them. (b) Lattice Monte Carlo: gen.py extended with F_k construction per P-049 (horizontal bond across the column line x with 9-adic level j kept iff its row r satisfies r mod 9ʲ ∈ Dⱼ, Dⱼ = { 4·9ʲ⁻¹ + (9ʲ⁻¹ − 1)/2 }; row lines likewise; everything else as the carpet), graph names lad1_T_<g>, lad1_X_<g>, g = 2, 3, 4; perc.c unchanged, 8,000 samples per graph, perc seeds 8201, 8202, 8203 (T at g = 2, 3, 4) and 8204, 8205, 8206 (X); per-sample thresholds k/M; g₁ by unbiased k-statistics exactly as run 073; width and 1/ν exactly as run 051, 1,000 bootstrap resamples with default_rng(208801 + n), n = 0 … 5 in graph order. Seeds checked against every perc seed (49–8104, plus 490, 510, 530) and bootstrap range (up to 207000) in the carpet_perc scripts and runs 051–081: none reused. Controls, checked first, any failure withdrawing the run: (i) identity, in the weak form: from the same level-1 draws, the column-to-column crossing probability of the 9×9 block equals R_P(p) of rg058.poly within 3 binomial errors at every grid point, and the W–E (single-cell) probability is at or below it everywhere, for both patterns (rg058.poly is column-to-column with contracted terminal columns, so it does not equal the W–E probability; the exact 15-state level-1 polynomials, if the lab extends rg058's transfer matrix to carry the four cells' labels, are reported and replace the draws as level-1 input); (ii) construction: the lad1 graphs have exactly one bond across every aligned 9ʲ-row segment of every level-j line (counted from the graph file by a check in gen.py), their level-1 blocks have the carpet's bond count, and their terminal flags mark exactly one left cell, (4·(9ᵍ − 1)/8, 0), and one right cell, (same row, 9ᵍ − 1), not the whole columns as grid_graph flags for carpets; (iii) agreement: at levels 2 and 3, (b)'s g₁ and w agree with (a)'s within 3 combined errors for both patterns. Outputs rung082.json, lattice082.json, RESULTS082.md.
script
R27_tree_groups/carpet_perc/rung082.py and gen.py (Claude Code session)
artifacts
[R27_tree_groups/carpet_perc/lattice082.json, R27_tree_groups/carpet_perc/samples082/ (RESULTS082.md and rung082.json were named here and were never written; the run is withdrawn; see the notes of 2026-10-04 and 2026-10-05)]
outcome
withdrawn
source
../lab/runs/082-ladder-rung-one.md

Prediction(A) The turn is at rung 1. On F₁(T), by (a), g₁(level 4) − g₁(level 3) is below −0.03; on F₁(X) it is at or above 0; and on both patterns the wall guard (1 − p*)/w is at least 3 at levels 3 and 4, so the shape is the pattern's and not the wall's. (B) Rung 1 sits between. 1/ν₁(T) from (a) lies in [0.374, 0.439], the measured carpet value and the one-bit y₉. Confirmed if both hold.

Falsifier(A) F₁(T)'s step is at or above +0.03: rung 1 rises like rung 0 and the turn needs more boundary state than four terminals carry. A step between −0.03 and +0.03, or X's step below −0.03, makes A unanticipated. If the wall guard is below 3 at level 3 or 4 on either pattern, A is unscorable: a wall at 1 forces the skewness down on both patterns and would confirm A for the wrong reason. (B) 1/ν₁(T) outside [0.374, 0.439] by more than 0.010: the ladder does not pass between the one-bit object and the carpet. Within 0.010 of either end, outside, is unanticipated. The run is falsified if either clause is falsified, confirmed if both hold, otherwise unanticipated. A falsified A beside a confirmed B says the exponent and the shape are set at different rungs. A falsified B beside a confirmed A says rung 1 has the carpet's shape while its exponent is somewhere else, and the ladder's monotonicity in k is the next question.

Sealed 2026-10-01, after P-049 was filed and before any rung-1 quantity was computed (codifier). Known at sealing: rung 0 for every pattern (run 075: T +0.044, +0.316, +0.434 at k = 2, 3, 4, limit +0.511; X +0.059, +0.212, +0.261, limit +0.282); the lattice (run 073: T +0.129, +0.363, +0.172; X +0.132, +0.267, +0.413); the measured exponents (T 0.3743, X 0.5508) and the one-bit y₉ (T 0.4392, X 0.5533). Nothing about F₁.

What this run is for. The first rung of P-049's ladder. Rung 0 (the iterated map) has no route through a block except across it; rung 1 adds one bond per side, so a crossing may enter a block from the top and leave to the right. PN-005's House named that route as the one the one-bit recursion discards (FORCED 3), and the codifier's conviction in P-049 is that it is enough to produce the turn. Clause A tests that on the pattern that turns and the one that does not. Clause B asks whether the ladder is heading from the one-bit exponent toward the measured one, on the pattern where the gap (0.065) is wide enough to see; X's gap (0.0025) is not, so X's exponent is reported.

Why two computations. On F₁ the recursion Monte Carlo and the lattice Monte Carlo compute the same distribution, so each checks the other (control iii), and the recursion's errors are far smaller. The recursion result is the scored one. The lattice result is what the carpets' own estimator sees on a finitely ramified relative, and it is the number later rungs (k ≥ 3, lattice-only) will be compared with.

Power, stated. The recursion Monte Carlo's error on g₁ at 10⁶ draws per grid point is about 0.001–0.005 (independent draws at every grid point), so a step of −0.03 is at least six errors and the thresholds in A are set by the size of effect worth calling a turn, not by noise. The lattice turn on T is −0.19; if rung 1 carries even a fifth of it, A holds. Clause B's interval is 0.065 wide; the one-bit value sits at its top, so B fails if rung 1 moves the exponent up from y₉ or more than 0.010 past the measured value.

The reductio this seal passed first. By construction: rung 1 is not the carpet and not rung 0; nothing in A or B is implied by either. The grid-resolution rule (step ≤ w/100) is there because run 049 was withdrawn on a grid that could not resolve the width. Negation: if the turn needs the full boundary state, rung 1 behaves like rung 0 and A's falsifier fires at +0.03 or above (rung 0's step on T is +0.118). What a lone clause decides is in the falsifier line. Cost: (a) about 10⁹ union–find draws per chain (250 grid points × 4 levels × 10⁶), 10–30 minutes compiled (numba or C; ten times that in plain numpy), so about 20 chain-hours per pattern with the 20 replicates; (b) six lattices at the carpets' sizes, the two L = 6561 ones about 45 minutes each on the M5 at 8 threads or about 3 hours each in the cloud.

Reported, not scored. - Every level's p*, w, g₁ and g₂ by both computations, with errors; both local slopes of ln w; the wall guard (1 − p*)/w at every level, and p*(g) for g = 1 … 4, which must drift toward 1 (P-049: F_k has no transition for finite k). - The level-g distribution over the 15 states for both patterns, and the share (R − R̃)/R of the crossing probability carried by routes rung 0 cannot represent, R̃ the crossing probability with every sub-block's partition projected onto its W–E and N–S pairs, from the same draws (PN-005's F4 quantity, read on F₁). - Rung 1 beside rung 0 and the lattice for both patterns, in one table. - X's 1/ν₁ with the same interval test, reported.

Reviewed before commit by a second reader (OPS.md); its edits are folded in: control (i) restated (rg058.poly is column-to-column, not the single-cell W–E probability); the lattice terminals made single cells; the no-transition bound on every rung and the wall guard added to clause A; the grid extended into the tails with Stieltjes moments; the replicate count cut to 20 with the cost restated; the F4 share defined.

Scored 2026-10-01 — withdrawn

Withdrawn on control (i), as sealed, before any clause was read. The lab's report (the local Claude Code session, 2026-10-01 13:1x; its control records in rung082_parts/):

grid pointsbeyond 3σexpected by chancelargest \z\rms zKS p
T96042.63.76 at p = 0.81741.0030.34
X89152.43.32 at p = 0.97581.0250.71

The draws agree with the exact polynomial: the z-scores are standard normal, and the counts beyond 2σ and 3σ are what chance gives. The control failed because of how it was written. "Within 3 binomial errors at every grid point" over N ≈ 900 independent points passes a correct construction with probability 0.9973ᴺ, about 8% (T) and 11% (X), about 1% for both. The second half of (i), W–E at or below column-to-column, held everywhere. The lab did not re-run with another seed or a smaller grid, which would have been fishing for a pass; that was the right call. The codifier's error, and the second reader's: neither saw that a per-point threshold becomes a family-wise test when the family is the whole grid. OPS.md gains the rule.

What was done before the stop, and carries to the reseal unchanged. Control (ii) passes on all six lattices (gen.py's ladder construction and check_ladder; the check rejects a rung-3 graph and the plain carpet). rung082.py works, with a C core that reproduces numpy's default_rng bit for bit. The four small lattices are sampled (perc seeds 8201, 8202, 8204, 8205); the two g = 4 lattices and the 40 replicate chains were never started.

Three things the lab saw that the reseal must list as known. 1. The F4 share is identically 1 at rung 1. With one terminal per side, a sub-block whose partition is projected onto its W–E and N–S pairs can only be passed straight through, so a projected crossing must run along the middle row, and both T and X remove (4,4). R̃ ≡ 0; a count of 0 in 10⁶ draws at R = 0.51 confirmed it. This is structural, holds for every pattern with a hole on the middle row, and says nothing at rung 1. 2. The wall guard is below 3 at level 3 on both patterns. From the small lattices, (1 − p*)/w: T 1.88 and 2.78 at L = 81 and 729; X 1.89 and 2.58. Clause A needed at least 3 at level 3, so A was unscorable at rung 1 regardless of the control. Rung 1 (three outward bonds per block) is wall-bound at the carpet's sizes, as P-049's no-transition bound predicts for small k. 3. The coarse pass's rough widths (2 × 10⁴ draws, step 0.0025) imply 1/ν₁ ≈ 0.33 for T and ≈ 0.30 for X from levels 2 and 4: below both the one-bit y₉ (0.439, 0.553) and the carpet (0.374, 0.551), and in the wrong order (X below T). Too rough to be results; seen, so listed.

Reading of 2 and 3, for the reseal: a rung-k lattice is gasket-like at small k (the gasket's 1/ν is 0.26) and approaches the carpet from below as k grows, while the one-bit map sits above the carpet. The codifier's conviction that rung 1 "sits between" y₉ and the measured value was wrong: the two-terminal object is not the bottom of this ladder but the other side of it. The ladder's question becomes at which k the carpet's order of T and X, and T's turn, are recovered, with the wall guard choosing the first scorable rung.

Artifacts on disk, checked 2026-10-04 (database batch; the sealed fields are not edited). rung082.json, named in the artifacts line, is not on disk and has never been committed. lattice082.json is on disk and untracked. The lab database loads the lattice side from lattice082.json where that file exists (lab/db/build.py, a082) and has no rows for the rung side.

Pointers corrected 2026-10-05 (codifier; no sealed field, score or number is changed). The artifacts: line read artifacts: [R27_tree_groups/carpet_perc/RESULTS082.md, R27_tree_groups/carpet_perc/rung082.json, R27_tree_groups/carpet_perc/lattice082.json, R27_tree_groups/carpet_perc/samples082/]. RESULTS082.md and rung082.json were never written (the run was withdrawn); the line now names the two that exist and keeps the others as a remark. lattice082.json is tracked since 918ab32.

generated 2026-10-25the lab index