Files
LumaWeb/experiments/0004-storage-design/RECOVERY.md
T
wt 30ee500054 S00-023: Document the interrupted storage experiment restart point
Changes: Preserve existing storage artifacts and add a scoped recovery inventory with missing outputs, unfinished rollback logic and next steps for S00-005; record recovery evidence and handoff.
Validation: Assignment/packet, manifest-lock inventory assertions, both node --check commands and tasks.py validate passed. Storage runtime, quota and browser behavior were not tested; original storage task remains unaccepted.

Task: S00-023
Agent: auto-storage-e6946c6f94e3
Role: storage
Action: claim
Status: review

Task title: Устранить прерывание: Выбрать IndexedDB wrapper и migration policy
2026-10-15 18:06:23 +07:00

2.7 KiB

Interrupted S00-005 checkpoint

Recovery task: S00-023; executor: auto-storage-e6946c6f94e3; 2026-10-15. This directory contains unfinished research, not an accepted storage design. S00-023 inventories preserved work and supplies a bounded restart point; S00-005 must still implement and independently review its original acceptance.

Preserved inputs

  • package.json / package-lock.json agree on fake-indexeddb 6.2.5. Lock metadata lists Apache-2.0, HTTPS registry URL and SHA512 integrity. This inventory does not replace S00-005 license/API/browser research.
  • .nvmrc and manifest select Node 24.21.0; manifest selects npm 11.19.0, consistent with accepted ADR 0001. Keep these pins for execution.
  • .npmrc retains registry HTTPS and strict-ssl. No TLS bypass is needed.
  • src/_probe.mjs is an exploratory in-memory open/delete probe.
  • src/rollback.mjs is an unfinished migration experiment. Both files pass node --check, but neither has been executed or accepted by this recovery.
  • docs/decisions/0004-storage-design.md has not been created.
  • check:quota points to missing src/quota-blocked.mjs; npm run check is not a completed test suite and must not be reported as passing.

Known unfinished rollback code

Static inspection shows failedUpgradeRollsBack and retryAfterRollbackSucceeds attempt createObjectStore("accounts") although seedV1 already created it. The intended unique-index data failure therefore has not been demonstrated. The promise in failedUpgradeRollsBack also overwrites req.onsuccess/onerror; its aborted flag cannot reliably distinguish success from failure. Assertions must verify the actual failure, preserved schema/data/indexes, and successful corrected retry. Do not rely on the existing PASS text as evidence.

Next assigned S00-005 session

Read the original card, STORE-001/STORE-004, ADR 0001 and this checkpoint. Complete candidate research and ADR, repair the incomplete rollback experiment, and implement the required quota/blocked-upgrade scenario within the original scope. Execute with the pinned runtime and locked dependencies, retaining normal HTTPS verification. Record actual outcomes and explicit fixture/browser limits. In-memory fake-indexeddb is not browser durability, quota or restart evidence. No shared persistence contract or application adapter has been established here.

The historical S00-005 interruption is recorded in state/runs/auto-storage-88c3286c6641/run.json (recovered_interruption=true). S00-025 independently resolved the subsequent launcher interruption. This fresh S00-023 session received its inputs and produced a reviewable recovery checkpoint. After independent QA and coordinator commit, a new executor may resume S00-005.