b4772d10c72bba3ae1e6227ca19b298500cae7c4
Audited all 21 localStorage users against the "localStorage as source of truth" objection. It was already false almost everywhere: - Every admin facade (products, categories, orders, moderation, dashboard) uses localStorage only for view preferences - viewMode, density, visibleColumns, expandedIds, sort. Entity CRUD goes through the API gateways. - currency-rates.service already removed its localStorage-typed rates. - language, location region, search history, the anonymous session id, admin preferences - all legitimate cache/preference. - The editor already shows an "unsaved local draft restored" banner (draftRestored -> save bar), which is the recovery-cache indicator this item called for. One real gap remains and it is backend-blocked: project-editor publish() applies config to the in-memory runtime and saves the draft to localStorage, then declares itself published - no server round-trip, because the PHASE-9 §5 revision API does not exist yet. Marked precisely in publish() with the required behaviour (await the server, only then mark published) and cross-referenced to the contract. Nothing to rip out: the codebase was already at the target state everywhere the backend exists to support it. 262 tests pass. Boundaries green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
No description provided
Languages
TypeScript
71.4%
HTML
15.3%
SCSS
11.9%
Shell
1.3%
JavaScript
0.1%