Math Mapgenerated 2026-10-25 · a354234
PUBLIC BUILD

run 102Settled

The free one-term form (ω its own parameter; the forms are run 100's), fitted on run 100's six files at L = 81 (H4a, H4b), 243 (H5a, H5b), 729 (H6) and 6561 (H8), predicts H's three moments at L = 2187 — ln S = −5.4449911 ± 0.0012293, mean = 0.6843628 ± 0.0000088, g₁ = 0.3634693 ± 0.0042900 (profile errors, χ² ≤ min + 1 in all nine parameters). Run 100's H7 (samples100/H7.txt, 144,000 samples, perc seed 7936) sits within one combined error of that prediction in every moment (−0.97, −0.09, −0.57). Drawn again at 2187 with ten times the samples, so that the file's error falls to 0.4 to 0.6 of the prediction's, does the prediction still hold?

slug
h-2187-tenfold
state
run
created
2026-10-06
sealed
2026-10-06
builds_on
[100, 096, 079]
concepts
[fractal-dimension]
programme
PG-03
from
PG-03's status after run 100 was scored and the leave-one-out reading filed (2026-10-05, READING-PG03-LOO.md): L4 inherits the question of which window is right and how large the prediction errors are, and the programme said a tighter 2187 or 6561 before a bigger draw at 19,683. The owner chose a long run on BernoullisBook on 2026-10-05, H at 2187, about ten times run 100's samples there. The one-term forms' predictions at 2187 from the other four sizes, with their errors, were computed on 2026-10-06 from run 100's files alone (glimpse_2187.py, glimpse_2187.json, committed with this seal) and are the sealed numbers below
statistic
R27_tree_groups/carpet_perc/. perc.c unchanged (md5 e341b2c86677a0ce71cc9a6e3de5982d; xoshiro256**, each sample's state four splitmix64 outputs from x₀ = seed·0x2545F4914F6CDD1D XOR (index+1)·0x9E3779B97F4A7C15, lines 21–27 and 47; perc keeps every sample in memory and writes the file once, in index order, when all threads have finished, so a stopped draw leaves no file), graph H7 unchanged (graphs/H7.bin, md5 3e547c823b9a3ca26a1662b3def8b74b as pre096.json records on both machines; M = 3,351,944). The new sample set is ten pieces drawn in order on BernoullisBook (x86_64) at 4 threads, each ./perc graphs/H7.bin 150000 <seed> 4 samples102/H7_p<i>.txt for i = 0 … 9 with perc seeds 7938 + i (7938–7947); the set is their concatenation in piece order, 1,500,000 samples, read as one series by the analysis; each piece has its own sidecar. run102.sh draws the pieces in order and skips a piece whose file exists with exactly 150,000 lines; a piece file with any other line count is moved to discarded102/ (untracked) with a line in times102.txt, and the piece is drawn again by the same command — perc's output is a function of seed and index alone, so the file is the same file. Before drawing — BernoullisBook redraws the first 1,000 samples of the stored samples079/H7.txt (perc seed 7904, 48,000 samples) with the perc binary it will draw with (./perc graphs/H7.bin 1000 7904 4 redraw102/H7_first1000.txt) and pre102.sh checks that column 0 (k, the only column the statistic reads) equals column 0 of head -n 1000 samples079/H7.txt line for line (the md5 of cut -d' ' -f1 of the two is the same; both md5s logged); column 1 is not compared. pre102.sh also checks that samples102/, discarded102/, times102.txt, fit102.json and RESULTS102.md do not exist, and logs the binary's md5. Its verdict is the last line of pre102_bernoulli.log (REDRAWS_PASS if the column-0 check passes and none of those paths exists, else REDRAWS_FAIL), written before the first draw and not evaluated again; the log is committed before the first draw. Seeds are unused if a scan of every script (.sh, .py, .c), every run file (lab/runs/*.md) and every seed-named JSON key, made on the M5 by seedscan100.py's method and recorded in pre102.json, committed before the first draw, finds none of 7938–7947 or 526001–528000 used or named as a seed outside this run's own files (this run file, pre102.sh, run102.sh, fit102.py if written by then, the scan's script and pre102.json); a digit string that is not a seed is listed and does not count, as in pre100.json. Control (i) below is run and committed before the first draw too, since it reads no new sample. run102.sh refuses to draw unless pre102_bernoulli.log ends in REDRAWS_PASS, the perc binary's md5 is the one that log records (a gate for the lab, not a scored control), pre102.json is present with the verdict unused, and fit102.json's stage-zero block records control (i) passed. The ten pieces go to the M5 for analysis with each piece's md5 recorded on both machines (a piece whose md5 differs is copied again until it matches, every attempt logged); the analysis runs in the lab's environment (numpy 2.5.3) in two stages — stage one writes the controls and no z; stage two the z's. Moments, errors and the set's 3 × 3 covariance as run 100: x = column 0 / M over the 1,500,000 samples; the mean of x, ln S (S the square root of the unbiased second k-statistic), g₁ = k₃/k₂^1.5 by unbiased k-statistics (reading_pg03_moments.py's functions); the sample covariance (divisor 1,999) of 2,000 bootstrap replicates, replicate b (b = 0 … 1,999) resampling the 1,500,000 samples with replacement by index, numpy default_rng(526001 + b).choice(n, n, replace=True). The prediction — the three sealed values and their profile errors above, as glimpse_2187.json holds them at full precision; they come from fit100.py unchanged (md5 0328a891a35091a5085cb9a4f4731d7a; the forms, bounds, grids, starts and refinements of run 100), the free fit on the six files named in the question (fit100_stage1.json; each file its own point with its covariance), evaluated at L = 2187, the error per moment being half the range of the prediction over χ² ≤ χ²_min + 1 in all nine parameters, exact in the six linear amplitudes and extremised over (1/ν, ω, B) inside the bounds (reading_pg03_loo.py's profile_error). Scored quantity — for each moment m, z_m = (new − sealed prediction) / √(σ²_m,boot + σ²_m,profile), the sealed profile error in the denominator; Q = max |z_m| over the three moments. Controls, all written before stage two — (i) the engine, before any draw: fit102.py's six-file free fit gives χ² within 0.001 of 11.320 on 9, each of the three predictions within 1 × 10⁻⁷ of its sealed value, and each profile error within one part in a thousand of its sealed value; (ii) the record: ten pieces of exactly 150,000 lines, every x in (0, 1), the md5s of perc.c and graphs/H7.bin as recorded, the redraw verdict REDRAWS_PASS, the seed scan's verdict unused (made before the draws and not evaluated again), each piece's md5 on the M5 the one BernoullisBook logged for it, and the 64-bit seeds x₀ of every sample of the set pairwise distinct from each other and from those of samples079/H7.txt, samples096/H7.txt (perc seed 7924, 48,000 samples) and samples100/H7.txt, and no x₀ of the set equal to an x₀ of those three files, or of another piece, plus or minus m·0x9E3779B97F4A7C15 for m = 1, 2, 3 (where splitmix64 streams would overlap) — all computed, not sampled; (iii) the twin: d′(C₇ + C_new)⁻¹d with d the difference of the set's three moments from samples100/H7.txt's (fit100_stage1.json, at full precision) and C their covariances, between 0.115 and 30 — a wrong column, a wrong M or a wrong graph gives thousands, and a physical difference of the size the falsifier names gives about 11, which passes; (iv) 30 consecutive blocks of 50,000 (three to a piece): for each moment the SD (divisor 29) of the block values over √30, divided by the bootstrap error; the mean of the three ratios in 0.75 to 1.25 (the mean of three such ratios has a relative spread of about 0.08 on 30 blocks); (v) with k = column 0, no run of 8 consecutive k values occurs twice, at any offsets, within the set or between it and samples079/H7.txt, samples096/H7.txt or samples100/H7.txt
script
R27_tree_groups/carpet_perc/pre102.sh, run102.sh and fit102.py (pre102.sh and run102.sh written by the lab as new files from pre100.sh and run100.sh, changing the run number, the sample directory (samples102/), one graph in ten pieces and one redraw (the first 1,000 lines of H7, as run 100 did for H8), the check that this run left no output, the skip-or-discard rule for pieces, and run102.sh's gate, and nothing else; fit102.py written from this seal, importing fit100 unchanged for the forms and reading_pg03_loo's profile_error for control (i), with reading_pg03_moments.py's moments; the seed scan by seedscan100.py's method with this run's ranges and exempt paths, its output pre102.json)
artifacts
[R27_tree_groups/carpet_perc/RESULTS102.md, fit102.json, samples102/ (H7_p0.txt to H7_p9.txt, untracked, about 3.4 MB each, each attested by its sidecar as docs/DATABASE.md allows), times102.txt, pre102_bernoulli.log, pre102.json, redraw102/ and discarded102/ (untracked), glimpse_2187.py, glimpse_2187.json]
expects
about four days of drawing on BernoullisBook (run 100 drew H6 at 729, 480,000 samples, in 13,721 s at 4 threads, 35.0 a second; H7 has 8.0 times the bonds, so about 4.4 samples a second, 9.5 hours a piece and 95 hours for the set; the lab reports the rate it sees and the seal does not depend on it), then under an hour of analysis on the M5
sizing
1.9 a second
outcome
confirmed
outcome_note
Q = 2.478 (g₁) against a bar of 2.5, 0.022 inside it; z = −1.808, −0.402, −2.478 on ln S, the mean and g₁; all controls pass
source
../lab/runs/102-h-2187-tenfold.md

PredictionThe free one-term form's prediction at 2187 from the other four sizes holds on the tenfold set — Q < 2.5. One clause.

FalsifierQ ≥ 3.5 — the form that fits run 100's seven files at 12.4 on 12 does not reach 2187 from the other four sizes once the set's error is below the prediction's; the moment is named. Between 2.5 and 3.5, unanticipated. Withdrawn if control (i) or (ii) fails; reported and not scored if (iii), (iv) or (v) fails, whenever the failure is seen; a run not scored is not redrawn under this seal. Readings fixed now — a confirm says the free one-term form's reach to 2187 survives a set whose error is 0.4 to 0.6 of the prediction's; it does not say the form is right, because the prediction's own error is now the larger term (the test's reach is a deviation of about 0.005 in ln S, 3 × 10⁻⁵ in the mean, 0.017 in g₁ at 3.5 combined errors; the combined errors are only 1.5 to 1.9 times smaller than run 100's at 2187, and within a fifth of the floor the prediction error alone sets), and a deviation of the size H7 showed in ln S (−0.0023) would score near −1.7 and confirm. A falsify in the mean alone, with ln S and g₁ inside 2.5, reads "the mean's approach to p_c is not the free form's" and not "ω is wrong", since the mean carries two amplitudes of its own. Reported, not scored: the tied form's (ω = 1/ν) six-file prediction and its three z's (its mean prediction, 0.6843113 ± 0.0000060, sits 3.8 combined errors below H7 already); the seven-file free fit's in-sample prediction (−5.4455666, 0.6843620, 0.3627699) and its z's; the seven-file fits with the set in H7's place and with both — T = χ²(tied) − χ²(free), χ², 1/ν, ω with and without 81; the pooled 2187 point (the set and H7 combined with inverse-covariance weights)

Sealed 2026-10-06, before any new sample exists (codifier). The sealed numbers — the six-file free fit's prediction at 2187 and its profile errors — were computed from run 100's files on 2026-10-06 by glimpse_2187.py, a pre-seal glimpse of stored numbers only, committed beside this file; no sample is drawn or read by it. A second reader on the frontmatter alone and a sighted pass with the disk changed this seal before the commit; what each changed is recorded below.

Why this run, and what it can and cannot settle

Run 100 settled that the tied one-term form (ω = 1/ν) fails on H, by 96.7 in χ² on fresh draws. It left the free one-term form acceptable on the new files (12.4 on 12) and under strain in ln S on all seventeen (form part 18.3 on 6). The leave-one-out reading showed the free form's reach at each size, and at 2187 the file, not the form, was the larger error: H7's 144,000 samples give ±0.0020 in ln S against a prediction error of ±0.0012 from the other four sizes. This run turns that around. At 1,500,000 samples the set's error is ±0.00063, and whatever the new point does, the prediction's own error, ±0.0012, is now what sets the scale. So the clause is a test of the free form's reach, not of its truth: a deviation it can see is one of about four times the prediction error. What it buys the programme beyond the clause is a 2187 point three times as sharp as any H has, for the fits L4 will seal — the window question (with or without 81) is not decided here, and the seal says so.

The one place the test bites hard is the mean. Its prediction error is 8.8 × 10⁻⁶ and the set's will be 3.6 × 10⁻⁶; the tied form's prediction sits 5.0 × 10⁻⁵ below H7 (3.8 combined errors) and would sit about seven below the new set if H7 is right. That is not scored — the tied form is already falsified — but it is reported, and it is the next level of a self-similar host read as a prediction, not as a result.

Sizing, and why ten pieces

From run 100's own rates (times100.txt): BernoullisBook drew H6 (729; M = 418,264) at 480,000 samples in 13,721 s at 4 threads, 35.0 a second. H7 has M = 3,351,944, 8.01 times as many bonds; at one bond's cost per bond that is 4.4 samples a second and about 95 hours for 1,500,000. The M5 drew H7 at 9 threads in 4,734 s for 144,000 (30.4 a second, 324 MB peak RSS). perc holds every sample in memory and writes once at the end, so a single 95-hour process that stops — a lid closed, a battery, a sleep — writes nothing and four days are gone. Ten pieces of 150,000 under ten seeds make a stopped piece cost at most nine and a half hours, and the set is their concatenation; nothing in the statistic sees the piece boundaries except control (iv)'s blocks, which fall three to a piece.

Readers

Second reader, frontmatter alone (an agent given the frontmatter and nothing else). Found and fixed before the commit: control (i)'s tolerance was "within 1e-6" with no unit, 11% of the mean's profile error — now 1 × 10⁻⁷ on each prediction and one part in a thousand on each error, and z is defined on the sealed numbers; "six files at four sizes" named no files — now named; three stored H7 files and "run 100's H7" — now samples100/H7.txt by name, with the other two's seeds and counts; the bootstrap base of b was unstated — now b = 0 … 1,999, so 526001–528000 is exactly the scanned range; the binary's md5 was called "not a control" while gating the draw — now a gate for the lab and not a scored control, said so; the seed scan was in control (ii) but not in run102.sh's gate, so a failed scan could be found after four days — now in the gate, with control (i), which reads no new sample; a stopped draw's partial file had no stated fate — the disk shows perc writes only at the end, so there is none, and the ten-piece rule covers a piece file with the wrong count; a transfer md5 mismatch had no stated remedy — now copied again until it matches, logged. Its largest finding was on control (iii): with the twin bound at 11.34, an upward ln S falsification at Q = 3.5 (0.0072 from H7) would have scored 11.2 on the twin statistic and been voided as "not scored" — the control would have eaten half the falsifier region. The bound is now 30, which a mis-wiring (wrong column, wrong M, wrong graph) still exceeds by orders of magnitude and a physical difference of the falsifier's size does not. Its second: control (iv)'s window 0.90–1.10 on the mean of three ratios from 30 blocks was about ±2σ, voiding a sound set one time in twenty; now 0.75–1.25. Its third: "tenfold precision" overstated — the combined errors shrink by 1.5 to 1.9 times, not ten; the text now says so. It also noted that x₀ values differing by small multiples of the splitmix64 increment give overlapping streams even when distinct; control (ii) now checks m = 1, 2, 3. Kept as the reader found them, with the reason: the three-outcome clause (confirm / unanticipated / falsify) is the record's convention; the engine control is circular for the form's correctness and is meant only to catch drift and mis-wiring, which is what it says.

Sighted pass with the disk (codifier). perc.c lines 27 (XOR, the constants as written), 38–46 (one state per sample index, threads interleaved by index), 75–81 (every result held in memory; the file written after the join, in index order): the redraw at 9 threads matching the stored 4-thread file line for line in run 100 is what these lines predict. graphs/H7.bin md5 3e547c823b9a3ca26a1662b3def8b74b on disk and in pre096.json for both machines; perc.c md5 as sealed. samples079/H7.txt and samples096/H7.txt 48,000 lines each, samples100/H7.txt 144,000; perc seeds 7904, 7924, 7936 (pre096.json, fit100.py). fit100_stage1.json holds H7's full covariance. glimpse_2187.json: the six-file free fit's χ² 11.320 on 9 and the three predictions and profile errors as sealed; each profile range is symmetric about its prediction to the fourth significant figure (ln S −5.446221 to −5.443763; mean 0.6843540 to 0.6843717; g₁ 0.35918 to 0.36776), and the fit's 1/ν and ω intervals sit off their grid edges, so the "half the range" errors hide no asymmetry and no truncation at a bound. reading_pg03_moments.py's bootstrap base is 471001 + 18b + j and fit100.py's 511001 + 7b + j, neither inside 526001–528000. The seed scan script is seedscan100.py (pre100.json's exempt paths name it).

Dated notes before the draw (codifier)

2026-10-06, 09:40 — two rulings on the lab's Phase A report, before any sample exists. (1) The seed scan's one hit. seedscan100.py line 133 holds range(7931, 7938): 7938 is that range's exclusive upper bound, a Python idiom, not a seed. The seal already provides for this — "a digit string that is not a seed is listed and does not count, as in pre100.json" — so the ruling is the seal's own: the hit is listed in pre102.json as a non-seed with that reason, the verdict is unused, the exempt list is not changed and seedscan100.py is not edited. (2) fit102.json before the draw. The statistic line says pre102.sh checks that fit102.json does not exist, and the same line says control (i) is run and committed before the first draw, which writes fit102.json's stage-zero block. The second sentence is the later and the operative one; the check is read as "no stage-one block exists", which is how the lab built it. No seed, bound, tolerance or control changes under either ruling. A tools finding for the governing walk: the lab reports that Claude Code loaded its auto-memory index (MEMORY.md) at session start although the chat was told memory was off, and says it did not use it; so "memory off" in a lab chat is a setting of the owner's account, not of the session, and a lab chat under Claude Code holds the project's memory index whether or not it reads it. This goes to the clean-seat prompt and FLOW's role table, not to this run.

2026-10-06, 15:05 — the expected duration was wrong; nothing else moves. The seal's sizing scaled H6's 35.0 samples a second by the bond count (4.4 a second, about 95 hours). BernoullisBook's own H7 timings do not scale that way: the Phase B redraw check drew 1,000 samples of H7 at 4 threads in 518 s (1.93 a second, pre102_bernoulli.log's run), and run 096's H7 file took about 7 hours for 48,000 samples (1.9 a second). At 1.9 a second a piece of 150,000 takes about 21.6 hours and the ten about 9 days in series on BernoullisBook, not 4. The M5 draws H7 at 9 threads at 30.4 a second (above), about 14 hours for all ten. Seeds, bounds, tolerances, controls and the sealed machine are unchanged and no statistic depends on the duration; the expects line is superseded by this note. The pieces are independent, so if BernoullisBook falters the pieces not yet drawn can be moved to the M5 by a further dated note made before they are drawn, with the M5's own redraw check passed first (as pre100_m5.log did for run 100).

