Record Fensalir mesh layout authority

This commit is contained in:
Meta Vens 2026-05-26 22:25:25 +01:00
commit 7f04e2c1e4
5 changed files with 21 additions and 11 deletions

View file

@ -214,10 +214,11 @@ buffer shape under one resource key. The evidence DSL can now plan generic
resource-backed claims over those declarations. Current blocker for the
remaining visual surface is not resource ownership; it is the selected render
lowerings that interpret mesh/page/volume resources as geometry, height/SDF/
material pages, or density/extinction/SDF3D domains. Mesh drawing also needs a
vertex attribute/material contract before the D3D12 path can bind a real
pipeline. That is engine ownership, not a reason for Mimir to create a parallel
renderer.
material pages, or density/extinction/SDF3D domains. Mesh layout authority is
split by source: imported/user meshes use the standard `PositionNormalUvColor`
layout, while generated meshes can be `PipelinePrivate` and leave byte
semantics to their selected lowering. That is engine ownership, not a reason
for Mimir to create a parallel renderer.
### 3. Calibration Constraint

View file

@ -185,7 +185,10 @@ a named invariant that the native runtime cannot protect yet.
only; mesh draw/material lowerings remain future engine work. Fensalir's
evidence DSL can also create generic resource-backed claims, so mesh/page/
volume resources can plan into backend packets before their selected render
lowerings exist.
lowerings exist. Mesh layout authority is split by source: imported/user
meshes use the standard `PositionNormalUvColor` vertex layout, while generated
meshes declare `PipelinePrivate` and let the selected lowering own the minimal
bytes it emits and consumes.
- `MimirRuntime` queues bioacoustic timeline PCM through Fensalir audio when the
active timing witness is allowed. `MimirAudioSynchronizationSettings.Mode`
selects `chirp-only`, `passive`, or `hybrid`; passive disables active
@ -329,9 +332,10 @@ a named invariant that the native runtime cannot protect yet.
volume textures, and mesh packages, and the evidence DSL can plan generic
resource-backed claims against those resources. The next engine cuts are
selected render lowerings that consume those resources as mesh geometry,
height/SDF/material pages, and density/extinction/SDF3D volumes. Mesh
rendering needs an explicit vertex attribute/material contract before code
should touch the draw path.
height/SDF/material pages, and density/extinction/SDF3D volumes. The generic
imported mesh ABI is no longer the blocker; the next renderer decision is
which selected generated/imported mesh lowering and material path should be
implemented first.
9. Move mic alignment, room suppression, voice separation, spatialization, and
stem generation into Faust/native DSP.
10. Keep the OBS bridge witness ledger as evidence before expanding receiver

View file

@ -342,8 +342,10 @@ textures allocate shader-readable GPU textures, and mesh packages own
can plan generic resource-backed claims over those declarations. The next
blocker is no longer resolver ownership; it is selected render lowerings that
consume mesh/page/volume resources as geometry, height/SDF/material pages, or
density/extinction/SDF3D domains. Mesh drawing specifically needs vertex
attribute and material semantics before Fensalir can honestly bind a pipeline.
density/extinction/SDF3D domains. Mesh layout authority is split by source:
imported/user meshes use the standard `PositionNormalUvColor` layout, and
generated meshes can be `PipelinePrivate` so each lowering owns the bytes it
emits and consumes.
The current teardown/migration map is
`docs/fensalir-rendering-rebuild-migration.md`, paired with Fensalir's

View file

@ -150,3 +150,4 @@
{"ts": "2026-05-26T21:11:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir now resolves VolumeTexture field resources. Contracts and DSL can declare GPU-resident 3D textures with width/height/depth/format/version, and D3D12FieldResourceRegistry allocates shader-readable Texture3D resources for future density/extinction/SDF3D lowerings. This is resource authority only, not a volume render lowering. Fensalir build/tests/headless reload, Mimir build, and both field smokes passed. Mesh remains the resolver that needs a real vertex/index ownership contract."}
{"ts": "2026-05-26T21:24:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir now resolves Mesh field resources as one package: Mesh.Vertices and Mesh.Indices describe the GPU vertex/index buffers, with topology, index format, bounds, submesh count, and version on the package. The DSL accepts `mesh id=... key=... vertices=... vertexStride=... indices=... indexFormat=... topology=...`, and D3D12FieldResourceRegistry allocates/reuses the GPU-resident buffers under the mesh resource key. This is resolver authority only; mesh draw/material lowerings remain future work. Fensalir build/tests/headless reload passed."}
{"ts": "2026-05-26T21:42:00+01:00", "type": "implementation", "status": "blocked", "note": "Fensalir's evidence DSL can now plan generic resource-backed claims with `claim id=... resource=... encoding=... layer=...`, so Mesh, SurfacePage, and VolumeTexture resources reach backend packet planning. The remaining renderer cut is blocked on selected render-lowering contracts: Mesh drawing needs explicit vertex attribute/material semantics because count/stride/index format only describe buffer shape, not how bytes become position, normal, uv, color, transform, or material."}
{"ts": "2026-05-26T21:58:00+01:00", "type": "decision", "status": "ok", "note": "Clarified Fensalir Mesh layout authority: imported/user-facing FBX/OBJ-style meshes use the standard PositionNormalUvColor vertex layout, while generated meshes declare PipelinePrivate and let their selected lowering own the exact minimal byte layout. The generic mesh ABI is no longer the blocker; next renderer work should choose the first selected mesh/page/volume lowering and material path."}

View file

@ -336,7 +336,9 @@ accepted_design:
backing vertex/index buffers under the mesh resource key. The DSL can also
create generic resource-backed claims, so mesh/page/volume resources can
reach backend packet planning. Mesh draw/material lowerings remain future
engine work and need an explicit vertex attribute/material contract first.
engine work. Mesh layout authority is split: imported/user-facing meshes use
the standard `PositionNormalUvColor` vertex layout, while generated meshes
can be `PipelinePrivate` and let the lowering own the minimal bytes.
- `config/perfect-machine.example.json` declares live owners, sensors,
reservoir views, and runtime policy.
- `src/Mimir.Runtime/Synchronization` now includes the Perfect Machine module