⚠️ STALE (noted 2026-07-16): this review predates ADR-0050 onward — the directory now reaches ADR-0097, so everything from 0050 up is outside its scope, and several statuses it records for 0001–0049 have since moved. Treat it as a historical snapshot, not current state. TheStatus:header of each ADR file (kept current per the hygiene rule below) is the authority; this document is retained for its method and its ranked-plan rationale.Status-hygiene rule (adopted 2026-07-16): when a PR lands the implementation of an ADR, the same PR (or an immediate follow-up) must flip that ADR's
Status:line toAccepted — implementedwith one line of evidence (key file + test). An ADR leftProposedafter its code ships misleads every later reader — this is the same no-silently-stale discipline as ADR-0078, applied to the ADRs themselves.
Date: 2026-06-12 Scope: All 49 ADRs in
docs/adr/, cross-checked against actual code onmain. Method: Every unfinished ADR was read in full and itsStatus:header was verified against the shipped code (git log + source grep), not taken at face value. This document records the calibrated status and a ranked next-step plan.
The single most important result of this sweep: a large fraction of ADRs marked
Proposed or Draft are in fact substantially or fully shipped on the
framework (backend) side. What remains for most of them is the ObjectUI
surface (sibling ../objectui repo) or cloud control-plane work — neither of
which is owned by this repo.
Consequence: prioritizing off the headers alone overstates the remaining framework workload and hides where the real gaps are. The headers should be refreshed (see §4).
| ADR | Header | Real framework status | Remaining (and where) |
|---|---|---|---|
| 0034 transactional writes | Proposed | Shipped (v8.0.0 — ambient AsyncLocalStorage tx, batch $ref) |
UI wiring (objectui) |
| 0032 unified expression layer | Proposed | Shipped (CEL, no silent-swallow, build-time validate) | designer builders (objectui) |
| 0039 concurrent durable pause | Proposed | Track A shipped (incl. A2 map node) |
Track B deferred by design |
| 0042 approval SLA escalation | Proposed | Shipped (jobs-backed scanner, system:sla) |
— |
| 0043 actionable approval links | Proposed | Shipped (single-use tokens, GET-confirm/POST-exec) | v1 non-goals only |
| 0044 approval send-back | Proposed | Shipped (returned status, typed back-edges) |
designer (objectui) |
| 0041 flow trigger family | Proposed | Shipped (trigger-api HMAC + queue) | rename deprecation stubs (S) |
| 0015 datasource federation | Proposed | Shipped (3 gates + REST + CLI) | Studio UI, extra drivers |
| 0023 OpenAPI→connector | Proposed | Shipped (library) | CLI, examples |
| 0024 MCP connectors | Proposed | Shipped (library) | examples |
| 0036 app = REST + MCP | Proposed | Shipped framework (api-key, /api/v1/mcp) |
cloud Integrations page |
| 0007 settings | Draft | Shipped backend (sys_setting, resolver, 7 manifests) | entire UI (objectui) |
| 0033 AI authoring | Accepted | A–C shipped | Phase D = enterprise/cloud |
| 0019 app = consumer unit | Proposed | Shipped (schema-enforced) | Console fills field |
| 0029 kernel object ownership | Proposed | Substantially shipped (K0/K1/K2/D7) | K3 (waits on 0030/storage) + K4 cleanup |
Note on 0029:
sysbeing a shared namespace with single-owner-per-object enforcement (not a reserved namespace) is the intended K0 design, not a gap.
| ADR | What | Real status | Effort | Value |
|---|---|---|---|---|
| 0025 install side | plugin package install / registry / consent | build/sign/publish shipped; install half missing | L | high |
| 0027 authoring lifecycle | openDraft→stage→diff→publish(seal)→promote→rollback orchestrator | package absent; only contract stubs | L | high |
| 0013 bidirectional messaging | Slack inbound receiver / sessions / multi-account | ~zero code (messaging is outbound-only) | L | high |
| 0010-nl-to-flow | natural language → runnable Flow | not started (substrate ready) | L | high |
| 0028 namespace isolation | (namespace,type,name) identity + physical-name derivation |
still the old prefix model | L | med |
| 0026 client-UI plugin dist | runtime:'ui' variant + iframe sandbox |
unbuilt, blocked on 0025 | L | med |
| 0046 package docs as metadata | src/docs → manifest.docs |
unbuilt, but P0/P1 cheap | S–M | med |
| 0010 protection L4 / unlock | frozenPaths evaluator + unlock RBAC |
L3 + audit shipped; no escape hatch | M | med |
| 0017 view Phase 5 | view RLS backend + designer | RLS still client-enforced; designer in objectui | S (backend) | med |
| 0063/0064 (supersedes 0040) | blueprint object-count scale gate | tool-scoping shipped (ADR-0064, #2181 — tools = skills' tools, no global fall-through; affinity is a load error); blueprint scale gate still not implemented | S | med |
| 0029 K4 | remove migration-era empty barrels | cleanup only | S | low-med |
From docs/launch-readiness.md: P0-5 (realtime/feed are in-memory only, no
cluster coordination) and P1-2 (execution logs / job runs / event log grow
unbounded). Decide single-instance vs HA and land retention/coordination
before any new feature ADR. These outrank everything below for GA.
Recent momentum is almost entirely in distribution (package-install command, local-manifest-source, marketplace-nav, cloud-connection). The build/publish half already shipped; the install / registry / promotion half is the natural join, and it is the keystone that unblocks 0026 and subsumes 0016's deferred cloud publish. Highest value-to-effort coherent line.
- 0029 K4 finish (small): drop the empty re-export barrels so the plugin-owned architecture is clean before third-party packages arrive.
- 0028 namespace isolation (large): its hard prerequisite (0029) is now largely satisfied, so it is no longer blocked. Needed before opening up multi-package third-party co-install, otherwise silent table-name collisions.
The only one of the five integration ADRs with essentially zero code, and the only outward-facing headline gap ("operate ObjectStack from Slack"). ADR-0022 already routes the human-notification story into it. Promote to P1 if conversational Slack is a near-term product goal.
- 0046 package docs (S) — directly feeds AI grounding.
- 0010 L4 + unlock escape hatch (M) — without it a lock can never be lifted.
- 0017 view RLS backend + 0040 tool-scoping enforcement — both are security-shaped (today: client-enforced / advisory); worth elevating near GA.
0039 Track B (token-tree rewrite, demand-gated), 0031 BPMN XML plugin, 0026 (waits on 0025), 0010-nl-to-flow (high "wow" but pure net-new — after the distribution loop).
These ADR headers should be updated to reflect shipped reality (framework side). Listed here rather than edited in place, since changing an ADR's recorded status is a governance act best ratified deliberately.
| ADR | Current header | Suggested |
|---|---|---|
| 0007 | Draft | Accepted — backend implemented; UI pending (objectui) |
| 0032 | Proposed | Accepted — implemented (designer pending, objectui) |
| 0034 | Proposed | Accepted — implemented (v8.0.0) |
| 0041 | Proposed | Accepted — Tier 1 implemented |
| 0042 | Proposed | Accepted — implemented |
| 0043 | Proposed | Accepted — implemented |
| 0044 | Proposed | Accepted — engine + model implemented (designer pending) |
| 0015 | Proposed | Accepted — backend/REST/CLI implemented (UI + drivers pending) |
| 0023 | Proposed | Accepted — library implemented (CLI/examples pending) |
| 0024 | Proposed | Accepted — library implemented (examples pending) |
| 0036 | Proposed | Accepted — framework implemented (cloud surfacing pending) |
| 0039 | Proposed | Accepted — Track A implemented; Track B deferred |
| 0029 | Proposed | Accepted — K0/K1/K2/D7 implemented; K3/K4 remaining |
Generated from a five-cluster ADR sweep; file/commit evidence captured in the review session. Treat this as a planning input, not a frozen contract.