Skip to content

@objectstack/objectql/core's "268KB metadata protocol" figure is unverified at HEAD — the structural claim holds, the number does not reproduce #9803

Description

@os-steve

Found while sweeping multi-entry exports maps for unmeasured weight/safety subpath claims (H4 of #9772, PR #9802). Filed rather than folded in because the number needs judgement, not a mechanical correction — #9772's brief was "fold in only what is unambiguously false by your own measurement, card anything needing judgement".

The claim

packages/objectql/src/core.ts, lines 3-8 — the header of the ./core subpath entry:

Lean engine entry (ADR-0076). Exposes the data engine surface [...] WITHOUT the kernel plugin (ObjectQLPlugin), the kernel factory, or any metadata management (@objectstack/metadata-protocol). Embedders that want only the engine (e.g. a thin gateway) import from @objectstack/objectql/core so the 268KB metadata protocol is never pulled into their dependency graph.

What I measured

Static import-graph walk over packages/objectql/src from each entry, value imports only (import type excluded), at main = 11b779e0f:

entrymodules reachedsrc bytesvalue import of @objectstack/metadata-protocol?
.391,560,047yes
./core311,326,133 (85.0%)no

The structural half of the claim is true and is the load-bearing half../core genuinely does not pull @objectstack/metadata-protocol into its graph, and the ADR-0076 D2 boundary ratchet the comment names is what keeps it that way. Nothing here suggests the entry is misdescribed the way @objectstack/lint's ./runtime was.

What does not reproduce

The 268KB figure. packages/metadata-protocol/src is 3,622,216 bytes today. That does not falsify the number — it is presumably a bundled size from the ADR-0076 round, and comparing like for like needs metadata-protocol built and its dist bundle measured, which I did not do (out of scope for #9772, and it is a build I had no reason to pay for on a prose card).

So the honest status is unverified, and probably stale: a hard byte figure written once at authoring time, in a comment whose whole rhetorical weight rests on it, with nothing in CI that re-measures it. That is the same shape #9772 was filed about — the difference is that there the surrounding claim was false too, and here it is not.

Suggested disposition (not a recommendation to act now)

Three options, cheapest first:

  1. Re-measure and update the figure. Build metadata-protocol, stat the published bundle, write today's number. Cheap, and stale again in a month.
  2. Drop the figure, keep the claim. "so @objectstack/metadata-protocol is never pulled into their dependency graph" says everything the sentence needs and is exactly what the ADR-0076 D2 ratchet already enforces. A claim a gate holds true does not need a number a gate does not.
  3. Leave it. It is a comment on an entry whose substantive claim is correct and machine-checked; a stale order-of-magnitude figure misleads far less than ./runtime's did, because acting on it lands the reader somewhere correct anyway.

My weak preference is (2) — it removes the only unpinned assertion in the sentence at zero cost and leaves the pinned one standing. But this is a judgement about how much precision a doc comment owes, which is why it is a card and not a commit.

Not in scope of this card

No change to ./core's contents, the exports map, or the ADR-0076 D2 ratchet. This is about one figure in one comment.

Refs: #9772 · #9707 · PR #9802

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions