Skip to content

Commit bfc744c

Browse files
committed
docs(spec): correct the 17.4.0 duration-keys erratum (#18076)
The published packages/spec/CHANGELOG.md 17.4.0 entry, under "Keys deliberately left alone", said the burn-rate `window` and the OpenTelemetry exporter `timeout` name no unit anywhere in their prose and are outside check:duration-unit-keys's population, with pin tests holding the bare spellings. All three claims are false now: #17783 renamed the burn-rate window to `durationSeconds` and #17785 renamed the exporter timeout to `timeoutMs` (with its `exportTimeout` sibling to `exportTimeoutMs`), both tombstoned with `retiredKey()`, and the pin tests that held the bare names were rewritten into rename-refusal pins. This corrects the sentence to the post-#17783/#17785 truth and appends one erratum line, matching the ef47459 (#17896) precedent's shape. Clause-②: no skip-changeset: no package publishes anything from this change — the edit is prose inside an already-compiled CHANGELOG.md section plus an erratum line.
1 parent 4844840 commit bfc744c

1 file changed

Lines changed: 19 additions & 5 deletions

File tree

packages/spec/CHANGELOG.md

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2862,11 +2862,25 @@
28622862
milliseconds where its `resetTimeoutSeconds` sibling is seconds, so the two must
28632863
not be migrated as if they were one unit. `MetricExportConfig.batch.size` is a
28642864
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.)*
28702884
- fb77aa5: feat(spec)!: a `tree` field's `reference`, when present, must name the declaring object — any other target is refused at parse (#14892)
28712885

28722886
<!-- 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

Comments
 (0)