Chapter 10 · Section 7
Harmonic 2, the Data Nova: The Data Erupts
- When the data alone outgrows the Bifold, N ≥ χ∂, at Tempo ⌈√χ∂ − 1⌉, the Data Nova fires (Part 2.6).
- The universe gets its matter law from its depth: its strong force, the mass of its stars and whether it can hold stable matter (Part 5.2).
- The Pulsecore turns inside out. Its skin is turned onto the torus (
insideOutTurn()): each row moves outward from the throat, the inner equator, so the data reaches the throat's own row. - Everything else the core held erupts onto the scaffold at once (
eruptOntoScaffold()): the (n + 1)² − χ∂ bits beyond the skin go into the empty places, chosen partly by the scaffold's weight and partly evenly, by a hash of place and frame, so a replay lands them the same. - The core is empty now, the pin head at the centre.
- The epoch becomes "universe" and the universe's own clock starts at this frame (
birthFrame). Its scale is 1. - The first wells form from the data and nothing else: the densest places of the turned data become Proto Wells. Each takes its share of the overflow as its mass, and the cells of data nearest its centre, ring by ring, collapse into it (Null Well Collapse, Part 3.4). On a scale model the drawn wells stand for the true level's 2^(L/3).
- The Proto Wells ride the data's flow; they are wells of data, massless, until the physical layer (Part 3.5).
- The banner reads "Data Nova · the data erupts".
The method, in plain steps:
when N ≥ χ∂ (the Data Nova):
turn the skin inside out onto the torus
pour the remaining (n + 1)² − χ∂ bits onto empty places of the scaffold
epoch ← "universe"; the universe's clock starts now
at the densest places of the data: Proto Wells, mass = their share of the overflow
each Proto Well takes the cells of data nearest it, ring by ring
The code:
// public/game-v8.4/app.js:5136 triggerInfoNova(), the Data Nova
if (dataNova) {
pinSkin = null; innerData = 0;
if (uni) { uni.matterLaw = matterLaw(Number.isFinite(uni.depth) ? uni.depth : uni.L); … }
const turned = insideOutTurn(finalGridData), turnedP = insideOutTurn(pulserGrid);
…
{ const nN = Math.max(0, Math.floor((finalFrame - 1) / 2)); eruptOntoScaffold(Math.max(0, dataWithin(nN) - skinCapacity(uni.Lm)), finalFrame, finalColors); }
…
birthFrame = finalFrame; scale = 1;
setEpoch('universe');
}
if (dataNova) {
const scaled = uni.Lm < uni.L, peaks = scaled ? densePlaces(protoDrawn(uni.progeny)) : densestPeaks();
…
const nN = …, over = Math.max(peaks.length, dataWithin(nN) - skinCapacity(uni.Lm));
…
wellMasses = peaks.map(p => Math.max(1, Math.round(over * p.mass / Math.max(1, sumP))));
}