2026-10-13, 22:15 — the draw is finished and on the M5; nothing has been read. (codifier) run102_bernoulli.log ends ALL_FINISHED bernoulli 2026-10-13T14:28:55. Ten pieces of 150,000 lines, seeds 7938–7947, 167.4 hours of drawing at 4 threads (57,198 to 61,792 s a piece; no wait logged). The set went to the M5 as one archive (tar on BernoullisBook, AirDrop), was unpacked to a staging folder and copied without overwrite; every piece's md5 on the M5 equals the md5 in times102.txt, in BernoullisBook's own list (md5_102_bernoulli.txt) and in its sidecar, and every piece has 150,000 lines, on the first attempt (transfer102.txt). No piece's contents have been opened and no moment computed. running: is cleared today. The analysis goes to a fresh lab chat, stage one first.

2026-10-13, 22:20 — stage one is written; every control passes; no z exists. (codifier) A fresh Claude Code lab chat ran fit102.py stage1 in the lab environment (Python 3.14.7, numpy 2.5.3, arm64) and committed fit102.json (314721b). Control (ii) passes, with the x₀ check over 1,740,000 states (the set and the three stored H7 files), and so do (iii) (the twin against samples100/H7.txt: 0.746, inside 0.115 to 30), (iv) (ratios 1.067, 0.746, 1.065, mean 0.959, inside 0.75 to 1.25) and (v) (no repeat among 1,739,972 windows). The set's moments are in the block as written and are not restated here. The lab reports that stage two computes every reported item the seal names. The lab read the run file to the line before "Not part of the seal" and no further, and did not open glimpse_2187.json. Its envelope: Claude Code's eight-entry procedural memory index, none about this run. (Its report called fit102.json a new file; the file was tracked since stage zero, and the commit adds the stage-one block.) Stage two waits for the owner's go.

