PulseCore

Chapter 1 · Section 11

Choosing a Level: the Panel, the Readouts and the Defaults

The BPT law

BPT does not state a panel; this Part is the game's way of setting the numbers BPT treats as given. Three BPT statements fix what the panel may offer. Level 0 is the Zinf universe, "the minimum viable universe" (Part 3.14, the ladder of wells; Part 1.6), whose clock is ℨ and which "has no lineage, so H = 1 there" (Part 2.8). Level 202 is ours, read from our age by the Rupture Rule (Part D.3). And the level and the generation are separate (Part 3.14): "Its generation, how many bifurcations stand between it and the Zinf, is another number, and nothing we measure gives it." The game therefore counts generations from where the player starts. A universe chosen on the panel is generation 0 of its lineage, its level its own, and its heritage the one-generation-a-level reading H = f₀^L·⟪C⟫ that BPT Part 2.8 gives as the book's own value for ours.

The established physics

None: a game method (user interface).

The game's math

The slider in index.php (line 145) is <input type="range" id="uLevel" min="0" max="202" step="1" value="28">. Moving it (bindUniversePanel() app.js:5512) clears childDepth, childH, childGeneration and childLegacyL, so a level chosen by hand is a genesis: generation 0, with depth = level and step count = level. The startup default is set again in code to 28 (app.js:5417, Josh 2026-10-28: "lets do 28", the band where most wells' children keep their stars). The comment keeps the history: 36 in 8.2, then 21, then 25. genesisFromPanel() falls back to 28 if the slider is missing or unreadable (app.js:2008). randomizeGenesis() falls back to 6 (app.js:5782), though this is harmless while the slider exists, and returns without changes at level 0.

The heritage input uF0 (index.php line 187) runs from 1 to 1.1 in steps of 0.00001, with a default of 1.01837, the book's value. genesisFromPanel() falls back to U.OURS.f0 (the re-derived 1.0183535) when the input is empty (app.js:2009).

lockGenesis() app.js:2153 disables the slider and the genesis inputs while a universe runs. recomputeUniverse() runs only while stopped (onChange, app.js:5511).

renderUniverseReadout() app.js:2067 prints the genesis card. It shows the level, generation and minimum generation (Part 1.13), a_f, ⟪C⟫, f, s, ℨ, Tempo, Pulse Diameter, frame rate, bits per pulse, c′, ℏ′, G′, energy per transition, the true layers and rupture, "Drawn at", the matter law, the stars law, the children at rupture and the view. A second card, "Our universe", prints ourUniverse() (Part 1.2).

updateLayerHud() app.js:2113 shows "n of uni.layers", the model's harmonic count. The level badge reads "Level 0 · Zinf", or "Level x · gen g" (app.js:2038).

In the game

The player chooses a universe in the Universe & Genesis section, under the line "Set the origin before Start. These lock at genesis, as a universe's do." (index.php:139). The slider's number shows beside it ("28" at startup). Its help icon reads "Level 0 is the Zinf universe; our universe is level 202." Every move of a control while stopped redraws the readout card beneath, so the player sees the universe's constants before choosing to run it. Start locks the slider, the channel, the spins, the mass ratio, the angles, the null mass and f₀ (lockGenesis()), as the theory fixes a genesis at birth.

At level 0 the panel turns into the Zinf: the spin rows vanish (Part 1.5), the badge reads "Level 0 · Zinf", the field is 4 × 4, and the checkbox "Zinf chain: at level 0 the one pixel lives again after each return to the Source" (index.php:192) lets the one pixel beat on, each beat saved as the child of the last (zinfBeat()).

The two Randomize buttons, in the dock and in the panel, call randomizeAll() app.js:5803 ("A new genesis at this level: collision channel, mass ratio, axis and null mass drawn at random, the poles at centre. Level, speed and view stay yours.", index.php:99). It picks a collision channel at random, then a mass ratio from 0 to 1, an axis from 0° to 360°, tilt 0, and one of the two null-mass classes. The end card's "again" action uses randomizeGenesis() instead, which draws the spins from 0 to 0.998, q from 0.2 to 1 and θ from 0° to 90° directly.

The scale model

The slider chooses the true level. The model level follows by scaleModel() (Part 1.10).

Where the game and the theory differ

  • BPT puts no top on the level; the ladder "extends indefinitely" (Part 3.9, Vertical Recursion). The slider stops at our level, 202. Deeper universes can still be reached as children through Level from Share (Part 1.13).
  • The level's help text in index.php (line 143) still says "Level 25 is the default". The slider and the code both say 28.
  • A fresh panel starts from f₀ = 1.01837, the book's printed value, not the re-derived 1.0183535 that ourUniverse() uses. A panel genesis at level 202 therefore returns a Planck time slightly off ours, by 202 × ln(1.01837/1.0183535) ≈ 0.33%, the same gap the 2026-10-25 comment records.
  • randomizeGenesis() falls back to level 6, while genesisFromPanel() falls back to 28.

Fixed numbers

Number Where What it is Kind
0 index.php:145 slider minimum, the Zinf BPT (Part 1.6)
202 index.php:145 slider maximum, our level CAP (UI: no level past ours can be chosen by hand; children may still be deeper)
1 index.php:145 slider step: whole levels METHOD (the physics runs on whole levels)
28 index.php:144–145; app.js:2008, :5417 default level METHOD (Josh's ruling 2026-10-28: the Goldilocks band)
6 app.js:5782 fallback level in randomizeGenesis() METHOD (stale fallback; disagrees with 28)
1, 1.1 index.php:187 f₀ input range CAP (UI)
0.00001 index.php:187 f₀ step DISPLAY
1.01837 index.php:187 f₀ default (the book's) BPT (Part 2.8)
0.998, 0.998, 1, 10, 0, 0 app.js:2010–2016 fallbacks for a1, a2, q, θ, axis, tilt BPT (Part 6.9, our origin) for a1, a2, q, θ; METHOD for axis and tilt 0
30 app.js:5419 startup axis on screen, 30° DISPLAY