Documentation updates with IDAA ideas.
This commit is contained in:
@@ -115,33 +115,40 @@ reactivity — only effects that actually read a changed field re-run.
|
||||
|
||||
---
|
||||
|
||||
### [Stores] IDB Content Version System (post June 10)
|
||||
Scaffold added to `store_versions.ts` (`IDB_CONTENT_VERSIONS` constant) — values defined but
|
||||
**not yet wired**. The mechanism mirrors `AE_LOC_VERSION` but targets Dexie table contents
|
||||
rather than localStorage keys.
|
||||
### [Stores] IDB Content Version System
|
||||
Scaffolded in `store_versions.ts` (`IDB_CONTENT_VERSIONS` constant + `check_and_clear_idb_table()`
|
||||
helper) and `core__idb_dexie.ts` (`check_and_clear_idb_tables()` batch helper). Mirrors
|
||||
`AE_LOC_VERSION` but targets Dexie table contents rather than localStorage keys.
|
||||
|
||||
**Why:** `db_save_ae_obj_li__ae_obj` uses a `properties_to_save` whitelist. When that whitelist
|
||||
changes (e.g. adding/removing a stored field), existing cached IDB records are stale but never
|
||||
automatically cleared. Users see the old shape until a record is individually refreshed.
|
||||
**Currently active:** `journals.journal_entry` (db_journals.ts), `events.event` (IDAA layout).
|
||||
All other tables are defined but not yet wired.
|
||||
|
||||
**How it will work:**
|
||||
- Each `db_*.ts` calls a helper (`core__idb_dexie.ts`) on open that checks a `_meta` IDB table
|
||||
- If stored version ≠ `IDB_CONTENT_VERSIONS[module][table]`, clear the table + update `_meta`
|
||||
- SWR repopulates from API on next access (same as any cold-start)
|
||||
**Real-world impact:** Stale IDB records from a `properties_to_save` change were the root cause
|
||||
of the IDAA Recovery Meetings "no meetings found" bug — a ~1-year unresolved issue (2025–2026).
|
||||
Fixed 2026-05-16 by wiring `events.event` into the IDAA layout and bumping its version to 2.
|
||||
See `BOOTSTRAP__AI_Agent_Quickstart.md` mistake #13 for the full postmortem.
|
||||
|
||||
**How it works:**
|
||||
- `check_and_clear_idb_table(db_table, 'module', 'table')` reads a localStorage key with the
|
||||
expected version from `IDB_CONTENT_VERSIONS`
|
||||
- On mismatch (or missing key), the Dexie table is cleared and the key is updated
|
||||
- SWR repopulates from API on next access — no explicit reload needed
|
||||
- Cost on version match: one `localStorage.getItem()` — effectively free
|
||||
- Bump a table's version in `IDB_CONTENT_VERSIONS` when `properties_to_save` changes shape
|
||||
|
||||
**IDAA consideration:**
|
||||
IDAA tables are already cleared by `indexedDB.deleteDatabase()` on sign-out/auth failure in
|
||||
`(idaa)/+layout.svelte`. The content version check is a *complementary* deploy-time reset, not
|
||||
a replacement. When wiring IDAA tables, ensure: (a) the check only runs on IDB open, not
|
||||
mid-session; (b) the `_meta` table is included in the `deleteDatabase()` wipe scope.
|
||||
a replacement.
|
||||
|
||||
**Tasks:**
|
||||
- [x] Write `check_and_clear_idb_tables()` helper in `core__idb_dexie.ts` (2026-05-14)
|
||||
- [x] Wire helper into `db_journals.ts` (pilot — `journal_entry: 2` clears stale content_md_html on first load) (2026-05-14)
|
||||
- [ ] Roll out to `db_events.ts`, `db_core.ts`
|
||||
- [x] Wire helper into `db_journals.ts` (pilot — `journal_entry: 2` cleared stale content_md_html) (2026-05-14)
|
||||
- [x] Wire `events.event` into IDAA layout `(idaa)/+layout.svelte` + bump version to 2 (2026-05-16)
|
||||
- [ ] Roll out to `db_events.ts` (module-wide: session, presenter, badge, device, location, file)
|
||||
- [ ] Roll out to `db_core.ts` (site_domain, person, user)
|
||||
- [ ] Roll out to IDAA modules (`db_posts.ts`, `db_archives.ts`) — verify auth-wipe interaction first
|
||||
- [ ] Update `store_versions.ts` comment from "NOT YET ACTIVE" to document the active mechanism
|
||||
- [ ] Consolidate the two `check_and_clear_idb_table*` helpers (single-table in `store_versions.ts`, batch in `core__idb_dexie.ts`)
|
||||
|
||||
### [Stores] Refactor — Phase 2c (deferred)
|
||||
Phases 1, 2a, 2b are complete (see ✅ Completed below). One phase remaining:
|
||||
|
||||
Reference in New Issue
Block a user