Scored 2026-10-13 — confirmed

Scored on 2026-10-13, Phoenix time, from R27_tree_groups/carpet_perc/RESULTS102.md and fit102.json (stage one 314721b, stage two e012f2e). A scoring reader, given the seal's scored quantity, clause and falsifier and the lab's numbers, without the lead, recomputed the three z's (ln S and g₁ to 10⁻⁴; the mean to 0.004, the rounding of the sealed value to seven digits) and named the outcome. It raised two doubts, both settled from the seal's own text: control (iv)'s band is on the mean of the three ratios ("the mean of the three ratios in 0.75 to 1.25"), not on each, so the ratio of 0.746 on the mean does not fail it; and the twin's 0.7458 and that ratio's 0.7461 are two numbers that happen to agree to two digits.

From: PG-03's L4, by way of run 100's H7, which sat inside one combined error of the six-file prediction. What the run did to it: with ten times the samples, the prediction still holds at 2187, by the narrowest margin the clause allows.

Controls. (i) exact (χ² 11.320193 on 9; every prediction and profile error to the printed digits); (ii) ten pieces of 150,000, every md5 as logged on both machines, the x₀ check over 1,740,000 states; (iii) the twin against samples100/H7.txt, 0.746 inside 0.115 to 30; (iv) ratios 1.067, 0.746 and 1.065, mean 0.959 inside 0.75 to 1.25; (v) no repeated run of 8 in 1,739,972 windows.

