Remove dead Saga library, obsolete AquaSynth alpha packages, closed scratch note

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>
This commit is contained in:
Meta Vens 2026-09-13 14:02:49 +02:00
commit d755d9c5e0
11 changed files with 0 additions and 288 deletions

View file

@ -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

View file

@ -136,9 +136,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.

View file

@ -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

View file

@ -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.

View file

@ -1,14 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\Aquarium.Engine.Contracts\Aquarium.Engine.Contracts.csproj" />
<ProjectReference Include="..\Aquarium.Engine.Fractal\Aquarium.Engine.Fractal.csproj" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View file

@ -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<SagaForcingSource> 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,
}

View file

@ -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

View file

@ -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.