Blacksite/docs/adr/0005-prefab-instance-and-asset-registry.md
Rbanh 0553a85220
Some checks are pending
CI / Format, lint, test, build (push) Waiting to run
Build production-ready editor authoring workflows
2026-07-11 12:41:04 -04:00

35 lines
1.8 KiB
Markdown

# ADR 0005: Prefab Instance and Asset Registry
## Status
Accepted for asset identity; structural ownership superseded by
[ADR 0027](0027-stable-prefab-ownership-and-variants.md)
## Context
Editor prefab placement and content pipeline work (H1/H2) require stable asset identity across sessions. The asset browser previously regenerated UUIDs on every sync, breaking references.
## Decision
- Persist stable `AssetId` (UUID) per `assets/` path in `assets/.index/registry.ron`.
- Scene-instance `ModelRef` stores the registry UUID plus a cached source path. Hydration resolves
the UUID-keyed generated manifest first, allowing uniquely identified model moves to retain scene
and animation references.
- Catalog refresh reconciles a missing model record to one new path only when its generated content
hash has exactly one match. Copies and ambiguous matches receive new IDs.
- Introduce `PrefabInstance { asset_id, source_path, overrides_ron }` on placed prefab roots alongside hydration via `PrefabRef`.
- Scene save includes `PrefabInstance` and gameplay marker components from `shared`.
- The initial structural boundary treated instance contents as read-only and required Unpack before
authored structural edits. ADR 0027 replaces that boundary with explicit generated-member
ownership while retaining this ADR's asset and instance identity.
## Consequences
- Prefab paths can be resolved through the registry for dependency tracking.
- Override apply/revert (H2) builds on `overrides_ron` without changing the instance component shape.
- Stable child identity, authored local children, nested instances, variants, and recursive graph
validation are defined by ADR 0027.
- Registry must be version-controlled with the project.
- Legacy path-only `ModelRef` values remain readable but require reassignment before they gain stable
move resolution.