The scored quantity. On 1,500,000 samples at 2187: z = −1.808 (ln S), −0.402 (mean), −2.478 (g₁); Q = 2.478, on g₁. The clause asked for Q < 2.5: confirmed. Q sits 0.022 inside the line, a deviation in g₁ of 0.0124 against 0.0125 at 2.5 combined errors; the seal fixes no rounding of Q, and as computed the comparison is not close enough for the sealed values' rounding to move it (that moves g₁'s z by about 10⁻⁵).

What a confirm says, by the seal's own readings. The free one-term form's reach to 2187 survives a set whose error is about half the prediction's (the ratios are 0.53, 0.41 and 0.61, so g₁ just outside the "0.4 to 0.6" the reading gives). It does not say the form is right, since the prediction's own error is the larger term. The ln S deviation, −0.0025, is the size of H7's (−0.0023), and the seal said such a deviation would confirm near −1.7. It did, at −1.8.

Reported, not scored. - The tied form (six files, χ² 83.2 on 10): z = −1.06, +6.84, +4.43. The mean separates it from the free form. - The seven-file free fit's in-sample prediction: z = −1.57, −0.39, −2.62. - The pooled 2187 point (the set with run 100's H7): z = −1.81, −0.38, −2.38. - The seven- and eight-file fits: free χ² 20.6 on 12 and 21.0 on 15 with 81, 3.7 on 6 and 4.1 on 9 without; T = 142 and 147 with 81, 6.9 and 7.1 without. The free ω is 0.31 to 0.32 throughout, and 1/ν is 0.529 with 81, 0.514 without. - A reading, not a result: g₁ sits below the free form's prediction in every comparison made of it here (−2.48 scored, −2.62 in sample, −2.38 pooled) and in run 105 at 19,683 (−1.00). Each z is inside its line. Their signs agree, and that is the programme's to weigh (PG-03, status 2026-10-13), not this run's.

The codifier’s lead is kept for the private site.

generated 2026-10-25the lab index