Skip to content

Commit f769234

Browse files
committed
docs(upgrading): the aggregate record's export arrays are not at major resolution
`content/docs/upgrading.mdx` stated that the same file's `aggregate` and `perMajor` records "still answer the major-boundary question". That is true of `perMajor`, and of `aggregate.converted` / `aggregate.migrated`, which are derived from the ADR-0087 registries across the whole range. It was never true of `aggregate.added` / `aggregate.removed`: those are the same one-release export diff as the per-release section, and the page was the declared contract the artefact did not keep. The page now says so, names `surfaceScope` as the field that carries the pair, and restates the absent-is-not-zero rule the `release` section already carries. Measured free of open-PR holders before editing: 32 open PRs, 364 file rows, instrument lit (it names all four holders of the migrations registry). Claude-Session: https://claude.ai/code/session_019srGWGCBBCBHqcDoRZpQRh Co-authored-by: Claude <noreply@anthropic.com>
1 parent 0c54886 commit f769234

1 file changed

Lines changed: 21 additions & 2 deletions

File tree

‎content/docs/upgrading.mdx‎

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,8 +335,27 @@ jq '.release | {fromVersion, toVersion,
335335
named — `"./ai: AgentSchema (const)"`, the entry point followed by the export
336336
and its kind. `converted` and `migrated` are the ADR-0087 conversions and
337337
semantic migrations first registered in that release. The same file's
338-
`aggregate` and `perMajor` records are unchanged and still answer the
339-
major-boundary question.
338+
`perMajor` records are unchanged and still answer the major-boundary question,
339+
and so does `aggregate` — for its `converted` and `migrated`, which are derived
340+
from the ADR-0087 registries across the whole `from` → `to` range.
341+
342+
⛔ **But not for `aggregate.added` / `aggregate.removed`.** Those come from the
343+
same one-release export diff as the section above, not from the major range the
344+
record is keyed by, so when they are filled the `aggregate` record carries a
345+
`surfaceScope` naming the exact pair they span:
346+
347+
```bash
348+
jq '.aggregate | {from, to, surfaceScope,
349+
added: (.added | length), removed: (.removed | length)}' \
350+
node_modules/@objectstack/spec/spec-changes.json
351+
```
352+
353+
`surfaceScope` absent means that record claims no export diff at all and its
354+
`added` / `removed` are empty — the registry-only shape. ⛔ Read that as "this
355+
record does not say", never as "nothing was added between `from` and `to`",
356+
which is the same rule the `release` section states for itself below. A release
357+
whose `aggregate` arrays disagree with the two published tarballs, or carry no
358+
`surfaceScope`, does not publish.
340359

341360
The `os` CLI reads the same section, so a CI job does not have to know the file
342361
exists:

0 commit comments

Comments
 (0)