Validation: the July planetary runtime has no code owner (CultMath deleted it,
the CultLib branch never merged) and contradicts Asura's HLSL-only field and
gradient rule. Recommendation: retire, archive the donor ref; the one live idea
(Geometry drops its duplicate vector types) must land before Asura Cut 3.
Q-F1..Q-F4 open.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude Code reads CLAUDE.md, not AGENTS.md, so this repo's doctrine was
invisible to it. This one-line import makes the existing AGENTS.md load
without duplicating or renaming it. Codex is unaffected.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
REC-109 / REC-019 dead-code subtraction pass on Fensalir.
Deleted, all re-verified fresh against origin/main (dc35ecc) and against
every other repo under F:/Projects, not just Fensalir:
- src/Saga/ (SagaOrgan.cs, Saga.csproj, README.md) and its Fensalir.sln
project entry (GUID 30324495-56BE-4D45-80E8-CE03C24726C8, including its
ProjectConfigurationPlatforms and NestedProjects lines). `rg -n
'SagaOrgan|SagaFlowRequest|SagaCoriolisFrame|SagaForcingSource|
SagaAdvectionSample|SagaCovariance2D' --glob '!src/Saga/SagaOrgan.cs' .`
found zero consumers inside Fensalir; the same pattern run across the rest
of F:/Projects (excluding Fensalir and this census doc) found only the
census's own prose, no other repo referencing these symbols.
- packages/AquaSynth.Core.0.1.0-alpha.2.nupkg,
packages/AquaSynth.Faust.0.1.0-alpha.2.nupkg,
packages/AquaSynth.Faust.0.1.0-alpha.3.nupkg. Confirmed
src/Aquarium.Engine/Aquarium.Engine.csproj:15 references only
AquaSynth.Faust 0.1.0-alpha.4, whose nuspec pins Core alpha.3 (both kept).
Verified by building Aquarium.Engine.csproj (with -p:CultLibRoot pointed
at the sibling CultLib checkout, since the CultMath project reference is
otherwise only resolvable from Fensalir's normal on-disk location next to
CultLib) against the trimmed packages/ feed: restore and build succeeded,
proving alpha.4/alpha.3 satisfy the manifest with the three obsolete
files gone.
- state/scratch-fractal-surface-visible.md. `rg -n -F
'scratch-fractal-surface-visible.md' .` found zero references inside
Fensalir; the one repo-wide hit (gamecult-site's generated
repo-doc-tree/fensalir.json) is a static catalog listing, not a code or
build consumer. Content read in full: a closed "Kept/Changed/Still not
good enough" retrospective note, not an open TODO, with no admission path
into any durable doc.
Verification: dotnet build succeeded post-deletion for
Aquarium.Engine.Contracts, Aquarium.Engine (exercises the trimmed AquaSynth
package feed and the CultMath sibling reference), Aquarium.Engine.Fractal,
and Aquarium.Engine.Fractal.Tests (which also restores Aquarium.Zyphos and
Aquarium.Fensalir). `dotnet restore Fensalir.sln` itself fails in this
worktree because CultMath is a relative sibling-path reference
(../../../CultLib) that does not exist next to a temp worktree — a
pre-existing property of the manifest, not something this change caused;
per-project builds above cover the touched surfaces instead.
Not touched, out of scope for this pass: the inert render-graph
pass/camera/debug-view surface, Clear() no-ops, GetResource/GetRenderTarget
— all flagged in the same census section but requiring broader review.
Collision check: primary checkout (codex/cultmath-monorepo) has zero diff
against origin/main on every touched path. Executed in worktree
claude/dross-2026-09-13 off origin/main, not the primary checkout.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@ -13,6 +13,14 @@ evidence, and synth-backed sound.
The repo is not the Epiphany Aquarium client. Epiphany lives in
`GameCult/Aquarium-Engine` and consumes Fensalir as the runtime dependency.
**Valuable here:** the spatio-temporal evidence reservoir (`ResampledImportanceReservoir<TSample>` and `TemporalSpatialEvidenceReservoir` in `src/Aquarium.Engine.Fractal/Temporal/`), the `.aquageo` fractal field DSL in `src/Aquarium.Engine.Fractal`, and the engine/client contract in `src/Aquarium.Engine.Contracts/AquariumRuntimeContracts.cs` (`IAquariumRuntime`).
**Problem it solves:** interactive visual clients need a renderer that decides which field evidence deserves rendering, fusion and residency under a budget, instead of each client owning temporal truth or drawing private geometry. Fensalir holds that machinery once; client repos own meaning.
**Entry points:** `dotnet build Fensalir.sln`; run a client with `scripts/dev-reload.ps1 -ClientProject <csproj>` (see Run below). Start reading at `docs/engine-client-boundary.md` and `docs/temporal-spatial-evidence-reservoir.md`; the target pipeline is `docs/perfect-fensalir-machine-roadmap.md`. The smallest client is `src/Aquarium.Sample.Minimal`; `src/Aquarium.Fensalir` and `src/Aquarium.Zyphos` are demo clients.
**Live versus planned:** live are the Win32 host, D3D12 renderer, hot reload, headless capture, AquaSynth/WASAPI audio, CPU reservoirs, fractal probe samples, evidence tracks and validator coverage. Planned (see the roadmap) are full GPU reservoir storage and page residency.
## What Runs
The host executable in `src/Aquarium.Engine` loads a client assembly that
@ -136,9 +144,6 @@ how WASAPI or Faust got invited to the party.
audio/synth host, bundled assets, and renderer-owned shaders.
# Fensalir planet work: validation and reorientation beside Asura
Status: Imagination pass 1, 2026-09-30. Nothing committed and no working tree
switched. The build probes ran on Yggdrasil through `ygg-verify.sh`, using
composite snapshots in a scratch repo. That repo lives in the scratchpad, not
in any project.
Adopting instruction (operator, 2026-09-30): "Fensalir planet work is old,
needs validation and reorientation beside the Asura campaign".
## Rulings (operator, 2026-09-30)
- **Q-F1: no planet terrain in Fensalir for now.** The July planetary runtime retires behind an archive
tag. A landing-scale Zyphos would be a new campaign built on Asura, not a revival of that runtime.
- **Q-F2: park the flow docs,** with a status line: parked, superseded by Asura for the field, no code.
- **Q-F3: triage now.** Eyes classifies each non-planet line on the donor ref before anything is tagged or
deleted: the 66 Bokusho commits, the Eve native surface work, Leap/stereo, and the reservoir work. P1
waits for that triage.
- **Q-F4: delete Geometry's duplicate vector types before Asura Cut 3** (P4, in CultLib). This is on
Asura's critical path.
## Pinned heads (every `file:line` below is against these)
| Repo | Ref | SHA | Note |
| --- | --- | --- | --- |
| Fensalir | `origin/main` = local `main` | `e053486` | 3 commits past the merge base, all housekeeping |
| Fensalir | `origin/codex/geometry-ownership-migration` (the donor) | `42778c1` | 125 ahead of merge base `57b6040` (2026-05-30) |
| Fensalir | `origin/codex/leap-packed-depth` | `492d123` | the donor minus its last commit |
| CultLib | `origin/main` | `93fe1b9` | includes the bounded-least-squares merge; local `main` is `069ecc3` |
| CultLib | `origin/codex/geometry-ownership-migration` | `6a65369` | the donor's other half: 31 ahead of `a58daa5` (2026-07-12), 832 behind |
| CultLib | tags `gamecult-geometry{,-rs,-unity}-v0.1.0` | `b65619f` | pushed to origin, on `origin/codex/geometry-cultmesh-unity-release`, not in main |
| CultMath (standalone, retired) | `main` | `1c007a5` | "Point CultMath history at its CultLib home"; planetary deleted at `6a16260` |
| Asura | `main` | `63f9216` | snoise fix status recorded; the fix is on CultLib `hands/cultmath-snoise-grad``0a5f4bf` |
## Verdict
**Retire the planet work. Do not land it.** The donor has no surviving code
owner: CultMath deleted the planetary runtime in July, and CultLib never merged
it. Asura has since claimed the planet field with a design that contradicts the
donor's central promises. Its erosion port is the one Asura already judged "not
a source". Its only consumer is a Fensalir demo client that has not changed
since 2026-05-30.
One idea from the geometry half is still live and time-sensitive: deleting the
duplicate vector types from `GameCult.Geometry`. That is separate work, but it
has a closing window. Once Asura Cut 3 ships `GameCult.Geometry.dll` into Unity,
the duplicate `CultVec3` becomes public Unity API (Q-F4).
Most of the branch is not planet work at all. 66 Bokusho commits, 10 Eve
commits, and the Leap/stereo and reservoir work ride on the same ref. They need
their own adoption decision before any ref is deleted (Q-F3).
---
## 1. Validation report
### 1.1 What the donor actually is
Grouping `git log 57b6040..42778c1` by subject:
| Slice | Commits | Dates | Size |
| --- | --- | --- | --- |
| Leap stereo depth, point cloud, reservoir history, camera fusion, loopback audio | ~20 | 05-30 to 05-31 | inside the 61-file, +8832/−279 pre-planet diff |
| Eve native surface client (Direct2D, CultUI previews) | ~17 | 05-31 to 06-02 | same |
| Bokusho brush simulation on D3D12 | 66 | 06-12 to 06-16 | `BokushoBrushSimulation.cs` +1076, `D3D12BokushoBrush.hlsl` +699, tests +1143 |
| **then** (the July world) | Fensalir `42778c1` + CultLib `6a65369` + CultMath `b43cf49` | Restore fails first with NU1101: `CultMath 0.1.0` comes only from a git-ignored local feed (`CultLib/Directory.Build.props:18-19` at `6a65369`: `..\CultMath\.tools\local-feed`). After `dotnet pack` of CultMath `b43cf49` and passing the feed explicitly, the lib builds and the Fractal tests give **169/170**. The failure is `ProjectionTests.CheckedInProjectionReportMatchesSampler`, which passes on mainline. The donor regenerated `research/rendering/fractal-projection-report.md` against the July projection code on Windows; this was not chased. |
| **now** (donor against today's owners) | Fensalir `42778c1` + CultLib `93fe1b9` + CultMath `1c007a5` | **Fails** with 10 unique errors (`FRACTAL_LIB_EXIT=1`). Nine are CS0246 for `PlanetaryCubeFace`, `PlanetaryTileAddress` and `PlanetaryFaceCoordinate` (`FractalDslCompiler.cs:505`, `FractalStableKeyBuilder.cs:8`, `ICubeSphereProjection.cs:11`, `NormalizeCubeSphereProjection.cs:11`, `ProjectionDistortionResult.cs:8`, `ProjectionDistortionSampler.cs:14,61,68`, `TangentCubeSphereProjection.cs:11`). The tenth is CS1704: two assemblies named `CultMath` are loaded, one from the standalone repo through the donor's `Contracts` reference and one from CultLib `packages/cultmath` through `GameCult.Geometry`. The donor straddles the pre-monorepo and monorepo layouts. |
Static proof that "now" cannot build, independent of the probe: every
`Planetary*` symbol the donor consumes is absent from CultLib main.
- The donor uses these (`git grep` at `42778c1`): `PlanetaryCubeFace` (47 uses),
renderer, and Electron/Web strategic maps". Asura now owns Aetheria's
planets and rules the opposite:
- The field is HLSL only, and the CPU never evaluates it (Asura
`docs/target.md:42-47`, invariant 2).
- There is no landing and no surface streaming (the scope boundary).
- The donor's authoritative CPU queries, residency LOD and QSC page
streaming are therefore out of scope, or forbidden outright.
2. **The erosion port.** Asura's 4b-iii already rejected the July
`spherical_erosion` because it "lerps raw phases across cells instead of
blending phasors, which is not Phacelle" (`docs/cut-map.md:1132-1135`,
`:1736` at `63f9216`). Phacelle is going into CultMath fresh (2a-ii-b).
3. **Derivatives.** Zyphos's base field is ad hoc sine plates with a
central-difference gradient (`D3D12ZyphosTerrain.hlsli:113-129` at
`42778c1`). That is the pattern Asura's invariant 8 exists to prevent.
4. **The code owner is gone.** CultMath deleted the planetary runtime
(`6a16260`, reachable from CultLib main through the subtree). The receiving
CultLib branch never merged. On mainline the runtime is orphaned: it exists
only on unmerged branches and the three pushed `v0.1.0` tags.
5. **The build contract.** It needs an untracked local NuGet feed (see 1.3)
and paths from before the monorepo.
6. **The CultLib geometry half diverged from main's ruling.**
- The branch absorbs CSG into `GameCult.Geometry` (`6b44f96`). Main ruled
that `GameCult.Geometry.Csg` owns CSG production behaviour (`63d6094`,
`src/GameCult.Geometry/README.md`), and that repo shipped `distance(p)`
at `d84acb6`.
- The branch also adds a geometry worker, `CultGeometryWorkerDocuments`,
`CultGeometryWorkerProvider` and "v2 contracts". None of these exist on
main, and main's documents never moved to v2.
---
## 2. Ownership table
| Piece (donor) | Where it sits in the donor | Owner today | Disposition |
| --- | --- | --- | --- |
| Planet field definition, base field and erosion as one function | CultLib branch `src/GameCult.Geometry/Planetary/PlanetaryField.cs`, `Shaders/Planetary.hlsl` | **Asura** (field in HLSL, per body archetype) | Retire. Duplicates Asura's field |
| Advanced erosion filter (Johansen port) and `SphericalErosion` | branch `Planetary/AdvancedErosionFilter.cs`, `SphericalErosion.cs`, `Shaders/AdvancedErosionFilter.hlsl` | **Asura** 4b-iii (`AsuraErosion.hlsl`, fresh port with provenance) | Retire. Asura already ruled it "not a source" |
| Phacelle and noise primitives | embedded in the erosion port | **CultMath** (2a-ii-b `phacelle`, `CultPhasor`) | Retire the embedded copy |
| Cube-sphere/QSC topology, tile addresses, page layout, residency, LOD selection, patch meshes, radial refinement | branch `Planetary/PlanetaryTopology.cs`, `PlanetaryPages.cs`, `PlanetaryResidency.cs`, `PlanetaryPatch.cs`, `PlanetaryRadialRefinement.cs` | **No live consumer.** Asura meshes with surface nets and tiles per quad; streaming is out of scope | Retire. Revive only through a new campaign with a named consumer (Q-F1) |
| CPU ray, region and great-circle queries for an "Aetheria daemon" | branch `Planetary/PlanetaryQueries.cs` | **Forbidden** by Asura invariant 2. The dock-site query is Asura's | Retire |
| Map projections and `CMPT` tile codec (Electron maps) | branch `PlanetaryProjection.cs`, `PlanetaryMapTileEncoding.cs`, TS decoder | No consumer exists or is planned | Retire |
| `org.gamecult.geometry` Unity package and planetary viewer sample | branch `unity/org.gamecult.geometry/**`, tags `b65619f` | Superseded: Asura Cut 3 ships Geometry inside `org.gamecult.cultlib` | Retire the branch. Keep the pushed tags as immutable history (Q-F3) |
| Frequency-band selection by sample footprint | branch `Planetary/ErosionFrequencyBands.cs` | **Asura** (band limits per lowering; target invariant 8, Q11) | Retire. Same concept, and Asura implements it fresh |
| D3D12 page buffers, root parameters 29-32, dispatch, patch raster, debug modes | Fensalir `D3D12Renderer.cs:99-102,223` and about 157 planetary lines; `AquariumRenderPlan.cs:526-565` (render ABI) at `42778c1` | **Fensalir** would own it if Fensalir rendered planets. Its only producer is the retired runtime | Retire with the runtime |
| DXC include resolver for `Packages/org.gamecult.cultmath/shaders/` and `GameCult.Geometry/` | Fensalir `D3D12ShaderCompiler.cs:68-102` at `42778c1` | Fensalir. On main no shader includes CultMath HLSL at all | Retire. Its search paths are also stale (the standalone `CultMath/shaders`, pre-monorepo). Rebuild against `packages/cultmath/shaders` when a Fensalir shader first includes CultMath |
| Zyphos terrain shaders, page and patch entry points, `ZyphosPlanetarySurfacePages` | Fensalir `src/Aquarium.Zyphos/**` at `42778c1` | Fensalir's demo client. Main's Zyphos keeps its pre-July analytic sphere | Retire |
| Fensalir's `CubeFace`, `CubeFacePosition`, `CubeTileKey` and the projection code in `Aquarium.Engine.Fractal` | **Main keeps them.** The donor deleted them in favour of Geometry | **Fensalir** (fractal DSL, projection reports; 167 tests green on main) | Keep on main; nothing to do. The donor's deletion is void once the runtime is retired |
| Planetary flow organ (ocean and atmosphere advection), documentation only | Fensalir main: `docs/planetary-flow-{organ,nn-architecture,implementation-plan}.md` (289/462/185 lines); `docs/README.md:39-44`; `state/map.yaml:114-120` and the flow `next_actions` entries after `:171` | Fensalir, as plans. No code exists; last touched 2026-05-29. Not in Asura's scope (no atmospheres or oceans) | Q-F2 |
| Vector-type unification (delete `CultVec2`/`CultVec3`/`CultRect` in favour of CultMath `float2`/`float3`/`rect`) | CultLib branch `317b7d5`, `364c9cd` | **CultMath** owns the vector vocabulary (main `63d6094`). Main still has the duplicates: `CultGeometryPrimitives.cs:11,62,128` and the `origin` parameter of `CultGeometryIsoSurface.cs:42` and `CultGeometrySurfaceNets.cs:47` | Q-F4: a fresh cut on main, not the branch code |
| CSG absorption, geometry worker, v2 schemas, Rust `gamecult-geometry-rs` | CultLib branch | CSG: `GameCult.Geometry.Csg` (main's ruling). The rest have no owner and no consumer | Retire with the branch |
### Duplication against Asura (one side is cut, not kept in parallel)
| Concept | Donor | Asura | Side cut |
| --- | --- | --- | --- |
| Planet shape function | `PlanetaryFieldDefinition` plus base-field provider (CPU and HLSL) | the field `f(p) = |p| − (1 + h(u))`, HLSL only | donor |
| Erosion | July port with raw-phase lerp | 4b-iii fresh port, exact Phacelle, provenance file | donor |
| Level of detail | QSC pages, residency, projected-error LOD | surface-net grid resolution plus per-body tile N | donor. Asura's scope rules streaming out |
| Band limiting | `ErosionFrequencyBands` | per-lowering band limit (Q11) | donor |