PulseCore

Chapter 9 · Section 8

The Register of Caps

This register records the caps as version 8.3 held them; Part 9.6 says which version 8.4 has replaced.

Every cap the review of 30 October 2026 found in the game, 170 of them, chapter by chapter, with what each could come from instead. Each is described where it sits, in its chapter's "Fixed numbers" table; this register is the list the work goes down. A cap leaves this register only when the code no longer holds it, and the register says when.

The ones that most shape what is seen come first in the work (Part 9.6): the model level and the grid (Chapter 1), the body budget and the gravity mesh (Chapter 4), the ring list that drops its oldest well (Chapter 3), and the drawn Proto Wells (Chapter 3).

Chapter 1: The Universe from Its Level

Where Number What it limits Could come from
app.js:4244 6 desktop model level: field side, life length (2^Lm Tempos) and harmonics played (3·2^Lm) for every L > 6 the saturation law of Chapter 9 applied to the device's measured budget (frame time / heat), not a fixed level
app.js:4244 4 phone model level: same as above on a phone the same measured-budget saturation law; one rule for every device
app.js:4243 480 (px), user-agent test which device class gets which model level measured device capacity (frame time, heat gauge) instead of a screen-size class
app.js:5415 64 / 256 startup grid size by device class (viewSide(4) / viewSide(6) written as literals) U.viewSide(MODEL_LEVEL()) or the saturation law
app.js:2052, app.js:5569 1024 ceiling on the drawn field side (does not bind today; first at model level 9) the saturation law of the field size against the device budget
app.js:2052, app.js:5569 4 floor on the drawn field side (equals viewSide(0); never binds) viewSide(0) by law; can be removed
app.js:1167 6 reference level of the gas-cloud size (duplicates MODEL_LEVEL desktop as a literal) MODEL_LEVEL() desktop value or the true level's field
app.js:1607 1/4 (rows·cols/4) most drawn Proto Wells on a scale model, saturating as T·(1−e^(−N/T)) already saturation form; T could come from the Formation Condition's least well size instead of a quarter cell
index.php:145 202 slider maximum: no level deeper than ours can be chosen by hand the float range (ℏ′ overflows near L≈500) or no limit with log-space math
index.php:187 1, 1.1 baseline heritage f₀ input range a stated physical range for f₀ from BPT Part 2.8 / 6.8 (f₀ ≥ 1 if heritage never shrinks)
universe.js (every Math.pow); app.js level math ≈2^1024 (1.80e308) IEEE double range: ℏ′ Infinity near L≈500, pixelCount at L=510, s near 998, 2^L at 1024 log-space (log2) representation of per-level quantities

Chapter 2: The Pulsecore Field

