PulseCore

Chapter 3 · Section 5

Proto Wells and the Life Record: registerWells(), wellLives

The BPT law

BPT Part 3.14 (Proto Wells: Where Wells Will Form): a Proto Well is "formed in the data before the physical layer, it is the deepest place of the Data Matter, the seed of a halo (Part 3.13), and at the Physical Nova it becomes a site: where the gas will gather, where the first stars will light, and where a well will be born." BPT Part 3.13 places it in time: "the data is laid on the scaffold at the Data Nova, the Proto Wells form at its densest places, and only at the Physical Nova does matter condense and fall into a web already there." The harmonics come in order (Part 3.6): Harmonic 1 makes space, Harmonic 2 lays the data, Harmonic 3 makes the physical. The life record is part of BPT's own reading of the game (Part 3.14, The Game's Reading): "Each well's life, its kind, rank, peak mass, share and child's level, and the census, go on the universe's record." How it is kept is a game method (ruling 2026-10-25: "have something that tracks their entire lifetime").

The established physics

None: a game method.

The game's math

registerWells(centers, masses, frame, weight = wellWeight()) app.js:1509:

  • It always adds centers.length to wellsSeen and centers.length · weight to wellsStand, and records each birth time in wellFrames.
  • Before the Physical Nova (novaCount < PHYSICAL_LAYER = 3), each center becomes a Proto Well: {id: D<n>, r, c, mass, born, group: 'n<novaCount>', spin: uni.a_f}. It is pushed to dataWells and a life record is opened, with how = "at the Data Nova" (novaCount = 2) or "in a harmonic collapse". It returns no physical ids.
  • From the Physical Nova on, it calls addPhysicalWells() app.js:1528. Each center becomes a source in rings (Part 3.16), is scored against the sites (scoreBirth, Part 3.7), and gets a life record, or carries on its Proto record under its new W id.

A Proto Well spins with its universe's a_f from birth. It rides the data flow (the flow chapter).

addPhysicalWells() still holds the old paired-orbit code behind && false (app.js:1542). It never runs. stepOrbits() app.js:1729 runs only on orbits, which is now never filled, so it is dead too. Its constants (ORBIT_FRAMES = 24, ORBIT_TURNS = 1.5, 0.85, app.js:3477 and 1736) are listed below for completeness.

The life record. lifeBorn() app.js:893 opens {keys, born, harmonic, physicalAt, mergers, mergedInto, end, child, samples}. lifeSample() app.js:920 runs every 4 steps in the life (app.js:4551) and in the decay (app.js:2672). It appends [t, mass, r, c] for each living well and updates peak. When the samples pass LIFE_SAMPLES = 48, it thins them to the first, the odd-indexed and the last. lifeMerge() app.js:928 records each merger on both wells. lifeTitle() app.js:899 names a well: "Proto Well 3 → Well #7 · Ascendant", using the census rank (Part 3.14) when there is one. lifeLine() app.js:906 writes the whole life in one line.

In the game

A Proto Well is born at Harmonic 2 (or at a later harmonic before Harmonic 3, or at a fold) and is drawn as the magenta ring of Parts 3.2 and 3.3. It moves: every step the scene shifts each mark along its step's motion (placeProtos() scene3d.js:1650), so the Proto Wells drift with the data flow round the torus. The notice written for a birth, "Proto Well 3 · 412 cells of data, spinning with a_f 0.00 · it rides the data flow", or for many at once, "633 Proto Wells formed, spinning with a_f 0.00 · they ride the data flow" (app.js:1518–1520), is kept off screen while the game's notices are quiet (QUIET = true, app.js:231); the facts go on the record. The record is what the player reads. The Lineage panel lists "Wells · N lives" (wellsListHTML() app.js:3281), the first 60 by rank, each with its title in bold, "· Proto" if it began as one, and its life line, for example "born at the Data Nova at Harmonic 2, Tempo 37 · physical at Tempo 112 · merged with Well #9 at Tempo 480 · mass 6 → 1,204 · peak 1,310 (2.1% of the universe) · its child at level 21.8, no stars: a dead end" (lifeLine() app.js:906–915). In 3D, the drawer's "Well labels" switch names each drawn physical well on screen: "W7 · near side · u 132°, v 48° · (x, y, z)" (scene3d.js placeWellLabels).

The scale model

Each drawn Proto Well is one record, and stands for wellWeight() true wells in wellsStand. The record keeps drawn masses, in cells.

Fixed numbers

Number Where What it is Kind
3 PHYSICAL_LAYER universe.js:389 the Physical Nova is Harmonic 3 BPT (Data Harmonics: 1 space, 2 data, 3 physical; Part 3.6)
2 SPACE_LAYER universe.js:398 the Data Nova is Harmonic 2 BPT (Part 3.6)
8 app.js:1518, 1520 one toast a well up to 8, else one toast for all DISPLAY
48 LIFE_SAMPLES app.js:888 samples kept per life RECORD
4 app.js:4551, 2672 steps between life samples RECORD
60 wellsListHTML() app.js:3283 lives listed in the Lineage panel RECORD
24, 1.5, 0.85, 2 app.js:3477, 1736, 1545 the dead orbit code METHOD (dead code, never runs)