Graph World — Rendering Implementation Plan
Protocol spec: cybergraph/reference/render.md (R-1.0)
Implementation spec: cyb/render/specs/render.md (R-1.0-cyb)
Architectural decisions
Barnes-Hut vs BVH
The deeper question is not "which algorithm for rendering cull" but "does this
manifold need N-body approximation at all?"
Newtonian gravity is unscreened (1/r², infinite range). N-body simulation is O(n²).
Barnes-Hut reduces it to O(n log n) by treating distant clusters as point masses —
an approximation valid because force decays slowly.
Yukawa gravity is screened: potential ∝ e^{−μr}/r, the solution to (∇² − μ²)Φ = −ρ.
The force mediator has mass μ. Interactions beyond 1/μ are exponentially suppressed
by the field equation itself — not approximately negligible, but provably negligible.
The springs operator (L + μI)x* = μx₀ is Yukawa gravity on the graph manifold. Its
Green's function (L + μI)⁻¹ is the discrete Yukawa kernel: entry (i,j) decays as
e^{−√μ·d(i,j)} with graph distance d(i,j). We do not need Barnes-Hut's approximation
because the physics of this manifold already provides exact exponential screening.
Barnes-Hut approximates what Yukawa physics provides exactly.
BVH is still needed — but purely for the rendering question (frustum cull), not
for physics. The physics decides where particles are; the BVH decides which to draw.
Heat-kernel BVH — one structure, dual purpose
R-1.0 §10 resolves the earlier question of "separate spatial BVH vs topological
heat LOD" definitively: they are the same structure.
Heat-kernel clustering at four τ scales {τ₀, 10τ₀, 100τ₀, 1000τ₀} directly
produces the BVH tree. Each level of clustering is a level of the hierarchy; each
node gets an AABB from its particles' spectral coordinates. The topology drives the
hierarchy; the AABB enables spatial frustum cull. No separate octree.
Because spectral coordinates derive from graph topology, BVH clusters ≈ heat-kernel
clusters by construction. The two concerns agree on "near" without needing to be
reconciled.
Epoch / frame split
R-1.0 §2: all heavy computation (eigensolver, BVH build, NRF training) runs at
≤1 Hz as epoch work on a background thread. Frames only animate focus luminosity
and diffusion flow against frozen geometry. This is the primary architectural
constraint — it determines threading model, data structures, and API boundaries.
In Bevy: epoch thread owns EpochState (double-buffered). Frame loop swaps
atomically on epoch arrival. The eigensolver is never on the render thread.
T∞ is Phase 2/3 — not Phase 1
The R-1.0 T∞ tier requires:
- per-epoch NRF training (not just inference — actual gradient steps at runtime)
- Instant-NGP hash-grid encoding (Müller 2022) with 16 levels × 2^19 entries
- CT-0.1 cross-attention conditioning (graph-context per nearest k=8 particles)
- Clifford render block (shifted geometric product — kernels not yet in honeycrisp)
- volume ray-march (128 samples/pixel, depth-varying τ)
This is months of work. R-1.0 §7.5 explicitly provides a fallback: "hash-grid-only
MLP without CT-0.1" is a valid conforming T∞ until the full implementation ships.
Phase 1 uses luminosity-weighted point splats for sub-pixel particles.
Phase 2 delivers hash-grid MLP (no CT-0.1).
Phase 3 delivers full T∞ with CT-0.1 + Clifford block.
Streaming by proximity — omitted
Load the full .graph snapshot at world entry. At bostrom-23M scale (312MB signals,
mmap'd zero-copy) this fits in unified memory. Streaming deferred to a future spec.
Complexity analysis
Bostrom at block 23M: n=2,921,230 particles, m=2,705,332 cyberlinks, avg degree ~1.85.
Epoch operations (background, ≤1 Hz)
| operation |
algorithm |
cost |
note |
| Eigensolver (full) |
LOBPCG on normalized ℒ, k=32 Krylov |
O(n·d̄·k) |
every 64 epochs or ΔG > 5% |
| Eigensolver (incremental) |
perturbation theory, h-hop neighborhood |
O(|Nₕ|·d̄) |
per epoch when applicable |
| Procrustes alignment |
SVD on anchor-1024 |
O(|anchor|) |
per epoch |
| Heat-kernel BVH |
Chebyshev K=20 at 4 τ scales |
O(K·m) per scale |
per epoch |
| NRF training (Phase 2+) |
Adam on 2^16 points |
O(N_train) |
per epoch, ~50ms ANE |
Yukawa screening (μ parameter) gives h-local perturbation: edits propagate only
O(log 1/ε) hops. Incremental eigensolver reuses this — only the affected neighborhood
is recomputed.
Frame operations (foreground, display refresh)
| operation |
cost |
hardware |
| GPU BVH traversal (frustum cull) |
O(log n) |
aruminium compute |
| Diffusion step (1–2 iterations) |
O(m) = ~2.7M ops |
acpu AMX |
| Instance buffer upload (≤10K visible) |
~240 KB |
unimem |
| T2 analytic impostor draw |
O(visible), tile-shaded |
aruminium |
| T3 Gaussian splat draw |
O(visible at T3 screen size) |
aruminium |
| Edge flow UV update |
O(visible edges) |
aruminium |
| IOSurface composite + present |
O(pixels) |
aruminium + unimem |
Target frame budget on M3 Pro at 4K 120Hz (8.3ms):
BVH cull compute: 0.3ms aruminium
diffusion step: 0.1ms acpu
T2 impostor pass: 1.5ms aruminium (tile-shaded deferred)
T3 splat pass: 1.0ms aruminium
edge pass (bundled): 1.0ms aruminium
composite + present: 0.5ms aruminium + unimem
slack: 3.9ms
Existing code inventory
mc crate — data layer (ready)
mc/src/graph/record.rs: Cyberlink — 128-byte fixed records (neuron, from, to,
token, amount, valence, block). CyberlinkIter over mmap'd bytes — zero-copy.
mc::graph::Graph reader — opens .graph, mmap's signals section.
Gaps: CSR adjacency builder, particle index (hemera→u32), crystal metadata reader.
These go in render::graph.
honeycrisp — Apple Silicon compute (ready for adaptation)
BufferPool (power-of-two size classes, zero alloc hot path) → reuse for position,
focus, instance buffers. Matmul + attention kernels → T∞ NRF (Phase 2+).
unimem IOSurface → zero-copy frame handoff (no GPU→CPU readback).
Gaps: sparse CSR matvec, Chebyshev dispatch, GPU BVH traversal, Gaussian splat
rasterization. Clifford kernels for Phase 3.
bevy shell — ECS and GPU bridge (ready)
GpuBridgePlugin: device + queue shared to main world — render crate gets them free.
WorldState FSM + OnEnter/OnExit/Update pattern — add WorldState::Graph.
Sugarloaf offscreen pattern (proven) → T1 label rendering in world space.
cybergraph crate — physics (separate repo, consumed as lib)
Eigensolver, PageRank, heat-kernel approximation live in cybergraph crate — not
in render. Render imports computed positions and focus as inputs. This is the
"discrete field theory engine"; render is the observer.
Implementation order (Phase 1)
| step |
module |
deliverable |
| 1 |
render::graph |
snapshot loader, CSR builder, particle index |
| 2 |
render::epoch::eigensolver |
LOBPCG positions; Procrustes aligned |
| 3 |
render::epoch::bvh |
heat-kernel BVH, 4 τ scales, AABB per node |
| 4 |
render::frame::cull |
GPU BVH traversal → VisibleSet + TierLevel |
| 5 |
render::frame::tiers::t2 |
analytic impostor (indirect draw, tile-shaded) |
| 6 |
render::frame::tiers::t3 |
Gaussian splat (Kerbl 2023) |
| 7 |
render::bevy |
GraphWorldPlugin, WorldState::Graph, Cmd+5 |
| 8 |
render::frame::tiers::t1 |
labels via sugarloaf, world-space text |
| 9 |
render::frame::edges |
bundled tubes, flow UV animation |
| 10 |
render::frame::tiers::t0 |
content entry: camera transition + sandbox |
| 11 |
conformance |
P-RENDER-TOPO, P-RENDER-POS, P-RENDER-FPS |
Phase 2: T∞ hash-grid MLP (no CT-0.1).
Phase 3: T∞ full NRF — CT-0.1 + Clifford block + volume ray-march.
Homonyms
plan
plan the schedule: standing orders and deferred intents. the seed exists — the mining standing order in cy/specs/body|body is the first plan entry; it generalizes into the robot acting at 3am so you don't have to. cyb/parts/time|time reads the plan forward as the future half of its screen. part of…
warriors/erga/plan
erga — ERGO (Autolykos v2) miner for Apple Silicon Zero-copy Autolykos v2 miner on Rust using the honeycrisp hardware driver stack. ERGO uses Autolykos v2: a memory-hard k-sum PoW where each nonce attempt requires 32 random reads from a 2+ GB precomputed table R, summed, and Blake2b256-hashed…
cy/specs/plan
neural/rune/PLAN
rune implementation plan rune = open-computation language for the cyber soft3 stack. Full spec: `~/cyber/cyber/root/rune.md`. architecture Two registers, one AST, one Nox target: `rust` — classic, Rust-familiar surface `rune` — pure, Hoon-style sigil surface Three proof tiers: pure: unconditional…
neural/inf/rs/plan
plan
soft3/radio/audit/2026-10-11-bao-bounded-traversal/plan
Checked traversal PLAN evidence Research and proposed tests only, on actual Radio parent `a96d86e28d384cdf656aadc4282c78c0c170c102` (PR38). Production is unchanged. The [PLAN](/soft3/radio/.claude/tasks/bao-bounded-traversal/plan) specifies one admitted byte range, one emitted geometric item per…
soft3/nox/.claude/tasks/hemera-no-std/plan
Preserve nox's no_std dependency boundary Stage: revised PLAN v2, awaiting fresh different-vendor review. Parent: `0b1407a4b855e4961ede07e1b7ea199cb8018c30`. Lineage and measured failures are in [research.md](/soft3/nox/.claude/tasks/hemera-no-std/research); exact feature/ring analysis is in…
soft3/radio/.claude/tasks/bao-root-policy/plan
Canonical BAO ROOT finalization Status: draft v3, awaiting correction PLAN review; no implementation. Serves: Kadek phase-1 foundation row 4 and runtime proof-before-admission clause; radio's Hemera BAO dependency, pinned tree ROOT finalization contract. Base: radio…
warriors/erga/.claude/tasks/blake-batch-owner/plan
Close the Blake benchmark batch owner Stage draft; awaits root and fresh different-vendor PLAN approval. No production changes. Base Erga848e17e2522db2f6225ad72d9b1797f8735d26d0; Honeycrisp9cbd4807, Strata494df7, exact full pins/source evidence in research.md. Serves Kadek native Image ownership…
soft3/radio/.claude/tasks/kadek-slice-traversal/plan
Correct sync slice traversal Status: implementation source frozen for fresh code review. Scoped tests pass; unrelated Clippy/full-workspace/tooling failures remain visible in research. Base: radio `db1d62e2cd1e4b2f309fa19bcc158bd29b44753d`, freshly fetched origin/main. Owned worktree:…
warriors/erga/.claude/tasks/mine-owner/plan
Mine owner plan Stage draft; implementation waits for fresh different-vendor PLAN approval. Serves Kadek foundation row6; discovered-from Honeycrisp PR14 and Erga PR2. Base `8dcb33888868d74ddfda3eeeb9bc90e58677b394`, Honeycrisp `9cbd4807`, Strata `494df7a`; full pins/evidence in research. No…
soft3/radio/.claude/tasks/bao-bounded-reducer/plan
Bounded BAO group reducer — proposed PLAN Serves: owner's Kadek phase-1 closure · Radio/soft3 · foundation row 4, bounded authenticated-range prerequisite. Source research is pinned in research-inputs.json at Radio `a11d342594949d4ea542b26366f71d56ef21662d` and Hemera…
cyb/honeycrisp/.claude/tasks/nebu-package-identity/plan
nebu package identity — plan One manifest identity repair restores origin-source Cargo resolution for the unimem gate prerequisite. Root owns implementation/review/commit/PR; this unit does not overlap the Block constructor's source/spec files. 1. Record `rustc -Vv`, `cargo -V`, host and target:…
soft3/radio/.claude/tasks/bao-empty-status/plan
Fs synthetic empty status — PLAN amendment Stage: active. Fresh Grok4.7 PLAN APPROVE preceded production edits; the exact reviewed draft and raw verdict remain frozen in the audit. Fresh CODE APPROVE and root disposition are retained in audit/2026-10-11-empty-status/. Serves Kadek phase 1…
soft3/radio/.claude/tasks/bao-bounded-traversal/plan
Bounded BAO range traversal Stage: draft; independent PLAN review pending, no production changed. Serves the owner's Kadek phase-1 closure, Radio/soft3 and foundation row 4 (bounded authenticated source ranges). Discovered from the [measured traversal…
soft3/radio/audit/2026-10-12-bao-proof-research/task/plan
Bounded complete-buffer BAO proof verification Proposed PLAN; no production implementation or approval. Serves Kadek foundation row 4 through Radio, declared part of soft3; the future Kadek adapter reaches Cyb. Radio implementation parent is b933829cbe273d2f31fe75ca83125f3ddd8917a2 (PR39); research…
soft3/radio/.claude/tasks/kadek-export-pairs/plan
Correct actual BAO exporter pair width Status: source-only plan awaiting fresh different-vendor approval; no code/tests edited or builds run. Base origin/main `764d732ac38fb9116c4cf525a6d1bb463d409a06`. Owned branch/worktree: `fix/kadek-export-pairs` /…
cyb/honeycrisp/.claude/tasks/unimem-block-creation/plan
Checked Block creation — plan PLAN approved with binding conditions in `/tmp/unimem-block-creation-plan-review.txt`. Implementation follows those conditions; fresh CODE review remains required. Base: `9593c7218e14e2b5b816d9008b45ab60b9580cf3`, branch `fix/unimem-block-creation`. Serves kadek…
soft3/radio/.claude/tasks/kadek-memstore-pairs/plan
Canonical in-memory BAO parent pairs Status: proposed PLAN v2; fresh different-vendor approval required before source edits. Serves: Kadek phase-1 row4, existing radio verified-range import/storage dependency. Base radio `0d11468503c052aa5dcefb0dabc4602bd8efdc60`, exact Hemera…
soft3/radio/.claude/tasks/bao-bounded-proof/plan
Bounded complete-buffer BAO proof verification Proposed PLAN; no production implementation or approval. Serves Kadek foundation row 4 through Radio, declared part of soft3; the future Kadek adapter reaches Cyb. Radio implementation parent is b933829cbe273d2f31fe75ca83125f3ddd8917a2 (PR39); research…
warriors/erga/.claude/tasks/rtable-owner/plan
RTable owner plan Stage draft; implementation waits for fresh different-vendor PLAN approval. Serves Kadek foundation row 6; discovered-from Honeycrisp PR14 and Erga PR1. Base `14b40d667b7fa927f62f46423cd8096f01cf704f`, Honeycrisp `9cbd4807`, Strata `494df7a`; full revisions/evidence are in…
cyb/honeycrisp/.claude/tasks/unimem-block-access/plan
Raw Block access — PLAN v3 candidate Serves Kadek foundation row6/native ownership prerequisite; upstream unimem CPU access and aruminium import contracts. Base `7b148906263da5ea8aabc5ddb0e2e44ff2288ecc`; [research](/cyb/honeycrisp/.claude/tasks/unimem-block-access/research) records parent and…
soft3/radio/.claude/tasks/audit-cargo-packaging/plan
Lossless archival Cargo manifests Status: draft; fresh different-vendor PLAN approval required before edits to existing artifacts. Serves Kadek foundation row 4 through Radio; discovered from PR40's committed Git consumer. Parent: `ce0fb312faa8770e80efe9afa864106ae6b51552`. Result Rename exactly…
soft3/radio/.claude/tasks/bao-hemera-pin/plan
Pin the shared Hemera dependency Serves: owner's Kadek phase-1 closure · Radio/soft3 · consumable dependency prerequisite for bounded BAO verification, foundation row 4. Stage: draft. Source parent Radio a11d342594949d4ea542b26366f71d56ef21662d; Hemera source…
soft3/radio/audit/2026-10-12-bao-proof-research/prerequisite/plan
Bounded BAO range traversal Stage: draft; independent PLAN review pending, no production changed. Serves the owner's Kadek phase-1 closure, Radio/soft3 and foundation row 4 (bounded authenticated source ranges). Discovered from the [measured traversal…