diff --git a/docs/fensalir-rendering-rebuild-migration.md b/docs/fensalir-rendering-rebuild-migration.md index 9188639..eee1a84 100644 --- a/docs/fensalir-rendering-rebuild-migration.md +++ b/docs/fensalir-rendering-rebuild-migration.md @@ -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 diff --git a/docs/implementation-plan.md b/docs/implementation-plan.md index a9062c5..e006b10 100644 --- a/docs/implementation-plan.md +++ b/docs/implementation-plan.md @@ -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 diff --git a/notes/current-system-map.md b/notes/current-system-map.md index 6475a7c..51e2676 100644 --- a/notes/current-system-map.md +++ b/notes/current-system-map.md @@ -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 diff --git a/state/evidence.jsonl b/state/evidence.jsonl index 33e0294..79f08f0 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -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."} diff --git a/state/map.yaml b/state/map.yaml index 9eca309..3f58489 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -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