Files
workinf_Blender_Wasm/docs/status/M12-01G.md
mes123456 5a11045ca5
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
Advance Blender 5.2 web parity through M12-03D
2026-08-17 17:30:27 -04:00

48 lines
2.1 KiB
Markdown

# M12-01G Status
status: done
task: preserve the old catalog index when an IndexedDB migration fails
updated: 2026-08-17 America/New_York
enablingTask: true
parityStateChange: false
## Scope
The production IndexedDB migration prepares schema v2 with the existing schema v1 parser and
migrator before opening a write transaction. It then rechecks the source row and atomically
writes the v2 index and migration receipt while deleting the v1 row. A concurrent source change
returns `REVISION_CONFLICT`; a transaction failure returns `STORAGE_TRANSACTION`.
The browser suite injects failures after the v2 target write and after the v1 source delete.
After each abort it closes and reopens the database, proving the database version, complete v1
index, unrelated legacy migration row, absent v2 row, and absent receipt are byte-for-byte
equivalent to the baseline. A subsequent retry commits the v2 index and receipt together.
## Evidence
- `WEB_TEST_PORT=5593 npm --prefix web run test:asset-catalog-indexeddb-migration` passed the
M12-01D production migration unit suite 3/3, the M12-01G artifact binding unit 1/1, and
Chromium 1/1.
- Both `AFTER_TARGET_PUT` and `AFTER_SOURCE_DELETE` returned `STORAGE_TRANSACTION`; reopening
IndexedDB after either fault produced the exact pre-migration snapshot.
- The successful retry preserved revision 7 and the M12-01D source/target hashes, removed only
the v1 row, and retained the unrelated migration row.
- Typecheck and `git diff --check` passed.
## Artifact Hashes
- production IndexedDB migration: `283a08bccb5ea301bd2aef8f01d4496972e3962f75e340479336c50e3539ba57`
- browser suite: `82c40f38898277b4053a9654537ec9c21bc01a784d1091831e139361575a81e9`
- artifact unit: `a4366a16f28b91b3ff213e0232308eaecd392731f27972cfa49a11568eb0feca`
- manifest: `2596067956211698f1b7a07d9423411e2db830b72e6b78593354953a568738e7`
## Next Task
`M12-01H`: prove catalog ordering and asset identity survive page and Worker restarts.
## Rollback
Remove the IndexedDB migration module, M12-01G unit/browser suites, manifest, package command,
and this status entry. Restore M12-01G to pending and `nextTask` to M12-01G. No parity ledger
rollback is required.