72 lines
5.1 KiB
Markdown
72 lines
5.1 KiB
Markdown
# FBX External Texture Dependency Evaluation
|
|
|
|
**Date:** 2026-07-13
|
|
|
|
**Issue:** [Gitea #58](https://git.spacetrainclubhouse.com/Falling-Metal-Interactive/Blacksite/issues/58)
|
|
|
|
**Implementation commit:** `3e30c61c71fc942c33635aae3d922b70401fe7c7`
|
|
|
|
**Release-candidate commit:** Not nominated
|
|
|
|
**Source validation:** **Pass**
|
|
|
|
**Native acceptance:** **Pass**
|
|
|
|
This record covers path-safe FBX texture discovery, transactional bundle import, labeled runtime
|
|
images, static-mesh dependency publication, read-only project validation, and stable Asset Browser
|
|
states. The permanent contract is owned by
|
|
[ADR 0044](../../../adr/0044-sandboxed-fbx-external-texture-dependencies.md).
|
|
|
|
## Automated Verification
|
|
|
|
| Command or suite | Result | Evidence |
|
|
|------------------|--------|----------|
|
|
| `cargo fmt --all -- --check` | Pass | Formatting completed without changes. |
|
|
| `git diff --check` | Pass | No whitespace errors. |
|
|
| `cargo clippy --workspace --all-targets -- -D warnings` | Pass | Every workspace target completed with warnings denied. |
|
|
| `cargo test --workspace --all-targets` | Pass | All workspace targets passed. Editor reported 309 passing tests; scene reported 103 passing tests and one ignored manual migration test. |
|
|
| FBX dependency/import regressions | Pass | Six focused tests cover the committed chair, sibling `textures/`, `.fbm/`, missing bundles, parent traversal, and destination symlink containment. Thumbnail regressions cover terminal missing-texture state and first-render pipeline warmup. |
|
|
| `cargo validate-levels --project .` | Pass | 84 dependencies, six known nonblocking findings, zero blocking errors. The chair contributes one informational Authoring Override finding. |
|
|
| `cargo validate-samples --project .` | Pass | Five samples, 89 dependencies, the same six nonblocking findings, zero blocking errors. |
|
|
| Controlled Source Materials validation | Pass | Changing only the chair registry and static-manifest policies on top of `3e30c61` produced one `import.external_texture_missing` blocker for all three paths, then restoration returned to zero blockers. |
|
|
| Packaged acceptance | Deferred | Explicitly deferred by project-owner direction; no packaged result is claimed. |
|
|
|
|
## Native Acceptance
|
|
|
|
The exact debug binary built from `3e30c61` was launched as
|
|
`target/debug/editor --project .` under native Hyprland Wayland.
|
|
|
|
| Workflow | Result | Evidence |
|
|
|----------|--------|----------|
|
|
| First model-folder visit | Pass | The painted-chair model rendered on the first visit without manual thumbnail regeneration; the first offscreen PBR capture remained active through render-pipeline warmup. |
|
|
| Deliberately normalized chair | Pass | Selecting the committed Authoring Override chair showed one `3 missing \| override` dependency state and all three paths. Its mesh preview rendered neutrally, while source-material and missing-texture subassets settled to terminal warning icons instead of indefinite spinners. |
|
|
| Runtime log | Pass | The exact committed run emitted no stdout/stderr output, including no `bevy_asset`, `bevy_ufbx`, or path-not-found errors, and exited with code 0. |
|
|
| Checkout stability | Pass | Native startup, model browsing, thumbnail generation, and exit left `git status --short` empty. |
|
|
| Controlled broken fixture | Pass | On top of `3e30c61`, only the two chair `material_policy` fields were changed to `SourceMaterials`. The editor showed `Source Materials`, one red `3 missing` state, and terminal warning subassets. No asset/FBX/path error appeared; only two unrelated egui multi-pass layout warnings occurred at startup. |
|
|
| Fixture restoration | Pass | The two policy fields were restored to Authoring Override, `git status --short` returned empty, and `validate-levels` returned to zero blockers. |
|
|
|
|
## Native Evidence
|
|
|
|

|
|
|
|
- Gitea attachment asset 43: `blacksite-issue58-chair-normalized-3e30c61.png`, 1426x3384
|
|
RGB PNG, 1,802,863 bytes.
|
|
- SHA-256: `e492082f7eb3314bed6c97d424bc2281b125849552997f12931013a8e50630f2`.
|
|
|
|

|
|
|
|
- Gitea attachment asset 44: `blacksite-issue58-chair-broken-source-materials-3e30c61.png`,
|
|
1426x3384 RGB PNG, 2,042,528 bytes.
|
|
- SHA-256: `759297276287a05bf678ea72e26159d5cb4613d917db447a1cbc1efa562fc831`.
|
|
|
|
Both images are ordinary Gitea issue attachments. This record does not use repository raw or Git
|
|
LFS pointer URLs. A direct header check returned HTTP 200, `Content-Type: image/png`, inline content
|
|
disposition, and the recorded byte length for each attachment.
|
|
|
|
## Release Use
|
|
|
|
The #58 source and native feature-level acceptance record is complete. A future production
|
|
candidate must rerun representative sibling-folder and `.fbm` imports, the deliberate override
|
|
case, and the broken Source Materials case from the exact nominated commit. This record does not
|
|
nominate a candidate or establish production readiness.
|