BS-JD-212 - Project content and derived-artifact contract #60

Closed
opened 2026-07-13 16:51:50 -04:00 by Rbanh · 1 comment
Owner

Summary

Define the hard-to-reverse storage, identity, typing, import-provenance, material-resolution, and crate-boundary contract for the M2 content-workspace refactor.

Decisions to record in ADR 0045

  • User content may live in any normal nested folder under the project assets/ root; external absolute links are out of scope.
  • Folder names are organizational only. Registry kind plus extension/parsed authored-document schema determines type.
  • AssetId is authoritative identity and project-relative path is mutable metadata/cached loading data.
  • Registry schema/resolution contracts live in shared::content; UI-independent scanning/import/transaction/processing lives in a content_pipeline crate consumed by editor, validator, watcher, and xtask.
  • The registry becomes a versioned document with project content defaults and typed asset kinds; packaged builds receive a stripped runtime catalog.
  • .index, .trash, thumbnails, and UUID-keyed derived artifacts are implementation-owned, hidden, and protected.
  • Import provenance/reimport recipes never become runtime dependencies on external absolute paths.
  • Material precedence is: runtime MaterialPropertyBlock -> scene/prefab assignment -> model-asset default -> imported source -> project default -> built-in DefaultGrid.
  • Missing layers inherit downward. A configured but broken authored reference uses DefaultGrid/project fallback with diagnostics rather than silently revealing another authored layer.
  • Reimport and moves reconcile by stable IDs and retain unresolved mappings as explicit orphans.
  • Ordinary loading is read-only; registry/settings/scene migrations are explicit through cargo upgrade-project.

Acceptance criteria

  • ADR 0045 is accepted and indexed.
  • ADR 0035 reflects model defaults, fallback precedence, and completed property-block behavior.
  • A fixed-folder consumer/migration inventory covers editor catalog/import, shared hydration, scene validation, project settings, build/package, watcher, and headless processing.
  • Existing project UUIDs and explicit renderer assignments have a deterministic migration path.
  • Managed-directory, terrain-fallback, and external-link boundaries are explicit.
  • No parallel catalog, renderer, or Material representation is introduced.

Dependency

Child of epic #59; blocks the other new implementation slices.

## Summary Define the hard-to-reverse storage, identity, typing, import-provenance, material-resolution, and crate-boundary contract for the M2 content-workspace refactor. ## Decisions to record in ADR 0045 - User content may live in any normal nested folder under the project `assets/` root; external absolute links are out of scope. - Folder names are organizational only. Registry kind plus extension/parsed authored-document schema determines type. - `AssetId` is authoritative identity and project-relative path is mutable metadata/cached loading data. - Registry schema/resolution contracts live in `shared::content`; UI-independent scanning/import/transaction/processing lives in a `content_pipeline` crate consumed by editor, validator, watcher, and xtask. - The registry becomes a versioned document with project content defaults and typed asset kinds; packaged builds receive a stripped runtime catalog. - `.index`, `.trash`, thumbnails, and UUID-keyed derived artifacts are implementation-owned, hidden, and protected. - Import provenance/reimport recipes never become runtime dependencies on external absolute paths. - Material precedence is: runtime MaterialPropertyBlock -> scene/prefab assignment -> model-asset default -> imported source -> project default -> built-in DefaultGrid. - Missing layers inherit downward. A configured but broken authored reference uses DefaultGrid/project fallback with diagnostics rather than silently revealing another authored layer. - Reimport and moves reconcile by stable IDs and retain unresolved mappings as explicit orphans. - Ordinary loading is read-only; registry/settings/scene migrations are explicit through `cargo upgrade-project`. ## Acceptance criteria - [ ] ADR 0045 is accepted and indexed. - [ ] ADR 0035 reflects model defaults, fallback precedence, and completed property-block behavior. - [ ] A fixed-folder consumer/migration inventory covers editor catalog/import, shared hydration, scene validation, project settings, build/package, watcher, and headless processing. - [ ] Existing project UUIDs and explicit renderer assignments have a deterministic migration path. - [ ] Managed-directory, terrain-fallback, and external-link boundaries are explicit. - [ ] No parallel catalog, renderer, or Material representation is introduced. ## Dependency Child of epic #59; blocks the other new implementation slices.
Rbanh added this to the M2 - Content workspace and asset pipeline milestone 2026-07-13 16:51:50 -04:00
Author
Owner

Closed against M2 candidate cf6eaba

The M2 tracking/architecture contract is implemented in accepted ADRs 0045–0049, shared registry/content types, the content-pipeline boundary, authored documents, modular editor composition, the debt ratchet, and canonical documentation. Architecture and documentation audits pass on the candidate.

Consolidated code, deterministic, native, and package evidence: M2 evaluation record. Candidate gates passed in full and the commit is published on codex/m2-content-workspace.

## Closed against M2 candidate `cf6eaba` The M2 tracking/architecture contract is implemented in accepted ADRs 0045–0049, shared registry/content types, the content-pipeline boundary, authored documents, modular editor composition, the debt ratchet, and canonical documentation. Architecture and documentation audits pass on the candidate. Consolidated code, deterministic, native, and package evidence: [M2 evaluation record](https://git.spacetrainclubhouse.com/Falling-Metal-Interactive/Blacksite/src/commit/cf6eaba53473d2825d0109f5a18f44794af5bd48/docs/editor/evaluations/content-workspace-m2/README.md). Candidate gates passed in full and the commit is published on `codex/m2-content-workspace`.
Rbanh closed this issue 2026-07-17 23:46:50 -04:00
Sign in to join this conversation.
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Falling-Metal-Interactive/Blacksite#60
No description provided.