Repository navigation
Commit c056979
fix(spec): tombstones for keys live in @objectstack/spec 17.7.0 name 18 as their removal version (#23186)
Fixes #23145
Clause-②: no (prescription text only: no key, value or shape is accepted
or refused differently)
**Block lifted.** `check:future-spec-major` went green when the Version
Packages pull request #21988 merged and `packages/spec/package.json`
read `18.0.0-next.0`.
## Fix round (seat notes 6144192235 and 6144323612)
- **Why.** `main` gained two `retiredAfter: '17.7.0'` entries after the
last merge. Unjoined, they trip the pin's completeness guard; on the
previous head CI's `Test Core (1/6)` failed in `packages/spec` `pnpm run
test` (its annotation; the job log is not readable from this container).
`main` also gained a string of this class, `view.data.provider: 'api'`
"removed in @objectstack/spec 17" (`1912af47b`, D3-only).
- **Joined.** `page-action-row-navigation-executor-to-url`: the
`'navigation'` refusal on all four row shapes.
`cbp-master-detail-required-defaulted`: the parse's refusal at
`sharingModel`.
- **Corrected** (text only; the literal pins follow):
- The `'navigation'` refusal named no release. It now says the alias is
"refused on page action rows since @objectstack/spec 18".
- The controlled-by-parent refusal named no release. It now says
"ADR-0055 §1: since @objectstack/spec 18, …".
- `view.data.provider: 'api'` now says "removed in @objectstack/spec
18".
- The two-master refusal (same function, not on the D2 entry's surface)
is unedited and names no release.
- **Measured liveness** (parse probes against each tarball, controls
accepted):
- all three shapes, including every `controlled_by_parent` variant (no
master, optional master, required lookup, two masters), are **accepted**
by 17.7.0 and by **18.0.0-next.0**;
- the HEAD build refuses each one with its prescription.
- So the changeset names next.0 only for its first table. These three
rows sit in a second table: `18.0.0-next.0` still accepts them, so the
first release that refuses them is the one after it.
- **Release pins.** `view-data-api-provider-retirement.test.ts` pins
"@objectstack/spec 18"; `view.test.ts` and `object-storage.test.ts` gain
one line each.
- **Pending-changeset quotes, corrected in place.** `23082:25`
(`provider: 'api'`, byte-equal to the emitted string) and `23103:36`
(the `'navigation'` first sentence, equal to the emitted one).
`pre/22876:29,31` stay byte-equal.
- **`check-empty-changeset` stays red by design (DELIBERATE
CORRECTION).** Verdict at `38728b3e1`, verbatim:
```text
This PR changes a changeset it did not add:
.changeset/23082-view-data-api-provider-retired.md
present on the merge base and CHANGED by this PR -- this is somebody else's release note
.changeset/23103-page-action-row-on-success-and-executor.md
present on the merge base and CHANGED by this PR -- this is somebody else's release note
.changeset/pre/22876-email-template-category-is-system-retired.md
present on the merge base and CHANGED by this PR -- this is somebody else's release note
```
Each note quotes a prescription this PR corrects, and each corrected
quote is equal to the emitted text. Restoring any of them from the base
would publish a false sentence.
- **Ablation**, each leg restored to blob == HEAD:
- ⑥ the `'navigation'` refusal without its release: **red**, 1 failed /
18 passed, "names no release". The first try was refused by the tool
(the replacement was a substring of the anchor; nothing ran).
- ⑦ the controlled-by-parent refusal without its release: **red**, 1/18.
- **`main` since:** 9 commits to `6d7f4df3c`. None touches
`packages/spec` or adds a `retiredAfter` line; `git merge-tree` with it
is clean.
- **Not swept:** two other new D3 narrowings
(`page-default-record-page-one-per-object-refused`,
`ui-page-action-row-on-success-shape-closed`) whose refusals name no
release. They are outside this surface.
## Patch round (seat note 6143582707)
- `@objectstack/spec@18.0.0-next.0` reached npm `next` at
2026-10-13T08:35:43Z, so the changeset's "17.7.0, the newest published
release" was false where it is read. It now names 17.7.0 as the newest
17.x release (npm `latest`) and names `18.0.0-next.0` (`56d63b4e7`; the
fix round split that sentence per table).
- The next.0 tarball (`npm pack` into its own directory; integrity
`sha512-ASTh6…2Ow==` matches the packument) refuses all 16 first-table
rows with the text this PR replaces, and the sub-day intervals too. Its
`CHANGELOG.md:2091` and `:2093` quote the `email_template` prescriptions
as "…17".
- Gates at `56d63b4e7`: 20 derived, 20 run, 19 exit 0, 1 exit 1
(`check-empty-changeset`, by design).
## Landing round (seat review 6140670883)
- **Merge** `071dbdb24` (parents `1ee37155d` and `d889448b9`, the
`18.0.0-next.0` version commit), no conflict. The release **moved**
`22876` to `.changeset/pre/`; git followed the rename, so the two-line
correction sits there.
- **Kept (decision A, seat-confirmed).** At `changeset pre exit` the
consumed `pre/` changesets are read again into the stable `18.0.0`
CHANGELOG: `@changesets/read@1.0.1` `dist/index.mjs:29`,
`@changesets/assemble-release-plan@7.0.0` `dist/index.mjs:328` (drops
`pre/` only while `preState.mode !== "exit"`),
`@changesets/apply-release-plan@8.1.1` `dist/index.mjs:301-319`.
- **`RETIRED_SUB_DAY_INTERVALS` TSDoc** (`data/analytics.zod.ts:104`,
shipped in the `.d.ts`) now reads "declared through @objectstack/spec
17.4.0; 17.5.0 removed them". Docblock text, not a row.
- **`check-issue-citations`**: the one added citation (`#17296`)
resolves locally ("1 resolves"); the CI annotation was exit 3, the
could-not-measure class.
## Patch round (seat answer 6139390852)
- **Merge.** `7bfd6b035` (parents `936750950` and `20949e7a7`), no
conflicts, via `scripts/pm/os-regen-merge.sh`; `check:generated` green
at `1ee37155d`.
- **Row 236, the opposite direction.** `TimeUpdateInterval` accepts
`second` / `minute` / `hour` in the 17.4.0 tarball
(`src/data/analytics.zod.ts:53-55`) and refuses them in 17.5.0
(`:145-148`); its D2 `cube-sub-day-granularities-removed` is
`retiredAfter: '17.4.0'`. The refusal said "retired in protocol 18"; it
now says "was removed in @objectstack/spec 17.5.0". It is joined to the
pin; its two literal pins follow (`spec/src/data/analytics.test.ts`,
`drivers/driver-memory/src/memory-analytics-time-granularity.test.ts`).
- **Pending-changeset quotes, BEFORE → AFTER.** Every quote the sweep
read, against each row's verdict. Paths are as read at `e81cae014`; the
`18.0.0-next.0` release has since moved each of these files into
`.changeset/pre/`:
| changeset quote | before | after |
| --- | --- | --- |
| `22876-email-template-category-is-system-retired.md:29`
(`email_template.category`) | removed in @objectstack/spec 17 |
**edited**: removed in @objectstack/spec 18; now byte-equal to the
emitted prescription |
| `22876-…md:31` (`email_template.isSystem`) | removed in
@objectstack/spec 17 | **edited**: removed in @objectstack/spec 18;
byte-equal to the emitted prescription |
| `22161-lint-slice-6-one-line.md:17` (`element:filter`) | removed in
@objectstack/spec 17 | true as written: `element-filter-removed` is
`retiredAfter: '17.0.0'`, first retired in the 17.1.0 tarball (census),
and the tag carries the same prescription (`ui/page.zod.ts:114`) |
| `22876-…md:36` | "(protocol 18, retired from the load path)" | true as
written: it names the D2 entry's `toMajor`, not a release |
| `22340-registry-allow-environment-overlay.md:37` | "(protocol 18)" |
true as written: it names the D3 entry's registration major, not a
release |
| `22130-protocol-18.md:10` | the ADR-0087 marker's id list
(`cube-sub-day-granularities-removed`) | an id, not a quote: untouched
byte-for-byte |
| `23082-view-data-api-provider-retired.md:25` (fix round) | removed in
@objectstack/spec 17 | **edited**: removed in @objectstack/spec 18;
byte-equal to the emitted string |
| `23103-page-action-row-on-success-and-executor.md:36` (fix round) |
the `'navigation'` refusal's first sentence, no release | **edited**:
equal to the emitted first sentence, which now names 18 |
| `pre/22340-s3-governed-text-rename.md:9` (landing-round re-sweep) |
"renamed to `allowEnvironmentOverlay` in protocol 18" | true as written:
a paraphrase of the rename naming the protocol major (`PROTOCOL_VERSION`
18.0.0), not a quote of the prescription |
No other changeset quotes a changed prescription. The landing round
re-swept the remaining root stock and `.changeset/pre/`. The sweep
covered every `.changeset/*.md` for each changed sentence and for
"17.8.0", "retired in protocol 18", "renamed to
`allowEnvironmentOverlay`" and "legacy form of a package manifest".
22876's frontmatter and marker block are byte-identical (first 12 lines,
same md5). This PR's own changeset gains the interval correction.
**`check-empty-changeset` stays red by design** (ruling D on #17712,
DELIBERATE CORRECTION class): the consumed `pre/22876` note still feeds
the stable `18.0.0` notes at pre exit, so restoring it from the base
would put a false sentence into them. Decision A, seat-confirmed. The
current three-file verdict is in the fix-round section.
## What changed
Eleven prescription strings named the wrong removal release, or none.
Ten are for shapes the `@objectstack/spec@17.7.0` tarball still accepts,
and they now name 18. The eleventh is the interval refusal above.
- `elementFlatBindingRetired` (`ui/component.zod.ts`): one shared string
rendering ten tombstones (`element:number` `object` / `filter`;
`element:record_picker` and `element:repeater` `object` / `filter` /
`sort` / `limit`). Was 17.
- `object-grid` `defaultFilters` (`ui/component.zod.ts`). Was 17.
- `email_template.category` and `email_template.isSystem`
(`system/email-template.zod.ts`). Was 17.
- The flat permission-string list on a package manifest
(`kernel/manifest.zod.ts`, the union arm `ManifestPermissionsSchema`
dropped; D2 `manifest-permissions-string-list-removed`, `retiredAfter:
'17.7.0'`). Was 17.
- `public` in `StorageScope` (`system/object-storage.zod.ts`,
`enumWithRetiredValues`; D3 `storage-scope-public-retired`). Was
**17.8.0**, a release this train will not cut.
- `MetadataTypeRegistryEntry.allowOrgOverride` →
`allowEnvironmentOverlay` (`kernel/metadata-plugin.zod.ts`). Named
**no** release, an omission against the governing text ("the version
that removed it"). The seat ratified the edit.
- Fix round: the `'navigation'` row-executor refusal and the
controlled-by-parent no-required-master refusal (both named no release),
and `view.data.provider: 'api'` (was 17).
Every `os migrate meta --from 17` sentence is unchanged and correct (H6
below). The test files that pinned the old literals follow. The
`content/docs/references/**` projection is regenerated (14 rows). One
changeset, `@objectstack/spec` patch. One new pin,
`packages/spec/src/shared/retired-key-removal-version.pin.test.ts`. The
two non-`retiredKey` renderers (manifest list, `StorageScope.public`)
and the interval message are seat-ratified surface additions
(6139390852).
## The enumeration
Population (H2): every `RETIRED_KEYS_BY_MAJOR[18]` id (232), joined by
**position** (`category/Def:key`) to its tombstone. Added to those:
- the three non-key renderers of the five unpublished D2 entries, and
the one major-18 D3 value tombstone;
- the 17.x-shipped interval refusal (row 236, patch round);
- the fix round's three rows (237–239): two new `retiredAfter: '17.7.0'`
entries and the D3-only `view.data.provider: 'api'`.
**239 rows: 20 edited, 219 unchanged.** Edited rows render 11 strings;
the 10 element rows share one. Entries at `retiredAfter: '17.7.0'`:
**7**.
How each column was read:
- **before**: the release the guidance names at `121847a7d` (row 236: at
`936750950`).
- **live at the tag**: read against the `@objectstack/spec@17.7.0`
tarball, integrity-verified against the packument, and against tag
commit `4e4e88142`. Paths are relative to `packages/spec/` at
`4e4e88142`; `tarball json-schema/…` is the published JSON Schema.
- `yes` rows cite the live declaration. `no` rows cite a `[RETIRED]`
authorable-surface line, a `[REMOVED]` describe, the tombstone's source
line, or the def's retired-defs entry.
- **D2 entry**: the conversion the retired-keys entry file names. For
the comment-derived join, every row with `retiredAfter: '17.7.0'` is
LIVE at the tag and every earlier stamp is tombstoned there: zero
disagreements.
| # | key (type:key) | registry entry (D2 named in the retired-keys
entry file) | toMajor | retiredAfter | live at the tag | before | after
|
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | `ai/Agent:lifecycle` | `agent-lifecycle-removed` | 18 | 17.6.0 |
no · authorable-surface/ai.json:29 `[RETIRED]` | 17.7.0 | unchanged |
| 2 | `ai/Agent:memory.longTerm.store` |
`agent-memory-long-term-store-removed` | 18 | 17.6.0 | no · tarball
json-schema/ai/Agent.json:140 `[REMOVED]` | 17.7.0 | unchanged |
| 3 | `ai/ConversationAnalytics:duration` | retired-keys only | — | — |
no · authorable-surface/ai.json:96 `[RETIRED]` | 17 | unchanged |
| 4 | `api/ApiEndpoint:cacheTtl` |
`api-endpoint-cache-ttl-to-cache-ttl-seconds` | 18 | 17.3.0 | no ·
authorable-surface/api.json:120 `[RETIRED]` | 17 | unchanged |
| 5 | `api/BatchEndpointsConfig:defaultAtomic` | retired-keys only | — |
— | no · authorable-surface/api.json:262 `[RETIRED]` | 17 | unchanged |
| 6 | `api/BatchEndpointsConfig:operations.upsertMany` | retired-keys
only | — | — | no · tarball json-schema/api/BatchEndpointsConfig.json:37
`[REMOVED]` | 17 | unchanged |
| 7 | `api/CrudEndpointsConfig:objectParamStyle` | retired-keys only | —
| — | no · authorable-surface/api.json:425 `[RETIRED]` | 17 | unchanged
|
| 8 | `api/CrudEndpointsConfig:patterns` | retired-keys only | — | — |
no · authorable-surface/api.json:427 `[RETIRED]` | 17 | unchanged |
| 9 | `api/DataLoaderConfig:cacheTtl` | retired-keys only | — | — | no ·
authorable-surface/api.json:453 `[RETIRED]` | 17 | unchanged |
| 10 | `api/DeviceRequestResponse:interval` | retired-keys only | — | —
| no · authorable-surface/api.json:514 `[RETIRED]` | 17 | unchanged |
| 11 | `api/EnhancedApiError:retryAfter` | retired-keys only | — | — |
no · authorable-surface/api.json:603 `[RETIRED]` | 17 | unchanged |
| 12 | `api/ListInstalledPackagesRequest:cursor` | retired-keys only | —
| — | no · authorable-surface/api.json:998 `[RETIRED]` | 17.5.0 |
unchanged |
| 13 | `api/ListInstalledPackagesRequest:limit` | retired-keys only | —
| — | no · authorable-surface/api.json:1000 `[RETIRED]` | 17.5.0 |
unchanged |
| 14 | `api/ListRunsRequest:cursor` | retired-keys only | — | — | no ·
authorable-surface/api.json:1025 `[RETIRED]` | 17.5.0 | unchanged |
| 15 | `api/MetadataEndpointsConfig:cacheTtl` | retired-keys only | — |
— | no · authorable-surface/api.json:1073 `[RETIRED]` | 17 | unchanged |
| 16 | `api/MetadataEndpointsConfig:endpoints.schema` | retired-keys
only | — | — | no · tarball
json-schema/api/MetadataEndpointsConfig.json:49 `[REMOVED]` | 17 |
unchanged |
| 17 | `api/RestApiConfig:documentation.enabled` | retired-keys only | —
| — | no · tarball json-schema/api/RestApiConfig.json:79 `[REMOVED]` |
17.5.0 | unchanged |
| 18 | `api/RestApiConfig:documentation.version` | retired-keys only | —
| — | no · tarball json-schema/api/RestApiConfig.json:91 `[REMOVED]` |
17.5.0 | unchanged |
| 19 | `api/RestApiConfig:responseFormat` | retired-keys only | — | — |
no · authorable-surface/api.json:1437 `[RETIRED]` | 17.5.0 | unchanged |
| 20 | `api/RestApiEndpoint:cacheTtl` | retired-keys only | — | — | no ·
authorable-surface/api.json:1439 `[RETIRED]` | 17 | unchanged |
| 21 | `api/RestApiEndpoint:handlerStatus` | retired-keys only | — | — |
no · authorable-surface/api.json:1445 `[RETIRED]` | 17 | unchanged |
| 22 | `api/RestApiEndpoint:timeout` | retired-keys only | — | — | no ·
authorable-surface/api.json:1455 `[RETIRED]` | 17 | unchanged |
| 23 | `api/RestApiPluginConfig:performance.defaultCacheTtl` |
retired-keys only | — | — | no · tarball
json-schema/api/RestApiPluginConfig.json:812 `[REMOVED]` | 17 |
unchanged |
| 24 | `api/RouteDefinition:timeout` | retired-keys only | — | — | no ·
authorable-surface/api.json:1512 `[RETIRED]` | 17 | unchanged |
| 25 | `api/RouteGenerationConfig:excludeObjects` | retired-keys only |
— | — | no · authorable-surface/api.json:1514 `[RETIRED]` | 17 |
unchanged |
| 26 | `api/RouteGenerationConfig:includeObjects` | retired-keys only |
— | — | no · authorable-surface/api.json:1515 `[RETIRED]` | 17 |
unchanged |
| 27 | `api/RouteGenerationConfig:nameTransform` | retired-keys only | —
| — | no · authorable-surface/api.json:1516 `[RETIRED]` | 17 | unchanged
|
| 28 | `api/RouteGenerationConfig:overrides` | retired-keys only | — | —
| no · authorable-surface/api.json:1517 `[RETIRED]` | 17 | unchanged |
| 29 | `api/SessionUser:language` | retired-keys only | — | — | no ·
authorable-surface/api.json:1600 `[RETIRED]` | 17.4.0 | unchanged |
| 30 | `api/SimplePresenceState:lastSeen` | retired-keys only | — | — |
no · authorable-surface/api.json:1615 `[RETIRED]` | 17 | unchanged |
| 31 | `api/WebSocketConfig:pingInterval` | retired-keys only | — | — |
no · authorable-surface/api.json:1771 `[RETIRED]` | 17 | unchanged |
| 32 | `api/WebSocketConfig:reconnectInterval` | retired-keys only | — |
— | no · authorable-surface/api.json:1775 `[RETIRED]` | 17 | unchanged |
| 33 | `api/WebSocketConfig:timeout` | retired-keys only | — | — | no ·
authorable-surface/api.json:1777 `[RETIRED]` | 17 | unchanged |
| 34 | `api/WebSocketEvent:timestamp` | retired-keys only | — | — | no ·
authorable-surface/api.json:1783 `[RETIRED]` | 17 | unchanged |
| 35 | `api/WebSocketServerConfig:heartbeatInterval` | retired-keys only
| — | — | no · authorable-surface/api.json:1787 `[RETIRED]` | 17 |
unchanged |
| 36 | `data/AutoPersistenceConfig:autoSaveInterval` |
`memory-persistence-auto-save-interval-to-ms` | 18 | 17.3.0 | no ·
authorable-surface/data.json:38 `[RETIRED]` | 17 | unchanged |
| 37 | `data/Cube:refreshKey` | `cube-refresh-key-removed` | 18 | 17.5.0
| no · authorable-surface/data.json:100 `[RETIRED]` | 17 | unchanged |
| 38 | `data/CubeJoin:relationship` |
`cube-join-sql-and-relationship-removed` | 18 | 17.4.0 | no ·
src/data/analytics.zod.ts:573 | 17 | unchanged |
| 39 | `data/CubeJoin:sql` | `cube-join-sql-and-relationship-removed` |
18 | 17.4.0 | no · src/data/analytics.zod.ts:572 | 17 | unchanged |
| 40 | `data/CurrencyConfig:precision` |
`currency-config-precision-removed` | 18 | 17.4.0 | no ·
src/data/field.zod.ts:453 | 17.5.0 | unchanged |
| 41 | `data/Dimension:name` | `cube-member-inner-name-removed` | 18 |
17.4.0 | no · authorable-surface/data.json:197 `[RETIRED]` | 17.5.0 |
unchanged |
| 42 | `data/DriverOptions:timeout` | retired-keys only | — | — | no ·
authorable-surface/data.json:279 `[RETIRED]` | 17 | unchanged |
| 43 | `data/ESignatureConfig:expirationDays` | retired-keys only | — |
— | no · authorable-surface/data.json:288 `[RETIRED]` | n/a (def retired
at HEAD) | unchanged |
| 44 | `data/ESignatureConfig:reminderDays` | retired-keys only | — | —
| no · authorable-surface/data.json:290 `[RETIRED]` | n/a (def retired
at HEAD) | unchanged |
| 45 | `data/FilePersistenceConfig:autoSaveInterval` |
`memory-persistence-auto-save-interval-to-ms` | 18 | 17.3.0 | no ·
authorable-surface/data.json:444 `[RETIRED]` | 17 | unchanged |
| 46 | `data/FileValue:duration` | retired-keys only | — | — | no ·
authorable-surface/data.json:449 `[RETIRED]` | 17 | unchanged |
| 47 | `data/Metric:filters` | `metric-filters-removed` | 18 | 17.1.0 |
no · src/data/analytics.zod.ts:367 | 17 | unchanged |
| 48 | `data/Metric:name` | `cube-member-inner-name-removed` | 18 |
17.4.0 | no · authorable-surface/data.json:602 `[RETIRED]` | 17.5.0 |
unchanged |
| 49 | `data/NoSQLQueryOptions:timeout` | retired-keys only | — | — | no
· authorable-surface/data.json:663 `[RETIRED]` | 17 | unchanged |
| 50 | `data/TenancyConfig:organizationField` |
`object-tenancy-organization-field-removed` | 18 | 17.4.0 | no ·
src/data/object.zod.ts:543 | 17 | unchanged |
| 51 | `data/TursoConfig:timeout` | `turso-config-timeout-to-timeout-ms`
| 18 | 17.3.0 | no · authorable-surface/data.json:1014 `[RETIRED]` | 17
| unchanged |
| 52 | `integration/CircuitBreakerConfig:monitoringWindow` |
`connector-resilience-keys-removed` | 18 | 17.4.0 | no · def retired
whole:
src/migrations/entries/retired-defs/18.integration__CircuitBreakerConfig.ts
| n/a (def retired at HEAD) | unchanged |
| 53 | `integration/Connector:connectionTimeoutMs` |
`connector-connection-timeout-ms-removed` | 18 | 17.4.0 | no ·
authorable-surface/integration.json:15 `[RETIRED]` | 17 | unchanged |
| 54 | `integration/Connector:errorMapping` |
`connector-error-mapping-removed` | 18 | 17.3.0 | no ·
authorable-surface/integration.json:18 `[RETIRED]` | 17 | unchanged |
| 55 | `integration/Connector:fieldMappings` | retired-keys only | — | —
| no · authorable-surface/integration.json:19 `[RETIRED]` | 17 |
unchanged |
| 56 | `integration/Connector:health` |
`connector-resilience-keys-removed` | 18 | 17.4.0 | no ·
authorable-surface/integration.json:20 `[RETIRED]` | 17 | unchanged |
| 57 | `integration/Connector:status` |
`connector-resilience-keys-removed` | 18 | 17.4.0 | no ·
authorable-surface/integration.json:30 `[RETIRED]` | 17 | unchanged |
| 58 | `integration/Connector:syncConfig` |
`connector-sync-keys-removed` | 18 | 17.5.0 | no ·
authorable-surface/integration.json:31 `[RETIRED]` | 17 | unchanged |
| 59 | `integration/Connector:triggers` | `connector-triggers-removed` |
18 | 17.5.0 | no · authorable-surface/integration.json:32 `[RETIRED]` |
17 | unchanged |
| 60 | `integration/Connector:webhooks` |
`connector-resilience-keys-removed` | 18 | 17.4.0 | no ·
authorable-surface/integration.json:34 `[RETIRED]` | 17 | unchanged |
| 61 | `integration/ConnectorTrigger:interval` |
`connector-triggers-removed` | 18 | 17.5.0 | no · def retired whole:
src/migrations/entries/retired-defs/18.integration__ConnectorTrigger.ts
| n/a (def retired at HEAD) | unchanged |
| 62 | `integration/DeclarativeConnectorEntry:connectionTimeoutMs` |
retired-keys only | — | — | no · authorable-surface/integration.json:61
`[RETIRED]` | 17 | unchanged |
| 63 | `integration/DeclarativeConnectorEntry:errorMapping` |
retired-keys only | — | — | no · authorable-surface/integration.json:64
`[RETIRED]` | 17 | unchanged |
| 64 | `integration/DeclarativeConnectorEntry:fieldMappings` |
retired-keys only | — | — | no · authorable-surface/integration.json:65
`[RETIRED]` | 17 | unchanged |
| 65 | `integration/DeclarativeConnectorEntry:health` | retired-keys
only | — | — | no · authorable-surface/integration.json:66 `[RETIRED]` |
17 | unchanged |
| 66 | `integration/DeclarativeConnectorEntry:status` | retired-keys
only | — | — | no · authorable-surface/integration.json:76 `[RETIRED]` |
17 | unchanged |
| 67 | `integration/DeclarativeConnectorEntry:syncConfig` | retired-keys
only | — | — | no · authorable-surface/integration.json:77 `[RETIRED]` |
17 | unchanged |
| 68 | `integration/DeclarativeConnectorEntry:triggers` | retired-keys
only | — | — | no · authorable-surface/integration.json:78 `[RETIRED]` |
17 | unchanged |
| 69 | `integration/DeclarativeConnectorEntry:webhooks` | retired-keys
only | — | — | no · authorable-surface/integration.json:80 `[RETIRED]` |
17 | unchanged |
| 70 | `kernel/CompatibilityMatrixEntry:estimatedMigrationTime` |
retired-keys only | — | — | no · authorable-surface/kernel.json:33
`[RETIRED]` | 17 | unchanged |
| 71 | `kernel/EventPersistence:retention` | retired-keys only | — | — |
no · authorable-surface/kernel.json:130 `[RETIRED]` | 17 | unchanged |
| 72 | `kernel/EventSourcingConfig:retention` | retired-keys only | — |
— | no · authorable-surface/kernel.json:149 `[RETIRED]` | 17 | unchanged
|
| 73 | `kernel/HealthStatus:timestamp` | retired-keys only | — | — | no
· def retired whole:
src/migrations/entries/retired-defs/18.kernel__HealthStatus.ts | n/a
(def retired at HEAD) | unchanged |
| 74 | `kernel/HotReloadConfig:debounceDelay` | retired-keys only | — |
— | no · authorable-surface/kernel.json:212 `[RETIRED]` | 17 | unchanged
|
| 75 | `kernel/HotReloadConfig:watchPatterns` | retired-keys only | — |
— | no · authorable-surface/kernel.json:218 `[RETIRED]` | 17.3.0 |
unchanged |
| 76 | `kernel/KernelContext:previewMode` | retired-keys only | — | — |
no · authorable-surface/kernel.json:243 `[RETIRED]` | 17 | unchanged |
| 77 | `kernel/KernelContext:startTime` | retired-keys only | — | — | no
· authorable-surface/kernel.json:244 `[RETIRED]` | 17 | unchanged |
| 78 | `kernel/KernelSecurityPolicy:auditLog.retention` | retired-keys
only | — | — | no · tarball
json-schema/kernel/KernelSecurityPolicy.json:195 `[REMOVED]` | 17 |
unchanged |
| 79 | `kernel/KernelSecurityPolicy:authentication.tokenExpiration` |
retired-keys only | — | — | no · tarball
json-schema/kernel/KernelSecurityPolicy.json:134 `[REMOVED]` | 17 |
unchanged |
| 80 | `kernel/Manifest:capabilities` | retired-keys only | — | — | no ·
authorable-surface/kernel.json:259 `[RETIRED]` | 17 | unchanged |
| 81 | `kernel/Manifest:configuration` | retired-keys only | — | — | no
· authorable-surface/kernel.json:260 `[RETIRED]` | 17 | unchanged |
| 82 | `kernel/Manifest:contributes.actions` | retired-keys only | — | —
| no · tarball json-schema/kernel/Manifest.json:180 `[REMOVED]` | 17 |
unchanged |
| 83 | `kernel/Manifest:contributes.commands` | retired-keys only | — |
— | no · tarball json-schema/kernel/Manifest.json:200 `[REMOVED]` | 17 |
unchanged |
| 84 | `kernel/Manifest:contributes.drivers` | retired-keys only | — | —
| no · tarball json-schema/kernel/Manifest.json:184 `[REMOVED]` | 17 |
unchanged |
| 85 | `kernel/Manifest:contributes.events` | retired-keys only | — | —
| no · tarball json-schema/kernel/Manifest.json:164 `[REMOVED]` | 17 |
unchanged |
| 86 | `kernel/Manifest:contributes.fieldTypes` | retired-keys only | —
| — | no · tarball json-schema/kernel/Manifest.json:188 `[REMOVED]` | 17
| unchanged |
| 87 | `kernel/Manifest:contributes.functions` | retired-keys only | — |
— | no · tarball json-schema/kernel/Manifest.json:192 `[REMOVED]` | 17 |
unchanged |
| 88 | `kernel/Manifest:contributes.kinds.globs` | retired-keys only | —
| — | no · tarball json-schema/kernel/Manifest.json:149 `[REMOVED]` | 17
| unchanged |
| 89 | `kernel/Manifest:contributes.menus` | retired-keys only | — | — |
no · tarball json-schema/kernel/Manifest.json:168 `[REMOVED]` | 17 |
unchanged |
| 90 | `kernel/Manifest:contributes.routes` | retired-keys only | — | —
| no · tarball json-schema/kernel/Manifest.json:196 `[REMOVED]` | 17 |
unchanged |
| 91 | `kernel/Manifest:contributes.themes` | retired-keys only | — | —
| no · tarball json-schema/kernel/Manifest.json:172 `[REMOVED]` | 17 |
unchanged |
| 92 | `kernel/Manifest:contributes.translations` | retired-keys only |
— | — | no · tarball json-schema/kernel/Manifest.json:176 `[REMOVED]` |
17 | unchanged |
| 93 | `kernel/Manifest:extensions` | retired-keys only | — | — | no ·
authorable-surface/kernel.json:269 `[RETIRED]` | 17 | unchanged |
| 94 | `kernel/MetadataManagerConfig:cache.enabled` | retired-keys only
| — | — | no · tarball json-schema/kernel/MetadataManagerConfig.json:52
`[REMOVED]` | 17 | unchanged |
| 95 | `kernel/MetadataManagerConfig:cache.maxSize` | retired-keys only
| — | — | no · tarball json-schema/kernel/MetadataManagerConfig.json:64
`[REMOVED]` | 17 | unchanged |
| 96 | `kernel/MetadataManagerConfig:cache.ttl` | retired-keys only | —
| — | no · tarball json-schema/kernel/MetadataManagerConfig.json:60
`[REMOVED]` | 17 | unchanged |
| 97 | `kernel/MetadataManagerConfig:cache.ttlSeconds` | retired-keys
only | — | — | no · tarball
json-schema/kernel/MetadataManagerConfig.json:56 `[REMOVED]` | 17 |
unchanged |
| 98 | `kernel/MetadataManagerConfig:persistence.overlayWritable` |
retired-keys only | — | — | no · tarball
json-schema/kernel/MetadataManagerConfig.json:177 `[REMOVED]` | 17 |
unchanged |
| 99 | `kernel/MetadataPluginConfig:additionalTypes` | retired-keys only
| — | — | no · authorable-surface/kernel.json:310 `[RETIRED]` | 17 |
unchanged |
| 100 | `kernel/MetadataPluginConfig:customizationPolicies` |
retired-keys only | — | — | no · authorable-surface/kernel.json:313
`[RETIRED]` | 17 | unchanged |
| 101 | `kernel/MetadataPluginConfig:mergeStrategy` | retired-keys only
| — | — | no · authorable-surface/kernel.json:316 `[RETIRED]` | 17 |
unchanged |
| 102 | `kernel/MetadataTypeRegistryEntry:allowOrgOverride` |
retired-keys only | — | — | **yes** ·
src/kernel/metadata-plugin.zod.ts:267 | none | **18** |
| 103 | `kernel/MultiVersionSupport:rollout.duration` | retired-keys
only | — | — | no · tarball
json-schema/kernel/MultiVersionSupport.json:139 `[REMOVED]` | 17 |
unchanged |
| 104 | `kernel/PackageDependencyResolutionResult:resolvedIn` |
retired-keys only | — | — | no · authorable-surface/kernel.json:397
`[RETIRED]` | 17 | unchanged |
| 105 | `kernel/PluginHealthCheck:autoRestart` | retired-keys only | — |
— | no · authorable-surface/kernel.json:439 `[RETIRED]` | 17.3.0 |
unchanged |
| 106 | `kernel/PluginHealthCheck:interval` | retired-keys only | — | —
| no · authorable-surface/kernel.json:442 `[RETIRED]` | 17 | unchanged |
| 107 | `kernel/PluginHealthCheck:maxRestartAttempts` | retired-keys
only | — | — | no · authorable-surface/kernel.json:444 `[RETIRED]` |
17.3.0 | unchanged |
| 108 | `kernel/PluginHealthCheck:restartBackoff` | retired-keys only |
— | — | no · authorable-surface/kernel.json:445 `[RETIRED]` | 17.3.0 |
unchanged |
| 109 | `kernel/PluginHealthCheck:timeout` | retired-keys only | — | — |
no · authorable-surface/kernel.json:447 `[RETIRED]` | 17 | unchanged |
| 110 | `kernel/PluginHealthReport:metrics.responseTime` | retired-keys
only | — | — | no · tarball
json-schema/kernel/PluginHealthReport.json:57 `[REMOVED]` | 17 |
unchanged |
| 111 | `kernel/PluginHealthReport:metrics.uptime` | retired-keys only |
— | — | no · tarball json-schema/kernel/PluginHealthReport.json:53
`[REMOVED]` | 17 | unchanged |
| 112 | `kernel/PluginQualityMetrics:securityScan` | retired-keys only |
— | — | no · authorable-surface/kernel.json:511 `[RETIRED]` | 17 |
unchanged |
| 113 | `kernel/PluginSecurityManifest:scanResults` | retired-keys only
| — | — | no · authorable-surface/kernel.json:552 `[RETIRED]` | 17 |
unchanged |
| 114 | `kernel/PluginSecurityManifest:vulnerabilities` | retired-keys
only | — | — | no · authorable-surface/kernel.json:555 `[RETIRED]` | 17
| unchanged |
| 115 |
`kernel/PluginSecurityManifest:vulnerabilityDisclosure.responseTime` |
retired-keys only | — | — | no · tarball
json-schema/kernel/PluginSecurityManifest.json:824 `[REMOVED]` | 17 |
unchanged |
| 116 | `kernel/PluginStartupResult:duration` | retired-keys only | — |
— | no · authorable-surface/kernel.json:557 `[RETIRED]` | 17 | unchanged
|
| 117 | `kernel/PluginStartupResult:health` | retired-keys only | — | —
| no · authorable-surface/kernel.json:560 `[RETIRED]` | 17 | unchanged |
| 118 | `kernel/PluginStartupResult:plugin` | retired-keys only | — | —
| no · authorable-surface/kernel.json:561 `[RETIRED]` | 17 | unchanged |
| 119 | `kernel/PluginStartupResult:startTime` | retired-keys only | — |
— | no · authorable-surface/kernel.json:563 `[RETIRED]` | 17 | unchanged
|
| 120 | `kernel/RuntimeConfig:resourceLimits.timeout` | retired-keys
only | — | — | no · tarball json-schema/kernel/RuntimeConfig.json:146
`[REMOVED]` | 17 | unchanged |
| 121 | `kernel/SandboxConfig:process.timeout` | retired-keys only | — |
— | no · tarball json-schema/kernel/SandboxConfig.json:165 `[REMOVED]` |
17 | unchanged |
| 122 | `kernel/StartupOptions:timeout` | retired-keys only | — | — | no
· def retired whole:
src/migrations/entries/retired-defs/18.kernel__StartupOptions.ts | n/a
(def retired at HEAD) | unchanged |
| 123 | `kernel/StartupOrchestrationResult:totalDuration` | retired-keys
only | — | — | no · def retired whole:
src/migrations/entries/retired-defs/18.kernel__StartupOrchestrationResult.ts
| n/a (def retired at HEAD) | unchanged |
| 124 | `kernel/TenantRuntimeContext:previewMode` | retired-keys only |
— | — | no · authorable-surface/kernel.json:732 `[RETIRED]` | 17 |
unchanged |
| 125 | `kernel/TenantRuntimeContext:startTime` | retired-keys only | —
| — | no · authorable-surface/kernel.json:733 `[RETIRED]` | 17 |
unchanged |
| 126 | `kernel/UpgradePlan:estimatedDuration` | retired-keys only | — |
— | no · authorable-surface/kernel.json:763 `[RETIRED]` | 17 | unchanged
|
| 127 | `qa/TestScenario:requires.plugins` | retired-keys only | — | — |
no · tarball json-schema/qa/TestScenario.json:403 `[REMOVED]` | 17.5.0 |
unchanged |
| 128 | `security/EffectiveObjectPermission:allowPurge` |
`permission-allow-restore-purge-removed` | 18 | 17.2.0 | no ·
authorable-surface/security.json:56 `[RETIRED]` | 17 | unchanged |
| 129 | `security/EffectiveObjectPermission:allowRestore` |
`permission-allow-restore-purge-removed` | 18 | 17.2.0 | no ·
authorable-surface/security.json:58 `[RETIRED]` | 17 | unchanged |
| 130 | `security/ObjectPermission:allowPurge` |
`permission-allow-restore-purge-removed` | 18 | 17.2.0 | no ·
authorable-surface/security.json:101 `[RETIRED]` | 17 | unchanged |
| 131 | `security/ObjectPermission:allowRestore` |
`permission-allow-restore-purge-removed` | 18 | 17.2.0 | no ·
authorable-surface/security.json:103 `[RETIRED]` | 17 | unchanged |
| 132 | `security/RowLevelSecurityPolicy:tags` |
`permission-rls-tags-removed` | 18 | 17.4.0 | no ·
authorable-surface/security.json:153 `[RETIRED]` | 17.5.0 | unchanged |
| 133 | `system/AccessControlConfig:maxAge` | retired-keys only | — | —
| no · authorable-surface/system.json:13 `[RETIRED]` | 17 | unchanged |
| 134 | `system/CacheAvalanchePrevention:circuitBreaker.resetTimeout` |
retired-keys only | — | — | no · tarball
json-schema/system/CacheAvalanchePrevention.json:46 `[REMOVED]` | 17 |
unchanged |
| 135 | `system/CacheTier:ttl` | retired-keys only | — | — | no ·
authorable-surface/system.json:193 `[RETIRED]` | 17 | unchanged |
| 136 | `system/ChangeImpact:downtime.durationMinutes` | retired-keys
only | — | — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__ChangeImpact.ts | n/a
(def retired at HEAD) | unchanged |
| 137 | `system/ChangeRequest:implementation.steps.estimatedMinutes` |
retired-keys only | — | — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__ChangeRequest.ts | n/a
(def retired at HEAD) | unchanged |
| 138 | `system/CollaborationSessionConfig:idleTimeout` | retired-keys
only | — | — | no · authorable-surface/system.json:223 `[RETIRED]` | 17
| unchanged |
| 139 | `system/CollaborationSessionConfig:snapshot.interval` |
retired-keys only | — | — | no · tarball
json-schema/system/CollaborationSessionConfig.json:77 `[REMOVED]` | 17 |
unchanged |
| 140 | `system/EmailTemplateDefinition:category` |
`email-template-category-is-system-removed` | 18 | 17.7.0 | **yes** ·
src/system/email-template.zod.ts:106 | 17 | **18** |
| 141 | `system/EmailTemplateDefinition:isSystem` |
`email-template-category-is-system-removed` | 18 | 17.7.0 | **yes** ·
src/system/email-template.zod.ts:193 | 17 | **18** |
| 142 | `system/FailoverConfig:healthCheckInterval` | retired-keys only
| — | — | no · authorable-surface/system.json:426 `[RETIRED]` | 17 |
unchanged |
| 143 | `system/HttpDestinationConfig:batch.flushInterval` |
retired-keys only | — | — | no · tarball
json-schema/system/HttpDestinationConfig.json:79 `[REMOVED]` | 17 |
unchanged |
| 144 | `system/HttpDestinationConfig:retry.initialDelay` | retired-keys
only | — | — | no · tarball
json-schema/system/HttpDestinationConfig.json:106 `[REMOVED]` | 17 |
unchanged |
| 145 | `system/HttpDestinationConfig:timeout` | retired-keys only | — |
— | no · authorable-surface/system.json:466 `[RETIRED]` | 17 | unchanged
|
| 146 | `system/IncidentNotificationMatrix:escalationTimeoutMinutes` |
retired-keys only | — | — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__IncidentNotificationMatrix.ts
| n/a (def retired at HEAD) | unchanged |
| 147 | `system/IncidentNotificationRule:regulatorDeadlineHours` |
retired-keys only | — | — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__IncidentNotificationRule.ts
| n/a (def retired at HEAD) | unchanged |
| 148 | `system/IncidentNotificationRule:withinMinutes` | retired-keys
only | — | — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__IncidentNotificationRule.ts
| n/a (def retired at HEAD) | unchanged |
| 149 | `system/IncidentResponsePhase:targetHours` | retired-keys only |
— | — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__IncidentResponsePhase.ts
| n/a (def retired at HEAD) | unchanged |
| 150 | `system/IncidentResponsePolicy:retentionDays` | retired-keys
only | — | — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__IncidentResponsePolicy.ts
| n/a (def retired at HEAD) | unchanged |
| 151 | `system/IncidentResponsePolicy:triageDeadlineHours` |
retired-keys only | — | — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__IncidentResponsePolicy.ts
| n/a (def retired at HEAD) | unchanged |
| 152 | `system/Job:timeout` | `job-timeout-to-timeout-ms` | 18 | 17.3.0
| no · authorable-surface/system.json:488 `[RETIRED]` | 17 | unchanged |
| 153 | `system/LoggingConfig:buffer.flushInterval` | retired-keys only
| — | — | no · tarball json-schema/system/LoggingConfig.json:408
`[REMOVED]` | 17 | unchanged |
| 154 | `system/MetricAggregationConfig:window.size` | retired-keys only
| — | — | no · tarball
json-schema/system/MetricAggregationConfig.json:34 `[REMOVED]` | 17 |
unchanged |
| 155 | `system/MetricDefinition:summary.maxAge` | retired-keys only | —
| — | no · tarball json-schema/system/MetricDefinition.json:174
`[REMOVED]` | 17 | unchanged |
| 156 | `system/MetricExportConfig:interval` | retired-keys only | — | —
| no · authorable-surface/system.json:739 `[RETIRED]` | 17 | unchanged |
| 157 | `system/MetricsConfig:collectionInterval` | retired-keys only |
— | — | no · authorable-surface/system.json:744 `[RETIRED]` | 17 |
unchanged |
| 158 | `system/MetricsConfig:retention.period` | retired-keys only | —
| — | no · tarball json-schema/system/MetricsConfig.json:737 `[REMOVED]`
| 17 | unchanged |
| 159 | `system/OpenTelemetryCompatibility:exporter.batch.exportTimeout`
| retired-keys only | — | — | no · tarball
json-schema/system/OpenTelemetryCompatibility.json:96 `[REMOVED]` | 17 |
unchanged |
| 160 |
`system/OpenTelemetryCompatibility:exporter.batch.scheduledDelay` |
retired-keys only | — | — | no · tarball
json-schema/system/OpenTelemetryCompatibility.json:100 `[REMOVED]` | 17
| unchanged |
| 161 | `system/OpenTelemetryCompatibility:exporter.timeout` |
retired-keys only | — | — | no · tarball
json-schema/system/OpenTelemetryCompatibility.json:55 `[REMOVED]` | 17 |
unchanged |
| 162 | `system/QueueConfig:rateLimit.duration` | retired-keys only | —
| — | no · tarball json-schema/system/QueueConfig.json:33 `[REMOVED]` |
17 | unchanged |
| 163 | `system/RegistryConfig:cache.ttl` | retired-keys only | — | — |
no · tarball json-schema/system/RegistryConfig.json:236 `[REMOVED]` | 17
| unchanged |
| 164 | `system/RegistryUpstream:syncInterval` | retired-keys only | — |
— | no · authorable-surface/system.json:930 `[RETIRED]` | 17 | unchanged
|
| 165 | `system/RegistryUpstream:timeout` | retired-keys only | — | — |
no · authorable-surface/system.json:933 `[RETIRED]` | 17 | unchanged |
| 166 | `system/RollbackPlan:steps.estimatedMinutes` | retired-keys only
| — | — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__RollbackPlan.ts | n/a
(def retired at HEAD) | unchanged |
| 167 | `system/SchemaLevelIsolationStrategy:performance.schemaCacheTTL`
| retired-keys only | — | — | no · tarball
json-schema/system/SchemaLevelIsolationStrategy.json:94 `[REMOVED]` | 17
| unchanged |
| 168 | `system/ServiceLevelIndicator:window.size` | retired-keys only |
— | — | no · tarball json-schema/system/ServiceLevelIndicator.json:76
`[REMOVED]` | 17 | unchanged |
| 169 |
`system/ServiceLevelObjective:errorBudget.burnRateWindows.window` |
retired-keys only | — | — | no · tarball
json-schema/system/ServiceLevelObjective.json:91 `[REMOVED]` | 17 |
unchanged |
| 170 | `system/ServiceLevelObjective:period.duration` | retired-keys
only | — | — | no · tarball
json-schema/system/ServiceLevelObjective.json:46 `[REMOVED]` | 17 |
unchanged |
| 171 | `system/Span:duration` | retired-keys only | — | — | no ·
authorable-surface/system.json:1062 `[RETIRED]` | 17 | unchanged |
| 172 | `system/StorageConnection:timeout` | retired-keys only | — | — |
no · authorable-surface/system.json:1125 `[RETIRED]` | 17 | unchanged |
| 173 | `system/TracingConfig:performance.exportInterval` | retired-keys
only | — | — | no · tarball json-schema/system/TracingConfig.json:608
`[REMOVED]` | 17 | unchanged |
| 174 | `system/TrainingCourse:durationMinutes` | retired-keys only | —
| — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__TrainingCourse.ts | n/a
(def retired at HEAD) | unchanged |
| 175 | `system/TrainingCourse:validityDays` | retired-keys only | — | —
| no · def retired whole:
src/migrations/entries/retired-defs/18.system__TrainingCourse.ts | n/a
(def retired at HEAD) | unchanged |
| 176 | `system/TrainingPlan:gracePeriodDays` | retired-keys only | — |
— | no · def retired whole:
src/migrations/entries/retired-defs/18.system__TrainingPlan.ts | n/a
(def retired at HEAD) | unchanged |
| 177 | `system/TrainingPlan:recertificationIntervalDays` | retired-keys
only | — | — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__TrainingPlan.ts | n/a
(def retired at HEAD) | unchanged |
| 178 | `system/TrainingPlan:reminderDaysBefore` | retired-keys only | —
| — | no · def retired whole:
src/migrations/entries/retired-defs/18.system__TrainingPlan.ts | n/a
(def retired at HEAD) | unchanged |
| 179 | `ui/Action:aria` | `action-aria-removed` | 18 | 17.4.0 | no ·
authorable-surface/ui.json:13 `[RETIRED]` | 17.5.0 | unchanged |
| 180 | `ui/ChartConfig:aria` | `chart-config-aria-removed` | 18 |
17.4.0 | no · authorable-surface/ui.json:262 `[RETIRED]` | 17 |
unchanged |
| 181 | `ui/Dashboard:refreshInterval` |
`dashboard-refresh-interval-to-refresh-interval-seconds` | 18 | 17.3.0 |
no · authorable-surface/ui.json:327 `[RETIRED]` | 17 | unchanged |
| 182 | `ui/DashboardWidgetChartConfig:series` |
`dashboard-widget-chart-config-structure-removed` | 18 | 17.4.0 | no ·
authorable-surface/ui.json:377 `[RETIRED]` | 17.5.0 | unchanged |
| 183 | `ui/DashboardWidgetChartConfig:type` |
`dashboard-widget-chart-config-structure-removed` | 18 | 17.4.0 | no ·
authorable-surface/ui.json:382 `[RETIRED]` | 17.5.0 | unchanged |
| 184 | `ui/DashboardWidgetChartConfig:xAxis` |
`dashboard-widget-chart-config-structure-removed` | 18 | 17.4.0 | no ·
authorable-surface/ui.json:383 `[RETIRED]` | 17.5.0 | unchanged |
| 185 | `ui/DashboardWidgetChartConfig:yAxis` |
`dashboard-widget-chart-config-structure-removed` | 18 | 17.4.0 | no ·
authorable-surface/ui.json:384 `[RETIRED]` | 17.5.0 | unchanged |
| 186 | `ui/ElementFilterProps:aria` | `element-filter-removed` | 18 |
17.0.0 | no · authorable-surface/ui.json:448 `[RETIRED]` | 17 |
unchanged |
| 187 | `ui/ElementFilterProps:fields` | `element-filter-removed` | 18 |
17.0.0 | no · authorable-surface/ui.json:449 `[RETIRED]` | 17 |
unchanged |
| 188 | `ui/ElementFilterProps:layout` | `element-filter-removed` | 18 |
17.0.0 | no · authorable-surface/ui.json:450 `[RETIRED]` | 17 |
unchanged |
| 189 | `ui/ElementFilterProps:object` | `element-filter-removed` | 18 |
17.0.0 | no · authorable-surface/ui.json:451 `[RETIRED]` | 17 |
unchanged |
| 190 | `ui/ElementFilterProps:showSearch` | `element-filter-removed` |
18 | 17.0.0 | no · authorable-surface/ui.json:452 `[RETIRED]` | 17 |
unchanged |
| 191 | `ui/ElementFilterProps:targetVariable` |
`element-filter-removed` | 18 | 17.0.0 | no ·
authorable-surface/ui.json:453 `[RETIRED]` | 17 | unchanged |
| 192 | `ui/ElementFormProps:aria` | `element-form-removed` | 18 |
17.2.0 | no · authorable-surface/ui.json:454 `[RETIRED]` | 17 |
unchanged |
| 193 | `ui/ElementFormProps:fields` | `element-form-removed` | 18 |
17.2.0 | no · authorable-surface/ui.json:455 `[RETIRED]` | 17 |
unchanged |
| 194 | `ui/ElementFormProps:mode` | `element-form-removed` | 18 |
17.2.0 | no · authorable-surface/ui.json:456 `[RETIRED]` | 17 |
unchanged |
| 195 | `ui/ElementFormProps:object` | `element-form-removed` | 18 |
17.2.0 | no · authorable-surface/ui.json:457 `[RETIRED]` | 17 |
unchanged |
| 196 | `ui/ElementFormProps:onSubmit` | `element-form-removed` | 18 |
17.2.0 | no · authorable-surface/ui.json:458 `[RETIRED]` | 17 |
unchanged |
| 197 | `ui/ElementFormProps:submitLabel` | `element-form-removed` | 18
| 17.2.0 | no · authorable-surface/ui.json:459 `[RETIRED]` | 17 |
unchanged |
| 198 | `ui/ElementNumberProps:filter` |
`element-flat-data-binding-to-data-source` | 18 | 17.7.0 | **yes** ·
src/ui/component.zod.ts:2606 | 17 | **18** |
| 199 | `ui/ElementNumberProps:object` |
`element-flat-data-binding-to-data-source` | 18 | 17.7.0 | **yes** ·
src/ui/component.zod.ts:2585 | 17 | **18** |
| 200 | `ui/ElementRecordPickerProps:filter` |
`element-flat-data-binding-to-data-source` | 18 | 17.7.0 | **yes** ·
src/ui/component.zod.ts:3041 | 17 | **18** |
| 201 | `ui/ElementRecordPickerProps:limit` |
`element-flat-data-binding-to-data-source` | 18 | 17.7.0 | **yes** ·
src/ui/component.zod.ts:3064 | 17 | **18** |
| 202 | `ui/ElementRecordPickerProps:object` |
`element-flat-data-binding-to-data-source` | 18 | 17.7.0 | **yes** ·
src/ui/component.zod.ts:2995 | 17 | **18** |
| 203 | `ui/ElementRecordPickerProps:sort` |
`element-flat-data-binding-to-data-source` | 18 | 17.7.0 | **yes** ·
src/ui/component.zod.ts:3054 | 17 | **18** |
| 204 | `ui/ElementRecordPickerProps:targetVariable` |
`element-input-target-variable-removed` | 18 | 17.0.0 | no ·
authorable-surface/ui.json:491 `[RETIRED]` | 17 | unchanged |
| 205 | `ui/ElementRepeaterProps:filter` |
`element-flat-data-binding-to-data-source` | 18 | 17.7.0 | **yes** ·
src/ui/component.zod.ts:4093 | 17 | **18** |
| 206 | `ui/ElementRepeaterProps:limit` |
`element-flat-data-binding-to-data-source` | 18 | 17.7.0 | **yes** ·
src/ui/component.zod.ts:4097 | 17 | **18** |
| 207 | `ui/ElementRepeaterProps:object` |
`element-flat-data-binding-to-data-source` | 18 | 17.7.0 | **yes** ·
src/ui/component.zod.ts:4075 | 17 | **18** |
| 208 | `ui/ElementRepeaterProps:sort` |
`element-flat-data-binding-to-data-source` | 18 | 17.7.0 | **yes** ·
src/ui/component.zod.ts:4095 | 17 | **18** |
| 209 | `ui/ElementTextInputProps:targetVariable` |
`element-input-target-variable-removed` | 18 | 17.0.0 | no ·
authorable-surface/ui.json:509 `[RETIRED]` | 17 | unchanged |
| 210 | `ui/FormField:publicPicker` | `form-field-public-picker-removed`
| 18 | 17.5.0 | no · authorable-surface/ui.json:538 `[RETIRED]` | 17.6.0
| unchanged |
| 211 | `ui/JoinedReportBlock:chart` | `report-joined-chart-removed` |
18 | 17.4.0 | no · src/ui/report.zod.ts:289 | 17.5.0 | unchanged |
| 212 | `ui/ListView:pageName` | `view-page-mount-removed` | 18 | 17.4.0
| no · authorable-surface/ui.json:757 `[RETIRED]` | 17.5.0 | unchanged |
| 213 | `ui/ListView:tabs` | `view-list-tabs-removed` | 18 | 17.4.0 | no
· authorable-surface/ui.json:771 `[RETIRED]` | 17.5.0 | unchanged |
| 214 | `ui/NavigationConfig:view` | retired-keys only | — | — | no ·
authorable-surface/ui.json:787 `[RETIRED]` | 17.5.0 | unchanged |
| 215 | `ui/ObjectGridProps:defaultFilters` |
`object-grid-default-filters-removed` | 18 | 17.7.0 | **yes** ·
src/ui/component.zod.ts:4498 | 17 | **18** |
| 216 | `ui/ObjectGridProps:defaultSort` |
`object-grid-default-sort-removed` | 18 | 17.2.0 | no ·
authorable-surface/ui.json:867 `[RETIRED]` | 17 | unchanged |
| 217 | `ui/ObjectGridProps:resizableColumns` |
`object-grid-resizable-columns-removed` | 18 | 17.6.0 | no ·
authorable-surface/ui.json:885 `[RETIRED]` | 17.7.0 | unchanged |
| 218 | `ui/ObjectKanbanProps:quickAdd` |
`object-kanban-quick-add-removed` | 18 | 17.4.0 | no ·
authorable-surface/ui.json:911 `[RETIRED]` | 17 | unchanged |
| 219 | `ui/ObjectListView:pageName` | `view-page-mount-removed` | 18 |
17.4.0 | no · authorable-surface/ui.json:943 `[RETIRED]` | 17.5.0 |
unchanged |
| 220 | `ui/ObjectListView:tabs` | `view-list-tabs-removed` | 18 |
17.4.0 | no · authorable-surface/ui.json:957 `[RETIRED]` | 17.5.0 |
unchanged |
| 221 | `ui/ObjectMasterDetailFormProps:details.sortField` |
`object-master-detail-form-detail-sort-field-removed` | 18 | 17.6.0 | no
· tarball json-schema/ui/ObjectMasterDetailFormProps.json:1321
`[REMOVED]` | 17 | unchanged |
| 222 | `ui/Page:assignedProfiles` | `page-assigned-profiles-removed` |
18 | 17.4.0 | no · authorable-surface/ui.json:1053 `[RETIRED]` | 17.5.0
| unchanged |
| 223 | `ui/PageComponent:responsive` |
`page-component-responsive-removed` | 18 | 17.2.0 | no ·
authorable-surface/ui.json:1087 `[RETIRED]` | 17 | unchanged |
| 224 | `ui/PageHeaderProps:breadcrumb` |
`page-header-breadcrumb-removed` | 18 | 17.5.0 | no ·
authorable-surface/ui.json:1096 `[RETIRED]` | 17 | unchanged |
| 225 | `ui/RecordHighlightsField:icon` |
`record-highlights-field-icon-removed` | 18 | 17.1.0 | no ·
src/ui/component.zod.ts:1626 | 17 | unchanged |
| 226 | `ui/ReportChart:aria` | `chart-config-aria-removed` | 18 |
17.4.0 | no · authorable-surface/ui.json:1251 `[RETIRED]` | 17 |
unchanged |
| 227 | `ui/ViewItem:hidden` | `view-item-owner-hidden-removed` | 18 |
17.4.0 | no · tarball json-schema/ui/ViewItem.json:2355 `[REMOVED]` |
17.5.0 | unchanged |
| 228 | `ui/ViewItem:owner` | `view-item-owner-hidden-removed` | 18 |
17.4.0 | no · tarball json-schema/ui/ViewItem.json:2351 `[REMOVED]` |
17.5.0 | unchanged |
| 229 | `ui/ViewItemWire:hidden` | `view-item-owner-hidden-removed` | 18
| 17.4.0 | no · tarball json-schema/ui/ViewItemWire.json:2355
`[REMOVED]` | 17.5.0 | unchanged |
| 230 | `ui/ViewItemWire:owner` | `view-item-owner-hidden-removed` | 18
| 17.4.0 | no · tarball json-schema/ui/ViewItemWire.json:2351
`[REMOVED]` | 17.5.0 | unchanged |
| 231 | `ui/ViewMetadata:hidden` | `view-overlay-owner-hidden-removed` |
18 | 17.4.0 | no · src/ui/view.zod.ts:5025 | 17.5.0 | unchanged |
| 232 | `ui/ViewMetadata:owner` | `view-overlay-owner-hidden-removed` |
18 | 17.4.0 | no · src/ui/view.zod.ts:5024 | 17.5.0 | unchanged |
| 233 | manifest `permissions` as a string list (union arm;
`ManifestPermissionsSchema`) |
`manifest-permissions-string-list-removed` | 18 | 17.7.0 | **yes** ·
src/kernel/manifest.zod.ts:94-95 | 17 | **18** |
| 234 | `StorageScope` value `public` (`enumWithRetiredValues`) | D3
`storage-scope-public-retired` | — | — | **yes** ·
src/system/object-storage.zod.ts:40 | 17.8.0 | **18** |
| 235 | `indexes[].unique: true` (value; `IndexSchema.unique`) |
`declared-index-unique-scope` | 18 | 17.7.0 | **yes** ·
src/data/object.zod.ts:490 | protocol 18 | unchanged |
| 236 | `TimeUpdateInterval` members `second` / `minute` / `hour`
(value; its error map) — patch round |
`cube-sub-day-granularities-removed` | 18 | 17.4.0 | no ·
src/data/analytics.zod.ts:169 already refuses; 17.4.0 tarball
src/data/analytics.zod.ts:53-55 accepts them, 17.5.0 tarball :145-148
refuses | protocol 18 | **17.5.0** |
| 237 | `'navigation'` as a page action row's executor (`action:button`
/ `action:icon` `actionType`, `action:group` / `action:menu` member
`type`) — fix round | `page-action-row-navigation-executor-to-url` | 18
| 17.7.0 | **yes** · accepted by the 17.7.0 tarball (measured) and by
18.0.0-next.0 | none | **18** |
| 238 | `controlled_by_parent` object with no `master_detail` declared
`required: true` — fix round | `cbp-master-detail-required-defaulted` |
18 | 17.7.0 | **yes** · accepted by the 17.7.0 tarball (measured; the
tag has no one-master refusal) and by 18.0.0-next.0 | none | **18** |
| 239 | `view.data.provider: 'api'` (union arm; D3 only, out of the
pin's reach) — fix round | D3 `view-data-api-provider-retired` | — | — |
**yes** · src/ui/view.zod.ts:190 (`provider: z.literal('api')`);
accepted by the 17.7.0 tarball and by 18.0.0-next.0 | 17 | **18** |
Zero-hit controls on the join:
- No HEAD tombstone names 18: 0 of 226 visible in the JSON Schema tree.
- No tombstone a 17.x tarball carries names a release inconsistent with
the first tarball carrying it: 0 of 212, against the 17.0.0–17.7.0
tarballs, all integrity-verified.
- `retiredAfter` stamps disagreeing with the tarballs: 0 of 117.
- `git diff 4e4e88142 936750950`: added non-comment `retiredKey(` lines
are exactly the 14 LIVE rows, and the one added `enumWithRetiredValues(`
is `StorageScope`.
- Positive control: the 17.4.0 tarball's retired ids equal the committed
census's 17.4.0 row (73).
Controls kept at 17, all `toMajor: 18`: `page-header-breadcrumb-removed`
(17.5.0), `object-grid-default-sort-removed` (17.2.0) and
`object-kanban-quick-add-removed` (17.4.0).
## Zone 2, measured
- **H1: falsified on the count.** `conversions/registry.ts` holds **5**
entries with `retiredAfter: '17.7.0'`, not 4; the fifth is
`declared-index-unique-scope`, whose prescription already says "protocol
18" and is unchanged. (At the fix-round head: 7, after `main` added the
two entries the fix round joins.) The tag `@objectstack/spec@17.7.0`
peels to `4e4e88142`, and `defaultFilters` is live there at
`src/ui/component.zod.ts:4498`.
- **H2: holds.** Only the conversion registry carries `retiredAfter`.
The retired-keys registry holds ids only, under one major 18 for both
shipped and unshipped keys.
- **H3: holds.** All 117 retired stamps agree with the tarballs,
including 17.5.0–17.7.0, which the census has not recorded. The 5
unpublished entries are exactly the `17.7.0` set and are all live at the
tag.
- **H4: no reader exists, so the pin derives the newest stable release
instead of hard-coding `17.7.0`.** The census trails at `17.4.0`, and
the census test's helpers are test-local. The pin reads the highest
stable version the tree records: census, stamps, and the label when it
is stable. It takes the next major from `PROTOCOL_MAJOR`. Simulated
facts pin four windows: a stable 17.x label on the v18 train, a
prerelease label, label `18.0.0`, and the 17.x minor line.
- **H5: holds.** All ten element keys are live at the tag (rows
198–208).
- **H6: holds; nothing to change.** `composeMigrationChain` keeps majors
above N, so `--from 17` replays step 18. The pin asserts `--from` equals
`toMajor - 1`.
## The pin
For each joined retired conversion, the pin derives the removal major
from `retiredAfter`. It then reads every tombstone parse refusal and
`[REMOVED]` describe (or the refusal, for a value or arm) and asserts
they name that major and nothing else. Two guards:
- every entry retired after the newest published stable release must be
joined;
- the rows must derive both `PROTOCOL_MAJOR` and an older major.
Joined: the seven unpublished entries, three 17.x controls, and
`cube-sub-day-granularities-removed`: 19 cases. Out of reach by
construction: a retirement with no D2 entry (`allowOrgOverride`,
`StorageScope.public`, `view.data.provider: 'api'`); the last two carry
a one-line literal release pin instead.
Ablation via `node scripts/ablation-replace.mjs … -- vitest run` on the
pin, each leg from committed state and restored to blob == HEAD with
`git diff HEAD` empty:
- ① `defaultFilters` 18→17: **red**, 1 failed / 15 passed. Head
`8d3a9c21b`.
- ② the shared element string 18→17: **red**, 1/15. Head `8d3a9c21b`.
- ③ the control `breadcrumb` 17→18: **red**, 1/15. Head `8d3a9c21b`. The
first try was an anchor miss the tool refused (exit 3, nothing written).
- ④ unjoin the manifest row: **red**, 4/12. Head `8d3a9c21b`.
- ⑤ (patch round, head `1ee37155d`) the interval string back to "was
retired in protocol 18": **red**, 1 failed / 16 passed, on
`cube-sub-day-granularities-removed`: "retiredAfter 17.4.0 (newest
published stable 17.7.0) derives @objectstack/spec 17, but the
prescription names 18". Restored to blob `b7e1a037def1` == HEAD.
- ⑥ and ⑦ (fix round, head `38728b3e1`): the `'navigation'` and
controlled-by-parent refusals without their release: **red**, 1 failed /
18 passed each. Restored to blobs `fb3ad73747ac` and `6347359316f2` ==
HEAD.
## Verification (head `38728b3e1`, fix round)
- Merge `b24018c07` (parents `56d63b4e7` and `197fbe2c0`) via
`os-regen-merge.sh`. `content/docs/references/ui/component.mdx` merged
without a text merge; it was regenerated (`gen:schema` + `gen:docs`,
`d0b4cfd1a`) and differs from `origin/main` by exactly this branch's 11
rows.
- Turbo builds: the spec closure, then the workspace, 74/74.
`check:generated`: "All 14 generated artifacts are up to date". The
`provider: 'api'` text lives in an error map, so there is no references
row to regenerate.
- Tests:
- spec `--project local`: 668 files, 20229 passed, 1 todo (the pin's 19
cases included);
- spec `--project repo`, all `src/**` members plus `references-banner`:
35 files, 473 passed;
- lint: 138 files, 6679 passed;
- verify `parent-write-reach.test.ts`: 10 passed.
- `typecheck`: spec and lint exit 0.
- `dispatch-gates --commands`: **113**, all run.
- 112 exit 0, 3 of them after a workspace build (PREREQUISITE NOT MET on
the first pass).
- 1 exit 1: `check-empty-changeset`, by design (see the fix-round
section).
- `--ran`: "113 derived, 113 run, 0 NOT-MEASURED, 0 UNRUN".
- `check:future-spec-major`: "✓ … no `@objectstack/spec` citation names
a major above 18".
- CI on `38728b3e1`: TypeScript Type Check (4/4 lanes), Test Core, Build
Core and Lint & Repo Gates are green; `Check Changeset` is red by
design.
## Acceptance notes
- NOT MEASURED locally:
- the 23 `scripts/**` members of spec's `repo` project (none reads an
edited file);
- the CI-only jobs and type-check lanes outside the derived list and the
source-gates lane.
- Value-level prescriptions naming no release were not swept.
- `retired-after.census.json` trails the published line (17.5.0–17.7.0,
and now `18.0.0-next.0`, which the census never records as a
prerelease). No live defect: every stamp agrees with the tarballs.
---
_Generated by [Claude
Code](https://claude.ai/code/session_012uFegdfR6K6uqvLzt7XsdZ)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent b4d573a commit c056979
30 files changed
Lines changed: 422 additions & 46 deletions
File tree
- .changeset
- pre
- content/docs/references
- kernel
- system
- ui
- packages
- drivers/driver-memory/src
- lint/src
- spec/src
- data
- kernel
- system
- ui
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | | - | |
| 36 | + | |
37 | 37 | | |
38 | 38 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
| 29 | + | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
269 | 269 | | |
270 | 270 | | |
271 | 271 | | |
272 | | - | |
| 272 | + | |
273 | 273 | | |
274 | 274 | | |
275 | 275 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | | - | |
| 50 | + | |
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
| |||
0 commit comments