test(schema-catalog): seal the two unsealed authored-key pairs (objectui#6810 narrow ratchet) - #7395
Merged
os-project-manager merged 1 commit intoSep 2, 2026
Conversation
…ui#6810) The objectui#6810 ruling (maintainer, 2026-08-30, director seat batch #9) adopted a narrow ratchet: seal the key x type pairs this class has already regenerated on, one at a time, in the existing named-pin form — and explicitly do NOT build the all-types read-key-set extractor. Measured on the base: three of the five ruled pairs are already sealed at pair scope by dedicated files and are deliberately NOT restated here (#6788 card, #6805 scroll-area, #6806 badge). The two that were not: - #6902 `select` x `type` — covered only by a static-import assertion on one fixture (safe-validate-corpus-6318.test.ts:98), i.e. 3 of the 66 select options in the corpus. - #6773 `content` x `aspect-ratio` — sealed at CATEGORY scope, exact today (5/5 nodes) but not scoped to the pair the ruling names. Both new blocks carry counter-probes, per this file's convention. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EMrWaQw3XS5DxTHxp4yRyC
os-project-manager
marked this pull request as ready for review
September 2, 2026 17:20
os-project-manager
deleted the
claude/issue-6810-authored-key-narrow-ratchet
branch
September 2, 2026 17:36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #6810
Executes the second ruling on that card (maintainer, 2026-08-30, director seat batch #9, verbatim「同意」, comment 5469403582): a narrow ratchet — seal the key x type pairs this class has already regenerated on, one at a time, in the existing named-pin form — and ⛔ no all-types read-key-set extractor. The first ruling on the card (先清点) was discharged by the measurement dispatch and is superseded.
⛔ Nothing here is a census, a gate, or a shared derivation helper. Each block is a local walker in the shape
component-fixture-declared-keys.test.tsalready uses for objectui#7072.The premise check changed the shape of the work
The ruling names five pairs. Measured on
origin/mainb6e83be6a, three of the five are already sealed at pair scope and are deliberately not restated — duplicating them would create a second source of truth for one fact:contentxcard(#6788)card-demo-content-6788.test.tsxcardnodes at any depth, DECLARED and READ, both counter-probedcontentxscroll-area(#6805)catalog-authored-key-6805-6806.test.tsxcontentxbadge(#6806)Those three run green on the base (verified, see below). Two pairs were not sealed, and this PR adds one block for each.
1.
selectxtype(#6902) — was pinned on one fixture, not on the pairsafe-validate-corpus-6318.test.ts:98assertsoptions.some((o) => 'type' in o) === false, but against the static import ofbasic-select.jsonalone — 3 of the 66 select options in the corpus, i.e. exactly the fixture #6902 repaired. A second select authoringtype, in any of the other six categories, is invisible to it. That is the objectui#7072 failure mode named on this same file: a pin covering part of a class while reading as though it covers the class. The #6318 pin keeps its own narrower job and is untouched.Population measured on
b6e83be6a:selectnode's ownoptionsarray, deliberately not "any object under a key namedoptions" — the looser reading drags in 15 dashboard widget config bags (widgets[].options={ xField, yField, data }), which are not select options at all. A sweep judging those against an option read set would report confidently on the wrong population. This is why the earlier card comment's "115 objects in an options array" and this block's 66 are both correct: they are different populations, and only the narrower one is the pair.⛔ Not a
.successprobe.SelectOptionSchemais a barez.object(zod/form.zod.ts:46), so it stripstypeand reports success — measured on the shipped build:safeParse({ label, value, type })returnssuccess: true, parsed keyslabel value. A parse-level probe is structurally incapable of seeing the authored key (the objectui#6157 class-2 shape) and stayed green through all of #6902.⛔ Also not a full read set over options:
colorandvisibleWhenare declared members the fields-layer select widgets read, so asserting a read set would red on working fixtures — that is the instrument the ruling declined. One key, one type: the pair that regenerated.2.
contentxaspect-ratio(#6773) — was sealed at category scope, not pair scopeaspect-ratio-demo-content-6773.test.tsxseals this pair and stays the owner of the render half (it draws every demo and counter-probes the pre-fix empty box). ⛔ None of that is restated. What it does not do is seal the pair as the ruling states it: its read-key whitelist is scoped toe.meta.category === 'components-layout-aspect-ratio'. Measured onb6e83be6athat scope is exact today — all 5aspect-rationodes in the corpus live in that category — but anaspect-ratiominted in any other category would authorcontentunseen, and the ruled unit is the key x type pair, not the category. The new block adds only that: type scope, plus the counter-probe at a position the category-scoped pin structurally cannot reach.Evidence — both pins driven red on the real corpus, then green
Ablation on the committed tree (implementation committed first, so the restore leg had a real reference), both fixtures mutated back to their pre-fix shapes:
Restore proven byte-for-byte, not by exit code — worktree blob equals the HEAD blob for both fixtures (
70e7fc8f…,08807c61…),git diff HEADempty,git statusclean. The mutation script carried atrap … EXIT INT TERMrestore with absolute paths.Green leg, on the final commit
49bedea8:The type-check is not a vacuous pass:
tsc -p tsconfig.test.json --listFilesreports the edited file 1 time, so it is genuinely in the program.Changeset: none owed, and the gate said so rather than me.
check-changeset-presence.mjsverdict line: "1 file(s) changed, 0 of them published source of a package the release covers … so no changeset is owed." Noskip-changesetlabel is applied — in this repo that label is read by no workflow and exempts nothing.Scope
One file, +260 lines, tests only:
examples/schema-catalog/test/component-fixture-declared-keys.test.ts. No fixture, no renderer, no production source. Disjoint from the live sibling work on the non-grid plugin views /packages/react/ the i18n block.The census assets stay on #6810 as the ruling's archive (item 3): the 0/707 classifier and the 34 "type x array-key" nested-surface list. If this family regenerates on a new key, that evidence returns to the decision box with the denominator already in hand.
🤖 Generated with Claude Code
https://claude.ai/code/session_01EMrWaQw3XS5DxTHxp4yRyC
Generated by Claude Code