Skip to content

Commit 0be4663

Browse files
committed
test(metadata-protocol): re-measure the tombstone census on the merged tree
Merging `origin/main` moved the served registry underneath this card's readings. #17751 retired `ChartConfigSchema.aria` and `ReportChart.aria`, so the strip now drops one more node inside `dashboard.widgets[].chartConfig` and two in a type that carried none before. Re-measured with the same harness the census was taken with — the real `getMetaTypes()` over a stub engine, counting every property whose subschema admits no instance, with the emitter's strip stage ablated for the pre-strip leg: - whole served registry, pre-strip: 80 nodes across 16 types (was 77 across 15 at `1bdbf82cb5`) — `dashboard` 8 -> 9, and `report` 0 -> 2; - zod's default (output) arm alone: 77 across 15 (was 74 across 14). The 3-node gap to the served figure is still `action`'s `io: 'input'` retry; - served payload after the strip: 0, unchanged — the fix still holds. The over-drop guard's non-vacuity ledger gains the one new `dashboard` path it is there to notice. That assertion failing is the guard working: it is the only thing in this file that reads a concrete removal set. The changeset sentence is re-anchored to `74eaab8614` rather than kept at `1bdbf82cb5`. Both readings are true of their own tree, but the parenthetical calls the sha "this change's merge base" and that is now `74eaab8614`; and a merge-base sha is a main-line commit that survives the squash landing, where a branch merge commit would name a sha no reader can ever check out. Claude-Session: https://claude.ai/code/session_01KB5PFtxuy1x3dcR5gxudx6 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 16ed5a4 commit 0be4663

2 files changed

Lines changed: 10 additions & 7 deletions

File tree

‎.changeset/17502-served-schema-drops-unauthorable-columns.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ would put a second hand-written spelling of "this is a tombstone" in a consumer.
2222
A property that admits nothing and is `required` is kept: dropping it would turn
2323
"this object admits nothing" into "this object admits anything".
2424

25-
Measured over the whole served registry at `1bdbf82cb5`, this change's merge
25+
Measured over the whole served registry at `74eaab8614`, this change's merge
2626
base (`@objectstack/spec` SOURCE at 17.4.0, plus the retirements unreleased at
27-
that sha — not the published release): 77 such nodes across 15 types — a
27+
that sha — not the published release): 80 such nodes across 16 types — a
2828
reading taken at that tree, not a standing invariant; it moves as retired keys
2929
land or age out.
3030

‎packages/metadata-protocol/src/protocol.meta-types-unauthorable-columns.test.ts‎

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
* tombstone in a row shape became a column an author is invited to fill and
1717
* `saveMetaItem` then refuses.
1818
*
19-
* Measured on `origin/main` at 1bdbf82cb5 over the whole served registry:
20-
* **77 tombstone nodes across 15 types**. Five of them are `dashboard.widgets[]`'s
19+
* Measured on `origin/main` at 74eaab8614 over the whole served registry:
20+
* **80 tombstone nodes across 16 types**. Five of them are `dashboard.widgets[]`'s
2121
* `actionUrl`, `actionType`, `actionIcon`, `responsive` and `aria` — the row
2222
* this file pins, and the carrier the card was filed on. ⚠️ They are not the
2323
* whole reachable set: a repeater row in another type reaches an author the
@@ -289,17 +289,20 @@ describe('#17502 — the served repeater row offers no column the parse door ref
289289
'dashboard.properties.refreshInterval',
290290
'dashboard.properties.aria',
291291
'dashboard.properties.performance',
292+
// [#17751, arrived with main] `ChartConfigSchema.aria` retired one
293+
// level deeper than the widget row, inside `chartConfig`.
294+
'dashboard.properties.widgets.items.properties.chartConfig.properties.aria',
292295
].sort());
293296
});
294297

295298
// ⚠️ This control derives with zod's DEFAULT (output) arm only, which is
296-
// 74 nodes across 14 types. The served payload carries 77 across 15: for
299+
// 77 nodes across 15 types. The served payload carries 80 across 16: for
297300
// `action` alone `toJsonSchemaSafe` falls through to the `io: 'input'`
298301
// retry (#17501), and that arm adds `execute` / `shortcut` / `bulkEnabled`.
299-
// The class guard above runs over the SERVED document and covers all 77;
302+
// The class guard above runs over the SERVED document and covers all 80;
300303
// this control deliberately does not re-spell `isDegenerateDerivation`,
301304
// whose only copy belongs in the emitter.
302-
it('control: the class really is non-empty before the strip — 74 nodes across 14 types on the output arm', () => {
305+
it('control: the class really is non-empty before the strip — 77 nodes across 15 types on the output arm', () => {
303306
const byType = new Map<string, number>();
304307
for (const type of SERVED_TYPES) {
305308
const before = preStripDerivation(type);

0 commit comments

Comments
 (0)