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:
parent
dc35ecc69b
commit
d755d9c5e0
11 changed files with 0 additions and 288 deletions
15
Fensalir.sln
15
Fensalir.sln
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -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.
|
||||
|
|
@ -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>
|
||||
|
|
@ -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,
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
Loading…
Reference in a new issue