Repository navigation
门测量的重合度 bridge 有残余假可达面:整形状由共享叶子组成的「小形状」恒为 1.0,任何阈值都排不掉 #5828
Description
Activity
发现分诊轮(#4949 纪律):持有(留
finding),域维持domain:spec-tooling。⛔ 不晋级、不关闭 —— 三条理由与明确的重启条件如下。- 过时前提检查(origin/main
9e3709a):前提成立,且本条已由 #4001 战役的门测量 BFS 会误报「可达」:zod.describe()共享 def 对象,任意单属性 bridge 把无关形状连起来 #5056 的 PR 作为具名 pin 钉在packages/spec/src/ui/door-reachability.testkit.test.ts(用例名以KNOWN BOUND开头)⇒ 这条边界是被测量、被断言的,不是潜伏面。持有的成本因此极低:它不会悄悄消失,也不会被下一个批次当新 bug 重新发现一次(正文立单的目的即此)。 - 为什么不晋级:入队要求「说得出修复落在哪个文件」,而本条的修法本身还不存在 —— 正文已证明
(0, 1]里没有可用阈值(真·派生ObjectListViewSchema.strip()实测同为 1.0000 且必须保持可达,两者在「重合度」这一个维度上不可分),所以要动就得引入第二个判据(要求共享属性里至少一个是结构性节点、或要求候选与基形状键集双向覆盖)—— 那是对仪器契约的改动。仪器契约改动缺一个东西才能定价:一个真实命中的形状。今天没有。 - 为什么不关(not planned):误差方向是假可达一侧 —— 后果是某个批次可能对一个死形状做收紧(datasource 账本判定的 20 条死键至今无人处置:三个块整块无人读,其中 readOnly 让一个 shipped 示例的「只读副本」可写(ADR-0049 enforce-or-remove) #4583 的 precisely validated dead slot),即「白做工 + 把死槽位当活的」,不是无害的美观问题。命中条件也不是天方夜谭:形状键数 ≲ 4 且几乎每键都是共享叶子。关掉等于把一条已量化的仪器偏差从状态机里删掉。
- 重启条件(本轮明确化 —— 持有必须有可退出的条件):① 后续批次(17–22)测到一个
derived-clone判定、且目标形状键数很少(≲ 4)⇒ 立刻晋级,由那个批次带着真实形状去设计第二判据(此时定价才是被需求拉出来的);② 或cloneOverlap的分母口径在别的单里被改写(不再是候选自身键数)⇒ 本条前提失效,复评关闭;③ 若门测量整体退役 ⇒ 同上。 - 给后续批次的操作照正文执行:测到
derived-clone时,若目标形状键数很少,先看cloneOverlap与键数再决定信不信这扇门,并去读那条KNOWN BOUNDpin。 - 查重:三仓无影子单;#4001 战役的门测量 BFS 会误报「可达」:zod
.describe()共享 def 对象,任意单属性 bridge 把无关形状连起来 #5056(出处)、未知键静默剥离仍是全仓默认:把 #3405 的 strict 收紧从一个 schema 推广到整个可授权面(ADR-0078 完整性闸门) #4001、datasource 账本判定的 20 条死键至今无人处置:三个块整块无人读,其中 readOnly 让一个 shipped 示例的「只读副本」可写(ADR-0049 enforce-or-remove) #4583 为关联。
本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
- 过时前提检查(origin/main
Findings triage round (#4949 discipline): HOLD maintained (
findingkept), domain staysdomain:spec-tooling. Stale-premise check @origin/main80f7dc6.packages/spec/src/ui/door-reachability.testkit.test.ts— REST commit list since 2026-08-06T13:00Z is empty; the boundary is still carried by its named pin,:170"KNOWN BOUND — a shape made ENTIRELY of shared leaves still bridges, whatever the threshold". So the hold stays cheap in the way the last grading described: this cannot silently disappear, and it cannot be rediscovered as a fresh bug by a later batch.- Restart condition ① not fired: no batch (17–22) has reported a
derived-cloneverdict on a small shape (≲ 4 keys) since the grading. - Restart condition ② not fired: the
cloneOverlapdenominator is still the candidate shape's own key count — nothing has rewritten that measure. - Restart condition ③ not fired: door measurement has not been retired.
⚠️ These are REST-commits readings againstmain; the local checkout is shallow (50 commits) and its per-pathgit logreports the graft boundary as if it created every file (Operational notes 6).
Verdict: HOLD
Unchanged on both sides. Not promotable: the body already proves no threshold in
(0, 1]separates the false-reachable small shape from a true derivation (ObjectListViewSchema.strip()measures 1.0000 as well and must stay reachable), so acting means introducing a second criterion — an instrument-contract change that cannot be priced until a real shape pulls it. Not closable: the error direction is false-reachable, whose consequence is a batch tightening a dead slot (#4583's precisely validated dead slot), and the trigger shape is not exotic.Operating instruction for batches 17–22 stands: on a
derived-cloneverdict against a small shape, readcloneOverlapand the key count first, and read theKNOWN BOUNDpin, before trusting that door.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-project-manager commented
on Aug 8, 2026 CollaboratorMore actionsFindings sweep (maintainer-authorized one-off, 2026-08-07 — registered on #6015): hold confirmed. The false-reachable face is real but no actual spec shape hits it (measured), and the body proves no threshold can exclude it — the fix requires a different discriminator, which is design work without a current victim. Restart: first real small-shape false positive in the gate's output.
Generated by Claude Code
Findings round — hold re-confirmed (
finding+domain:spec-toolingunchanged). Stale-premise check onorigin/main@424316b:- The named pin still carries the boundary:
door-reachability.testkit.test.tsstill contains theKNOWN BOUNDcase (grep-verified), so the small-shape ⇒ overlap 1.0 face remains measured-and-asserted, not latent. - Neither restart condition has fired: no batch has reported a
derived-cloneverdict on a small (≲4-key) shape, and thecloneOverlapdenominator is still the candidate's own key count. - The body's own proof stands: no threshold in (0, 1] separates this from true derivations (
ObjectListViewSchema.strip()also scores 1.0), so the fix remains a new discriminator — design work with no current victim.
Restart unchanged: first real small-shape false positive in the gate's output, or a rewrite of the overlap measure.
本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
- The named pin still carries the boundary:
Findings-triage re-check (quota round): HOLD maintained (
findingstands, no label change).Premise re-verified on
origin/main@2c28df9:cloneOverlapand its threshold semantics are live inpackages/spec/src/ui/door-reachability.testkit.test.ts(:122–:130, including thestrip() keeps the whole shape → 1.0assertion this card is about). Still true that no real spec shape hits the small-shape/shared-leaf false-reachable face — observation-class, no user impact today. Held so a future measuring round doesn't rediscover it as new.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
Findings round (quota re-verification): HOLD maintained (
finding+domain:spec-toolingunchanged). Re-checked @origin/maina76a3af: theKNOWN BOUNDnamed pin is still present inpackages/spec/src/ui/door-reachability.testkit.test.ts, and thecloneOverlapassertions are live at:122–:130(includingstrip() keeps the whole shape → 1.0). Neither restart has fired: no batch has reported aderived-cloneverdict on a small (≲4-key) shape, and the overlap measure is unrewritten. Boundary remains measured-and-asserted, not latent.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
Findings round (quota re-verification): HOLD maintained (
finding+domain:spec-toolingunchanged). Re-checked @origin/mainc546c89: the named pin is live atdoor-reachability.testkit.test.ts:193('KNOWN BOUND — a shape made ENTIRELY of shared leaves still bridges'),cloneOverlapassertions at:122-:130incl.strip() keeps the whole shape → 1.0at:130. Neither restart fired (noderived-cloneverdict on a small shape reported; overlap measure unrewritten). Boundary stays measured-and-asserted; held.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
Findings cadence re-check @
origin/main4ed4160: HOLD —findingstands, premise frozen.The boundary is still measured-and-pinned, not latent: the named pin is live at
door-reachability.testkit.test.ts:193("KNOWN BOUND — a shape made ENTIRELY of shared leaves still bridges, whatever the threshold"), and the file is untouched since filing. Error direction remains false-reachable only (worst case: a batch over-tightens a dead slot), zero real spec shapes hit the ≤4-keys-all-shared-leaves profile, and the card's purpose is advisory to future measurement batches — which the pin plus this record serve as-is. A second discriminating criterion (structural-node requirement / bidirectional key coverage) stays an instrument-contract change wanting its own measured pass; no pull for it has appeared. Restart condition unchanged: promote if any real batch 17+ shape trips the profile, or when the reachability instrument is next revised.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
Findings triage round, 2026-08-11 (maintainer-directed). Graded: hold — zero real spec shapes hit the small-shape 1.0-overlap face, and the card proves no threshold can separate it (a second criterion is an instrument-contract change). Error direction remains false-reachable only, i.e. extra caution, not missed coverage. Restart: a real shape hits it, or the reachability instrument is next revised.
Generated by Claude Code
Finding-grading round: closed, not planned — superseded as a carrier by the pin it already owns.
The
KNOWN BOUNDcase (door-reachability.testkit.test.ts:193) durably records that a shape made entirely of shared leaves bridges at any threshold; the card's own body proves no threshold fix exists, so it is unactionable by construction, and the strictness-batch consumer has since run more batches (through 08-10) without hitting it. Re-open only if a batch reports aderived-cloneverdict on a ≲4-key shape or thecloneOverlapdenominator is redefined — the executable pin is the live record.
Generated by Claude Code
- added a commit that references this issue
on Oct 7, 2026
观察类发现,来自 #5056 的实测。今天没有任何真实 spec 形状命中,不影响用户;记录在案,免得后面某个批次把它当成新 bug 重新发现一次。
事实
#5056 把 derived-clone bridge 从「任意单属性命中」换成整形状重合度 ≥ 0.5,
WidgetManifestSchema的假可达因此被正确排除(2/19 = 0.105)。但重合度的分母是候选形状自己的键数。于是一个键数很少、且每个键都是仓内共享叶子的形状,重合度恒为 1.0:
实测
cloneOverlap= 1.0000,判定derived-clone→ 可达。而它跟任何活 schema 都没有派生关系,只是两个键碰巧都是被.describe()过的共享叶子(.describe()复用接收者实例的_zod.def,见 #5056)。对照:同样两个共享叶子 + 3 个普通键 → 0.4000 → 正确判为不可达。所以命中条件是形状小,不是共享的绝对数量。
为什么阈值调不掉
(0, 1]里没有哪个阈值能排除它:真·派生也会打到 1.0 —— 实测ObjectListViewSchema.strip()重合度就是 1.0000,且必须保持可达。两者在「重合度」这一个维度上不可分。要分开需要另一个判据(例如要求共享的属性里至少有一个是结构性节点而非叶子,或要求候选与基形状的键集双向覆盖),那是对仪器契约的改动,不该顺手塞进 #5056 的测试层 PR。影响面(今天为零)
误差方向仍然只朝假可达一侧 —— 也就是仍然只可能让某个批次对死形状做收紧(#4583 的「precisely validated dead slot」)。触发需要:被测形状键数很少(约 ≤ 4),且几乎每个键都是共享叶子。
WidgetManifestSchema19 键 → 0.105,不命中现状
已在 #5056 的 PR 里作为具名 pin 钉住(
packages/spec/src/ui/door-reachability.testkit.test.ts,用例名以KNOWN BOUND开头),所以这条边界是被测量、被断言的,不是潜伏的。本 issue 只负责让后续批次在遇到小形状时知道该去读那条 pin。建议给后续批次(17-22)的操作
测到一个
derived-clone判定时,如果目标形状键数很少,先看cloneOverlap和键数,再决定信不信这扇门。参考:#5056 · #4001 · #4583