Where Number What it limits Could come from
app.js:2052, 5569 1024 (and floor 4) the drawn field side, max(4, min(1024, viewSide(Lm))); never binds while Lm <= 6 viewSide(Lm) alone, or the Chapter 9 saturation law sizing the field to the device budget
app.js:4244 6 / 4 (MODEL_LEVEL) the deepest level drawn: the field side 42^Lm, the clock 2^Lm, the Pulsecore 164^Lm, the harmonics 3*2^Lm a measured per-device budget fed to the saturation law, so Lm = largest level whose field, clock and gas fit the budget
app.js:4243 480 px, 9999 the phone/desktop switch behind MODEL_LEVEL the device's measured step time (the speed readout already measures ms per flip)
app.js:507 8000 points drawn for the data within the Pulsecore (binds on desktop from Tempo 89; never on a phone) N = (n+1)^2 itself up to a measured draw budget, by the saturation law
pinpoint.js:47 1200 the PinpointGas default point limit (overridden by 8000) the same law as the 8000
pinpoint.js:127 16 points born from the skin before the rest are copies of existing points the count of painted pulsing cells (each painted Zinf point seeds one), or min(want, painted)
pinpoint.js:157 8 strikes a point makes in one flip; cuts 3.9 % of wall-launched tracks (cos theta < pi/16), mean strikes 2.8 instead of pi no cap: the strike count is reach/chord = pi/(2 cos theta), bounded only by a grazing-track floor tied to the cell size
app.js:554 w = 1 rows kept empty each side of the throat in the inside-out turn (two empty rows; one row each side overwritten) w = 0 with a mapping that is one-to-one (the theory's hole is closed, BPT Part 3.5)
app.js:5103 2, 5, /4 (searchRadius) the window that finds a harmonic nova's center and clusters centers a reach set by the field's own scale (light's reach, or the Pulse Front), not a fixed 5 cells
app.js:3477 16 (FOLD_WELL_MIN) the smallest fold that becomes a well (comment says nine) the Formation Condition from the fold's data, or 1 true cell scaled by 4^(L-Lm)
app.js:1649 6, /8 (near) the least distance between a fold well and any other well the wells' own horizons or basins (r_s = 2GM/c^2) rather than a fixed share of the field
flow.js:81 64 the frame-drag profile at the throat; binds from level 2 (16 of 256 rows held at 64 on desktop; true row max 1.74e4, exact throat 4.41e6) the exact ((R+r)/rho)^3, finite since rho >= HOLE > 0; or the saturation law
flow.js:81 1e-3 the floor on rho, the distance from the axis (does not bind on drawn fields) HOLE itself, which is the true minimum of rho
flow.js:121 0.5 (inner ring at most 1.5x the outer) the amplitude of the frame-dragging shear the Lense-Thirring ratio itself, or the saturation law

Chapter 3: Wells, Sites and Gravity Rings

Where Number What it limits Could come from
app.js:1607 rows·cols/4 (T: 1,024 phone, 16,384 desktop) drawn Proto Wells: protoDrawn() saturates at T the saturation law of Chapter 9, with the room set by what the device can step rather than a fixed share of cells
app.js:1601 400, rows·cols/64 wellCap(): old cap on drawn wells (dead code, never called) delete; protoDrawn() replaced it
app.js:1401 SITE_SEED_GAS = 0.1 direct-collapse seed mass, at most a tenth of the site's gas BPT says only "never more than the site's gas can give": the seed law alone, or the gas share a collapse can take from simulations cited in BPT Part 3.14
app.js:1407 SITE_R_MIN = 1 cell least site halo and core reach the grid's own resolution from the mesh block, or the halo radius from the site's mass
app.js:3477 FOLD_WELL_MIN = 16 cells least fold that becomes a well (doc comment at app.js:1646 says nine) the hoop test r_s ≥ √(m/π) used for matter (matter.js:479)
app.js:1649 max(6, min(rows,cols)/8) spacing of a fold well from other wells; limits fold-well count the horizon or softening reach of the nearby wells, (10GM)^(1/3)
app.js:1675, 1688 2 cells least merge distance the horizon 2GM/c² and the softening reach alone
app.js:1724 1 merger a step merges per step in mergeWells() merge every touching pair in a step, re-hashing after each
app.js:829 16 (cells) least body mass that turns the data the Kepler rate itself: any body whose turn moves a cell per step
app.js:829 24 (bodies) heaviest bodies that turn the data all bodies past a mass set by the saturation law
app.js:845 2 cells least data reach of a well the well's horizon or softening reach
gravity.js:33 reach = 24 cells every well's data swirl and fall reach (WellDynamics default, app.js:2041 passes none) the nearest-neighbor half distance already computed in stepWells, or the reach where the Kepler turn falls below one cell a life
gravity.js:46 min(rows,cols)/4 data reach ceiling the nearest-neighbor half distance (torus geometry gives at most 1/2)
app.js:1172 64 phone; 128 or 256 desktop by cores/memory gravity mesh blocks a side (meshB) the saturation law of Chapter 9 from the device's measured step time
app.js:565 maxRadius = max(rows,cols)/2 ring reach wrapped ring geometry; a ring's life (one Tempo per cell) up to the universe's age
app.js:565 maxRings = 10 newest rings of a well searched all rings within maxRadius, under the time budget
app.js:565 maxSources = max(4000, rows·cols/4) rings.sources: past it addSource() drops the OLDEST WELL or site from the game (rings.js:37) never drop sources; the ring search already limits itself through ringSources
app.js:565 ringSources = 32 (start) wells whose rings are searched start from the device's measured budget
rings.js:19 3, 400, 0.6, 6, 24, Infinity constructor defaults (overridden by ensureRings, not in effect) remove or match ensureRings
app.js:1922–1923 4 ms, 8 ms time budget of the ring search the saturation law of Chapter 9 with the frame budget
app.js:1923 8 least wells searched none needed beyond the budget

Chapter 4: Matter and Gravity

Where Number What it limits Could come from
app.js:1180 8000 bodies of matter on a phone (matterBudget) the saturation law of Chapter 9 from the device's measured step time, the same rule on every device
app.js:1182 16000 most bodies of matter on any device measured physics time per flip against a frame budget (perf.lastBusy), not a fixed top
app.js:1182 8000 (floor) fewest bodies on a non-phone the same measured-time rule; a floor only where the Zel'dovich start needs bodies per ripple
app.js:1182 2000·mem·min(1,cores/8)+2000 bodies by reported memory and cores measured step time, since deviceMemory is capped at 8 by browsers
app.js:1181 8, 16 memory (GB) and cores read for the budget none needed under a measured-time rule
app.js:1182 8 (cores) cores for a full share of the budget measured step time
app.js:1198 15000 floor on the scene's point budget the scene's own frame-time adaptation (scene3d already lowers it when frames slow)
app.js:1149 6000 MATTER_MAX, unused old body ceiling delete (dead code)
app.js:1172 64 gravity mesh side on a phone mesh side from the bodies' mean spacing or the ripple scale (RIPPLE_SMOOTH), within measured time
app.js:1172 128, 256 gravity mesh side on ordinary and strong desktops the same rule; one resolution per universe, not per device
app.js:1172 12 cores, 8 GB what makes a device strong for the mesh measured step time
app.js:1173 64 coarsest block side field size over the needed resolution
matter.js:471 64 mergers reported per step for flashes the scene's point or flash budget
matter.js:89 / app.js:1168 64 = CL² least mass of a planet (one cloud of matter) a physical definition (bound and below the hoop mass), or the level's Suns via realPerCell
gravity.js:33 24 rings a well turns and draws data in the well's own reach: its Hill or tidal radius against neighbors (already used past 24 wells), or where √(GM/k³) falls below one cell a life
app.js:829 24 heaviest clumps of matter that swirl data every clump above a mass whose Kepler turn moves a cell within a life
app.js:829 16 least mass of a clump that swirls data the same Kepler-turn condition
app.js:2993 6 (2^(Lm − 6)) reference level of the heat's speed correction the model level's own clock, as one shared constant with MODEL_LEVEL
app.js:1167 6 (min(L,6)) reference level of the full field for cloud size MODEL_LEVEL desktop value, one constant
app.js:4244 6, 4 model level on desktop and phone the saturation law of Chapter 9 from device capacity
app.js:4243 480 px screen side that makes a device a phone measured capacity, not screen size

Chapter 5: Stars

Where Number What it limits Could come from
app.js:663 64 flashes reported per step in a universe without stable matter the scene's flash budget
app.js:1251 40000 most stars drawn (STAR_DRAW) the device's measured point and physics budget, the saturation law of Chapter 9
stars.js:192 48 distinct IMF mass draws per body per sub-step (star lots) draws until the lot's mass resolution matches the IMF's bins (e.g. one draw per mb bin)
stars.js:233 24 planetary nebula flashes per step the scene's flash budget
stars.js:236 4 wells reported per dying lot (undercounts wellsStand when n > 4) one well per drawn star, or register one well with weight n·starMult
app.js:764 30000 body budget that makes a device strong for feedback (unreachable since budget ≤ 16,000) measured step time (perf), or delete
app.js:764 96, 24 supernova events handled per sub-step every event, grouped by cloud, within measured time
app.js:764 85 % busy share that halves feedback a continuous time budget
app.js:764 >> 1 halving of events when busy a continuous time budget
app.js:764 4 least supernova events handled none under a time budget
app.js:764 3, 2 cells feedback reach, strong and ordinary the remnant's physical radius (shell stall radius) in cells via the level's scale
app.js:764 0.75 feedback reach when busy physical radius, unchanged by device
app.js:775 1.5 v_esc largest push from feedback momentum and energy conservation alone in consistent units
app.js:775 0.05 c largest push from feedback the same

Chapter 6: Galaxies and the Cosmic Web

Where Number What it limits Could come from
app.js:2920 3 least reach of a galaxy (cells): the farthest a body can belong to a well the halo's own virial radius from its mass, or half the distance to the nearest well
app.js:2920 16 galaxy reach = 1/16 of the field's side, same at every level and mass the halo's virial radius r = (G·M/(100·H²))^(1/3), or the measured r_h of the previous reading
app.js:3020 0.75 least measured disk scale length (cells) the law R_d = λ·r_h/√2 with no floor; the resolution limit as a softening, one cell
app.js:3024 2 least arm number the Arm Number law itself (m_a below 2 reads as a lopsided m = 1 mode)
app.js:3024 8 greatest arm number the Arm Number law itself; flocculent disks raise many arms
app.js:3025 45 greatest pitch angle (degrees) the Michikoshi & Kokubo law with Γ limited only by its own range; BPT's observed top 40°
app.js:3026 14 brightest kinds of star kept to light a drawn galaxy all kinds whose light share exceeds what one drawn point can show (1/count of the light)
app.js:3035 0.6 top on galaxyOf's omega (dormant: replaced by diskTurnRate) remove; the Disk Turn Rate law
app.js:3035 0.05 least drawn disk scale length (cells) the law with no floor; the drawn-size enlargement already lifts it
app.js:2915 0.5 DRAW_MIN, least drawn galaxy radius (cells) a size from the device's pixel resolution at the current zoom
app.js:3035 2 least hideR (cells; unused by the scene) remove (dormant), or the drawn radius
app.js:3116 0.45 drawn galaxy radius at most 0.45 of the field's mean spacing between galaxies a share set by the saturation law of Chapter 9 from the galaxy count and screen resolution
app.js:3117 0.45 drawn galaxy radius at most 0.45 of its nearest-neighbor distance half the distance to the neighbor, where the next halo's pull takes over (as the wells' data reach does)
scene3d.js:631 0.15 greatest drawn turn of a galaxy a frame (radians); binds for t_f under about 900 flips at one flip a frame the law's rate shown through a frame-rate-aware time scale (slow the shown clock instead of the rate)
app.js:1407 1 SITE_R_MIN, least site radius (cells) the site's Data Matter halo radius read from the Proto Well's mass
scene3d.js:485, 571 30000 point budget if none set matterBudget() of the device
scene3d.js:2003 0.8 budget lowered by a fifth on slow frames a budget solved from the measured frame time per point
scene3d.js:2003 45 mean frame time (ms) that lowers the budget the target frame rate of the device
scene3d.js:2003 8000 budget never lowered from 8000 or less the measured frame time per point
scene3d.js:485 0.6 galaxies get 60% of the device's points shares by what each layer holds of the real light (galaxies hold nearly all stars)
scene3d.js:494 120 points an arm for a full spiral points needed to show an arm at the current zoom (arm length / point spacing)
scene3d.js:494 0.6 full spirals take at most 60% of the galaxies' points the saturation law of Chapter 9 across all galaxies
scene3d.js:494 40 points for a spiral past that share a share by its stars, as the others
scene3d.js:495 12 least points for any other galaxy the points needed to show a galaxy as more than a dot at its drawn size
scene3d.js:495 40 most floor points for any other galaxy the share by stars alone
scene3d.js:516 0.03 least drawn scale length in the scene (cells) the R_d passed from galaxyOf
scene3d.js:626 4 column stretch at most a quarter turn of the ring the true surface metric, with galaxies kept off the throat by their size
scene3d.js:571 0.08 streams get 8% of the points the share of the real inflow's matter against the galaxies'
scene3d.js:572 50 no streams under 50 points none; any budget draws streams
scene3d.js:574 42 points a galaxy's streams (3 × 14); sets how many galaxies get streams every galaxy with a neighbor, points by its inflow rate (accretion ∝ halo mass)
scene3d.js:574 16 least points a galaxy's streams the inflow rate share
scene3d.js:588 5 streams start at most 5 drawn radii out halfway to the neighbor, the filament's real length
scene3d.js:588 1.6 streams start at least 1.6 drawn radii out halfway to the neighbor
scene3d.js:605 0.05 greatest fall a frame (× R) the fall at the law's rate through a frame-aware clock
scene3d.js:606 0.1 greatest curl a frame (radians) the conserved-angular-momentum rate through a frame-aware clock
app.js:338 2 least cluster glow reach (cells) each cluster's own swirl reach (half the distance to its neighbor, as wells)
app.js:338 24 greatest cluster glow reach (cells) each cluster's own swirl reach
app.js:338 4 glow reach a quarter of the field each cluster's own swirl reach
app.js:339 16 least body mass to glow as a cluster clusters by density contrast against the mean (as the scene's 2.5× patches)
app.js:339 24 the 24 heaviest bodies glow every body above the cluster line, or the drawn galaxies' halos

Chapter 7: States, Strings, Language and Finds

Where Number What it limits Could come from
app.js:1753; states.js:118 48 (STATE_WINDOW) State window: longest detectable beat 16 flips; memory 48·n bytes per scan post Window from the device's measured scan budget (Ch 9), so larger devices see longer beats
states.js:151 512 Frame hashes kept; bounds how far back a revival can be seen Size to 2·(longest revival period)+1 from the same budget as the window
states.js:271-273 4, -4, 20 (dr²+dc² ≤ 20; 34 shifts) Lattice repeats longer than √20 cells are not tested in step 2 Shift radius from the device's scan budget, or from the field's own grain
states.js:396 8 How far a domain-wall cell looks for its two domains Tie to the lattice shift radius or the field's measured domain size
states.js:440 12 Longest shift checked before a region is called a quasicrystal; crystals repeating only beyond 12 cells are misnamed Search up to the region's own half-width (interior size)
states.js:468 64 (lumps) Soliton search skipped when 64 or more lumps exist Device scan budget (Ch 9), searching as many lumps as time allows
states.js:515,517 170 (and 170·2) Longest revival period; carried look-back From the hash buffer and window budget, or from the universe's own clock
states.js:207 24 (signature box) Regions wider than 24 cells collapse to a coarse species key (family, period, size octave) A canonical signature by hashing at any size, or a box from the device budget
app.js:1922-1923 4 ms, 8 ms Search-time band that sets how many wells' rings are searched The measured frame budget of Ch 9 (one budget for all searches)
app.js:565 32 (ringSources start) Starting count of wells searched Start from the device's measured capacity
language.js:95,97 64 (sampleRows) Rows read for words; counts are over at most 64 rows Rows read from the device budget, or all rows with the counts scaled
language.js:49,123,125 200000 (MAX_TYPES) Distinct words counted; new words beyond it vanish from counts, Zipf and codebook Memory budget measured on the device, or an approximate counter (count-min) with no fixed top
language.js:49,127 400000 (TEXT_CAP) Written text kept for the monkey shuffle Memory budget, or reservoir-sample the text so it stays representative of the whole writing
language.js:49,134 2^18 (DRIVE_CAP) Drive symbols read for predictability (a quarter of a level-8 field) Device budget, or entropy estimated incrementally over the whole field
language.js:32,106 128 (LISTEN_WINDOW) Control tests at most a 128×128 window of the starting field Window from the device's compute budget, or several windows
language.js:166 0..4 (grain 1 to 16) Grain of the scramble capped at 16 cells The field's own mean run rounded to a power of two, uncapped up to W/2
language.js:176-177 8·W (1024 pulses) Longest control run Run until writing pauses, with a budget from the device
language.js:40 16 (LISTEN_SCRAMBLES_MAX) Most scrambles made to find 4 like the universe Compute budget from the device; BPT Part 4.10 repeats 16
language.js:73 500 Ranks used in the Zipf fit All ranks with count ≥ 2 (BPT's own definition)
language.js:235 24 (dialect) Own words kept; also the largest cognate sample a child is read on All own words, or a sample size set by the cognate share's wanted precision

Chapter 8: Drawing the Universe

Where Number What it limits Could come from
scene3d.js:35 min(2, devicePixelRatio) drawn pixels per CSS pixel (render resolution) the measured frame time (Part 9.3): raise the ratio while frames stay under target
scene3d.js:1225 320 px floor, 800 px fallback the smallest view the lattice fit assumes the canvas's measured size alone
scene3d.js:166 1024 x 512 the lattice mask's resolution (lines resolvable on the skin's alpha mask) sized from latDraw (a few mask pixels per line) or from the field's own cols x rows
scene3d.js:1111 NU = 24, RINGS = 6 (12 rings) the lattice lines actually drawn from the Data Nova on, at every level; replaces the level's latDraw lattice latDraw from setLatticeLevel (4*2^L lines, fitted to the screen), with latFine for the rest
scene3d.js:1151 NU = 24, NR = 12 the scaffold that seeds the Data Nova's data (app.js:1111) and the first matter (app.js:1219) the level's lattice, 4*2^L lines a side, sampled at the field's resolution
scene3d.js:1255 min(n - 4, 12) outward step of the harmonic rings; harmonics past the 16th stack on one radius a step that keeps shrinking, e.g. 0.05*ln(1 + n - 4), so every harmonic has its own radius
scene3d.js:1257 24 harmonic rings kept on screen all of the universe's layers (uni.layers), thinned by the Saturation Law against a screen ceiling
scene3d.js:1305 900 residue points in the hole at the Data Nova the Saturation Law on the pinpoint's data count against the point budget
scene3d.js:1270 600 fountain points through the hole the Saturation Law on the flow's data count against the point budget
scene3d.js:295 14,000 points of the Data Nova's eruption the Saturation Law on the skin's data (16*4^L) against the point budget
scene3d.js:295 NU = 24, NR = 12 lines and rings the eruption lands on the level's lattice (latDraw)
scene3d.js:374 16,000 points lifted off the core's skin at the big bang the Saturation Law on the core's data against the point budget
scene3d.js:1600 RIPPLE_MAX = 10 gravitational-wave ripple trains drawn at once the Saturation Law on mergers in flight against a measured draw ceiling
scene3d.js:485,571,703 30,000 STAR_MAX before a point budget is set the measured device ceiling (Part 9.3)
scene3d.js:703 STAR_BODY = 4,000 points per body the body's own share of STAR_MAX (m/q) with no per-body top
scene3d.js:707 q >= 0.05 least matter per point (at most 20 points per unit of mass) the Saturation Law on the real star count against STAR_MAX
scene3d.js:849,868 1024x512, x2, x4 grids (about 1.0e7 skin stars at most) stars the starlight skin can show grids sized from the screen's pixels at the current zoom, the count from the Saturation Law on the real stars
scene3d.js:815,1051 600 flashes pushed per step and the flash buffer the Saturation Law on the step's mergers and deaths
scene3d.js:816 128 flashes kept the Saturation Law on flashes alive (each lives 8-16 flips)
scene3d.js:990 MAX = 160 bodies drawn with an accretion disk the Saturation Law on bodies above matter.full against a measured draw ceiling
scene3d.js:1777 120 crystals drawn in 3D the Saturation Law on live crystals
scene3d.js:1788 40 strings drawn in 3D the Saturation Law on live strings
app.js:338 reach = max(2, min(24, min(rows, cols)/4)) cells round a cluster whose data glows the swirl's own reach from gravity.js, with no fixed top
app.js:339 m >= 16, top 24 bodies which bodies get a glow on the 2D skin every body above matter.full, thinned by the Saturation Law
app.js:1179 8,000 (phone) bodies simulated on a phone, and the point budget below 15,000 a measured body ceiling (Part 9.3: V = n*tau/t)
app.js:1180-1181 clamp(2000memmin(1,cores/8)+2000, 8000, 16000); mem<=8, cores<=16 bodies simulated on a desktop a measured body ceiling (Part 9.3)
app.js:1198 15,000 floor of scene.pointBudget = max(matterBudget, 15000) the measured draw ceiling for points
scene3d.js:2003 8,000 threshold (true floor 0.8 of the last value above it: 6,554 or 7,680) how low the point budget may be lowered the measured draw ceiling, smoothed (Part 9.3)
scene3d.js:2003 x0.8 one way (never raised) the point budget once lowered by slow frames a two-way smoothed estimate of V that also rises when frames are fast