Skip to content

Commit 1737a24

Browse files
committed
docs(spec): say in the shipped artifact that a withdrawal is not reported
The per-release section carries ADR-0087 D4's four arrays, and the boundary they draw — an id that disappeared from the published chain is deliberately NOT reported — lived only in `composeReleaseChanges`'s JSDoc and the PR body. A consumer reads `release.converted: []` as "no conversion change" while an id really did leave the chain between the two releases. Say it where a consumer reads it: the shipped manifest's `$comment` and the upgrading page's "what it does not tell you" callout, with the two-manifest comparison that does answer the question. Documentation of an existing boundary — no fifth array, no shape change, and the generator and the release gate are untouched. Claude-Session: https://claude.ai/code/session_01LvwGppdonww4zGLWZo5rho Co-authored-by: Claude <noreply@anthropic.com>
1 parent 951f75c commit 1737a24

3 files changed

Lines changed: 17 additions & 2 deletions

File tree

‎content/docs/upgrading.mdx‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,16 @@ enforcing a constraint that was declared and inert, without adding or removing a
368368
single export. A delta of `0 added, 0 removed` is a real measurement of the
369369
export surface and says nothing about the accept-sets behind it — the release
370370
checklist above is still the record for those.
371+
372+
**And it does not report withdrawals.** All four arrays report what a release
373+
**added**: `converted` and `migrated` list the ADR-0087 ids *first registered*
374+
in it. An id that **left** the published chain between the two releases is in
375+
none of them — `converted: []` means "this release registered none", never
376+
"none was withdrawn". ADR-0087 D4 names these four arrays and this section
377+
carries exactly those four; to see a withdrawal, compare the `aggregate`
378+
records of the two installed manifests (`.aggregate.converted[].conversionId`
379+
and `.aggregate.migrated[].migrationId`) — an id present in the older one and
380+
absent from the newer one was withdrawn.
371381
</Callout>
372382

373383
### The per-package changelogs are the exhaustive record

‎packages/spec/scripts/build-spec-changes.ts‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,12 @@ function build(): string {
203203
$comment:
204204
'GENERATED (ADR-0087 D4) — do not edit. Regenerate with: pnpm --filter @objectstack/spec gen:spec-changes. ' +
205205
'A projection of the D2 conversion table + D3 migration chain; the upgrade guide and the MCP spec_changes ' +
206-
'tool derive from this same data.',
206+
'tool derive from this same data. ' +
207+
'When a `release` section is present, its four ADR-0087 D4 arrays report what that release ADDED: ' +
208+
'`added`/`removed` are the export-surface diff of the two published tarballs, and `converted`/`migrated` ' +
209+
'are the D2/D3 ids FIRST REGISTERED in it. An id that LEFT the published chain between the two releases ' +
210+
'is reported in none of them — `converted: []` means "this release registered none", never "none was ' +
211+
'withdrawn"; a withdrawal is visible only by comparing two published manifests.',
207212
protocolVersion: PROTOCOL_VERSION,
208213
supportFloor: MIGRATION_SUPPORT_FLOOR,
209214
migrateCommand: `objectstack migrate meta --from <N> (N >= ${MIGRATION_SUPPORT_FLOOR})`,

‎packages/spec/spec-changes.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$comment": "GENERATED (ADR-0087 D4) — do not edit. Regenerate with: pnpm --filter @objectstack/spec gen:spec-changes. A projection of the D2 conversion table + D3 migration chain; the upgrade guide and the MCP spec_changes tool derive from this same data.",
2+
"$comment": "GENERATED (ADR-0087 D4) — do not edit. Regenerate with: pnpm --filter @objectstack/spec gen:spec-changes. A projection of the D2 conversion table + D3 migration chain; the upgrade guide and the MCP spec_changes tool derive from this same data. When a `release` section is present, its four ADR-0087 D4 arrays report what that release ADDED: `added`/`removed` are the export-surface diff of the two published tarballs, and `converted`/`migrated` are the D2/D3 ids FIRST REGISTERED in it. An id that LEFT the published chain between the two releases is reported in none of them — `converted: []` means \"this release registered none\", never \"none was withdrawn\"; a withdrawal is visible only by comparing two published manifests.",
33
"protocolVersion": "17.0.0",
44
"supportFloor": 10,
55
"migrateCommand": "objectstack migrate meta --from <N> (N >= 10)",

0 commit comments

Comments
 (0)