Commit 4792049
feat(spec)!:
* wip(spec): converge dataSource.filter and the four object-* filter doors onto the ViewFilterRule array
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkQhmuuJAVDjmeWNixwDDH
* wip(spec): regenerate api-surface, export-origins and docs references for the filter converge
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkQhmuuJAVDjmeWNixwDDH
* wip(spec): migrate the two object-* fixtures in component.test.ts; ask each key at its own door in the binding pins
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkQhmuuJAVDjmeWNixwDDH
* fix(spec,lint): state the at-rest disposition on the D3 entry; restore the deleted `pages` pin
Contract review findings F1 and F3 on this PR.
F1 — the D3 entry stated the sweep and the objectui route but was silent on
metadata AT REST, the one population its TODO cannot reach: no author runs
`os migrate meta` over `sys_metadata`. Measured, all three legs: a
`SemanticMigration` converts nothing by its own type (`migrations/types.ts`),
this disposition adds no D2 conversion (`packages/spec/src/conversions/` is
untouched by this branch), and `applyConversionsToStoredItem`
(`database-loader.ts:831`) replays the full chain without validating, by its
own contract. So a stored row carrying the record form keeps loading, is still
rendered by objectui at the pin, and is refused only on its next save. One
sentence added to `reason`, on the register of
`17.view-filter-rule-value-shaped-by-operator.ts:38-47`, which states the same
disposition for its own family. `registry.ts` follows by `gen:migration-registry`
— that one sentence is its whole delta.
F2 and the partial-D2 direction question are deliberately NOT in this commit:
F2 is family-wide (it also reaches `element:number` and `element:record_picker`)
and the D2 direction is the ruler's, not a dev's. The new sentence therefore
states that this disposition adds no D2 conversion, and does not claim none is
possible.
F3 — this branch had dropped the only `pages` row from the "covers ..." case
while `pages` remains in `EMPTY_COMBINATOR_SURFACES`, leaving that surface
declared and unmeasured. Restored byte-identical to the base tree, plus a
comment recording that the row authors the retired record form on purpose:
this rule never parses a fixture against the spec schema — `walkAuthoredFilters`
visits any `FILTER_KEYS` key it reaches, whatever its shape — so an author still
writing the record form is judged here and gets a located error beside the
schema refusal. Ablation: dropping `{ key: 'pages', kind: 'page' }` from
`EMPTY_COMBINATOR_SURFACES` turns the case red losing exactly `page "home"`
(21 passed -> 1 failed | 20 passed); the rule file was restored to its HEAD blob
and verified by `git hash-object`.
No generated artefact moved beyond `registry.ts`: `check:generated` reports all
15 up to date, and `spec-changes.json` / the upgrade guide correctly show no
diff because both projections fold only to the current PROTOCOL_MAJOR (17) and
this is a major-18 entry — measured against a lit control (the major-17 entry
`view-filter-rule-value-shaped-by-operator` is present in both; the neighbouring
major-18 `ui-record-blocks-unknown-keys-refused` is absent from both).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkQhmuuJAVDjmeWNixwDDH
* fix(spec): correct the at-rest clause on the D3 filter entry — `--stored` does exist
The entry said "no author runs `os migrate meta` over `sys_metadata`". That is false:
`os migrate meta --stored` has exactly that subject (packages/cli/src/commands/migrate/
meta.ts — module doc "`--stored`: the same chain, over data at rest", the flag, `runStored`,
`protocol.migrateStoredMetadata(...)`).
The true and narrower fact the clause was reaching for: the stored pass replays ADR-0087 D2
conversions only — `migrateStoredMetadata` converts through `applyConversionsToStoredItem`,
i.e. `applyConversions`, and emits no D3 TODOs (`todos` is 7x in the authored-mode half of
meta.ts and 0x from `runStored` to EOF) — so with no D2 conversion added by this disposition
it has nothing to rewrite for this shape.
The scoped "this disposition adds no D2 conversion" is unchanged and stays scoped: the
partial-D2 direction question is the ruler's, not this entry's.
`registry.ts` follows by `gen:migration-registry`; no other sentence of the entry moved.
Claude-Session: https://claude.ai/code/session_01MkQhmuuJAVDjmeWNixwDDH
Co-authored-by: Claude <noreply@anthropic.com>
* fix(spec): scope the at-rest stored-pass clause to this shape, not to protocol 18
`conversionIds` on step 18 is NOT empty — it carries the major's other D2
conversions — so "nothing to rewrite here" could be read as "the stored pass
rewrites nothing at protocol 18", which is false. The true scope is this entry's
disposition, which adds no D2 conversion of its own (its id is 0x in
`conversions/registry.ts`, control `action-execute-to-target` lit at 1x).
`registry.ts` follows by `gen:migration-registry`.
Claude-Session: https://claude.ai/code/session_01MkQhmuuJAVDjmeWNixwDDH
Co-authored-by: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>dataSource.filter and the four object-* filter doors converge onto the ViewFilterRule array form — one filter orthography reaches the family (objectui#6206-B, option A) (#17257)1 parent a2509d7 commit 4792049
17 files changed
Lines changed: 678 additions & 43 deletions
File tree
- .changeset
- content/docs/references/ui
- examples/app-showcase
- src/ui/pages
- test
- packages
- lint/src
- spec
- api-surface
- export-origins
- src
- migrations
- entries/semantic
- ui
Lines changed: 60 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
311 | 311 | | |
312 | 312 | | |
313 | 313 | | |
314 | | - | |
| 314 | + | |
315 | 315 | | |
316 | 316 | | |
317 | 317 | | |
318 | 318 | | |
319 | 319 | | |
320 | 320 | | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
321 | 331 | | |
322 | 332 | | |
323 | 333 | | |
| |||
381 | 391 | | |
382 | 392 | | |
383 | 393 | | |
384 | | - | |
| 394 | + | |
385 | 395 | | |
386 | 396 | | |
387 | 397 | | |
| |||
414 | 424 | | |
415 | 425 | | |
416 | 426 | | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
417 | 437 | | |
418 | 438 | | |
419 | 439 | | |
| |||
456 | 476 | | |
457 | 477 | | |
458 | 478 | | |
459 | | - | |
| 479 | + | |
460 | 480 | | |
461 | 481 | | |
462 | 482 | | |
| |||
468 | 488 | | |
469 | 489 | | |
470 | 490 | | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
471 | 501 | | |
472 | 502 | | |
473 | 503 | | |
| |||
508 | 538 | | |
509 | 539 | | |
510 | 540 | | |
511 | | - | |
| 541 | + | |
512 | 542 | | |
513 | 543 | | |
514 | 544 | | |
| |||
520 | 550 | | |
521 | 551 | | |
522 | 552 | | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
523 | 563 | | |
524 | 564 | | |
525 | 565 | | |
| |||
0 commit comments