Skip to content

Commit c3639a2

Browse files
Record api.plugins filed as core #610; add Phase-1 blessed-console plan
#610 is the read-only loaded-plugin registry seam — the single blocker for a blessed dashboard/ status console (no auth seam needed; probes are anonymous). Distinguished from the marketplace (#184/#194/#200), the apps-as-pod-resources vision (#463/#464), and the webfinger registry (#606). NEXT.md gains the Phase-1 step chain; admin/ (pod stats + operator gate) deferred to Phase 2 pending an api.isOperator design.
1 parent 28dca30 commit c3639a2

2 files changed

Lines changed: 33 additions & 10 deletions

File tree

NEXT.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,25 @@ a locally-linked core, proving the loop closes; once core publishes, flip
100100
the pin and merge. The rest follow the same shape. Then the next seam:
101101
`reservePath` (#602) → `events` (#603) → `authorize` (#604).
102102

103+
## Phase 1: a blessed read-only status console (`dashboard/`)
104+
105+
The strategic goal beyond simplifying plugins: get one **blessed official
106+
plugin** upstream. `dashboard/` is the phase-1 target — read-only, probes
107+
anonymously (a 401 = "alive", so **no operator/auth seam needed**), and
108+
gated on exactly **one** seam: `api.plugins` (**filed core #610**), so its
109+
inventory stops being a hand-copied `config.plugins` list that silently
110+
drifts.
111+
112+
Steps: (1) land core #610 → (2) bump+publish core → (3) flip this repo's
113+
pin → (4) retrofit `dashboard/` to read `api.plugins` (drop the hand-fed
114+
list) + `serverInfo` (drop `loopbackUrl`) → (5) finalize README/screenshot
115+
→ (6) bless via core docs + the `--plugin` CLI opt-in (#595) → (7) announce.
116+
117+
The richer `admin/` console (pod stats + an operator gate) is **phase 2**
118+
it additionally needs an operator-identity seam (`api.isOperator`; three
119+
plugins answer "who's the operator?" three ways today), which is a real
120+
design decision, not a quick seam. Ship the status console first.
121+
103122
## Wave 7 status
104123

105124
`micropub/` and `backup/` are **built and integrated**. Two remain

REPORT.md

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ plugin's `README.md ## Findings`.
99

1010
**Both the bugs and the seams are now filed upstream** (2026-07-11): the
1111
five bugs as #596#600, and the four ranked seams as **#601 (serverInfo),
12-
#602 (reservePath), #603 (events), #604 (authorize)**. The secondary asks
13-
below (`api.plugins`, `api.isOperator`, mcp.registerTool, per-route
14-
options, response-header injection, pure-utility exports) are *not* filed
15-
yet — they're lower-priority and better raised when a design discussion on
16-
the four opens.
12+
#602 (reservePath), #603 (events), #604 (authorize)**. `api.plugins` (the read-only loaded-plugin registry) is also filed —
13+
**#610** — as the phase-1 blocker for a blessed read-only status console
14+
(`dashboard/`). The remaining secondary asks (`api.isOperator`,
15+
mcp.registerTool, per-route options, response-header injection,
16+
pure-utility exports) are *not* filed yet — lower-priority, better raised
17+
when a design discussion on the primary seams opens.
1718

1819
## Executive summary
1920

@@ -193,13 +194,16 @@ probe-port-then-boot dance for the same reason.
193194
property to preserve, not new work.
194195
- **`api.mcp.registerTool`** — blocks the four MCP-tool issues
195196
(#495/#496/#500/#501); no consumer here because it's impossible today.
196-
- **`api.plugins` (the #463/#464 app-registry)** — two consumers:
197-
`dashboard/` and `admin/`, the plugins whose whole job is describing
198-
the deployment, must each be handed a hand-copied duplicate of the
199-
`createServer` plugins list (drift is silent; `serve.js` now maintains
197+
- **`api.plugins` the read-only loaded-plugin registry (filed #610).**
198+
Two consumers: `dashboard/` and `admin/`, the plugins whose whole job is
199+
describing the deployment, must each be handed a hand-copied duplicate of
200+
the `createServer` plugins list (drift is silent; `serve.js` now maintains
200201
a shared `INVENTORY` array beside the real list — the workaround that
201202
proves the seam). The loader already holds the needed data:
202-
`api.plugins → [{ id, prefix, module }]`, read-only.
203+
`api.plugins → [{ id, prefix, module }]`, read-only. Distinct from the
204+
apps-as-pod-resources vision (#463/#464) and the marketplace
205+
(#184/#194/#200) — this is the minimal loader primitive those could build
206+
on. **The phase-1 blocker for a blessed read-only status console.**
203207
- **`api.isOperator` (an operator concept)** — terminal/, metrics/ and
204208
admin/ hold three incompatible answers to "who is the operator?"
205209
(shared token, optional bearer, WebID allowlist). A tiny seam — an

0 commit comments

Comments
 (0)