Chapter 2 · Section 8
Folds, Fold Wells and Failed Proto Wells on the Field
The BPT law
A fold is the cell rule's third case (Part 2.2): in BPT Part 3.15's words, "a pulser whose eight neighbours all share its phase folds back to null," grounded in the First Fold of Part 3.2 and the null interior of Part 8.7. That a fold of enough cells is a micro null well is a game method; it serves BPT's Null Well Collapse (Part 3.9), in which wells form by collapse where the data is dense.
The Dimensional Failure Law, BPT Part 3.9:
P⦰ = 2^(−D)
"A collapse fails only when every actual dimension of its universe returns null," with P⦰ "the probability that a collapse fails and seeds nothing" and D "the number of actual, fundamental dimensions of the universe the collapse happens in." "Our universe has four actual dimensions, three of space and one of time, so P⦰ = 1/16 = 0.0625." The book gives the reason: "Each of the D = 4 actual dimensions returns carried (1) or null (0), so a collapse has 16 equally weighted returns, and only the all-null one seeds nothing." The law reads across levels: "the Zinf, whose harmonics end at 3 and so hold the primes 2 and 3 alone, has D = 2 and loses one collapse in four." A collapse that fails seeds no child; its data returns to the Source (Part 3.10).
The established physics
None: a game method.
The game's math
The fold part of the well code:
- Each step's
foldedcells are counted inledger.folds(app.js:4521) and marked infoldGridfor one frame. - In the universe epoch from the Data Nova on (
novaCount ≥ SPACE_LAYER, app.js:4523, which is always true in that epoch),registerFoldWells()app.js:1647 groups the folded cells into 8-connected regions on the torus (foldRegions()engine.js:92) and takes each region's centroid as the mean of its rows and columns. - A region of fewer than
FOLD_WELL_MIN = 16cells (app.js:3477) is skipped, as is one withinnear = max(6, min(rows, cols)/8)cells of an existing well or Proto Well (app.js:1649). - What is left becomes a Proto Well (before the Physical Nova) or a physical well (after), of mass = its cell count. The rest is Chapter 3.
The field part of failed Proto Wells: failProtoWells() app.js:1357 runs at the Physical Nova. P = 2^(−actualDimensions(L)), with actualDimensions(L) = 2 at L ≤ 0, 3 at L = 1, 4 above (app.js:1329). A Proto Well fails when a hash of its index and the frame, divided by 2³², is below P. Every pulser cell on the field is then given to its nearest Proto Well, by squared wrap-around distance in rows and columns, and every cell whose nearest well failed is cleared: lit 0, pulser 0, exposure 0 (app.js:1364–1368). The cleared cells are counted in ledger.failedReturn. At level ≥ 2, P = 1/16.
The distance is measured in row and column indices. On the equal-area map (Part 2.9) equal steps in rows are equal areas, so this is a fair area distance along the tube; around the ring a column is a fixed angle, so across rows of different radius it is not a true length.
In the game
A fold is visible the moment it happens. In the 2D view every cell that folded on the last flip is drawn white for that one frame (app.js:4037), so a painted block shows a white interior on its first flip and then a dark hole inside a pulsing rim. The readout's Void line counts what has gone in: "N in · M out," N the folds plus the cells collapsed into wells (app.js:2149), with the tooltip "The void's ledger: cells folded or collapsed into it, strings drawn out of it" (index.php:87).
A fold of 16 cells or more, after the Data Nova, joins the well census. It is added to the Wells line (labeled "Proto Wells" before the Physical Nova, app.js:2140), drawn as a well on the torus, sends rings like any well, and its life is recorded as born "where a fold collapsed" (app.js:1655–1656).
At the Physical Nova the failed Proto Wells go out at once: every cell nearest a failed well goes dark on the field, leaving dark patches across the data. The notice "N of M Proto Wells failed (one in 16: every dimension of theirs returned null) · K cells of their data went home to the Source" is written (app.js:1375) but silenced by QUIET. The failure stays on the record: each failed well's life ends "failed before the physical: its data returned to the Source" (app.js:1371), and the run record counts failed_proto_wells (app.js:2209).
The player shapes folds only through what is painted: a solid block folds its interior at once, a scattered pattern rarely.
The scale model
The fold threshold of 16 cells is drawn cells, so the true fold it stands for is 16·4^(L−Lm) true cells. A true fold smaller than that, but larger than a true cell, is never a well. Failure is exact in probability: each drawn Proto Well stands for its share of the true ones, and fails at the true P.
Where the game and the theory differ
- The comment on
registerFoldWells()(app.js:1646) says "a fold of nine cells or more"; the constant is 16. foldRegions()finds regions across the field's seams (its neighbor test wraps), but its centroid is a plain mean of row and column indices. A region that crosses the edge, say rows 254, 255, 0 and 1 on a 256-row field, gets a centroid near row 127, on the far side of the torus. Theneartest (app.js:1653–1654) also measures by straighthypotwithout wrap.- What a failed Proto Well clears is its whole Voronoi region, however far it reaches, not a basin of set size. When few Proto Wells exist, one failure can clear a large share of the field. BPT's law fails a collapse; the game applies it once, at the Physical Nova, to the Proto Wells standing then.
Fixed numbers
| Number | Where | What it is | Kind |
|---|---|---|---|
| 16 (FOLD_WELL_MIN) | app.js:3477 | the smallest fold that is a well | CAP |
| 6, /8 (near) | app.js:1649 | the least distance from a fold well to another well | CAP |
| 8-connected | engine.js:101 | a fold region's connectivity | METHOD |
| 2, 3, 4 (actualDimensions) | app.js:1329 | D by level | BPT (Part 3.9 Dimensional Failure Law; Part 4.8 primes) |
| 2^(−D) | app.js:1359 | P⦰ | BPT (Part 3.9) |
| 0x2545f491, 2654435761, 2246822507, 3266489909, 4294967296, 15, 13, 7, 1 | app.js:1360 | the failure hash and its frame and index offsets | METHOD (deterministic hash) |
| 0 (cleared cells) | app.js:1368 | lit, pulser and exposure of a failed region | BPT (Part 3.9: the data returns to the Source) |