ρ = 1.324717957 · the plastic number · smallest Pisot–Vijayaraghavan number

The cone of possibility already had a spiral in it. Padovan tells you the angle.

The hourglass in folk-cone-3d.ts opens forward from now and places each event at a hash of its id, modulo 360°. That azimuth is noise — it clumps, it leaves holes, and it means nothing. The Padovan recurrence supplies the angle that should be there: 139.6719° per tick, falling straight out of the same algebra that makes the cone open at all.

possibility
memory
drag to orbit · the waist is now

Min gap is the tightest angular collision between any two events. Under a hash it collapses to zero as soon as you have a few dozen events — two events sit exactly on top of each other while a 30° wedge of the cone stays empty. Under ρ the cone stays legible.

correction — and the more interesting result
ρ is the angle the substrate turns. It is not the angle you should seat by.

An earlier version of this page claimed ρ's angle holds a bounded gap "at every count, forever". That is false. Push the slider past 183 and watch the min gap collapse to 0.04°: 183 × 139.6719° lands a hair short of a whole turn, so event 184 seats on top of event 1. The culprit is ρ's continued fraction, [0; 2,1,1,2,1,2…] — those 2s make it too easy to approximate with a fraction. The golden angle's is all 1s, the most irrational number there is, and the three-gap theorem bounds its worst gap at φ² ≈ 2.618 for every count, forever. Phyllotaxis converges on it for precisely this reason. So the renderers seat by the golden angle and let ρ govern the cone's geometry — how fast it opens — which is where ρ is genuinely derived rather than merely chosen. Two angles, two jobs. The field guide covers the rest — radiant.jeffemmett.com →

why it is a cone at all

One real axis that expands, one complex plane that rotates and shrinks

Padovan is P(n) = P(n−2) + P(n−3) — the same shape as Fibonacci but reaching back three steps instead of two. That one extra step is the whole story. Its characteristic polynomial is x³ = x + 1, a cubic, and a real cubic must split into one real root and one complex conjugate pair. Those three roots are the three eigenvalues of the tick operator:

ρ = 1.324717957 real, > 1 → expands — this is the time axis, the cone's spine
c = −0.662359 ± 0.562280 i complex, |c| < 1 → contracts + rotates — this is the space plane

|c| = ρ−1/2 = 0.868837 arg(c) = 139.6719° |c|² · ρ = 1.000000 (det = 1 — volume preserved)

So the Padovan tick operator is a cone, structurally: a single expanding direction with a two-dimensional plane spiralling around it. You did not have to impose the cone geometry — it is the eigenstructure. And the contraction on the space plane is exactly the square root of the reciprocal of the expansion on the time axis, so the swept volume is exactly conserved.

the load-bearing consequence
Fibonacci cannot make a spiral. Padovan is the smallest integer recurrence that can.

φ's conjugate is real (−1/φ = −0.618). A real subdominant eigenvalue flips sign; it does not rotate. A Fibonacci cone has no azimuth to give you — which is precisely why the current code had to fall back to a hash. You need a complex subdominant root to get an angle, you need degree ≥ 3 to get one over the integers, and among all such systems ρ is the smallest. Time spirals if and only if the subdominant eigenvalue of your causal delay operator is complex.

the cone constant · pick your latency, get your geometry

ρ is not a mystical choice. It is what a {2,3} delay substrate is.

Let S be the set of causal latencies your substrate permits — how many ticks may elapse between an event and a legal response to it. The number of distinct causal histories of length n is then the number of ways to compose n out of parts drawn from S, and that count obeys a(n) = Σ a(n−s). Its growth rate is the dominant root; the cone opens at that rate. This is verified exactly, not by analogy:

# causal histories of length n under S = {2, 3} == Padovan(n − 2) — exact, n = 2…19
cone growth = ρ = 1.3247 · channel capacity = log₂ ρ = 0.4057 bits / tick

A refractory floor of 2 ticks (receive, then process — you cannot legally answer instantly) and a staleness ceiling of 3 ticks (answer by then or the frontier moves on without you) is not an arbitrary pair. It is the shape your HLC + peer-frontier event-time model already has. Choose those two numbers and the plastic number is handed to you. Change them and the whole geometry moves — pick a set and watch:

latency set Scone constant λcapacityspiral?known as

This is a real, tunable axis — janus:axis:cone currently featurises a cone's centroid. It has no slot for the cone's own opening rate. That rate is a property of the space's temporal morphology, and it is one number.

the identity

The integer tick sequence is the cone radius plus the spiral

