From 453f244a97cf06aca156af51bf492e090ec62e6c Mon Sep 17 00:00:00 2001 From: giles Date: Sun, 7 Jun 2026 03:04:46 +0000 Subject: [PATCH] =?UTF-8?q?radar:=20pass=2014=20=E2=80=94=20W7=20content/s?= =?UTF-8?q?napshot=20reimplements=20persist/snapshot=20facet=20on=20raw=20?= =?UTF-8?q?KV=20(delegate=20nudge);=20persist/*=20copies=20are=20worktree?= =?UTF-8?q?=20artifacts=20not=20consumers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- plans/abstractions.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) 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 …}`,