|
2 | 2 | "description": "Shrink-only ledger of every PUBLISHED JSON Schema that is STILL WIDER than the Zod type it was generated from, because a rule written as `.refine()` reaches the runtime and not the file (#18670). `z.toJSONSchema()` has no arm for a `custom` check: a plain record, the same record with a `.refine()`, and the same record with an ABORTING `.refine()` all project byte-identically (measured on zod 4.4.3, the version packages/spec resolves). So a document one of these files ACCEPTS can still be refused at parse time, and an author -- or an AI -- validating against packages/spec/json-schema/** finds out a release later. Each `sites` path is a position under that schema at which a refinement is dropped; the same paths are written onto the artifact itself as `x-dropped-refinements`. Item 2 closed the first patterns: a refinement DECLARED through the closed list in src/shared/refinement-projection.ts is emitted into the published file, reads `projected` rather than `dropped`, and its row LEAVES this ledger in the same PR -- which is why the ledger shrinks and never grows on a repair. Every refinement outside that closed list stays here, and adding an arm to the list is a public-contract decision, not a refactor. Hand-edited on purpose and with no `gen:` script: a generator would let a new gap be admitted by running a command instead of by a decision, which is the silence this ledger exists to end. Adding, removing or moving a site fails packages/spec/scripts/build-schemas.ts until the line moves with it, and the failure prints the corrected entry in full. ⛔ Do not delete or weaken a refinement to shorten this file -- the runtime rule is correct; it is the projection that is silent, and the remedy is to teach the closed list a NAMED pattern, never to drop the rule.", |
3 | 3 | "measured": { |
4 | 4 | "zod": "4.4.3", |
5 | | - "publishedSchemasWithDroppedRefinements": 215, |
6 | | - "droppedRefinementSites": 635, |
| 5 | + "publishedSchemasWithDroppedRefinements": 217, |
| 6 | + "droppedRefinementSites": 647, |
7 | 7 | "refinementSitesThatDidProject": 369, |
8 | 8 | "refinementSitesWithNoJsonFormToCompare": 0 |
9 | 9 | }, |
|
64 | 64 | "manifest.actions.element.in.ai.outputSchema", |
65 | 65 | "manifest.actions.element.in.params.element.in", |
66 | 66 | "manifest.agents.element.structuredOutput.schema", |
| 67 | + "manifest.analyticsCubes.element.measures.valueType", |
67 | 68 | "manifest.connectors.element.out", |
68 | 69 | "manifest.dashboards.element.globalFilters.element", |
69 | 70 | "manifest.dashboards.element.widgets.element", |
70 | 71 | "manifest.dashboards.element.widgets.element.filter", |
71 | 72 | "manifest.datasets.element", |
72 | 73 | "manifest.datasets.element.filter", |
73 | 74 | "manifest.datasets.element.include.element", |
| 75 | + "manifest.datasets.element.measures.element", |
74 | 76 | "manifest.datasets.element.measures.element.filter", |
75 | 77 | "manifest.datasources.element", |
76 | 78 | "manifest.flows.element", |
|
169 | 171 | "data.options[1].manifest.actions.element.in.ai.outputSchema", |
170 | 172 | "data.options[1].manifest.actions.element.in.params.element.in", |
171 | 173 | "data.options[1].manifest.agents.element.structuredOutput.schema", |
| 174 | + "data.options[1].manifest.analyticsCubes.element.measures.valueType", |
172 | 175 | "data.options[1].manifest.connectors.element.out", |
173 | 176 | "data.options[1].manifest.dashboards.element.globalFilters.element", |
174 | 177 | "data.options[1].manifest.dashboards.element.widgets.element", |
175 | 178 | "data.options[1].manifest.dashboards.element.widgets.element.filter", |
176 | 179 | "data.options[1].manifest.datasets.element", |
177 | 180 | "data.options[1].manifest.datasets.element.filter", |
178 | 181 | "data.options[1].manifest.datasets.element.include.element", |
| 182 | + "data.options[1].manifest.datasets.element.measures.element", |
179 | 183 | "data.options[1].manifest.datasets.element.measures.element.filter", |
180 | 184 | "data.options[1].manifest.datasources.element", |
181 | 185 | "data.options[1].manifest.flows.element", |
|
259 | 263 | "options[1].manifest.actions.element.in.ai.outputSchema", |
260 | 264 | "options[1].manifest.actions.element.in.params.element.in", |
261 | 265 | "options[1].manifest.agents.element.structuredOutput.schema", |
| 266 | + "options[1].manifest.analyticsCubes.element.measures.valueType", |
262 | 267 | "options[1].manifest.connectors.element.out", |
263 | 268 | "options[1].manifest.dashboards.element.globalFilters.element", |
264 | 269 | "options[1].manifest.dashboards.element.widgets.element", |
265 | 270 | "options[1].manifest.dashboards.element.widgets.element.filter", |
266 | 271 | "options[1].manifest.datasets.element", |
267 | 272 | "options[1].manifest.datasets.element.filter", |
268 | 273 | "options[1].manifest.datasets.element.include.element", |
| 274 | + "options[1].manifest.datasets.element.measures.element", |
269 | 275 | "options[1].manifest.datasets.element.measures.element.filter", |
270 | 276 | "options[1].manifest.datasources.element", |
271 | 277 | "options[1].manifest.flows.element", |
|
309 | 315 | "data.packages.element.options[1].manifest.actions.element.in.ai.outputSchema", |
310 | 316 | "data.packages.element.options[1].manifest.actions.element.in.params.element.in", |
311 | 317 | "data.packages.element.options[1].manifest.agents.element.structuredOutput.schema", |
| 318 | + "data.packages.element.options[1].manifest.analyticsCubes.element.measures.valueType", |
312 | 319 | "data.packages.element.options[1].manifest.connectors.element.out", |
313 | 320 | "data.packages.element.options[1].manifest.dashboards.element.globalFilters.element", |
314 | 321 | "data.packages.element.options[1].manifest.dashboards.element.widgets.element", |
315 | 322 | "data.packages.element.options[1].manifest.dashboards.element.widgets.element.filter", |
316 | 323 | "data.packages.element.options[1].manifest.datasets.element", |
317 | 324 | "data.packages.element.options[1].manifest.datasets.element.filter", |
318 | 325 | "data.packages.element.options[1].manifest.datasets.element.include.element", |
| 326 | + "data.packages.element.options[1].manifest.datasets.element.measures.element", |
319 | 327 | "data.packages.element.options[1].manifest.datasets.element.measures.element.filter", |
320 | 328 | "data.packages.element.options[1].manifest.datasources.element", |
321 | 329 | "data.packages.element.options[1].manifest.flows.element", |
|
551 | 559 | "" |
552 | 560 | ] |
553 | 561 | }, |
| 562 | + "data/Cube": { |
| 563 | + "sites": [ |
| 564 | + "measures.valueType" |
| 565 | + ] |
| 566 | + }, |
554 | 567 | "data/DataEngineAggregateOptions": { |
555 | 568 | "sites": [ |
556 | 569 | "filter.options[1].lazy" |
|
726 | 739 | "key" |
727 | 740 | ] |
728 | 741 | }, |
| 742 | + "data/Metric": { |
| 743 | + "sites": [ |
| 744 | + "" |
| 745 | + ] |
| 746 | + }, |
729 | 747 | "data/MongoConfig": { |
730 | 748 | "sites": [ |
731 | 749 | "", |
|
1211 | 1229 | "filter", |
1212 | 1230 | "filter.lazy", |
1213 | 1231 | "include.element", |
| 1232 | + "measures.element", |
1214 | 1233 | "measures.element.filter" |
1215 | 1234 | ] |
1216 | 1235 | }, |
1217 | 1236 | "ui/DatasetMeasure": { |
1218 | 1237 | "sites": [ |
| 1238 | + "", |
1219 | 1239 | "filter", |
1220 | 1240 | "filter.lazy" |
1221 | 1241 | ] |
|
0 commit comments