diff --git a/plans/abstractions.md b/plans/abstractions.md index 58963420..117dc7af 100644 --- a/plans/abstractions.md +++ b/plans/abstractions.md @@ -12,6 +12,12 @@ Anything short → _Watching_ (what's missing) or _Rejected_ (why). ## Last scan +- **Date:** 2026-06-07 (radar loop, pass 14) +- **Pass 14:** filename census flagged `snapshot`×?? — but the `*/lib/persist/snapshot.sx` + copies are just the merged `lib/persist` in each worktree, NOT consumers (same artifact + as `lib/feed/rank.sx` everywhere). The one distinct file, `content/snapshot.sx`, + reimplements persist's projection-checkpoint on raw KV instead of using `persist/snapshot` + → new W7 (persist-adoption nudge). `audit`×3 = the W4 fakes (acl/mod/identity), known. - **Date:** 2026-06-07 (radar loop, pass 13) - **Pass 13 — honest re-test, no gate-clearer.** Re-tested the two longest-waiting gates against the maturing app-domain loops: **W2** (per-viewer visibility) still 2 consumers @@ -272,6 +278,22 @@ Anything short → _Watching_ (what's missing) or _Rejected_ (why). --- +### W7 · Snapshot/projection-checkpoint reimplemented vs `persist/snapshot` (delegate) +- `persist/lib/persist/snapshot.sx` already provides a **generic** projection checkpoint: + store `{:value :seq}` in the kv facet under a namespaced key; the headline property is + **snapshot + tail == full replay** (pure, clock-free). +- `content/lib/content/snapshot.sx` **reimplements that same pattern on raw persist KV** + rather than delegating: `persist/kv-put b (content/-snap-key doc-id) {:doc … :seq seq}` + (:20), `persist/kv-has?`/`kv-get` (:27-28), and its own tail-replay (:53-59). It never + calls `persist/snapshot-*`. content's doc-materialisation *is* a projection fold over + its op stream — exactly what `persist/snapshot` checkpoints generically. +- **Disposition:** persist-adoption nudge (like W4): content could delegate to + `persist/snapshot` (its projection = "fold ops → doc"), dropping the duplicated + KV+replay code. Home already exists → NOT an extraction; owned by content × persist + loops. Only 1 reinventor today; watch whether commerce/events/identity also hand-roll a + snapshot on raw KV instead of using the facet (would strengthen the nudge). NB timeline: + unclear if `persist/snapshot` predated content's — flag, don't blame. + ### W6 · Guarded lifecycle state machine (illegal transition = explicit error) - Recurs as a **design principle**, NOT a shared structure (found pass 10): - `mod/lib/mod/lifecycle.sx` — pure SX: immutable case `{:state :error :history …}`,