From c343bf0b1c10466cf976b05ec8c793f4bd721117 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 29 Aug 2026 06:00:17 +0000 Subject: [PATCH] =?UTF-8?q?docs(adr):=20correct=20ADR-0126=20=C2=A76.4=20?= =?UTF-8?q?=E2=80=94=20the=20paper=20protocol's=20zero-consumer=20reading?= =?UTF-8?q?=20was=20instrument=20blindness?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The #12057 survey instrument grepped the module's schema names, which genuinely read zero outside packages/spec with positive controls. It was blind to the module's exported TYPE names: packages/metadata/src/metadata-manager.ts:45 imports `type MetadataOverlay` from @objectstack/spec/kernel and backs a working overlay limb (map at 315-316, getOverlay/saveOverlay/removeOverlay/getEffective at 2166-2249), unreachable from any served surface — its only callers are that package's own unit tests. Verified present at the ADR's own evidence ref 0b048393f, so the reading was already wrong when recorded, not later drift. §6.4's supersession and the enforce-or-remove charter are unaffected; §1.1's restatement of the same count points at the correction. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01LpRNHxWZgSUgVnFT9mQQo4 --- ...6-packaged-metadata-customization-model.md | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/adr/0126-packaged-metadata-customization-model.md b/docs/adr/0126-packaged-metadata-customization-model.md index 6ca6dd1d25..9a593c8467 100644 --- a/docs/adr/0126-packaged-metadata-customization-model.md +++ b/docs/adr/0126-packaged-metadata-customization-model.md @@ -101,7 +101,9 @@ And one **paper** mechanism: `packages/spec/src/kernel/metadata-customization.zo three-layer (system/platform/user) overlay protocol with field-level change tracking — exported, published in the reference docs, and consumed by **zero** runtime packages ([#12057](https://github.com/objectstack-ai/objectstack/issues/12057)). §6.4 records its -disposition so it cannot be mistaken for this model. +disposition so it cannot be mistaken for this model — and ⚠️ **corrects that consumer count there** +(#13136, 2026-08-29: one unreachable build-against consumer in `packages/metadata`, zero +served-surface consumers; the disposition is unchanged). ### 1.2 Why per-type invention had to stop @@ -270,6 +272,23 @@ read at each runtime's own consult point; an empty ledger changes nothing anywhe chartered as an implementation card. Until that card lands, the reference page it generates must not be cited as the customization architecture. + ⚠️ **Correction (#13136, 2026-08-29):** the parenthetical above records "zero consumers". That + predicate was **instrument blindness at measurement time, not later drift**. The #12057 + instrument grepped the module's **schema** names, and that set genuinely does read zero outside + `packages/spec`, positive controls included — but it was blind to the module's exported **type** + names, and one of those has a real build-against consumer: `packages/metadata`'s + `metadata-manager.ts:45` imports `type MetadataOverlay` from `@objectstack/spec/kernel` and + backs a working three-layer overlay limb (in-memory map at 315-316; `getOverlay` / + `saveOverlay` / `removeOverlay` / `getEffective` at 2166-2249). The corrected predicate is + **one unreachable build-against consumer, zero served-surface consumers**: no route serves the + paper endpoints, and the limb's only callers are that package's own unit tests. It is verified + present at this ADR's own evidence ref `0b048393f`, so the zero-consumer reading was already + wrong when it was recorded and §6.4 inherited it. ⛔ **The decision above is unaffected** — the + maintainer's 2026-08-29 ruling adopts retirement on this widened evidence; the supersession and + the enforce-or-remove charter stand, and "nothing may build against it" is now known to name one + existing consumer that has to stop. Measurement: + [#12057 comment 5451357017](https://github.com/objectstack-ai/objectstack/issues/12057#issuecomment-5451357017). + --- ## 7. The worked example: packaged flows (first consumer)