temporal
axons decay over time. without a forgetting mechanism, the cybergraph grows without bound. temporal decay applies to axon aggregate weights — individual cyberlinks are private and decay is expressed through their aggregate contribution to the public axon weight.
time is a native dimension of BBG_poly. historical queries are polynomial evaluations at (index, key, t_past) — one Lens opening, O(1) verification.
exponential weight decay
w_eff(axon, t) = A_{pq} × α^(t - t_last)
where:
- A_{pq} is the axon's current aggregate weight (sum of all contributing cyberlink weights)
- α ∈ (0, 1) is the global decay constant
- t_last is the timestamp of the most recent cyberlink contributing to this axon
properties:
- each axon decays independently (bounded locality)
- decayed weight returns to the global focus pool (conservation)
- axon with w_eff < ε is eligible for pruning
- new cyberlinks to the same (from, to) pair refresh the axon weight
provable: α^n approximated via Taylor series in F_p — 4 terms gives ~10⁻⁶ precision, ~20 field operations = ~20 constraints.
conservation invariant: Σ focus_i + Σ active_axon_weights + decay_pool = 1. the decay pool is a single F_p value in the balance evaluation, updated each block as axons age.
time as polynomial dimension
the former time.root NMT with 7 namespaces (steps, seconds, hours, days, weeks, moons, years) is replaced by the time dimension of BBG_poly:
BBG_poly(index, key, t) — t is a native variable
historical query:
"what was π of particle P at block 1000?"
→ Lens.open(BBG_root, (particles, P, 1000))
→ one evaluation proof, ~5 μs verification
range query:
"all focus changes for neuron N between t₁ and t₂"
→ evaluate BBG_poly(neurons, N, t₁) and BBG_poly(neurons, N, t₂)
→ two Lens openings, prove the difference
any time, any index, any key — one polynomial opening.
the 7 temporal granularities (steps, seconds, hours, days, weeks, moons, years) are encoded as evaluation regions within the time dimension. epoch snapshots at each granularity are evaluation points of BBG_poly at the corresponding time boundaries.
cost comparison:
NMT time.root (previous):
"state at time t" = walk NMT for namespace + open BBG_root snapshot
~96 hemera permutations = ~70K constraints per historical query
polynomial time dimension:
"state at time t" = Lens.open(BBG_root, (index, key, t))
O(1) field operations per historical query
pruning protocol
condition: w_eff(axon, current_block) < ε
1. prove w_eff < ε (~20 constraints for decay calculation)
2. update BBG_poly(particles, axon, t): remove axon-particle
3. update BBG_poly(axons_out, source, t): remove entry
4. update BBG_poly(axons_in, target, t): remove entry
5. return decayed weight to decay pool
6. cross-index consistency: structural (same polynomial, no separate proof)
cost: O(1) polynomial updates per dimension + batch Lens recommit. pruners earn a fraction of recycled focus.
when an axon is pruned, the source and target particles lose the axon's energy contribution. if a particle's total energy reaches zero (no remaining axons reference it), the particle is eligible for content reclamation at L3 (see storage). historical state is preserved in the polynomial — past evaluations at (index, key, t_before_pruning) still return the axon data.
renewal
new cyberlinks to the same (from, to) pair refresh the axon:
neuron creates cyberlink c = (ν, p, q, τ, a, v, t_now):
1. private record: extend commitment polynomial A(x) (O(1))
2. BBG_poly(particles, H(p,q), t_now): weight updated, A_{pq} += a
3. t_last updated to t_now
4. w_eff resets: new weight × α^0 = new weight
5. cross-index: structural (same polynomial update covers all dimensions)
renewal is implicit — any cyberlink targeting the same (from, to) pair extends the axon's life. no explicit renewal transaction. multiple neurons can independently contribute to the same axon's weight.
epoch boundaries
decay computation batches at epoch boundaries.
epoch length: E blocks
at epoch boundary:
1. for each axon: recompute w_eff using exact α^Δt
2. prune axons below threshold ε
3. batch polynomial update for all removals and weight changes
4. recommit BBG_poly with updated evaluations (one Lens recommit)
5. update decay pool
6. BBG_poly(time, epoch_boundary, t): snapshot evaluation point
between epochs:
w_eff approximated via linear interpolation from last epoch
exact computation deferred to next epoch boundary
epoch boundaries correspond to temporal granularity levels. each epoch snapshot is an evaluation point in the time dimension, enabling temporal queries: "what was the graph state after decay at epoch E?" — one Lens opening.
storage reclamation cascade
pruning an axon triggers effects through the storage tiers:
L1 (hot state):
polynomial evaluation tables updated for affected dimensions
BBG_poly recommitted — one Lens recommit per block
immediate — part of the state transition
L2 (particle data):
axon-particle data removed
source/target particle energy decremented
if particle energy reaches zero, metadata eligible for removal
L3 (content store):
zero-energy particles: content eligible for reclamation
DAS availability proofs no longer required
retention is a node policy decision, not a protocol obligation
L4 (archival):
historical state preserved in polynomial time dimension
past evaluations at (index, key, t_past) still return pre-pruning data
no separate snapshot storage needed — the polynomial encodes all history
see storage for storage tiers and π-weighted replication, cross-index for why cross-index consistency is structural, architecture for the layer model