radar: abstraction-radar scout briefing + seeded backlog (dynamic discovery, AHA-gated, read-only)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 1m4s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 1m4s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
88
plans/abstractions.md
Normal file
88
plans/abstractions.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Abstraction Radar — backlog
|
||||
|
||||
Maintained by the read-only `radar` loop (see `plans/agent-briefings/radar-loop.md`).
|
||||
Detection only — implementation is a separate, coordinated step owned by the
|
||||
relevant subsystem loop, never by radar.
|
||||
|
||||
**AHA gate to reach _Proposed_:** ≥3 real consumers · all past Phase 2 & API-stable ·
|
||||
structurally identical (file:line evidence) · a natural home (usually NOT lib/guest).
|
||||
Anything short → _Watching_ (what's missing) or _Rejected_ (why).
|
||||
|
||||
---
|
||||
|
||||
## Last scan
|
||||
|
||||
- **Date:** 2026-06-06 (seed, by hand at radar setup)
|
||||
- **Subsystem set discovered:** loop worktrees `acl, feed, flow, mod, search,
|
||||
persist, fed-prims, fed-sx-m, erlang, go, ruby, sx-vm-extensions, radar`; main-repo
|
||||
subsystems incl. merged `feed` + language substrates (`apl, haskell, prolog,
|
||||
datalog, lua, …`). Actively looping (tmux): `acl, feed, flow, mod, search,
|
||||
persist, fed-sx-m1` (+ radar).
|
||||
- Re-enumerate every pass; new loops (e.g. a future `commerce`/`identity`) auto-join.
|
||||
|
||||
---
|
||||
|
||||
## Proposed (cleared the gate)
|
||||
|
||||
### A1 · Adopt the shared conformance driver across subsystems
|
||||
- **Pattern:** every subsystem hand-rolls a near-identical `conformance.sh`
|
||||
(epoch-load → eval → scoreboard emit) and an inline `<x>-test name got expected`
|
||||
pass/fail counter.
|
||||
- **Consumers (≥3, overwhelming):** 15 `lib/*/conformance.sh` — `apl, feed, datalog,
|
||||
flow, mod, lua, erlang, forth, go, common-lisp, haskell, js, ocaml, prolog,
|
||||
smalltalk, tcl`.
|
||||
- **Home:** `lib/guest` — the one legitimate exception (the shared driver
|
||||
`lib/guest/conformance.sh` + `lib/guest/conformance.sx` already exist; modes
|
||||
`dict` and `counters`).
|
||||
- **Status: IN PROGRESS.** Existing adopters: `prolog` (dict), `haskell` (counters).
|
||||
**`apl` migrated 2026-06-06** (commit on architecture) — and the migration
|
||||
*surfaced a latent bug*: the old awk extractor under-counted `pipeline` (40 vs the
|
||||
real 152 assertions); true apl total is **562**, not 450. Evidence that adopting
|
||||
the driver also improves correctness.
|
||||
- **Action:** each remaining subsystem's OWN loop migrates when quiescent — add a
|
||||
`conformance.conf` (+ a `test-harness.sx` preload defining its counters) and
|
||||
replace `conformance.sh` with the 1-line exec shim
|
||||
(`exec bash …/guest/conformance.sh …/conformance.conf "$@"`). Recipe template:
|
||||
`lib/haskell/conformance.conf` (counters) or `lib/prolog/conformance.conf` (dict).
|
||||
Keep the `bash lib/X/conformance.sh` entry point so no loop is disrupted.
|
||||
- **Priority: HIGH** (15 consumers, low risk, interface-preserving, additive).
|
||||
|
||||
---
|
||||
|
||||
## Watching (real but not yet through the gate)
|
||||
|
||||
### W1 · Federation scaffold (merge / ingest / backfill / trust-gate)
|
||||
- Every subsystem's Phase 4 is "federation" with the same shape (cross-instance,
|
||||
trust-gated, injected transport). feed has `feed/merge|ingest|inbound|backfill`.
|
||||
- **Missing:** only feed is past its federation phase; mod/search/acl/persist haven't
|
||||
built theirs yet. Re-check once ≥3 have shipped Phase 4.
|
||||
- **Home when ripe:** `fed-sx` (NOT lib/guest).
|
||||
|
||||
### W2 · Per-viewer visibility / permission filter
|
||||
- feed has `feed/visible` + injected `permit?`; search and mod will post-filter per
|
||||
viewer too.
|
||||
- **Missing:** <3 shipped consumers; and the right move is *delegate to `acl-on-sx`*,
|
||||
not extract. Re-check when search + mod have their ACL filters.
|
||||
|
||||
### W3 · Collection helpers (group-by, dedupe-by-key, stable top-N, distinct-order)
|
||||
- feed built all of these on APL primitives. search/commerce/events will want
|
||||
group-by / top-N.
|
||||
- **Missing:** ≥3 stable consumers; and these likely belong in the **substrate**
|
||||
(APL/Haskell already expose grade/sort/unique) rather than a shared lib. Watch.
|
||||
|
||||
### W4 · In-memory store fakes → `persist-on-sx`
|
||||
- Not an abstraction to extract — a migration target. Every subsystem fakes its
|
||||
store with a mutable list (`feed/-log`, flow store, mod audit, …).
|
||||
- **Owner:** `persist-on-sx` (in progress). Tracked there, listed here for visibility.
|
||||
|
||||
---
|
||||
|
||||
## Rejected (considered, declined — do not re-propose)
|
||||
|
||||
- **"Continuous auto-implementing abstractor loop."** Rejected at design time: an
|
||||
agent writing across `lib/<x>/**` breaks the worktree isolation that makes the
|
||||
fleet safe, and is rewarded for manufacturing premature/wrong abstractions. The
|
||||
radar is read-only by design. (This file is the alternative.)
|
||||
- **Dumping app-domain plumbing into `lib/guest`.** Rejected: `lib/guest` is for
|
||||
language-implementation plumbing. App patterns route to acl/fed-sx/persist/
|
||||
substrate/host instead (see the routing rule in the briefing).
|
||||
Reference in New Issue
Block a user