diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..640c1a1 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,3 @@ +Repository doctrine for this project lives in AGENTS.md, shared with Codex. + +@AGENTS.md diff --git a/Fensalir.sln b/Fensalir.sln index 1c196ee..c5c2320 100644 --- a/Fensalir.sln +++ b/Fensalir.sln @@ -9,7 +9,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aquarium.Engine.Contracts", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aquarium.Engine", "src\Aquarium.Engine\Aquarium.Engine.csproj", "{51FE01D8-9EEF-46B2-8D8C-3307AC2221C1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CultMath", "..\CultMath\src\CultMath\CultMath.csproj", "{0089E341-25F2-43FC-8FD9-CBD1AE646D91}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CultMath", "..\CultLib\packages\cultmath\src\CultMath\CultMath.csproj", "{0089E341-25F2-43FC-8FD9-CBD1AE646D91}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aquarium.Sample.Minimal", "src\Aquarium.Sample.Minimal\Aquarium.Sample.Minimal.csproj", "{7564E6C2-FF01-4B5B-8C2B-F9CD796858BA}" EndProject @@ -29,8 +29,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aquarium.Fractal.Receipt", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aquarium.Fensalir", "src\Aquarium.Fensalir\Aquarium.Fensalir.csproj", "{F9274D99-3CC6-42B6-9817-EC7F19663B1D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Saga", "src\Saga\Saga.csproj", "{30324495-56BE-4D45-80E8-CE03C24726C8}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -161,18 +159,6 @@ Global {F9274D99-3CC6-42B6-9817-EC7F19663B1D}.Release|x64.Build.0 = Release|Any CPU {F9274D99-3CC6-42B6-9817-EC7F19663B1D}.Release|x86.ActiveCfg = Release|Any CPU {F9274D99-3CC6-42B6-9817-EC7F19663B1D}.Release|x86.Build.0 = Release|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Debug|x64.ActiveCfg = Debug|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Debug|x64.Build.0 = Debug|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Debug|x86.ActiveCfg = Debug|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Debug|x86.Build.0 = Debug|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Release|Any CPU.Build.0 = Release|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Release|x64.ActiveCfg = Release|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Release|x64.Build.0 = Release|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Release|x86.ActiveCfg = Release|Any CPU - {30324495-56BE-4D45-80E8-CE03C24726C8}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -187,6 +173,5 @@ Global {A9D41C48-7E78-4D75-A814-0C1500245EFC} = {0AB3BF05-4346-4AA6-1389-037BE0695223} {C0D1BFAC-B1B4-4350-92A7-D537AE382909} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84} {F9274D99-3CC6-42B6-9817-EC7F19663B1D} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B} - {30324495-56BE-4D45-80E8-CE03C24726C8} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B} EndGlobalSection EndGlobal diff --git a/README.md b/README.md index 15eaf15..0f16e5c 100644 --- a/README.md +++ b/README.md @@ -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` 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 ` (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. - `src/Aquarium.Engine.Fractal`: `.aquageo`, IFS/fractal fields, temporal reservoirs, evidence tracks, contribution cache, and lowering machinery. -- `src/Saga`: stochastic planetary flow middleware for cube-sphere Transport - fields, arbitrary forcing, Coriolis-aware advection, and learned atmosphere / - ocean / debris flow packets. - `src/Aquarium.Fensalir`: Fensalir splash/art reconstruction demo. - `src/Aquarium.Sample.Minimal`: tiny client proving the runtime boundary. - `src/Aquarium.Zyphos`: planetary/fractal terrain demo. @@ -153,8 +158,8 @@ Requirements: - Windows - .NET SDK matching `global.json` -- sibling repos currently expected at `E:\Projects\CultMath` and - `E:\Projects\CultLib` +- sibling `CultLib` checkout beside this repo (override with the `CultLibRoot` + MSBuild property); CultMath is consumed from `CultLib/packages/cultmath` ```powershell dotnet build Fensalir.sln diff --git a/docs/README.md b/docs/README.md index 8c6243d..0434328 100644 --- a/docs/README.md +++ b/docs/README.md @@ -13,8 +13,6 @@ historical branch scar. ## Fields, Reservoirs, And Fractals -- `../src/Saga/README.md`: studio-facing Saga middleware pitch and subproject - overview for stochastic planetary flow. - `papers/fensalir-pipeline.tex`: living MiKTeX paper for the Fensalir pipeline, research spine, domain reservoir model, and evaluation plan. - `papers/fensalir-native-domain-reservoirs.tex`: focused SIGGRAPH-shaped diff --git a/docs/planet-work-assimilation.md b/docs/planet-work-assimilation.md new file mode 100644 index 0000000..403e8e5 --- /dev/null +++ b/docs/planet-work-assimilation.md @@ -0,0 +1,479 @@ +# 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 | +| **Planet slice** | **23** | **07-12 to 07-22** | **61 files, +2865/−359 (`5854630^..42778c1`)** | + +Inside the planet slice, only the last three commits are the "geometry ownership +migration": +- `2531df5` moves Fensalir onto CultMath's July planetary runtime. +- `492d123` deletes Fensalir's `CubeFace`, `CubeFacePosition` and `CubeTileKey`. +- `42778c1` renames every consumer from `cultmath_planetary_*` to + `gamecult_geometry_planetary_*`. + +Its partner commits live in CultLib (`13e8c56..6a65369`) and CultMath (`6a16260`). + +### 1.2 Merge probes (`git merge-tree --write-tree`) + +- **Fensalir, donor into `origin/main`: 7 conflicts.** + - Content conflicts in `Fensalir.sln`, `README.md`, `docs/README.md` and + `src/Aquarium.Engine/Aquarium.Engine.csproj`. + - The csproj conflict matters. Main's `dc35ecc` moved CultMath to + `$(CultLibRoot)\packages\cultmath\...` (`Aquarium.Engine.csproj:4,26` at + `e053486`). The donor still points at the standalone repo + (`..\..\..\CultMath\src\CultMath\CultMath.csproj`, `Aquarium.Engine.csproj:25` + and `Aquarium.Engine.Contracts.csproj:10` at `42778c1`). + - Modify/delete conflicts in `src/Saga/{README.md,Saga.csproj,SagaOrgan.cs}`. + Main deleted Saga as dead in `d755d9c`; the donor still migrates it. +- **CultLib, July branch into `origin/main`: 23 conflicts.** + - 13 are source and docs, including a modify/delete on + `CultDocumentMessagePackGenerator.cs`, which main deleted. The others are in + `CultManagedDocument.cs`, the serialization code, `GameCult.Geometry.csproj` + and `README.md`, `GeometryDocumentTests.cs` and `build-unity-package.ps1`. + - 10 are prebuilt Unity DLLs and pdbs. + - The branch is 832 commits behind. That is not a merge; it would be a + re-implementation. + +### 1.3 Build probes (Yggdrasil, `mcr.microsoft.com/dotnet/sdk:10.0`, Linux) + +The probes use three composite snapshots in the scratch repo. Each lays the +three repos out as siblings, the way the csproj relative paths expect. + +| Probe | Layout | Result | +| --- | --- | --- | +| **mainline** | Fensalir `e053486` + CultLib `93fe1b9` | `Aquarium.Engine.Fractal` builds. Fractal tests: **167/167 pass** | +| **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), + `PlanetaryTileAddress` (24), `PlanetarySurfacePages`, + `PlanetaryProjectionKind`, `PlanetaryFaceCoordinate`, `PlanetaryPageSampling`, + `PlanetaryPageLayout`, `PlanetaryResidualResidency`, `PlanetaryLodSelector`, + `PlanetaryGpuPageBuilder`, `AdvancedErosionParameters` and the + `GameCultGeometry*` HLSL structs. +- Counts on CultLib `93fe1b9`: `PlanetaryCubeFace` 0, `PlanetaryTileAddress` 0, + `PlanetaryTopology` 0. +- `src/GameCult.Geometry/Shaders/` does not exist on main, so + `#include "GameCult.Geometry/GameCult.Geometry.hlsl"` + (`D3D12ZyphosTerrain.hlsli:4` at `42778c1`) has nothing to resolve. + +**Not run, because it needs Windows and D3D12:** +- `tests/Aquarium.Engine.Tests`: `D3D12PlanetarySurfacePageTests`, + `D3D12PlanetaryTopologyParityTests` and `D3D12AdvancedErosionParityTests`, + which are GPU readback parity tests; +- `Aquarium.Engine` itself (Vortice D3D12); +- the Zyphos client. + +Per the workstation budget, none of this ran on Starfire. Given the verdict, +it does not need to run at all: the GPU parity would prove a runtime nobody +will keep. + +### 1.4 What is still right, and what has rotted + +Still right: +- The donor's direction of dependency. Algorithms sit in a library and D3D12 + resources stay in Fensalir. That matches the doctrine and Asura's own shape + (CultLib algorithms, consumer-owned rendering). +- The July migration plan's authority sentence: "CultMath owns how numeric + primitives behave; GameCult.Geometry owns what those primitives mean in + space" (CultLib `docs/cultmath-gamecult-geometry-migration-plan.md:56-57` at + `6a65369`). CultLib main adopted the same split at `63d6094` (2026-08-26), + and `HlslMirrorTests.cs:7-15` on main enforces the CultMath side. +- The idea of deleting `CultVec2`/`CultVec3` (CultLib `317b7d5`). Main still + carries both (see Q-F4). + +Rotted: +1. **Ownership of the planet field.** The donor's objective + (`docs/cultmath-planetary-field-runtime-plan.md:3-15` at `42778c1`) makes a + shared library the canonical planet field for "Aetheria's daemon + simulation, Unity's three-dimensional planet renderer, Fensalir's D3D12 + 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 | +| Unity packaging | `org.gamecult.geometry` | `org.gamecult.cultlib` (Cut 3, default A) | donor | + +--- + +## 3. Cuts + +Every cut below is deletion or documentation, with no new code. Numbers are +prefixed `P` so they cannot be confused with Asura's cut numbers. + +### P0. Operator rulings (Self; blocks everything below) + +Q-F1 and Q-F3 must be ruled before P1. Q-F2 gates P3. Q-F4 gates P4. + +### P1. Archive the refs, then delete them (Fensalir, CultLib, standalone CultMath) + +- **Precondition:** Q-F3 ruled. The non-planet work on the Fensalir donor + (Bokusho, Eve surface, Leap) must be either archived with it or adopted + separately first. +- **Deletes first:** + - Fensalir remote branches: `codex/geometry-ownership-migration` (`42778c1`) + and `codex/leap-packed-depth` (`492d123`, a strict ancestor). + - CultLib remote branches: `codex/geometry-ownership-migration` (`6a65369`) + and `codex/geometry-cultmesh-unity-release` (`b65619f`). + - The standalone CultMath remote `codex/geometry-ownership-migration` + (`b43cf49`), already an ancestor of CultMath `main`, so deleting it loses + nothing. +- **Then:** + - An annotated tag at each unique tip, so every commit stays reachable: + - Fensalir `archive/geometry-ownership-migration` → `42778c1`; + - CultLib `archive/geometry-ownership-migration` → `6a65369`; + - CultLib `archive/geometry-cultmesh-unity-release` → `b65619f`, if a + branch ref is wanted beyond the release tags that already pin it. + - The tag message names this map and the ruling. + - The published `gamecult-geometry{,-rs,-unity}-v0.1.0` tags stay: they are + released, immutable artifacts. +- **Authority map:** + - Owner of planet shape: Asura. Owner of numeric primitives: CultMath. + - Derived: the archive tags are history only, and nothing resolves a build + from them. + - Forbidden writers: any branch that could be merged back to revive + `Planetary*` in CultLib, or `cultmath_planetary_*` in CultMath. + - Shared paths: none. No mainline build references these refs; the mainline + probe proves Fensalir main builds without them. +- **Verification:** + - `git merge-base --is-ancestor archive/` for each deleted + ref, run before deleting. + - `git ls-remote --heads origin | grep -c geometry-ownership` gives 0 in all + three repos. + - Mainline probe re-run (Fensalir `e053486` + CultLib main): 167/167. + - Negative: `git grep -c "Planetary" origin/main -- src packages` in CultLib + stays at its current count (only `HlslMirrorTests.cs:12,14`). +- **Subtraction:** 5 remote branch refs, net of the 2–3 archive tags. The + unmerged surface removed from view is Fensalir +11,650/−591 (116 files) and + CultLib +14,933/−317 (156 files). No mainline lines change. +- **Hands budget:** about 20k tokens. It is ref surgery and needs the + operator's credentials for the pushes. + +### P2. Asura documents: replace "do not delete it" with the ruling (Asura, docs only) + +- **Deletes first, at Asura `63f9216`:** + - `docs/target.md:110-113`: the "Not consumers" bullet naming the branches. + - `docs/cut-map.md:814-820`, Cut 3's "Not a source", including + "do not delete it; see findings". +- **Then:** + - One sentence in each place: the July planetary line was retired on + 2026-09-30 and archived at the tags from P1; Asura is the sole owner of + planet shape. + - `cut-map.md:1132-1135` and `:1736` keep their technical reason (raw-phase + lerp, not Phacelle). They point at the archive tag instead of the branch + names. + - `target.md:252` (the substrate fact about the `unity-v0.1.0` tag) stays + true and is unchanged. +- **Authority map:** `target.md` owns the ends, so the retirement ruling is + recorded under its dated operator rulings. The cut map only points at it. +- **Verification:** + - `rg -n "codex/geometry-" docs/` in Asura gives 0 lines. + - `rg -n "do not delete it" docs/` gives 0. +- **Subtraction:** about −8 +4 lines. +- **Timing:** Self can do this in the same pass that records the rulings. It + does not touch 2a-ii. + +### P3. Fensalir main: record the disposition; flow docs per Q-F2 (Fensalir `main`) + +- **If Q-F2 = retire. Deletes first, at `e053486`:** + - `docs/planetary-flow-organ.md`, `docs/planetary-flow-nn-architecture.md` + and `docs/planetary-flow-implementation-plan.md` (936 lines); + - `docs/README.md:39-44`; + - `state/map.yaml:114-120`, and the flow entries in `next_actions` (the + bullets beginning "Build the planetary flow organ" and "For planetary flow + modeling", about 10 lines after `:171`). +- **If Q-F2 = park:** add one "Status: parked 2026-09-30, no consumer" line at + the top of each of the three docs instead. +- **Then, either way:** + - One line in `state/map.yaml`: Fensalir renders no planet terrain beyond + the Zyphos demo's analytic sphere. Planet shape for GameCult games is + Asura's. If Fensalir ever renders an Asura body, it lowers Asura's field + HLSL and owns only D3D12 resources. + - Fix `README.md:141` from "planetary/fractal terrain demo" to "fractal + terrain demo", only if the operator agrees the demo carries no planet + ambition. Otherwise leave it. +- **Authority map:** Fensalir owns its renderer and demos. It claims no planet + field. +- **Verification:** + - `git grep -n -i "planetary" origin/main -- docs/README.md state/map.yaml` + matches the intended remainder. + - The mainline Fractal probe still gives 167/167; docs cannot break it. +- **Subtraction:** retire gives about −950 lines and +2. Park gives +3. +- **Hands budget:** about 15k tokens. + +### P4. CultLib: collapse `CultVec2`, `CultVec3` and `CultRect` into CultMath, before Asura Cut 3 (only if Q-F4 = A) + +- **Why now:** + - Asura Cut 3 (`docs/cut-map.md:801`) ships `GameCult.Geometry.dll` in + `org.gamecult.cultlib` 1.1.0. + - Both extractors take `CultVec3 origin`, so the duplicate type becomes + Unity public API in that release. Deleting it afterwards is a semver + major. + - `CultGeometrySurfaceNets.cs:83` already converts `CultVec3` to `float3` + internally. +- **Deletes first, at CultLib `93fe1b9`:** + - In `src/GameCult.Geometry/CultGeometryPrimitives.cs`: + - `CultVec2` (`:11-60`) and `CultVec3` (`:62-126`); + - `CultRect` (`:128-197`), which duplicates CultMath `rect` + (`packages/cultmath/src/CultMath/rect.cs:7`, added 2026-08-07). + - `CultCircle` and `CultSphere` stay; they are spatial meaning, and that is + Geometry's. They are rebuilt on `float2`/`float3`. +- **Then:** + - `CultGeometryIsoSurface.Extract(..., float3 origin = default, ...)` + (`:42`) and `CultGeometrySurfaceNets.Extract(..., float3 origin = default, + ...)` (`:47`); delete the conversion at `:83`. + - Update the tests: `GeometryDocumentTests.cs` (16 uses), `IsoSurfaceTests.cs` + and `SurfaceNetsTests.cs`. + - Update `src/GameCult.Geometry/README.md`. +- **Explicitly out of scope:** CultMesh's native-slice value-type names + `"CultVec2"` and `"CultVec3"` (`packages/cultmesh-ts/test/cultmesh.test.ts:1717,2440,2453`, + and `src/GameCult.Mesh/docs/public-api.md`). Those are wire vocabulary with + their own owner. Record them as a finding for the CultMesh owner; do not + rename them here. +- **Authority map:** + - Owner: CultMath owns vector and rectangle values. Geometry owns what they + mean in space. + - Forbidden writers: any type in `GameCult.Geometry` that carries x/y/z + fields. +- **Verification (Yggdrasil):** + - `dotnet test tests/GameCult.Geometry.Tests`, with the per-file counts. The + Surface Nets byte-identical fixtures from Asura Cut 2 (31 fixtures) must + stay byte-identical. + - Negative: `git grep -n "CultVec\|CultRect" -- src/GameCult.Geometry tests/GameCult.Geometry.Tests` + gives 0. + - Stryker `--since:93fe1b9` on the touched files. +- **Subtraction:** about −190 lines of duplicate value types, plus test + churn, net negative. +- **Sequencing:** after Q13 (it blocks Cut 3 anyway) and before Cut 3's + release tag. It can run beside 2a-ii-b. +- **Hands budget:** about 60k tokens. + +--- + +## 4. Sequencing against Asura + +```text +Asura: 2a-ii-a snoise fix (Hands done 0a5f4bf, Soul running) -> 2a-ii-b Phacelle -> 2a-ii-c cultmath 0.3.0 (with bounded LS, already on main 93fe1b9) + \ + Q13 (Geometry CultReference strings) ------------------------------------> Cut 3 cultlib-unity 1.1.0 ---> 4a ... + P4 (Q-F4 = A) ------------------/ (must land before this tag) + +This map: P0 rulings -> P2 (Asura docs, any time) ; P1 (refs, after Q-F3) ; P3 (Fensalir docs, after Q-F2) +``` + +- None of P1–P3 touches CultMath or CultLib source, so none can collide with + the snoise fix, Phacelle, or the 0.3.0 release that carries bounded least + squares. +- P4 is the only cut on Asura's critical path. It must land before Cut 3's + tag, and it touches `GameCult.Geometry`, which Cut 3 packages. Run it in its + own worktree from `main`, never in the snoise worktree. +- The Asura campaign gains nothing from the donor. 4b-iii stays a fresh port. + +--- + +## 5. Operator questions (one fork each) + +### Q-F1. What is a planet in Fensalir *for*? + +Asura answers this for Aetheria: orbital tiny planets, no landing. The donor +answered it for "every renderer, including an Aetheria daemon and strategic +maps", and that answer has been overtaken. What remains is Fensalir's own +Zyphos demo: the domain catalog runs from planet to continent, forest, tree, +leaf and pebble field (`ZyphosSpatialDomainCatalog.cs` on main). That is +landing-scale LOD, which Asura rules out. + +- **A. No planet terrain in Fensalir for now.** Retire the donor (P1–P3). If a + GameCult game later wants planets in Fensalir, it lowers Asura's field HLSL. +- **B. Zyphos needs landing-scale planets.** That is a new campaign with its + own target. It would decide whether streaming LOD extends Asura's field + (one field, two lowerings) or is a separate organ. It must not revive the + July runtime as a second planet-field owner. +- **C. Keep the donor alive as a Fensalir-private runtime.** This recreates a + second planet-field authority beside Asura, over an orphaned library. + +**Recommended: A.** Nothing on main consumes the donor. The Zyphos client has +not moved since 2026-05-30. B stays open as a future campaign and loses nothing +by waiting. + +### Q-F2. The planetary *flow* documents in Fensalir: what are they for now? + +There are three documents (936 lines) for a cube-sphere ocean and atmosphere +advection organ with neural-network budgets (FlowNet-S/M/T). No code exists, +they were last touched 2026-05-29, and their only client is the Zyphos demo. +Asura is not affected. Separately, Asura's target queues "the flow field as the +single owner of motion in Aetheria" as a later campaign. That is a different +flow. + +- **A. Retire** (P3 deletes them). If Zyphos oceans return, their campaign + starts from a target, not from these plans. +- **B. Park them** with a status line. + +**Recommended: B, weakly.** They carry real research (datasets, model sizing), +nothing depends on them, and parking costs 3 lines. Choose A if you want the +docs tree to describe only live machinery. + +### Q-F3. The non-planet work that rides on the same Fensalir branch + +The donor ref also holds 66 Bokusho commits (a D3D12 port beside the TS/WebGPU +`bokusho` repo), 10 Eve native-surface commits, and the Leap/stereo depth, +reservoir and loopback-audio work. None is on Fensalir main. + +- **A. Archive the whole ref** under one tag in P1, and route each of those + lines to its own adoption decision later. +- **B. Adopt them before touching the ref.** + +**Recommended: A.** An archive tag keeps every commit reachable, so B is still +possible afterwards. This map does not judge those lines. + +### Q-F4. Delete Geometry's duplicate vectors before Asura Cut 3 ships them to Unity? + +What is `CultVec3` for? Nothing that `float3` does not already do, and the +surface-nets code converts it straight to `float3` (`CultGeometrySurfaceNets.cs:83`). +The July branch deleted it, and main never did. + +- **A. P4 before Cut 3:** no semver cost, and about −190 lines. +- **B. Ship Cut 3 as is:** a later deletion is a major bump for + `org.gamecult.cultlib`. + +**Recommended: A.** It is the one piece of the geometry half that is right, and +it gets more expensive after Cut 3's release. + +## 6. Findings not assigned to a cut + +- **Unreproducible build (CultLib `6a65369`).** The July CultLib branch + restores `CultMath 0.1.0` from a git-ignored local feed. The "Fensalir and + Aetheria green" receipts in its progress document + (`docs/cultmath-gamecult-geometry-migration-progress.md`, stage 6) could not + have been reproduced from committed sources alone. The branch is being + retired, so this is recorded as a scar and needs no fix. +- **A failing test in the donor's July world.** + `ProjectionTests.CheckedInProjectionReportMatchesSampler` fails on Linux in + the July composite (169/170), and the same test passes on mainline. The most + likely cause is a platform difference in the regenerated report. It was not + chased, because the code is being retired. +- **CultMath's `HlslMirrorTests.cs:7-15`** is a negative spelling test. It + guards against planetary kernels returning to CultMath and is cited by Asura + as the ruling's enforcement. Keep it; after P1 its only threat is gone, but it + is cheap and names the boundary. +- **Stopgap note.** Composite multi-repo snapshots are how a Fensalir build + can be probed on Yggdrasil at all: `ygg-verify.sh` takes one repo, and + Fensalir needs sibling checkouts. The Idunn verify campaign should take a + multi-repo revision set rather than rely on this trick. diff --git a/packages/AquaSynth.Core.0.1.0-alpha.2.nupkg b/packages/AquaSynth.Core.0.1.0-alpha.2.nupkg deleted file mode 100644 index 3b7ea64..0000000 Binary files a/packages/AquaSynth.Core.0.1.0-alpha.2.nupkg and /dev/null differ diff --git a/packages/AquaSynth.Faust.0.1.0-alpha.2.nupkg b/packages/AquaSynth.Faust.0.1.0-alpha.2.nupkg deleted file mode 100644 index 45b861f..0000000 Binary files a/packages/AquaSynth.Faust.0.1.0-alpha.2.nupkg and /dev/null differ diff --git a/packages/AquaSynth.Faust.0.1.0-alpha.3.nupkg b/packages/AquaSynth.Faust.0.1.0-alpha.3.nupkg deleted file mode 100644 index bd1391e..0000000 Binary files a/packages/AquaSynth.Faust.0.1.0-alpha.3.nupkg and /dev/null differ diff --git a/src/Aquarium.Engine/Aquarium.Engine.csproj b/src/Aquarium.Engine/Aquarium.Engine.csproj index 911e96a..add87e4 100644 --- a/src/Aquarium.Engine/Aquarium.Engine.csproj +++ b/src/Aquarium.Engine/Aquarium.Engine.csproj @@ -1,6 +1,7 @@ + $(MSBuildThisFileDirectory)..\..\..\CultLib WinExe net10.0 enable @@ -22,7 +23,7 @@ - + diff --git a/src/Saga/README.md b/src/Saga/README.md deleted file mode 100644 index c10367e..0000000 --- a/src/Saga/README.md +++ /dev/null @@ -1,165 +0,0 @@ -# Saga - -**Planetary flow middleware for worlds that refuse to sit still.** - -Saga is Fensalir's stochastic planetary flow organ: a cube-sphere native system -for streaming atmosphere, ocean, gas, debris, heat, and other transport fields -across whole planets at arbitrary level of detail. - -It is built for studios that want living planets without hand-authoring a fake -weather loop, baking one heroic texture atlas, or stapling a particle system to -a skybox and calling it climate. Saga turns terrain, bathymetry, atmospheric -state, ocean reanalysis, arbitrary forcing sources, and learned stochastic -transport into compact flow packets the engine can stream, inspect, simulate, -and render. - -No poles. No flat-Earth texture tricks. No private renderer arrows pretending -to be physics. Just a planet-scale flow field with provenance, uncertainty, and -enough teeth to survive a camera dive from orbit to coastline. - -## The Pitch - -Modern games and simulation tools can render planets. They rarely make them -move like planets. - -Saga is the missing middleware layer between static world geometry and dynamic -planetary behavior: - -```text -planet domain + relief + state + forcing + learned transport --> stochastic advection packets --> streaming flow pages, particles, weather, debris, clouds, currents, debug -``` - -Use it for: - -- ocean surface currents and debris drift; -- atmospheric wind fields and gas-giant bands; -- volcanic, nuclear, magical, artificial, or stellar energy injection; -- multi-sun lighting and thermal forcing; -- tides, rotation, Coriolis-dominated flow, and exotic planetary regimes; -- gameplay-visible particles, clouds, smoke, spores, ash, foam, or pollutants; -- offline worldbuilding, cinematic previs, and realtime renderer guidance. - -Saga is not a weather forecast API wearing a costume. It is a reusable engine -organ for representing and streaming stochastic flow over Fensalir's planetary -domains. - -## What Makes It Different - -### Cube-Sphere Native - -Saga speaks Fensalir's optimized cube-sphere address space directly. Lat/lon -grids are source formats, not runtime truth. Every packet belongs to a tile, -LOD, projection, local tangent frame, and provenance chain. - -### Stochastic By Design - -Real flow is not one obedient arrow. Saga packets carry mean transport, -diffusivity/covariance, confidence, and optional transition kernels. Renderers -can draw clean vectors; simulations can keep the uncertainty instead of -throwing it into the sea and acting surprised later. - -### Arbitrary Forcing - -The evaluator is not Earth-locked. Saga conditions on explicit rotation and -Coriolis features plus variable-cardinality energy, mass, and momentum forcing -sources: - -- one sun, binary suns, or no sun worth trusting; -- moons and tidal drivers; -- eruptions, impacts, reactors, orbital mirrors, industrial heat, spellstorms; -- gas-giant internal heat and extreme atmosphere bands; -- transient shock events and persistent planetary gradients. - -Source count is data, not architecture. - -### Built For Streaming - -Saga is designed for camera-relative planet rendering: - -- coarse flow far from the camera; -- refined flow where the player, shot, simulation, or uncertainty demands it; -- parent/child LOD consistency; -- cross-face seam continuity; -- explicit stale-page and model-version checks. - -The renderer samples packets. It does not invent climate in a pixel shader -because the schedule got nervous. - -## Architecture - -Saga lives inside Fensalir because Fensalir already owns the machinery it needs: - -- `CubeTileKey` and cube-sphere projection math; -- field evidence layers, especially `Transport`; -- selected cuts and residency planning; -- GPU resource pages and debug telemetry; -- renderer/simulation lowering boundaries. - -Saga's live shape: - -```text -source manifests - -> cube-sphere dataset bakes - -> training shards - -> FlowNet-S / FlowNet-M / optional FlowNet-T - -> Saga stochastic advection packets - -> Fensalir Transport field claims - -> GPU pages, particle advection, weather visuals, debug probes -``` - -## Model Line - -Saga uses a staged neural architecture plan: - -- `FlowNet-S`: 8-15M parameters, local baseline for ingestion, calibration, and - export. -- `FlowNet-M`: 40-60M parameters, first serious runtime/distillation model with - local tile encoders, a cube-sphere graph processor, and stochastic heads. -- `FlowNet-T`: 150-300M parameters, optional global teacher for offline - distillation and ensemble behavior. - -The model emits stochastic advection parameters, not just velocity: - -- tangent mean velocity; -- positive-semidefinite 2x2 covariance/diffusivity; -- calibrated confidence; -- optional neighbor transition logits; -- provenance and model identity. - -## Data Spine - -Saga's first research targets: - -- ETOPO / GEBCO for relief and bathymetry; -- ERA5 for atmosphere; -- GLORYS / OSCAR / HYCOM candidates for ocean currents; -- PlasticAdrift and drifter transition matrices for stochastic debris - transport validation; -- synthetic analytic worlds for contract and seam tests before the ocean gets - expensive. - -Every source needs a manifest. No manifest, no training shard. The altar wants -receipts. - -## First Vertical Slice - -1. Define the Saga packet contracts. -2. Bake a synthetic cube-sphere flow world. -3. Export Transport field pages. -4. Render/debug vectors, covariance ellipses, confidence, and selected LOD. -5. Train FlowNet-S on synthetic + tiny ERA5 wind. -6. Add ocean surface current targets. -7. Add PlasticAdrift transition validation. -8. Promote FlowNet-M when the baseline has failed in useful, measured ways. - -## Boundary - -Saga owns reusable planetary flow mechanics. Clients own meaning. - -Fensalir clients may ask for currents, winds, debris drift, cloud motion, ash -transport, or gas-giant bands. They may not create a private flow authority that -bypasses Saga packets and Fensalir Transport claims. - -That is the deal: the planet can be wild, but the authority has to be clean. diff --git a/src/Saga/Saga.csproj b/src/Saga/Saga.csproj deleted file mode 100644 index 26dee97..0000000 --- a/src/Saga/Saga.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - net10.0 - enable - enable - - - diff --git a/src/Saga/SagaOrgan.cs b/src/Saga/SagaOrgan.cs deleted file mode 100644 index 89de3ea..0000000 --- a/src/Saga/SagaOrgan.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Aquarium.Engine.Fractal; -using System.Numerics; - -namespace Saga; - -public static class SagaOrgan -{ - public const string Name = "Saga"; - - public const string Description = - "Cube-sphere stochastic planetary flow for Fensalir Transport fields."; -} - -public readonly record struct SagaFlowDomain( - string DomainId, - double PlanetRadiusMeters, - string ProjectionId, - string GridVersion); - -public readonly record struct SagaFlowRequest( - SagaFlowDomain Domain, - CubeTileKey Tile, - int SampleResolution, - double TimeSeconds, - SagaCoriolisFrame Coriolis, - IReadOnlyList ForcingSources); - -public readonly record struct SagaCoriolisFrame( - Vector3 RotationAxis, - double AngularVelocityRadiansPerSecond, - double LocalF, - Vector2 LocalBeta); - -public readonly record struct SagaForcingSource( - string SourceId, - SagaForcingKind Kind, - SagaForcingGeometry Geometry, - Vector3 PlanetDirection, - Vector3 LocalTangentDirection, - double Intensity, - double RadiusMeters, - double Attenuation, - double TimePhase); - -public readonly record struct SagaAdvectionSample( - Vector2 MeanVelocity, - SagaCovariance2D Diffusivity, - double Confidence); - -public readonly record struct SagaCovariance2D(double C00, double C01, double C11); - -public enum SagaForcingKind -{ - Energy, - Mass, - Momentum, -} - -public enum SagaForcingGeometry -{ - Directional, - Point, - Area, - Volume, -} diff --git a/state/map.yaml b/state/map.yaml index 2258fa5..3a7327d 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -21,12 +21,6 @@ current_model: implementation: src/Aquarium.Engine.Fractal tests: tests/Aquarium.Engine.Fractal.Tests receipt_tool: tools/Aquarium.Fractal.Receipt - saga: - implementation: src/Saga - purpose: > - Stochastic planetary flow middleware for cube-sphere Transport fields, - arbitrary forcing, explicit Coriolis/rotation conditioning, and learned - atmosphere/ocean/debris advection packets. demos: fensalir_splash: src/Aquarium.Fensalir minimal: src/Aquarium.Sample.Minimal diff --git a/state/scratch-fractal-surface-visible.md b/state/scratch-fractal-surface-visible.md deleted file mode 100644 index 438d920..0000000 --- a/state/scratch-fractal-surface-visible.md +++ /dev/null @@ -1,18 +0,0 @@ -# Fractal Surface Visible Slice - -Objective: make the live Zyphos scene test authored fractal reservoir terrain instead of a decorative proxy. - -Kept: -- GPU-resident 2M splat reservoir field. -- Separate SDF, PBR, and radiosity reservoir layers. -- `.aquageo` selected-cut program lowering. - -Changed: -- Packed IFS transform rows now preserve cube-sphere tile face/level/x/y. -- Compute maps authored splats onto cube-sphere faces instead of a generic +Z cap. -- Visible splats render as tangent-frame surface patches, not camera-facing stickers. -- Zyphos camera targets the selected domain while keeping the parent as orbit anchor. - -Still not good enough: -- The live view is fast and the reservoir is populated, but the current surface-consumption pass still reads too abstractly under the noisy starfield. -- Next coherent cut is a real clustered surface resolve or ray-query style splat surface pass, not more billboard cosmetics.