From adad4f4436eceb7a2c538337d7d9c942657ce493 Mon Sep 17 00:00:00 2001 From: giles Date: Sun, 7 Jun 2026 04:40:09 +0000 Subject: [PATCH] =?UTF-8?q?radar:=20pass=2017=20=E2=80=94=20filename=20cen?= =?UTF-8?q?sus=20exhausted=20(disposition=20table);=20schema/engine=20=3D?= =?UTF-8?q?=20acl-mod=20substrate=20twins,=20catalog/batch=20=3D=20collisi?= =?UTF-8?q?ons?= 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 | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/plans/abstractions.md b/plans/abstractions.md index 55f1de02..51665fe9 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 17) +- **Pass 17 — filename census declared EXHAUSTED** (see the Census-status table above). + Examined the last unswept ≥2 recurrences (schema/engine = acl⇄mod substrate twins; + catalog/batch = name collisions; store = divergent). No new candidate. Incremental churn + elsewhere (content 621/621, identity PAR, events reminders). Future passes pivot from + censusing to re-testing gates as consumers mature. - **Date:** 2026-06-07 (radar loop, pass 16) - **Pass 16:** events started Phase 3 — **durable notification delivery on `lib/flow`** (new W8: at-least-once + idempotency exemplar; fed-sx/mod roll their own outbox). The two @@ -103,6 +109,27 @@ Anything short → _Watching_ (what's missing) or _Rejected_ (why). (`lib/ocaml/baseline` only). Both early-stage, pre–Phase 2 → out of proposal scope. - Re-enumerate every pass; new loops (e.g. a future `commerce`/`identity`) auto-join. +**Census status (pass 17): EXHAUSTED.** Every own-namespace filename recurring ≥2× has +been examined and dispositioned — further filename-censusing is low-yield until new +subsystems/modules appear. Map: +| filename | owners | verdict | +|---|---|---| +| `api` ×10 | all | Rejected — shared role, divergent state contract | +| `fed`/`federation` | feed/search/mod/acl(+content) | W1 — theme not shape | +| `audit` ×3 | acl/mod/identity | W4 — append-only log → persist/log | +| `page` ×3 | feed/search (pagination) + content (HTML wrapper) | W3 + collision noted | +| `explain` ×2 | acl/mod | W5 — proof tree, substrate-bound | +| `snapshot` ×2 | persist(facet) + content(reinvents) | W7 | +| `wire` ×2 | content(SX serializer) / mod(pipe-format) | Rejected — divergent | +| `schema`,`engine` ×2 | acl/mod | substrate-twin parallels (Datalog vs Prolog); only audit (W4) is liftable | +| `catalog`,`batch` ×2 | commerce/persist, mod/persist | name collisions, unrelated | +| `store` ×2 | content(on persist) / flow(workflow records) | related concept, divergent | +| `rank` ×2 | feed/search | different domains (activities vs docs), ≤2 | +**acl⇄mod are structural twins** (decision engine over a logic substrate, Datalog vs +Prolog) — they parallel across engine/schema/explain/audit/fed, but only the *audit log* +is substrate-agnostic and liftable (→ W4); the rest are substrate-idiomatic. Next passes: +re-test gates (W2/W3/W8) as consumers mature, watch new modules — not re-census. + **Scanning-method note (learned the hard way, passes 5/12/14/15):** a filename census for *cross-subsystem* recurrence MUST restrict to each subsystem's OWN namespace — `X/lib/X/*.sx` — never `X/lib/*/`. The merged substrate libs (`lib/prolog`, `lib/persist`,