Skip to content

docs(adr): ADR-0076 rev.6 — D10: "protocol" is a contract, distribute impls to domain packages#2427

Merged
os-zhuang merged 1 commit into
mainfrom
docs/adr-0076-d10
Jun 28, 2026
Merged

docs(adr): ADR-0076 rev.6 — D10: "protocol" is a contract, distribute impls to domain packages#2427
os-zhuang merged 1 commit into
mainfrom
docs/adr-0076-d10

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

What

Extends the kernel review in ADR-0076 (rev.6) with D10, per maintainer preference to keep it in one ADR.

D10 — "protocol" is a contract, not an implementation package

Verified the central ObjectStackProtocolImplementation facade is the wrong end-state:

  • It implements only 4 of 11 contract domains (data, metadata, analytics, feed); the other 7 (realtime/notifications/workflow/ai/i18n/views/permissions) live elsewhere or not at all.
  • Analytics is duplicated and collides: both ObjectQLPlugin and AnalyticsServicePlugin register a 'analytics' service — the facade's ~66-line analyticsQuery vs service-analytics's ~1.8k-LOC engine (3 strategies incl. native-SQL). Last-registered wins.
  • Feed is already delegated to IFeedService; the domain services (service-analytics/service-messaging/service-realtime) already exist.

Target: reserve "protocol" for the contract (@objectstack/spec/api only — no *-protocol impl package); DataProtocol → transport, MetadataProtocol → a metadata-domain package (rename metadata-protocolmetadata-runtime), analytics/feed/realtime → their existing services (drop the facade's duplicates); the dispatcher routes each contract-slice to the owning service.

Refines D1 (the metadata-protocol package was an intermediate, not the end-state) and completes D9. Runs at the cross-repo window with D7 / Step 2.

Scope

Docs only — edits docs/adr/0076-objectql-core-tiering.md (Status → rev.6) + a refinement note on D1. No code. Empty changeset.

🤖 Generated with Claude Code

…l package; distribute impls to domain packages

Extends the kernel review. Verified the central ObjectStackProtocolImplementation
facade is the wrong end-state: it implements only 4/11 contract domains; analytics
is duplicated and collides (both ObjectQLPlugin and AnalyticsServicePlugin register
a 'analytics' service — a ~66-line facade copy vs service-analytics's ~1.8k-LOC
engine); feed is already delegated; the domain services already exist.

D10: reserve "protocol" for the contract (spec/api only, no *-protocol impl
package); DataProtocol → transport, MetadataProtocol → a metadata-domain package
(rename metadata-protocol → metadata-runtime), analytics/feed/realtime → their
existing services (drop the facade's duplicates); dispatcher routes per slice.
Refines D1 (metadata-protocol = intermediate) and completes D9. Cross-repo window.

Docs only; empty changeset.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 28, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment Jun 28, 2026 1:31pm

Request Review

@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling labels Jun 28, 2026
@os-zhuang
os-zhuang merged commit c546d7f into main Jun 28, 2026
15 checks passed
@os-zhuang
os-zhuang deleted the docs/adr-0076-d10 branch June 28, 2026 13:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant