PulseCore

Chapter 1 · Section 5

Spin and Compression at Genesis

The BPT law

BPT Part 6.9 (Spin Inheritance and the Progenitor Axis) closes the placeholders of Part 6.8. The Inherited Spin Parameter is

a_f = | ℓ̃·η·n̂_L + a₁(M₁/M_f)²·n̂₁ + a₂(M₂/M_f)²·n̂₂ |,   η = M₁M₂/M_f²,  M_f = M₁ + M₂

"capped at the Kerr bound". The orbital coefficient is fixed by general relativity: "For an equal-mass non-spinning merger η = ¼ and a₁ = a₂ = 0, and general relativity gives a remnant spin of 0.686, so ℓ̃ = 0.686/0.25 = 2.744." "Most of what our Universe inherited came from the orbit, not from the progenitors' own rotation." Spin Injection and Alignment in Closed Form gives s↻ × h⇉ = 1 − κ·a_f², and so the Origin Compression Factor is C(⇌) = g⚛(M₁ + M₂) × (1 − κ·a_f²), "taking g⚛ ≈ 1". The Compression Constant of Part 6.8 runs the compressions down a lineage, f^n = f₀^n × ∏Cᵢ. Part 6.8's Null Well Collision Channel Classification lists the channels, and Part 6.9 calibrates each with a predicted spin: direct gas-cloud collapse 0.00, NS–NS 0.686, NS–BH 0.867, Kerr–Schwarzschild 0.911, Kerr–Kerr and Extreme Kerr–Kerr 0.998. BPT Part 3.10 adds Spinless Early Lineage: "Spin is born of orbit, so no universe below level 3 carries spin: a_f = 0, ⟪C⟫ = 1, f = f₀. The first spin a lineage acquires is the orbital value a_f ≈ 0.686."

The established physics

  • The orbital-angular-momentum term ℓ̃·η is the standard form for a binary black-hole remnant's spin. BPT takes 0.686 for an equal-mass, non-spinning merger, the value numerical relativity gives.
  • The Kerr bound of 0.998 is Thorne 1974. Kerr 1963 (in BPT sources.md) gives the spinning-hole metric.

The game's math

inheritedSpin({a1, a2, q, thetaDeg}) universe.js:106 sets M₁ = 1 and M₂ = max(0, q). It puts the orbital axis along z and the two spins at ±θ/2 in one plane:

z = ℓ̃·η + (s₁ + s₂)·cos(θ/2),  x = (s₁ − s₂)·sin(θ/2),  sᵢ = aᵢ(Mᵢ/M_f)²
a_f = min(0.998, √(x² + z²))

At q = 0 there is no orbital term (η = 0) and M_f = 1, so a lone collapse keeps a₁. Then compressionFactor() universe.js:133 gives C = 1 − κ·a_f², and describeUniverse() sets a_f = 0 when L < FIRST_FORK_LEVEL = 3 (universe.js:283). recomputeUniverse() also zeroes a1, a2, θ and the anisotropy below level 3, and q at level 0 (app.js:2031). It hides the spin rows below level 3 (app.js:2037). A generation-1 child at level 30 can carry spin only through its parent's merger signature, and that is how the game passes it (Part 1.12).

The panel's CHANNELS universe.js:199 set a1, a2, q and θ through applyChannel(). Their range and a_f fields are the book's reference values and are not read by the game.

spinAlignmentFactor() :121, massCurvatureTerm() :130 (returns 1), compressionFloor() :138 and heritage() :143 are each one line of the law. compressionFloor() and heritage() are used only by the tests.

In the game

Spin is a thing the player sets and then watches. In the Universe & Genesis section (index.php:147–179) the "Collision channel" select ("Null Well Collision Channel Classification, chapter 6 Part 6.8") offers Kerr – Kerr (our origin), Extreme Kerr – Kerr, Kerr – Schwarzschild, Neutron star – black hole, Neutron star – neutron star, Direct gas-cloud collapse and Custom. Picking one moves the sliders "Spin a₁" and "Spin a₂" (0 to 0.998, "Thorne limit"), the "Mass ratio M₂/M₁" ("0 is a lone collapse with no orbital term; 1 is an equal merger") and "Spin misalignment θ_merge" ("low misalignment for our origin (≲ 15°)"). Two more sliders place the result: "Genesis axis on screen" and "Axis tilt". Below level 3 the whole block is hidden (app.js:2037), so a player at levels 0 to 2 sees no spin controls at all.

