From 32834e50ee900d098d9c2f2f9bd05a6936bd1d4a Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 26 May 2026 22:55:48 +0100 Subject: [PATCH] Record TubeField packet authority --- docs/fensalir-rendering-rebuild-migration.md | 6 ++++-- docs/implementation-plan.md | 4 +++- notes/current-system-map.md | 3 ++- state/evidence.jsonl | 1 + state/map.yaml | 4 +++- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/fensalir-rendering-rebuild-migration.md b/docs/fensalir-rendering-rebuild-migration.md index ebb41ab..73895c7 100644 --- a/docs/fensalir-rendering-rebuild-migration.md +++ b/docs/fensalir-rendering-rebuild-migration.md @@ -221,8 +221,10 @@ semantics to their selected lowering. TubeField now uses that generated-mesh lane explicitly: compute emits private geometry/indirect buffers and render binds them as a pipeline-private generated mesh before applying TubeField material state. The generated-mesh DrawIndexed indirect command signature is -shared ABI; TubeField only owns the argument buffer it emits. That is engine -ownership, not a reason for Mimir to create a parallel renderer. +shared ABI; TubeField only owns the argument buffer it emits. TubeField +expansion is now gated by selected backend packets, so explicit lowering +metadata cannot bypass validation/planning authority. 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 c98a13a..4094cc8 100644 --- a/docs/implementation-plan.md +++ b/docs/implementation-plan.md @@ -194,7 +194,9 @@ a named invariant that the native runtime cannot protect yet. TubeField source/ramp/material state. The DrawIndexed indirect command signature is now generated-mesh-owned rather than TubeField-owned, so future generated lowerings can reuse the same draw ABI with their own producer - buffers and material bindings. + buffers and material bindings. TubeField dispatch now obeys the selected + backend packet plan; unplanned `TubeSplineLowering` records are counted but + not expanded. - `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 diff --git a/notes/current-system-map.md b/notes/current-system-map.md index bbe6cea..152dbd0 100644 --- a/notes/current-system-map.md +++ b/notes/current-system-map.md @@ -349,7 +349,8 @@ emits and consumes. TubeField is the first concrete generated-mesh consumer: its compute pass emits private vertex/index/indirect buffers and render binds them as `D3D12PipelinePrivateGeneratedMesh` before applying source/ramp/material state. The DrawIndexed indirect command signature has been lifted to the -generated-mesh lane instead of being TubeField-owned. +generated-mesh lane instead of being TubeField-owned. TubeField expansion now +requires a planned TubeField backend packet for the lowering's claim. 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 632694c..5380465 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -153,3 +153,4 @@ {"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."} {"ts": "2026-05-26T22:49:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir TubeField now renders through the first explicit pipeline-private generated mesh lane. Compute owns the private D3D12TubeFieldVertex/index/indirect argument layout; render binds those buffers as a D3D12PipelinePrivateGeneratedMesh before applying TubeField source/ramp/material root bindings and ExecuteIndirect. This follows the generated-mesh option without adding a public imported mesh renderer."} {"ts": "2026-05-26T22:52:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir lifted the DrawIndexed indirect command signature from TubeField to the generated-mesh lane. TubeField still emits its own indirect argument buffer, but future pipeline-private generated mesh lowerings can share the same five-uint D3D12 DrawIndexedArguments ABI with their own producer buffers/material bindings."} +{"ts": "2026-05-26T22:55:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir TubeField expansion now follows selected backend packet authority. D3D12Renderer expands only TubeSplineLowerings whose claim has a planned TubeField packet; unplanned lowerings are counted in debug status instead of rendered. This prevents explicit lowering metadata from bypassing validation/planning."} diff --git a/state/map.yaml b/state/map.yaml index cff7b14..706bbd2 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -343,7 +343,9 @@ accepted_design: mesh binding: compute owns the private vertex/index/indirect layout, and render binds that generated mesh before applying TubeField material state. The generated-mesh DrawIndexed indirect command signature is shared ABI now; - TubeField only owns the argument buffer it emits. + TubeField only owns the argument buffer it emits. TubeField expansion is now + gated by the selected backend packet plan, so lowering metadata cannot + bypass validation/planning authority. - `config/perfect-machine.example.json` declares live owners, sensors, reservoir views, and runtime policy. - `src/Mimir.Runtime/Synchronization` now includes the Perfect Machine module