Skip to content

Commit c577f13

Browse files
committed
docs(adr): prioritization review — status calibration + ranked next steps
1 parent 9b4e870 commit c577f13

1 file changed

Lines changed: 134 additions & 0 deletions

File tree

docs/adr/PRIORITIZATION.md

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# ADR Prioritization Review
2+
3+
> **Date:** 2026-06-12
4+
> **Scope:** All 49 ADRs in `docs/adr/`, cross-checked against actual code on `main`.
5+
> **Method:** Every unfinished ADR was read in full and its `Status:` header was
6+
> verified against the shipped code (git log + source grep), not taken at face
7+
> value. This document records the calibrated status and a ranked next-step plan.
8+
9+
---
10+
11+
## 0. Headline finding — the `Status:` headers are systematically stale
12+
13+
The single most important result of this sweep: a large fraction of ADRs marked
14+
**Proposed** or **Draft** are in fact **substantially or fully shipped** on the
15+
framework (backend) side. What remains for most of them is the **ObjectUI**
16+
surface (sibling `../objectui` repo) or **cloud** control-plane work — neither of
17+
which is owned by this repo.
18+
19+
Consequence: prioritizing off the headers alone overstates the remaining
20+
framework workload and hides where the real gaps are. The headers should be
21+
refreshed (see §4).
22+
23+
---
24+
25+
## 1. Status calibration — header vs. real (framework side)
26+
27+
| ADR | Header | Real framework status | Remaining (and where) |
28+
|---|---|---|---|
29+
| 0034 transactional writes | Proposed | **Shipped** (v8.0.0 — ambient `AsyncLocalStorage` tx, batch `$ref`) | UI wiring (objectui) |
30+
| 0032 unified expression layer | Proposed | **Shipped** (CEL, no silent-swallow, build-time validate) | designer builders (objectui) |
31+
| 0039 concurrent durable pause | Proposed | Track A **shipped** (incl. A2 `map` node) | Track B deferred by design |
32+
| 0042 approval SLA escalation | Proposed | **Shipped** (jobs-backed scanner, `system:sla`) ||
33+
| 0043 actionable approval links | Proposed | **Shipped** (single-use tokens, GET-confirm/POST-exec) | v1 non-goals only |
34+
| 0044 approval send-back | Proposed | **Shipped** (`returned` status, typed back-edges) | designer (objectui) |
35+
| 0041 flow trigger family | Proposed | **Shipped** (trigger-api HMAC + queue) | rename deprecation stubs (S) |
36+
| 0015 datasource federation | Proposed | **Shipped** (3 gates + REST + CLI) | Studio UI, extra drivers |
37+
| 0023 OpenAPI→connector | Proposed | **Shipped** (library) | CLI, examples |
38+
| 0024 MCP connectors | Proposed | **Shipped** (library) | examples |
39+
| 0036 app = REST + MCP | Proposed | **Shipped** framework (api-key, `/api/v1/mcp`) | cloud Integrations page |
40+
| 0007 settings | Draft | **Shipped** backend (sys_setting, resolver, 7 manifests) | entire UI (objectui) |
41+
| 0033 AI authoring | Accepted | A–C **shipped** | Phase D = enterprise/cloud |
42+
| 0019 app = consumer unit | Proposed | **Shipped** (schema-enforced) | Console fills field |
43+
| 0029 kernel object ownership | Proposed | **Substantially shipped** (K0/K1/K2/D7) | K3 (waits on 0030/storage) + K4 cleanup |
44+
45+
> Note on 0029: `sys` being a **shared** namespace with single-owner-per-object
46+
> enforcement (not a reserved namespace) is the **intended** K0 design, not a gap.
47+
48+
---
49+
50+
## 2. Genuinely unbuilt framework gaps (the real candidate work)
51+
52+
| ADR | What | Real status | Effort | Value |
53+
|---|---|---|---|---|
54+
| **0025 install side** | plugin package install / registry / consent | build/sign/publish shipped; **install half missing** | L | high |
55+
| **0027 authoring lifecycle** | openDraft→stage→diff→publish(seal)→promote→rollback orchestrator | package absent; only contract stubs | L | high |
56+
| **0013 bidirectional messaging** | Slack inbound receiver / sessions / multi-account | **~zero code** (messaging is outbound-only) | L | high |
57+
| **0010-nl-to-flow** | natural language → runnable Flow | **not started** (substrate ready) | L | high |
58+
| **0028 namespace isolation** | `(namespace,type,name)` identity + physical-name derivation | **still the old prefix model** | L | med |
59+
| **0026 client-UI plugin dist** | `runtime:'ui'` variant + iframe sandbox | unbuilt, **blocked on 0025** | L | med |
60+
| 0046 package docs as metadata | `src/docs``manifest.docs` | unbuilt, but P0/P1 cheap | S–M | med |
61+
| 0010 protection L4 / unlock | `frozenPaths` evaluator + unlock RBAC | L3 + audit shipped; **no escape hatch** | M | med |
62+
| 0017 view Phase 5 | view RLS backend + designer | RLS still **client-enforced**; designer in objectui | S (backend) | med |
63+
| 0040 unified assistant | tool-scoping enforcement + blueprint scale gate | still advisory; scale gate **not implemented** | M | med-high |
64+
| 0029 K4 | remove migration-era empty barrels | cleanup only | S | low-med |
65+
66+
---
67+
68+
## 3. Recommended next-step priority
69+
70+
### P0 — GA blockers (not ADRs, but they gate launch)
71+
From `docs/launch-readiness.md`: **P0-5** (realtime/feed are in-memory only, no
72+
cluster coordination) and **P1-2** (execution logs / job runs / event log grow
73+
unbounded). Decide single-instance vs HA and land retention/coordination
74+
**before** any new feature ADR. These outrank everything below for GA.
75+
76+
### P1 — Complete the distribution loop: `0025 install` + `0027 lifecycle`
77+
Recent momentum is almost entirely in distribution (package-install command,
78+
local-manifest-source, marketplace-nav, cloud-connection). The build/publish half
79+
already shipped; the install / registry / promotion half is the natural join, and
80+
it is the keystone that unblocks **0026** and subsumes **0016**'s deferred cloud
81+
publish. Highest value-to-effort coherent line.
82+
83+
### P1.5 — Distribution safety prerequisites
84+
- **0029 K4** finish (small): drop the empty re-export barrels so the
85+
plugin-owned architecture is clean before third-party packages arrive.
86+
- **0028 namespace isolation** (large): its hard prerequisite (0029) is now
87+
largely satisfied, so it is **no longer blocked**. Needed before opening up
88+
multi-package third-party co-install, otherwise silent table-name collisions.
89+
90+
### P2 — Outward differentiator: `0013 Slack bidirectional messaging`
91+
The only one of the five integration ADRs with essentially zero code, and the
92+
only outward-facing headline gap ("operate ObjectStack from Slack"). ADR-0022
93+
already routes the human-notification story into it. Promote to P1 if
94+
conversational Slack is a near-term product goal.
95+
96+
### P3 — Cheap, high-leverage fill-ins (interleave)
97+
- **0046 package docs** (S) — directly feeds AI grounding.
98+
- **0010 L4 + unlock escape hatch** (M) — without it a lock can never be lifted.
99+
- **0017 view RLS backend** + **0040 tool-scoping enforcement** — both are
100+
security-shaped (today: client-enforced / advisory); worth elevating near GA.
101+
102+
### P4 — Explicitly deferred
103+
0039 Track B (token-tree rewrite, demand-gated), 0031 BPMN XML plugin, 0026
104+
(waits on 0025), 0010-nl-to-flow (high "wow" but pure net-new — after the
105+
distribution loop).
106+
107+
---
108+
109+
## 4. Status-header corrections to apply
110+
111+
These ADR headers should be updated to reflect shipped reality (framework side).
112+
Listed here rather than edited in place, since changing an ADR's recorded status
113+
is a governance act best ratified deliberately.
114+
115+
| ADR | Current header | Suggested |
116+
|---|---|---|
117+
| 0007 | Draft | Accepted — backend implemented; UI pending (objectui) |
118+
| 0032 | Proposed | Accepted — implemented (designer pending, objectui) |
119+
| 0034 | Proposed | Accepted — implemented (v8.0.0) |
120+
| 0041 | Proposed | Accepted — Tier 1 implemented |
121+
| 0042 | Proposed | Accepted — implemented |
122+
| 0043 | Proposed | Accepted — implemented |
123+
| 0044 | Proposed | Accepted — engine + model implemented (designer pending) |
124+
| 0015 | Proposed | Accepted — backend/REST/CLI implemented (UI + drivers pending) |
125+
| 0023 | Proposed | Accepted — library implemented (CLI/examples pending) |
126+
| 0024 | Proposed | Accepted — library implemented (examples pending) |
127+
| 0036 | Proposed | Accepted — framework implemented (cloud surfacing pending) |
128+
| 0039 | Proposed | Accepted — Track A implemented; Track B deferred |
129+
| 0029 | Proposed | Accepted — K0/K1/K2/D7 implemented; K3/K4 remaining |
130+
131+
---
132+
133+
_Generated from a five-cluster ADR sweep; file/commit evidence captured in the
134+
review session. Treat this as a planning input, not a frozen contract._

0 commit comments

Comments
 (0)