PulseCore

Chapter 4 · Section 12

Falls, Mergers, New Wells and Planets

The BPT law

Three laws of the book meet in this code.

  • The horizon. BPT Part 2.4 (Event Horizons and Null Wells) reads the horizon at "event horizon scale r_s = 2GM/c²" as a computational boundary, where a well's Pulse activity falls to null; what crosses it is in.
  • The birth of a well. BPT Part 6.3 (Null Wells and the Birth of New Universes) states the Formation Condition (G), ℜ⌂(x, τ) ≥ ℜρ⨶ = k × ρ_P × 𝒞→²: where the local recursive tension density reaches its critical threshold, a region makes the transition to the null state and a Null Well forms. The code reads it as the hoop test, 2Gm/c² ≥ size (matter.js:30–33). BPT Part 3.14 (Proto Wells: Where Wells Will Form) adds which collapses actually happen: "No black hole has ever been seen to form except by collapse: a star's core falling in, with a supernova or without one, … or, in the first few hundred million years, a whole cloud of gas falling in at once", so that "a well is born at a site in one of two ways", by direct collapse early or from a dying star.
  • Spin from orbit. BPT Part 3.12 (Where Spin Comes From) gives "the book's own rule that spin is born of orbit": "a single pulse cannot carry spin, a merger of two wells gives a universe its spin, and the uneven pull of neighbours gives every clump of matter its own". So a merger's orbital angular momentum becomes the merged body's spin.

The planet test is the game's own: BPT does not define when a body counts as a planet. The book counts planets among what a universe runs, "stars, gas and planets" (BPT Part 3.15).

The established physics

  • Orbital pericenter from energy and angular momentum, r_p = L²/(GM(1 + e)), e = √(1 + 2EL²/(GM)²) (Kepler problem).
  • Capture when the relative speed is below the pair's escape speed.
  • Hill radius r_H = a(m/3M)^(1/3).
  • The largest spin an accreting hole reaches, a ≤ 0.998 (Thorne 1974).

The game's math

All in Matter.step(), after the kicks and frame dragging.

Falls (matter.js:428–443). For each well, the bodies near enough to reach its horizon this step (R blocks from the fastest closing speed) are tested. A body falls in if d < r_s, or if its pericenter is inside r_s, it is moving inward, and it reaches r_s within this step (d − r_s ≤ |v|·dt). The horizon is smaller than a cell, so a body would jump past it between steps; the orbit decides (ruling 2026-10-26: "wells should eat the stars, just not all of them"). Absorbed mass is added to the well in stepMatterPost() app.js:688.

Mergers (matter.js:454–474). Bodies are hashed by whole cell (⌊r⌋·65536 + ⌊c⌋). A second body in an occupied cell merges with the first if their relative speed squared is at most 2G(m₁ + m₂)/0.5, the escape speed at half a cell; otherwise it passes through. A merger keeps mass, momentum and center of mass; adds the pair's orbital angular momentum μ(dc·vr − dr·vc) to spin s; joins gas, metals, stars and pending star mass (Chapter 5). The first 64 mergers of a step are passed to the scene for its flashes. Merging within one cell only, because merging on touch at size √(m/π) chained the whole universe into one body in one flip (matter.js:449–452).

New wells (matter.js:478–482). A body becomes a well if 2Gm/c² ≥ √(m/π), its size packed one quantum to a cell. At the code's light speed no body passes it (below).

