5.2 KiB
FBX External Texture Dependency Evaluation
Evidence record — not current product guidance. Use the documentation index for current behavior and architecture.
Date: 2026-07-13
Issue: Gitea #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.
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.