|
| 1 | +--- |
| 2 | +"@objectstack/spec": minor |
| 3 | +--- |
| 4 | + |
| 5 | +chore(spec): backfill nine ADR-0087 ledger entries the v17 stock was missing (#6350) |
| 6 | + |
| 7 | +The #6148 completeness gate is deliberately **diff-only** — it judges what a PR |
| 8 | +adds, never the inventory, because auditing stock in CI would turn the repo red on |
| 9 | +adoption day and bill main's history to current authors (#6129). The cost of that |
| 10 | +choice is that every breaking changeset already in the v17 train was never compared |
| 11 | +against the ledger. This is the one-time manual reconciliation the maintainer ruled |
| 12 | +for, not a change to the gate: `check-adr-0087-registration.mjs` still judges diffs |
| 13 | +only, and nothing in CI starts auditing inventory. |
| 14 | + |
| 15 | +Measured today over the stock: **274 declared-breaking changesets**, 106 in the |
| 16 | +residue (published break + a real FROM → TO prescription, so only `registered` or |
| 17 | +`already-registered` remain), **61 of them flagged** as never having touched a |
| 18 | +ledger file. Judging those 61 by hand found nine genuinely missing entries, now |
| 19 | +registered as D3 semantic migrations: |
| 20 | + |
| 21 | +| entry | face | issue | |
| 22 | +| --- | --- | --- | |
| 23 | +| `runtime-httpserver-wrapper-retired` | the exported `HttpServer` delegating wrapper | #5122 | |
| 24 | +| `record-details-sections-object-form` | `RecordDetailsProps.sections` shape + `hideFields` | #5611 | |
| 25 | +| `data-driver-query-omit-object` | `IDataDriver`'s query parameter contract | #5181 | |
| 26 | +| `sort-node-direction-rejected` | `orderBy[].direction` → `order` | #4721 | |
| 27 | +| `tool-requires-confirmation-retired` | `tool.requiresConfirmation` | #3715 | |
| 28 | +| `export-axis-opt-in` | `allowExport` unset flips to deny | #3544 | |
| 29 | +| `apimethod-enum-shrink` | `enable.apiMethods` legacy values | #3543 | |
| 30 | +| `sharing-rule-recipient-reconcile` | sharing-rule `group` / `guest` / owner-type rules | #1878 | |
| 31 | +| `client-delete-result-success` | `DeleteDataResult.deleted` → `success` | #5638 | |
| 32 | + |
| 33 | +Two of them had already shipped **half** a retirement: `tool.requiresConfirmation` |
| 34 | +carries a live `retiredKey()` tombstone in `ai/tool.zod.ts` and `SortNodeSchema` |
| 35 | +carries `aliases: { direction: 'order' }`, but neither had the ledger half. A |
| 36 | +tombstone is the proof the removal was declared; the ledger entry is what |
| 37 | +`spec-changes.json`, the upgrade guide and `os migrate meta` project to consumers, |
| 38 | +and a retirement needs both. |
| 39 | + |
| 40 | +Each of the nine stock changesets now carries its `<!-- adr-0087: registered … -->` |
| 41 | +disposition marker, so the judgement is recorded where the next auditor reads |
| 42 | +rather than only in a PR body. `spec-changes.json` and |
| 43 | +`docs/protocol-upgrade-guide.md` are regenerated from the registry. |
0 commit comments