49 lines
2.3 KiB
Markdown
49 lines
2.3 KiB
Markdown
# M12-01D Status
|
|
|
|
status: done
|
|
task: define and verify schema v1 to v2 forward migration
|
|
updated: 2026-08-17 America/New_York
|
|
enablingTask: true
|
|
parityStateChange: false
|
|
|
|
## Scope
|
|
|
|
The forward migration first validates the current production schema v1 manifest and rejects
|
|
undeclared fields before conversion. Canonical UUIDs are preserved; legacy catalog IDs map
|
|
deterministically through RFC 4122 UUIDv5 with a fixed namespace. The v1 parent graph becomes
|
|
Blender cleaned slash paths, and assets receive SHA-256 IDs from Blender weak-reference identity.
|
|
|
|
Logical revision is preserved. Author/license/tag/source bindings, optional source paths,
|
|
preview receipts, and the complete library dependency graph survive migration. Metadata absent
|
|
from v1 receives explicit defaults recorded in the migration report. The report binds canonical
|
|
source/target hashes and every legacy-to-v2 catalog/asset identity mapping.
|
|
|
|
## Evidence
|
|
|
|
- `npm --prefix web run test:asset-catalog-migration` passed 3/3.
|
|
- A schema v1 fixture with three catalogs, two asset kinds, one preview, two source bindings,
|
|
and two dependent libraries migrated to the checked-in schema v2 golden and exact report.
|
|
- Repeating the migration on a cloned source produced byte-equivalent semantic objects and the
|
|
same source/target SHA-256 values. A canonical source UUID remained unchanged.
|
|
- M12-01C regression, typecheck, lint, and `git diff --check` passed.
|
|
|
|
## Artifact Hashes
|
|
|
|
- migration protocol: `6d74bc5605f94e05208eda82830192d38f88066dfc409058555a8876c785f226`
|
|
- generator: `954d15c02d68e3f644b57c8c4c136ce09bd037a0af2012bf74b97f681c77dd60`
|
|
- unit suite: `6b927e7a8238e4e0a77cc0fdf783b099d8add22c5f875df2299012eb32730186`
|
|
- v1 fixture: `1cc43d181afefd63b53cb9c3626bb58195fad20187d6e534adc1ecbe65f75da5`
|
|
- v2 fixture: `38e5d1771b3d2d63ce5e10268eac4513f2043b0cbf71ab1799c1868bc2aa97fb`
|
|
- migration report: `57b972c1bbb9ae326c3f264c225c21546682442ff3194fbc343e1c46a2cd410a`
|
|
- manifest: `fea9e01b51f64a7e9c15dcfc521b3e84636525ffbe0a849f7a6f1b0be2b02e9d`
|
|
|
|
## Next Task
|
|
|
|
`M12-01E`: define the read-only/block policy when a schema v1 reader encounters schema v2.
|
|
|
|
## Rollback
|
|
|
|
Remove the migration protocol, generator, unit suite, M12-01D fixtures/report/manifest, package
|
|
command, and this status entry. Restore M12-01D to pending and `nextTask` to M12-01D. No parity
|
|
ledger rollback is required.
|