Skip to content

Commit 425912a

Browse files
committed
spec: un-splice the FOUR paragraph in both default-change reasons, and tighten one phrase
Contract review F4: the FOUR paragraph was inserted BEFORE the last clause of each reason string rather than after it, so both reasons rendered with two sentences cut in half — "…what he now reads is what the ⚠️ FOUR published JSON Schemas change projection direction…" and "…not a new one. parser has always applied." The gate's own text says the reason is printed by every build that accepts the change and must be written for the consumer who is about to be surprised; that consumer was being handed broken sentences. The paragraph now sits at the end of each string, and both reasons were read back as rendered from the module and from the accepting build's own output. Also tightens the phrase the review found loose. It said the two nested defs gain a required member "with no default to declare". They do carry defaults — enabled is true, rules is [] — and both were already published at the base: measured, not inherited, at authorable-defaults/system.json lines 206 and 248 of the base blob, whose base..head diff is exactly +slis and +sampling, two insertions and no deletions. The wording is now the changeset's own: only the first two carry a default MOVE, so only those two are declarable here, because this ratchet records default VALUES per key and is blind to required growth by construction. Claude-Session: https://claude.ai/code/session_01AmH9bKvGoLjiY86Q4Z3og2 Co-authored-by: Claude <noreply@anthropic.com>
1 parent dc9daca commit 425912a

1 file changed

Lines changed: 28 additions & 20 deletions

File tree

packages/spec/scripts/lib/default-changes.ts

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -381,17 +381,21 @@ export const DEFAULT_CHANGES_BY_MAJOR: Readonly<Record<number, readonly Declared
381381
+ 'present — and those cells carried `?` at the base. Nothing '
382382
+ 'deployed changes behaviour; the consumer affected is one outside this repo who reads '
383383
+ 'the published JSON Schema\'s `default` himself, and what he now reads is what the '
384-
+ '⚠️ FOUR published JSON Schemas change projection direction in this diff, not the two this '
385-
+ 'table has rows for, and the other two are disclosed nowhere else: `system/MetricsConfig` and '
386-
+ '`system/TracingConfig` lose `x-io: input` AND gain a `default` (these two rows), while the '
387-
+ 'nested `system/ServiceLevelIndicator` and `system/TraceSamplingConfig` lose `x-io: input` '
388-
+ 'and gain a `required` MEMBER with no default to declare — `enabled` and `rules` respectively — '
389-
+ 'so this ratchet never sees them. Measured at head: all four carry no `x-io` and `required` '
390-
+ 'lists the defaulted keys; ten other `system` defs are still input-mode, and the same-category '
391-
+ 'control `system/CacheConfig` is untouched. A `required` that lists defaulted keys is this '
392-
+ 'repo\'s existing output-mode convention, not a new one. '
393384
+ 'parser has always applied. To keep the old value there is nothing to write — the key, '
394-
+ 'its type and its default are unchanged.',
385+
+ 'its type and its default are unchanged.'
386+
+ ' ⚠️ FOUR published JSON Schemas change projection direction in this diff, not the two '
387+
+ 'this table has rows for, and the other two are disclosed nowhere else: '
388+
+ '`system/MetricsConfig` and `system/TracingConfig` lose `x-io: input` AND gain a `default` '
389+
+ '(these two rows), while the nested `system/ServiceLevelIndicator` and '
390+
+ '`system/TraceSamplingConfig` lose `x-io: input` and gain a `required` MEMBER — `enabled` '
391+
+ 'and `rules` respectively — whose defaults (`true` and `[]`) were ALREADY PUBLISHED at the '
392+
+ 'base and did not move. Only the first two carry a `default` MOVE, so only those two are '
393+
+ 'declarable here: this ratchet records default VALUES per key, so it is blind to `required` '
394+
+ 'growth by construction, and the nested pair has no row it could live in. Measured at head: '
395+
+ 'all four carry no `x-io` and `required` lists the defaulted keys; ten other `system` defs '
396+
+ 'are still input-mode, and the same-category control `system/CacheConfig` is untouched. A '
397+
+ '`required` that lists defaulted keys is this repo\'s existing output-mode convention, not '
398+
+ 'a new one.',
395399
},
396400
{
397401
key: 'system/TracingConfig:sampling',
@@ -412,17 +416,21 @@ export const DEFAULT_CHANGES_BY_MAJOR: Readonly<Record<number, readonly Declared
412416
+ 'key of every `system/TracingConfig` nested type cell (`parentBased`, `propagation`, '
413417
+ '`spanLimits`, `performance`, `instrumentation`), the output-mode signature. '
414418
+ 'Nothing deployed changes behaviour; the consumer affected is one outside this '
415-
+ '⚠️ FOUR published JSON Schemas change projection direction in this diff, not the two this '
416-
+ 'table has rows for, and the other two are disclosed nowhere else: `system/MetricsConfig` and '
417-
+ '`system/TracingConfig` lose `x-io: input` AND gain a `default` (these two rows), while the '
418-
+ 'nested `system/ServiceLevelIndicator` and `system/TraceSamplingConfig` lose `x-io: input` '
419-
+ 'and gain a `required` MEMBER with no default to declare — `enabled` and `rules` respectively — '
420-
+ 'so this ratchet never sees them. Measured at head: all four carry no `x-io` and `required` '
421-
+ 'lists the defaulted keys; ten other `system` defs are still input-mode, and the same-category '
422-
+ 'control `system/CacheConfig` is untouched. A `required` that lists defaulted keys is this '
423-
+ 'repo\'s existing output-mode convention, not a new one. '
424419
+ 'repo who reads the published JSON Schema\'s `default` himself. To keep the old value '
425-
+ 'there is nothing to write — the key, its type and its default are unchanged.',
420+
+ 'there is nothing to write — the key, its type and its default are unchanged.'
421+
+ ' ⚠️ FOUR published JSON Schemas change projection direction in this diff, not the two '
422+
+ 'this table has rows for, and the other two are disclosed nowhere else: '
423+
+ '`system/MetricsConfig` and `system/TracingConfig` lose `x-io: input` AND gain a `default` '
424+
+ '(these two rows), while the nested `system/ServiceLevelIndicator` and '
425+
+ '`system/TraceSamplingConfig` lose `x-io: input` and gain a `required` MEMBER — `enabled` '
426+
+ 'and `rules` respectively — whose defaults (`true` and `[]`) were ALREADY PUBLISHED at the '
427+
+ 'base and did not move. Only the first two carry a `default` MOVE, so only those two are '
428+
+ 'declarable here: this ratchet records default VALUES per key, so it is blind to `required` '
429+
+ 'growth by construction, and the nested pair has no row it could live in. Measured at head: '
430+
+ 'all four carry no `x-io` and `required` lists the defaulted keys; ten other `system` defs '
431+
+ 'are still input-mode, and the same-category control `system/CacheConfig` is untouched. A '
432+
+ '`required` that lists defaulted keys is this repo\'s existing output-mode convention, not '
433+
+ 'a new one.',
426434
},
427435
],
428436
};

0 commit comments

Comments
 (0)