Skip to content

Commit 4f32ad4

Browse files
os-zhuangclaude
andcommitted
docs(adr): ADR-0076 rev.8 — resolve Open Question #7 (keep the metadata-protocol name; no rename)
Per maintainer decision: keep the already-published `@objectstack/metadata-protocol` package name. Renaming churns downstream for ~0 benefit. The `protocol` suffix is a deliberate, low-cost naming exception — the real contract lives in `@objectstack/spec/api`, not the impl package. - D10: replace the "rename → metadata-runtime" clause with "name retained; content converges to the metadata-management impl". - Open Question #7: resolved (keep the name; README note to clarify impl-vs-contract). - Status: rev.8; notes D9 step-1 (interface segmentation) shipped in #2429. Docs only; empty changeset. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent d0f4b13 commit 4f32ad4

2 files changed

Lines changed: 7 additions & 3 deletions

File tree

.changeset/adr-0076-rev8.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
---
3+
4+
docs(adr): ADR-0076 rev.8 — keep metadata-protocol name (OQ#7 resolved). Docs only.

docs/adr/0076-objectql-core-tiering.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ADR-0076: objectql is the data engine — relocate metadata management (protocol) out of it; enforce the boundary; defer the engine repo-split
22

3-
**Status**: Proposed (2026-06-28, rev. 7kernel review concluded: dissolve the `ObjectStackProtocol` union (D9 refinement; discovery `services` + shared spine already provide unification); transport stays a framework-agnostic port with per-domain normalized handlers (D11)) — v12 assessment
3+
**Status**: Proposed (2026-06-28, rev. 8)D1–D11 below. D9 step-1 (interface segmentation) shipped in #2429. Open Question #7 resolved: keep the published `@objectstack/metadata-protocol` name (no rename). — v12 assessment
44
**Deciders**: ObjectStack Protocol Architects
55
**Builds on**: [ADR-0005](./0005-metadata-customization-overlay.md) (sys_metadata overlay substrate), [ADR-0025](./0025-plugin-package-distribution.md) (plugin package distribution), [ADR-0033](./0033-ai-assisted-metadata-authoring.md) (open-core boundary), [ADR-0048](./0048-cross-package-metadata-collision.md) (package id is the addressing unit), [ADR-0066](./0066-unified-authorization-model.md) (secure-by-default, posture-gated bypass)
66
**Consumers**: **new** `@objectstack/metadata-protocol` (receives `protocol` + `sys-metadata-repository` + `metadata-diagnostics`), `@objectstack/objectql` (loses protocol → becomes a lean data engine; keeps a back-compat re-export), `@objectstack/metadata-core` (gains the `SysMetadataEngine` interface), `@objectstack/plugin-security`, `@objectstack/plugin-sharing`, `@objectstack/spec`, and out-of-tree embedders — notably `../objectbase` (its `gateway`).
@@ -111,7 +111,7 @@ A single `ObjectStackProtocolImplementation` facade — and any `*-protocol` *im
111111
Target end-state:
112112
- **"protocol" names ONLY the contract** — the segmented interfaces in `@objectstack/spec/api` (D9). There is **no `*-protocol` implementation package**.
113113
- **`DataProtocol`** impl → engine-adjacent / transport (thin wire-normalizers).
114-
- **`MetadataProtocol`** impl → a metadata-**domain** package; rename `@objectstack/metadata-protocol` → e.g. `@objectstack/metadata-runtime` (it owns `sys_metadata` — a legitimate business domain, not "protocol").
114+
- **`MetadataProtocol`** impl → stays in **`@objectstack/metadata-protocol`** (name **retained** — already published; renaming churns downstream for ~0 benefit). The package's *content* converges to the metadata-management impl (it owns `sys_metadata`). The `protocol` in the name is a deliberate, low-cost naming exception from being published — the real contract lives in `@objectstack/spec/api`, not here. (Open Question #7, resolved.)
115115
- **Analytics / Feed / Realtime / Notification / …** → their existing service packages; **delete the facade's duplicated `analyticsQuery` + feed wrappers** and the `ObjectQLPlugin` `'analytics'` adapter (let `service-analytics` own the `'analytics'` service).
116116
- **The transport/dispatcher routes each contract-slice to the owning service** (it already resolves services by name) — no central facade class.
117117

@@ -181,7 +181,7 @@ import { SecurityPlugin } from '@objectstack/plugin-security';
181181
4. **`trusted` profile** — two-key (build-time absence + explicit runtime assertion), prod env-allowlisted.
182182
5. **D7 trigger threshold** — what cross-package ratio (from 88%) over what window signals "extract the engine"? Track in CI; set on first review.
183183
6. **Data-facade home** — does the `DataProtocol` impl live in the engine-adjacent transport layer / `rest`, or a small `@objectstack/protocol-data`? (It is thin and transport-shaped.)
184-
7. **Metadata package name (post-segmentation)** — keep `@objectstack/metadata-protocol` for the `MetadataProtocol` impl, or rename (`@objectstack/protocol-metadata` / `@objectstack/metadata-runtime`)?
184+
7. **Metadata package name (post-segmentation)****Resolved: keep `@objectstack/metadata-protocol`** (already published; renaming has ~0 benefit and real churn). The `protocol` suffix is a low-cost naming exception — the contract is in `@objectstack/spec/api`; a README note in the package should clarify impl-vs-contract.
185185
8. **Per-domain versioning** — once segmented, do capability protocols get independent version markers / a `getCapabilities()` discovery method?
186186
9. **dispatcher vs rest-server overlap** — are `runtime/http-dispatcher` (~3.8k) and `rest/rest-server` (~5.1k) redundant central transport layers? Consolidate or delineate (D11).
187187
10. **Validate multi-adapter** — write a second `IHttpServer` adapter (thin Workers/Express) to prove the port is free of Hono-isms before relying on it (D11).

0 commit comments

Comments
 (0)