feat(runtime): bound static preview graph roots
Docs Deploy / Build and Deploy MkDocs (push) Successful in 39s
Test / Lint (push) Failing after 2m4s
Test / Test (push) Skipped
Test / Render parity (push) Skipped

This commit is contained in:
2026-07-18 09:45:57 +04:00
parent 0eaa56c10b
commit 2772c39e41
4 changed files with 35 additions and 32 deletions
+8 -8
View File
@@ -13,7 +13,7 @@
| `RecordingBackend` | No | No | Optional CPU-side IDs only | `covered-planning` | Stable command capture for backend-neutral tests | Native window, Vulkan, GPU resource lifetime, pixels |
| `NullBackend` | No | No | Optional CPU-side IDs only | Usually `covered` for validation-only rows | Command stream framing and bounds validation | Capture stability, GPU execution, pixels |
| `VulkanAssetRenderer` | Yes | Yes | Yes | `covered-gpu` | Static original asset rendering: MSH/Texm/WEAR/MAT0/terrain through Vulkan | Animation/FX parity unless explicitly wired |
| `fparkan-game --backend static-vulkan` | Implemented; native run not yet accepted on a full corpus mission | Implemented static MSH draw | First prepared MSH from loaded mission assets | Not yet `covered-gpu` | Opt-in mission-to-native-window bootstrap, static MSH projection and synchronized teardown telemetry | Full mission scene, texture/material binding, placed transforms/orientation, camera, gameplay, original-runtime parity |
| `fparkan-game --backend static-vulkan` | Yes, GOG `Autodemo.00` | Yes, static MSH draw | First MSH from first mission root | `covered-gpu` only for the narrow static-preview bridge | Opt-in mission-to-native-window bootstrap, static MSH projection and synchronized teardown telemetry | Full mission scene, texture/material binding, placed transforms/orientation, camera, gameplay, original-runtime parity |
| Future rendered `fparkan-game` mode | Yes | Yes | Yes | `covered-gpu` plus original-evidence IDs | Mission-driven render snapshot execution and pixel capture | Original-runtime parity for animation/FX/x87 without dedicated captures |
## Rules
@@ -36,13 +36,13 @@
synthetic window descriptor и `VulkanPlanningBackend`. Opt-in `--backend static-vulkan`
уже создаёт native `winit` window и передаёт первую подготовленную MSH модели миссии в
`VulkanSmokeRenderer` с пустым списком materials (явный white-fallback). Режим использует
отдельный bounded preview loader: normal `load_mission` по-прежнему готовит все reachable
assets, тогда как preview останавливает asset preparation после первого root с mesh-backed
model. `--load-progress <file>` writes the last entered loader phase synchronously for timeout
diagnosis. This is not rendered acceptance: fresh GOG `MISSIONS/Autodemo.00/data.tma` test
with this scope still did not reach a window in the local 120-second runner; its checkpoint
was `Graph`, therefore no live report, pixel artifact or validation evidence exists for the
game path.
отдельный first-root preview loader: normal `load_mission` по-прежнему готовит все reachable
assets и весь graph, тогда как preview строит graph и готовит assets только для первого
mission root. `--load-progress <file>` writes the last entered loader phase synchronously for
timeout diagnosis. Fresh GOG `MISSIONS/Autodemo.00/data.tma` run passed in 38.7 seconds with
one presented frame, native 1280×720 swapchain (2 images), 7,372,800-byte readback hash
`10681850560830502773`, and validation warnings/errors `0/0`. This is `covered-gpu` evidence
for that narrow static-preview bridge only, not full-scene or original-renderer parity.
- `apps/fparkan-viewer` сейчас inspection-only CLI и не открывает live Vulkan
asset viewer.
- Следующий реальный milestone для rendered acceptance: `VulkanAssetRenderer`
+15 -16
View File
@@ -937,8 +937,8 @@ from a runtime slot or draw order.
### Opt-in mission static-Vulkan bridge
`fparkan-game --backend static-vulkan` is an explicit native-window experiment,
not the default planning path. After mission loading it selects the first
prepared MSH model, sends it through the existing static XZ clip-space
not the default planning path. It visits only the first mission root, selects
its prepared MSH model, sends it through the existing static XZ clip-space
projection and renders a requested number of frames through
`VulkanSmokeRenderer`; teardown rejects validation warnings/errors and reports
swapchain/readback telemetry. It deliberately supplies no material textures,
@@ -946,21 +946,20 @@ so the renderer's documented white fallback is used.
This is a narrow bootstrap from mission assets to a live Vulkan renderer. It
does not render every placed object, apply TMA transforms or orientation, bind
WEAR/MAT0/TEXM material data, or establish a game camera. A GOG
`MISSIONS/Autodemo.00/data.tma` attempt exceeded the local 120-second runner
limit before the window/report, so this mode has implementation and unit/lint
evidence only, not a corpus GPU acceptance claim.
WEAR/MAT0/TEXM material data, or establish a game camera. Fresh GOG
`MISSIONS/Autodemo.00/data.tma` evidence now proves the narrow GPU bridge: one
presented frame completed in 38.7 seconds with a native 1280×720 two-image
swapchain, 7,372,800-byte synchronized readback (FNV-1a
`10681850560830502773`) and validation warnings/errors `0/0`. This is not a
full-scene or original-renderer pixel-parity claim.
The preview now asks `load_mission_static_preview` for assets. Normal mission
loading remains full and transactional; the preview scope walks root spans in
TMA order and stops asset preparation after the first mesh-backed model. It is
therefore not a hidden relaxation of gameplay validation. A second GOG
`Autodemo.00` attempt with this narrower asset scope still exceeded 120 seconds
before opening a window. The diagnostic `--load-progress <file>` checkpoint
reported `Graph`, which proves the remaining startup cost is in prototype graph
construction/visual-dependency expansion rather than terrain decode, asset
preparation, window creation or the Vulkan draw loop. The timeout probe does
not distinguish individual graph suboperations; no renderer acceptance follows.
The preview now asks `load_mission_static_preview` for both graph and assets.
Normal mission loading remains full and transactional; preview graph traversal
and asset preparation are restricted to the first TMA root. It is therefore not
a hidden relaxation of gameplay validation. The preceding all-root preview
probe timed out at `Graph`; this reduction is what allowed the successful GOG
native run. If that first root has no usable MSH, static preview fails explicitly
rather than expanding later roots or pretending to render the entire mission.
`Land.msh` использует отдельный geometry-only bridge: validated `TerrainFace28`
сохраняет source triangle order, а его positions и packed UV0 попадают в тот же