The result shows at once. The readout prints "Inherited spin a_f" and "Compression ⟪C⟫" with the tooltip "C(origin) = g_mass × (1 − κ a_f²), κ = 0.068" (app.js:2071–2072), and the HUD's "Spin:" line reads "0.998 · C 0.932" (app.js:2134). In the 3D view (setSpin() scene3d.js:236) a cyan arrow stands on the Pulsecore along the spin axis, longer the faster the spin (the core's radius + 0.15 + 1.4·a_f in scene units), with the axis line through the field and a spin ring on the core before the Data Nova. The Axis tilt tooltip invites the player to "grab the arrow on the Pulsecore and swing it like a pool cue: its direction is the axis, its length the spin" before Start. Once the Pulsecore runs, its skin, the Bifold, turns with the spin, and the first toast says so: "the Bifold turns at 0.94 of light speed with the spin, dragging the data with it" (pinpointMilestones() app.js:532; skinSpeed() pinpoint.js:44 gives a_f / (1 + √(1 − a_f²)), 0.94 at a_f = 0.998). The About panel's "Spin you can see" card (index.php:308) tells the rest: "Space is dragged around the void with a_f, the axis runs through the field, and in 3D the torus turns."

At a spinless genesis, the first merger of the run brings the theory's First Fork to the screen. The collection records it as a spin find and the toast reads "Spin is born" (app.js:1746, 246), and the end card's merger chip adds "· spin is born" (app.js:2800).

The scale model

Exact: no scale model.

Where the game and the theory differ

  • BPT gives Spinless Early Lineage as a statement about the first generations ("spin is born of orbit"), with level 3 as the First Fork of a lineage that steps one level a generation. The game gates it on the level: any universe below level 3 has no spin, and any universe at level 3 or above may have it, whatever its generation.
  • BPT Part 6.9's channel table lists NS–BH at 0.867 and Kerr–Schwarzschild at 0.911. inheritedSpin() from the same channel inputs gives 0.686 + 0.7/4 = 0.861 and 0.686 + 0.998/4 = 0.936. The other channels agree (0, 0.686, and 0.998 at the Kerr bound). The game uses the function, so a player choosing Kerr – Schwarzschild gets 0.936, not the book's 0.911.
  • BPT adds the vectors with θ⋎ between the spin axes and leaves their placement against the orbit open. The game splits θ symmetrically, ±θ/2 about the orbital axis, in one plane.

Fixed numbers

Number Where What it is Kind
1 universe.js:107 M₁ = 1, masses normalized to the first progenitor METHOD (normalization)
1/2 universe.js:110 the spins taken symmetrically, θ/2 each side, in one plane METHOD (a symmetric reading of θ_merge; BPT does not fix the split)
180 universe.js:110 degrees to radians PHYSICS (unit conversion)
0.998 universe.js:117 the Kerr cap PHYSICS (Thorne 1974)
1 universe.js:130 g_mass BPT (Part 6.8–6.9 calibration)
3 universe.js:54 First Fork level BPT (Part 3.10, Spinless Early Lineage)
0, 0.7, 0.998 (a1, a2) universe.js:200–205 channel progenitor spins BPT (Part 6.9 calibration spins); 0.998 PHYSICS (Thorne 1974)
0, 1 (q) universe.js:200–205 channel mass ratios BPT (Part 6.8)
0, 10 (θ) universe.js:200–205 channel misalignments; 10° for our origin BPT (Part 6.9, "≲ 15°")
0.98–1.00 … 0.90–0.93 universe.js:200–205 range book compression ranges (unused) BPT (Part 6.8)
0.000, 0.686, 0.867, 0.911, 0.998 universe.js:200–205 a_f book spins (unused; two disagree with the function) BPT (Part 6.9)