Changes: Propose ADR 0004 comparing native IndexedDB, idb and Dexie; select idb 8.0.4 with account, transaction, quota, upgrade and key ownership policy. Repair rollback and add injected quota/blocked upgrade checks, exact wrapper lock, runtime guard, license texts and reproduction notes. Preserve historical recovery artifacts. Validation: Fresh-cache npm ci and npm run check passed on Node 24.21.0/npm 11.19.0; manifest, HTTPS/SHA512 and license checks passed. make check passed 72 tooling tests; tasks.py validate and git diff --check passed. Native browser quota, disk durability and process restart were not tested; ADR remains proposed for independent QA. Task: S00-005 Agent: auto-storage-0ce544ac4b40 Role: storage Action: claim Status: review Task title: Выбрать IndexedDB wrapper и migration policy
2.0 KiB
S00-005 handoff for independent QA
Executor: auto-storage-0ce544ac4b40 (storage), 2026-10-15. Outcome: proposed ADR 0004 selects idb 8.0.4 and defines transaction, quota, migration/connection and crypto key ownership policy. Scoped experiment now executes rollback, explicit quota-failure policy and blocked upgrade scenarios. Historical interrupted work was resumed only after independently reviewed S00-023; RECOVERY.md remains a historical inventory, not current test status.
QA input: docs/decisions/0004-storage-design.md, experiment README, exact lock/ license texts and src checks; full executor evidence at state/evidence/S00-005-auto-storage-0ce544ac4b40.md. Verify source scope and executor message, reproduce fresh-cache npm ci and npm run check on accepted Node 24.21.0/npm 11.19.0. Linux runtime used here: /tmp/luma-approved-toolchain/node-v24.21.0-linux-x64/bin. The wrapper lock digest is c6c416a92b1a3d10e3fb83bcdbbc803114adbd1dd24e06f5dceebb4b59f9ea7b.
Actual results: fresh-cache install and selected-wrapper fixture checks exit 0; make check exit 0 (296 tasks, 72 tooling tests). Foundation checks are not app readiness. Rollback now causes actual unique-index ConstraintError, validates schema/data restoration, retry and same-process reopen. Injected quota failure aborts history/checkpoint together and preserves account B. Held old connection produces versionchange/blocked, closes to release v2, and stale v1 is refused.
Limits: browser inventory empty. Quota is an explicit injected error; no native quota exhaustion, disk durability, process restart, eviction, real multi-tab, persistence grants, deletion/suppression or crypto-unlock test was run. Fixtures are synthetic and test-only. S01 contracts remain future work; no app schema/ port/adapter was introduced. ADR remains proposed until independent acceptance. If QA accepts, record ADR acceptance metadata within its allowed scope and separate review evidence, then approve via CLI. Coordinator alone commits and launches another fresh session. Executor exits immediately after submit.