Planets (findPlanets() matter.js:488). A body of at least full cells (one cloud's mass, CL², Part 4.15) whose nearest well within three blocks is at least two cells away and binds it (E = v²/2 − GM/d < 0) counts a step toward being a planet; on its sixth bound step it is reported once with its orbit, mass, spin, Hill radius and speed. A well with two or more such planets is a system, reported once. These go into the collection (app.js:697–705).

Spin and frame dragging are documented in Chapter 3, Part 3.9, and the hoop test from the wells' side in Part 3.8. Their fixed numbers (0.998, 10⁻⁷, ±0.5) are tabled there.

In the game

  • Falls. A body that falls into a well vanishes from the sky, and its mass joins the well's; swallowed matter can make the well shine as it feeds (measureFeeding(), Chapter 5). The HUD's Void line adds "· N into wells" once anything has fallen in (app.js:2149, counted at app.js:689).
  • Mergers. Each merger flashes where it happened, a warm white point growing as it fades, larger for heavier pairs, for a short while (stepFlashes() scene3d.js:1049, FLASH_LIFE scene3d.js:18). A merged body's points re-scatter for its new mass, and its stars turn in the sense of the spin the merger gave it (Part 4.11).
  • Planets and systems. A planet is announced by a find card, "A planet" (●): "Matter bound to well W · orbit N cells, M cells of matter, spin s, Hill radius h cells" (finds.js:52–53, app.js:246–247). A system is "A system" (☉): "Well W holds N planets: a system" (finds.js:54–55). The first of each in a universe is announced, later ones go into the collection quietly, and a system of five planets or more is announced again (app.js:697–705). The collection panel counts "planets", "systems" and "wells born of matter" (app.js:273). In 3D a body bound as a planet carries a blue accretion disk instead of an orange one (Part 4.11).
  • New wells. A well born of a clump would be announced as "A well is born" (◉): "A clump fell inside its own Schwarzschild radius and became a well · M cells, spin s from its mergers" (finds.js:56–57). As the section below says, in 8.3 this card does not come.

No control changes any of these.

The scale model

A body is a sample of q cells, not a star; a "planet" is a bound body of one cloud's mass, so on the scale model it stands for a bound clump, not a planet of our sky. The hash assumes fewer than 65,536 columns, true for every field (at most 1,024).

Where the game and the theory differ

  • The hoop test cannot pass at the code's light speed. Solving 2Gm/c² ≥ √(m/π) for m: m ≥ (c²/(2G))²/π. Desktop at level 6 or deeper, G_F ≈ 4.3 × 10⁻⁷, c = 128: m ≥ (16,384/(8.6 × 10⁻⁷))²/π ≈ 1.2 × 10²⁰ cells, against about 77,300 cells of matter in the whole universe. Phone (G_F ≈ 6.8 × 10⁻⁶, c = 32): m ≥ about 1.8 × 10¹⁵ cells against about 4,900. The test was written when light was one cell a flip (matter.js:477), when it could pass. In 8.3 every well born of matter comes from a dying star or a direct collapse at a site (Chapter 5 and the sites in Chapter 3, Part 3.7), never from this test, and the births code in stepMatterPost() (app.js:690–696) is unreachable in practice. The outcome agrees with BPT Part 3.14, which allows only those two ways; the code that would make a third does not run.
  • Mergers only within a cell. Two bodies merge only when they share a cell and are bound, not when they touch at their size √(m/π): merging on touch chained the whole universe into one body in one flip (matter.js:449–452). It is a resolution choice, not the physics of colliding clumps.

Fixed numbers

Number Where What it is Kind
1 matter.js:433 Extra block in the fall search METHOD
65536 matter.js:456 Cell hash stride METHOD (fields are under 65,536 wide)
2, 0.5 matter.js:460 Capture below escape speed at half a cell PHYSICS (escape speed) with METHOD distance
64 matter.js:471 Mergers reported per step for flashes CAP (drawing)
2 matter.js:479 Schwarzschild radius in the hoop test PHYSICS (BPT Part 2.4)
π matter.js:479 Size √(m/π), one quantum a cell METHOD (packing choice)
64 full matter.js:89 Planet's least mass, overwritten by CL² CAP (definition floor on a count)
2 findPlanets() matter.js:495 Nearest well at least two cells away METHOD (inside the softening)
3 findPlanets() matter.js:494 Blocks searched for a planet's well METHOD
6 findPlanets() matter.js:501 Bound steps before a planet is reported METHOD (persistence test)
2 findPlanets() matter.js:506 Planets that make a system METHOD (definition, matter.js:29)
3 findPlanets() matter.js:503 Hill radius a(m/3M)^(1/3) PHYSICS (Hill sphere)
1 circular() matter.js:113 Unused helper (no caller in 8.3) METHOD (dead code)
5 stepMatterPost() app.js:703 A system of five or more planets is announced DISPLAY