docs(adr): ADR-0076 — relocate metadata protocol out of objectql (lean engine, enforced boundary, deferred repo-split)#2414
Merged
Conversation
…dary + trigger-gated repo split) Data-driven v12 assessment of how to let a thin host (objectbase gateway) embed only the objectql engine without the whole platform. Decision (sequenced, based on measured engine↔platform coupling): - Now (additive, non-breaking): a `@objectstack/objectql/core` subpath lean entry; an engine↔platform boundary ratchet (core must not import protocol/plugin/kernel); a capability/profile contract (derive required caps from object schema, default fail-closed, `trusted` via two-key). - Later (trigger-gated): extract a standalone repo on the objectui model once the cross-package commit ratio (currently 88%) falls. Rationale recorded in-ADR: knex is a query builder objectql already uses; splitting protocol saves ≈0 deps; 88% of last month's engine/registry commits were cross-package, so the engine API is not freezable/separable yet. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…a-protocol (it's metadata-domain, mis-located in objectql) Corrects the centerpiece. protocol.ts implements ObjectStackProtocol (contract in spec), manages sys_metadata/locks/commits/ownership — metadata-domain work that only uses the engine as storage via a 5-method SysMetadataEngine interface. Measured: protocol.ts co-changes with engine.ts only 6% of the time vs 43% with metadata-core/metadata/spec; move blast radius = 2 source files (plugin.ts, index.ts). So the right "now" move is relocating protocol into a new @objectstack/metadata-protocol package — not the rev.3 ./core subpath. objectql becomes a lean data engine by construction (268KB leaves the package); gateway depends on it with no protocol. Boundary ratchet keeps it pure. Engine repo-split stays a separate, trigger-gated (88% cross-package) future phase. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
ADR-0076 — v12 layering for
objectql, driven by measured coupling.Centerpiece (rev.4):
protocol.tsis metadata-domain code mis-located in the data-engine package. It implementsObjectStackProtocol(contract in@objectstack/spec), manages sys_metadata / draft-publish / locks / package ownership — and uses the engine only as storage, via a 5-methodSysMetadataEngineinterface injected at runtime.Decision
Now
protocol+sys-metadata-repository+metadata-diagnosticsinto a new@objectstack/metadata-protocol(betweenmetadata-coreand themetadataplugin). objectql becomes a lean data engine by construction — 268KB leaves the package; the gateway depends on objectql with no protocol.objectqlre-exports for back-compat.metadata-protocol/plugin/kernel.trustedvia two-key, prod env-gated).Later (separate, trigger-gated)
Evidence (in the ADR)
Scope
Docs only —
docs/adr/0076-objectql-core-tiering.md. No code changes; implementation (P1–P4) tracked as follow-up.🤖 Generated with Claude Code