48 lines
2.1 KiB
Markdown
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.
|