Blacksite/docs/editor/evaluations/deterministic-asset-fingerprints
2026-07-17 23:40:49 -04:00
..
README.md feat: complete M2 content workspace and inspector 2026-07-17 23:40:49 -04:00

Deterministic Imported-Asset Fingerprints Evaluation

Evidence record — not current product guidance. Use the documentation index for current behavior and architecture.

Date: 2026-07-13

Issue: Gitea #56

Content-addressed implementation: e1b2f86a495496da83947777d332d00a15a1779d

Stable publication ordering: cbd380a9413411667a83f74b66c5a2feda5e1af7

Release-candidate commit: Not nominated

Source validation: Pass

Fresh-checkout acceptance: Pass

Native acceptance: Pass

This record covers imported model, texture, and audio source identity plus the animation, static-mesh, and registry documents derived from those sources. The permanent contract is owned by ADR 0043.

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 Workspace and all targets completed with warnings denied.
cargo test --workspace --all-targets --no-fail-fast Pass All workspace targets passed; editor reported 300 passing tests, scene reported 100 passing and one ignored manual-migration test, and shared reported 99 passing tests.
Fingerprint regressions Pass Exact-byte BLAKE3 identity, same-size byte changes, mtime-only drift, legacy timestamp tolerance, stable move recovery, imported-source coverage, semantic RON equality, and read-only validation are covered.
cargo validate-levels --project . Pass 81 dependencies, five known nonblocking import/platform findings, zero blocking errors.
cargo validate-samples --project . Pass Five samples, 86 dependencies, the same five nonblocking findings, zero blocking errors.
Packaged acceptance Deferred Explicitly deferred by project-owner direction; no packaged result is claimed.

Fresh Checkout

The first exact-commit run at e1b2f86 exposed one remaining nondeterministic path: native startup discovered catalog entries in filesystem order and rewrote assets/.index/registry.ron. That run failed the clean-checkout gate. Commit cbd380a sorts records by normalized project path before semantic comparison and adds a discovery-order regression test.

A new detached, LFS-hydrated worktree at cbd380a then completed native startup, asset scan, validate-levels, and validate-samples with an empty git status --short. Touching assets/models/RobotExpressive.glb while the editor was live also left the worktree clean. Its original nanosecond timestamp was restored after the test.

The following SHA-256 values were identical before startup, after startup, after the mtime-only change, and after both validators:

Artifact SHA-256
assets/.index/registry.ron 5beb11fb708729fb024e2e671596876bcf31b3c3fd2cea51da777db1d343644e
113f74df...static_mesh.ron 8d93e4d49c4f1d00ea8c482e8e1981f18d7a71224847c2b9f05f153982c5e80e
3f63f359...static_mesh.ron e47099d59ec4ce9dc977ba6a08ddee36f1d99c0f13d9278998f21cba72571585
b98ef565...static_mesh.ron edc77d61284c1010c8811d40bd7cedebfcbd6a3d88145e54d5c1ef7dc3a0a864
113f74df...animation.ron 0e678584aca470b36afd14b75a950d84a87d445438ba9b0a1e3416e863dda92a
3f63f359...animation.ron 45d3f9e9dcc64137f40a339c84512b6aba47102f7593aa6a9344891de68c0c07
b98ef565...animation.ron 691eb70ff05b2a4d03f51766f4c682a4171f7c76721f453c434f8de6fd936408

Native Acceptance

Workflow Result Evidence
Main checkout startup Pass The exact debug editor at e1b2f86 loaded the committed scene with populated hierarchy, viewport, Inspector, and Asset Browser, then exited with code 0.
Imported model browser Pass Opening assets/models rendered all three model rows and thumbnails; selecting the FBX exposed its registry-backed details without destabilizing the editor.
Fixed fresh checkout Pass The exact cbd380a editor launched from the detached worktree, rendered the complete editor frame, preserved every artifact byte, and exited with code 0.
Metadata-only drift Pass A live source touch produced no registry or manifest change and no Git diff.

Native Evidence

Fresh LFS checkout running the complete editor without rewriting imported artifacts

  • Gitea attachment asset 39: blacksite-issue56-fresh-fixed-cbd380a.png, 3426x1384 sRGB PNG, 1,787,700 bytes.
  • SHA-256: 2748ae3de31ff97933c9793b90475ffd38d54d7e9dd5d65937b699f81c73c9bc.

Imported model thumbnails and registry-backed FBX details in the live editor

  • Gitea attachment asset 40: blacksite-issue56-models-e1b2f86.png, 3426x1384 sRGB PNG, 1,940,210 bytes.
  • SHA-256: 064c0634ebac47b52516412b022247ba8aa6f155014db8f8d3cca86850509da7.

Both images are ordinary Gitea issue attachments. This record does not use repository raw or Git LFS pointer URLs.

Separate Finding

Selecting the painted-chair FBX exposed missing external texture dependencies in the committed fixture: painted_wooden_chair_02_diff_2k.jpg, painted_wooden_chair_02_nor_gl_2k.exr, and painted_wooden_chair_02_rough_2k.exr. The asset server reported six load errors because the paths were requested more than once. This is an FBX dependency/import-fixture defect, not a deterministic fingerprint failure, and is tracked separately in Gitea #58.

Release Use

The #56 source, fresh-checkout, and native feature-level acceptance record is complete. A future production candidate must rerun the clean-checkout protocol from the exact nominated commit. This record does not nominate a candidate or establish production readiness.