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
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
墓碑仍然是 shape 里的一个条目,所以 Object.keys(shape) 照样包含它。于是一个被 spec 按名拒绝的键,在门看来是「已声明、接受」——declares no top-level input the spec does not accept 会绿。这是那道门唯一能给出的错误绿:它的失效方向本来只有漏报,加上墓碑就多了一个误判。
The dormancy has a scheduled expiry: the parity gate computes accepted keys via Object.keys(shape), and ADR-0087 tombstones stay in the shape — so a spec-retired key reads as accepted. Upstream component.zod.ts on objectstack origin/main @ 271cee1 already carries 4 retiredKey tombstones (:295 body, :754/:765/:776 record_picker keys), and this repo's page:card inputs (containers.tsx:703-706, live @ f5f8744) still publish body. The false green fires at the next spec pin bump — a routine event — and it is the gate's only wrong-green mode. Same timing argument as the PER_CHUNK_BASELINE provenance comment argues from a reading two re-baselines old, and its conclusion contradicts the gate's own live sensitivity verdict #6778's promotion: the fix lands BEFORE the flip.
Fix is cheap and local: exclude tombstoned entries (z.never-based, detectable) when computing the accepted set in the parity test; the page:card.body migration itself is separate work and not this card.
Activity
yinlianghui commentedon Aug 8, 2026
补一条:同一个盲区在反方向的症状是假红,不是假绿 —— #3808 的实施(把反方向门补进
registry-inputs-spec-parity.test.ts)撞上了这一点,顺手记在这里,免得本单落地时只修了一半。两个方向,同一个
Object.keys(shape),相反的失效本单描述的是正方向(「不得声明 spec 不接受的键」):墓碑留在 shape 里 → 门认为「spec 接受」→ 假绿。
反方向(「spec 声明的键必须可从
inputs发现」)用的是同一个集合的补集,于是墓碑的效果整个翻过来:declaredInputs - Object.keys(shape)Object.keys(shape) - declaredInputs假红的具体后果比漏报更难缠:pin 一升,门会要求
element:record_picker声明displayField/searchFields/multiple,而照做的话正方向立刻红(声明了 spec 不接受的键)。两个方向互相打架,而且两边都"按门的要求"做了。#3808 里怎么处理的
没有在那一单里改
specTopLevelKeys(那是本单的落点,且今天 pin 版零墓碑,现在写就是没人知道已失效的死码 —— 正是本单「建议的落地」第 1 条末尾自己提醒的那件事)。做法是:specTopLevelKeys,两个方向共用)。顺带纠正 #3808 正文的一处错误:它的 C 类理由写着这三个键「pin 升上来后会从 spec 的接受集消失」。按本单的机制这是错的 —— ADR-0087 D2 的退役是替换成
z.never().optional(),不是删条目,所以它们不会从Object.keys(shape)里消失。#3808 的豁免注释已按本单的描述改正。对本单落地的一条建议
本单第 1 条建议加一条「墓碑确实还留在 shape 里」的前提断言。反方向让这条断言更划算:它同时钉住两个方向的推导前提,而且一旦上游哪天改成真删键,两边的墓碑识别代码会一起被判定为失效死码,而不是只有正方向那一半。
page:card.body这个标本也有反方向的一面:本仓page:card的inputs声明body不声明children,pin 升上来后 —— 正方向对body假绿(本单已述),反方向对children报真红(spec 新接受的children本仓确实没发布)。所以那次 pin 升级时,page:card会同时是一个假绿和一个真红,处置(body→children)刚好一次解决两个。参考:
apps/console/src/__tests__/registry-inputs-spec-parity.test.ts—— 反方向的门与UNPUBLISHED_EXEMPTIONS(#3808)Generated by Claude Code
claude commentedon Aug 8, 2026
Findings round: PROMOTED —
finding→pm:queue.Object.keys(shape), and ADR-0087 tombstones stay in the shape — so a spec-retired key reads as accepted. Upstreamcomponent.zod.tson objectstackorigin/main@271cee1already carries 4retiredKeytombstones (:295body, :754/:765/:776 record_picker keys), and this repo'spage:cardinputs (containers.tsx:703-706, live @f5f8744) still publishbody. The false green fires at the next spec pin bump — a routine event — and it is the gate's only wrong-green mode. Same timing argument as thePER_CHUNK_BASELINEprovenance comment argues from a reading two re-baselines old, and its conclusion contradicts the gate's own live sensitivity verdict #6778's promotion: the fix lands BEFORE the flip.page:card.bodymigration itself is separate work and not this card.page:header.icon与page:card.actions:spec 声明、渲染器零读点 —— 二择一(接线 / 按 showSubscriptionToggle 先例声明并写明 KNOWN GAP) #3829 route (c) family. No duplicate found.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
test(console): park `record:details.layout` as a D2 tombstone exempti…
yinlianghui commentedon Aug 16, 2026
【范围扩注】座位
repo:objectui(session_01GTRjn8xBqp75dk7kFupVRt,2026-08-16,来自 #3829 的测量):本卡现有修法只点名 console gate 的specTopLevelKeys—— 实测发现同一盲点还有第二处:packages/layout/src/__tests__/page-header-authorable-keys.test.tsx:58同样用Object.keys(SpecPageHeaderProps.shape)判 authorable,墓碑(z.never().optional())留在 shape 里使它对已退役键假绿。实施本卡时该文件应入范围(或复用同一 tombstone 识别 helper)。另:#3829 落地后,console gate 的 retired-upstream 类 exemption 将累计六条等本卡收割(record_picker 三连、page:card.body、record:details.layout、page:header.icon+page:card.actions)—— 落地时一并删。Generated by Claude Code
yinlianghui commentedon Aug 17, 2026
认领(objectui 车道分片 PM,会话
session_01GTRjn8xBqp75dk7kFupVRt,批次 19):branchclaude/issue-3809-tombstone-aware-parity。范围 = 本卡 + 08-08 反方向评论 + 08-16 范围扩注:墓碑识别(z.never()基)做成共享 helper,console gate 的specTopLevelKeys两方向共用收窄 +packages/layout的 page-header-authorable-keys 同盲点一并修;加「墓碑确实还留在 shape 里」前提断言(两方向推导前提同钉);#3808 的三条 record_picker 显式豁免与 #3829 后累计的六条 retired-upstream 豁免一并收割删除。page:card.body迁移本身不在本卡。Generated by Claude Code
fix(test-support): 跟随 17.0.0 GA pin 重测墓碑集,修好 lockfile (#3809)
refactor(test-support): 墓碑判据收成单一 choke point,shape 只解析一次 (#3809)
Merge origin/main into claude/issue-3832-componentinput-union
retire(detail): remove the `record:details` `layout` input and its de…
test(console,layout): parity 门按 ADR-0087 墓碑收窄接受集,识别做成共享 judge (object…