Perrin runs the same recurrence from different seeds (3, 0, 2). Because ρ is a Pisot number, its powers chase the integers — and the gap between ρⁿ and the integer is exactly the spiral term. Not approximately. To floating-point precision:

Perrin(n) = ρⁿ + 2 · ρ−n/2 · cos(n · 139.6719°)
└ integer tick ┘ └ cone radius ┘ └──── the spiral correction ────┘
nPerrin (integer)ρⁿ — cone radiusspiral termreconstructederror
what this buys you
The continuous cone and the discrete tick lattice differ by precisely the rotation.

A substrate needs to be aperiodic — no resonance, no aliasing, no two events landing on the same seat — and simultaneously quantised, because holons and ticks are discrete and must be checkpointable. Those pull in opposite directions. A Pisot number is the resolution: irrational enough never to repeat, yet its powers keep snapping back onto the integer lattice. ρ is the smallest number with that property (Siegel, 1944), which makes it the least-growth, least-action option in the entire family.

rTime already made this choice once

Fibonacci buckets coarsen too fast to be a calendar

modules/rtime/lib/chunk.ts ships DEFAULT_CHUNKS = [1,2,3,5,8,13,21]. Fibonacci is right for estimation — the whole point of story points is that the gaps are coarse enough to stop people bikeshedding 5 vs. 6. But it is wrong for a horizon, because each bucket is 1.618× the last: by the time you are ten years out, one bucket swallows 4.4 years. Padovan steps by 1.3247×, and van der Laan's claim was that this ratio sits right at the threshold where a human can still perceive two sizes as different — consecutive buckets are distinguishable, but only just. It is the gentlest self-similar coarsening there is.

you are looking…Fibonacci bucketPadovan bucketverdict
a month out13 d9 d1.44× finer
a year out144 d114 d1.26× finer
ten years out1597 d1081 d1.48× finer — both swallow years
cells to reach a decade1623the real win: 50% more usable steps
correction — I had this table wrong
The Padovan win is real but modest: ~1.3–2×, not 3.4×.

An earlier version of this page put the Padovan cell at ten years at 465 days against Fibonacci's 1597, and called Fibonacci "unusable". That was wrong — an artifact of a ladder that never actually reached ten years and silently reused its last cell. The real figure is 1081 days. Both ladders swallow years that far out: Padovan swallows 3.0 of them, Fibonacci 4.4.

The argument that does survive is the last row. Reaching a decade takes 23 Padovan cells against 16 Fibonacci — 50% more usable gradations across the same span. And ρ is provably the floor: the smallest growth rate any self-similar integer recurrence can have. You cannot coarsen more gently than this and stay self-similar. That case never needed the inflated number.

Fibonacci ladder — 1,2,3,5,8,13,21,34,55,89,144,233,377,610 · ×1.618
Padovan ladder — 2,3,4,5,7,9,12,16,21,28,37,49,65,86,114,151 · ×1.3247

This is the same argument as LOD. A semantic-zoom ladder that steps by 2× throws away detail in jumps the eye registers as a jolt; a ladder that steps by ρ is the finest self-similar gradation that still is a gradation. And because ρ is Pisot, the scale factors sit near integers — so tile sizes snap to the pixel grid instead of drifting off it.

where it lands in the stack

Six places this is a one-number change

sitetodaywith ρ
folk-cone-3d.ts:311
folk-hourglass-3d.ts:355
azimuth = hash(id) % 360 — clumps, holes, meaningless azimuth = n × 139.6719° where n is causal order. Low-discrepancy, deterministic, and the angle now encodes position in the causal sequence.
shared/rcal/cone.ts
coneAt()
growthFn: 'linear' | 'sqrt' | 'log' — three hand-picked curves add 'plastic': σ grows as ρ^(dt/scale). Derived from the substrate's latency set rather than chosen by taste.
janus/axes/cone-axis.ts 5-d: lat, lng, doy-cos, doy-sin, confidence +1 dim: the cone constant λ. Two planners with the same centroid but different opening rates are genuinely different intents, and today they featurise identically.
rtime/lib/chunk.ts Fibonacci chunks (correct for estimation) keep for chunks; use Padovan for the horizon ladder. Different jobs, different ratios.
janus/temporal-lod.ts 4 bands: far / mid / near / full bands at ρⁿ instead of 2ⁿ — finest gradation that remains perceptible; near-integer scales snap to grid.
stigmergic routing · pheromone decay tunable decay constant 1/ρ = 0.7549 per tick is the decay dual to the cone's growth — the trail forgets exactly as fast as the cone opens.

The first row is the one to do. It is a pure win, it touches two lines, and it needs no new concept — the events already have a causal order, and the renderer is already throwing it away.