|
2862 | 2862 | milliseconds where its `resetTimeoutSeconds` sibling is seconds, so the two must |
2863 | 2863 | not be migrated as if they were one unit. `MetricExportConfig.batch.size` is a |
2864 | 2864 | record count and `QueueConfig.rateLimit.max` is a task count: neither is a |
2865 | | - duration, so neither has a unit to carry. `ServiceLevelObjective.errorBudget`'s |
2866 | | - burn-rate `window` and the OpenTelemetry exporter `timeout` name no unit |
2867 | | - anywhere in their prose, so both are outside the gate's population entirely. |
2868 | | - Pin tests assert each of these, so a later sweep cannot read this card as |
2869 | | - "every duration-shaped number on these files". |
| 2865 | + duration, so neither has a unit to carry. As published, this entry continued: |
| 2866 | + "`ServiceLevelObjective.errorBudget`'s burn-rate `window` and the |
| 2867 | + OpenTelemetry exporter `timeout` name no unit anywhere in their prose, so |
| 2868 | + both are outside the gate's population entirely. Pin tests assert each of |
| 2869 | + these, so a later sweep cannot read this card as 'every duration-shaped |
| 2870 | + number on these files'." Both keys were renamed in the same major: #17783 |
| 2871 | + renamed the burn-rate `window` |
| 2872 | + (`ServiceLevelObjective.errorBudget.burnRateWindows[].window`) to |
| 2873 | + `durationSeconds`, and #17785 renamed the OpenTelemetry exporter `timeout` |
| 2874 | + (`OpenTelemetryCompatibility.exporter.timeout`) to `timeoutMs`, with its |
| 2875 | + `batch.exportTimeout` sibling moving to `exportTimeoutMs` the same way. |
| 2876 | + Both are inside the gate's population now, each tombstoned with |
| 2877 | + `retiredKey()` naming the new spelling, and the pin tests that held the |
| 2878 | + bare names were rewritten by the same two PRs into rename-refusal pins. |
| 2879 | + |
| 2880 | + *Erratum, 2026-09-13 — #17783 and #17785 renamed the two keys this entry |
| 2881 | + named as gate-exempt; both are tombstoned and inside the gate's |
| 2882 | + population as of `@objectstack/spec` 17. (Corrected after publication, |
| 2883 | + #PRPLACEHOLDER18076.)* |
2870 | 2884 | - fb77aa5: feat(spec)!: a `tree` field's `reference`, when present, must name the declaring object — any other target is refused at parse (#14892) |
2871 | 2885 |
|
2872 | 2886 | <!-- adr-0087: not-required (no-migration-prescription) No authorable key is renamed, retired or re-typed: `reference` keeps its name, its type and its optionality on a `tree` field, and every self-referencing or reference-less `tree` parses byte-identically to before. What is newly refused is a `tree` whose `reference` names a different object — a shape no prose surface ever documented, that no runtime reader consumed as a cross-object link, and whose one in-repo author (the showcase field zoo) hedged in its own label. The remedy is authoring intent, not a mechanical rewrite: the author decides whether the field is this object's own hierarchy (a self-reference, or no `reference` at all) or a link to another object (a `lookup`), so `objectstack migrate meta` has nothing to rewrite and this changeset carries no rewrite instructions. --> |
|
0 commit comments