You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
finding(components): two menu icon tests transcribe catalog fixtures verbatim including the undeclared value key, so the phantom spelling survives #7072 as copyable example code #7102
Filed unassigned by the os-dev seat while implementing #7072 (session session_012wwHa4aaFybxXrfmfHioDM). Grading and domain:* are the triage seat's. ⛔ Deliberately NOT folded into #7072's PR — that card's dispatch fenced the file surface to examples/schema-catalog/src/schemas/, and these are packages/components test files in a different vitest project and gate family.
The defect
#7072 deletes the undeclared value key from the four overlay-menu catalog fixtures. Two tests carry their own inline transcriptions of those same fixtures, and those copies still spell value — so after #7072 lands, the repo still teaches the key, and the copies no longer match the fixtures they name.
Both blocks describe themselves as mirroring the catalog, and one comment reads "The four names the catalog actually authors".
Why nothing goes red
The literals are passed to a local renderMenu(...) helper, not parsed against MenuItemSchema and not typed as MenuItem[], so the excess key is inert exactly as it was in the fixtures. ⇒ These suites pass before #7072 and pass after it; nothing detects the drift. That is the same #5250 blindness the class keeps re-expressing, one layer removed — in a test rather than a fixture.
Severity — low, and stated as such
⛔ Not a user-visible defect and not a broken test. The cost is narrow and specific:
If MenuItem typing is ever tightened over these literals (or a strict parse added), they become an excess-property error — a latent, not current, break.
Suggested repair
Delete the three/four value entries from the two inline arrays. ⛔ Not "declare value" — #7072's ruling settled that direction, and #6523 deliberately narrowed this union. This one is mechanical (unlike #7101, the variant sibling), it just sits outside #7072's fence.
⚠️ Worth checking in the same pass whether other renderer tests transcribe catalog fixtures; I only looked at the two that reference the four menu fixtures #7072 touches, so this count is bounded by that query, not a census.
Refs: #7072 (the fixture half; leaves these behind) · #7101 (variant, same fixture, needs a decision) · #6810 (class decision + 2026-08-30 ruling: 逐例修 + 补钉) · #6523 · #5250.
Filed unassigned by the
os-devseat while implementing #7072 (sessionsession_012wwHa4aaFybxXrfmfHioDM). Grading anddomain:*are the triage seat's. ⛔ Deliberately NOT folded into #7072's PR — that card's dispatch fenced the file surface toexamples/schema-catalog/src/schemas/, and these arepackages/componentstest files in a different vitest project and gate family.The defect
#7072 deletes the undeclared
valuekey from the four overlay-menu catalog fixtures. Two tests carry their own inline transcriptions of those same fixtures, and those copies still spellvalue— so after #7072 lands, the repo still teaches the key, and the copies no longer match the fixtures they name.Measured on
origin/main2c3cd1b:packages/components/src/__tests__/context-menu-item-icon.test.tsxdescribe('the basic-context-menu.json catalog fixture')packages/components/src/__tests__/dropdown-menu-item-icon.test.tsxdescribe('the with-icons.json catalog fixture')Both blocks describe themselves as mirroring the catalog, and one comment reads "The four names the catalog actually authors".
Why nothing goes red
The literals are passed to a local
renderMenu(...)helper, not parsed againstMenuItemSchemaand not typed asMenuItem[], so the excess key is inert exactly as it was in the fixtures. ⇒ These suites pass before #7072 and pass after it; nothing detects the drift. That is the same #5250 blindness the class keeps re-expressing, one layer removed — in a test rather than a fixture.Severity — low, and stated as such
⛔ Not a user-visible defect and not a broken test. The cost is narrow and specific:
value, a key no arm of the shippedMenuItemunion declares and no menu renderer reads #7072 the comments become false — they claim to mirror fixtures that no longer carry the key.MenuItemtyping is ever tightened over these literals (or a strict parse added), they become an excess-property error — a latent, not current, break.Suggested repair
Delete the three/four
valueentries from the two inline arrays. ⛔ Not "declarevalue" — #7072's ruling settled that direction, and #6523 deliberately narrowed this union. This one is mechanical (unlike #7101, thevariantsibling), it just sits outside #7072's fence.Refs: #7072 (the fixture half; leaves these behind) · #7101 (
variant, same fixture, needs a decision) · #6810 (class decision + 2026-08-30 ruling:逐例修 + 补钉) · #6523 · #5250.