**发现于**:#4645 Phase A(PR #5618)的反向验证,原始测量记录在该 PR body「liveness evidence 路径守卫」一节。发现者为该单 dev,按其报告转由 PM 立单(查重已做:`check:liveness` in:title 零命中,liveness 泛搜零命中)。 ## 实测(objectstack,#4645 Phase A 分支) 把 `packages/spec/liveness/query.json` 的 5 条 evidence 路径**故意改坏**(指回迁移后已不存在的 `packages/plugins/driver-sql/...`),跑 `pnpm --filter @objectstack/spec check:liveness`(`scripts/liveness/check-liveness.mts` 的 `checkEvidence`): ``` ⚠ 5 'live' entr(ies) cite a missing file: query/fields → packages/plugins/driver-sql/src/sql-driver.ts query/where → packages/plugins/driver-sql/src/sql-driver.ts query/orderBy → packages/plugins/driver-sql/src/sql-driver.ts query/limit → packages/plugins/driver-sql/src/sql-driver.ts query/offset → packages/plugins/driver-sql/src/sql-driver.ts ``` - 逐条点名 ✅ —— 但这是 **`⚠` 警告,不是 `✗`**,**退出码两种状态下都是 0**。 - 摘要行 `evidence paths: 330 resolved against this checkout` 里的 **330 是 local 路径总数,不是解析成功数** —— 改坏 5 条之后它仍然显示 330,"resolved" 一词失真。 ## 影响 ADR-0087 的证据链断裂不挡任何 CI:目录重组、文件更名这类常规动作可以让 `live` 判定引用一个不存在的文件而无人发现 —— declared(「证据在此」)≠ enforced(无 gate 兜底)。#4645 这次是 dev 主动做反向验证才发现;下一次大概率是静默腐烂。 ## 注意的反面(先回答再动手) 同一 reporter 里 ⚠ 与 ✗ 的分级在别处是**刻意设计**(发现 dev 的观察)。把 stale-evidence 升级为 ✗ 之前,需先核对该分级的原始意图 —— 若「证据路径可指向未来/跨仓」是有意的宽容,收紧要带边界(local 路径 + `live` 判定才判红,cross-repo attribution 的 101 条不受影响)。 ## 处置建议 1. `live` 条目引用**本仓缺失文件** → `✗` 判红(cross-repo attribution 维持现状); 2. 摘要行改为真实解析计数,或把 "resolved" 改成 "declared"。
Activity
os-zhuang commentedon Aug 5, 2026
发现分诊(#4949 纪律):晋级
pm:queue+domain:spec(摘finding)。一行理由:门禁自身 declared ≠ enforced(⚠ 恒 exit 0,ADR-0087 证据链断裂不挡任何 CI)+ 摘要行 "N resolved" 计数失真,落点
packages/spec/scripts/liveness/check-liveness.mts的checkEvidence,修法与边界正文已给全(仅 local 路径 +live判定判红,cross-repo attribution 维持现状)。接单 dev 按正文「注意的反面」先核 ⚠/✗ 分级的原始设计意图再收紧。与 #4645 Phase A(动 liveness json 的 evidence 路径)相邻但不同文件,不互斥。本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-zhuang commentedon Aug 6, 2026
疑似域误标:本单落点在
check:liveness门禁脚本(门禁类scripts/**,C 包 #5163 文件面),建议改标domain:spec-tooling——交分诊座位定夺。背景:维护者 2026-08-06 拍板 spec 车道缩盘方案,见 #5837。Generated by Claude Code
os-zhuang commentedon Aug 6, 2026
标签落实(维护者 2026-08-06 指示,session_01LeEfA7CFwbJb7JJmXm2KM3):按 08-06 转席建议执行
domain:spec→domain:spec-tooling(落点check:liveness门禁脚本)。Generated by Claude Code
os-zhuang commentedon Aug 6, 2026
认领:PM 循环第 1 轮(spec-tooling 车道,座位登记 #6018)
会话:
session_014wsZeReNTqiceBfLb5Pyf5分支:
claude/issue-5623-liveness-stale-evidence-gateWorktree:
objectstack-issue-5623域:
domain:spec-tooling文件面:
packages/spec/scripts/liveness/check-liveness.mts(checkEvidence分级 + 摘要计数)及其自测、.changeset/*.md。⛔ 不碰packages/spec/liveness/*.json台账数据(除非修复本身要求纠正确凿坏路径,届时逐条说明)、不碰 zod 文件。(越界即停,报告说明)窗口备注:#5837 分片改造在飞,本单落点不读三个热点生成物,与其申报面实质不相交(已在 #5837 15:2xZ 评论申报);若实现中发现需触 build-schemas/build-docs 或生成物布局,STOP 回报,⛔ 不硬做。
Generated by Claude Code
os-zhuang commentedon Aug 6, 2026
验收:ACCEPT → PR #6057(等 CI 收敛后转 ready 入队)
前提在
origin/main逐条复现(5 断链点名却 exit 0;摘要 330 不动)。「注意的反面」按派发令先答后动,四证俱全(#3857 前 48/227 全误报的解析器时代、changeset 的 "both mean something again"、同族check-empty-state对 rotted-evidence 一贯判红、本 gate 所有有意宽容均有书面理由而这条没有)⇒ ⚠ 是遗留不是设计,收紧无需上升决策。实现四点核验通过:
checkEvidence只解析 local 桶,foreign 桶(realm marker + service-ai 前缀,101 条)永不进missing;测试钉了「repo-rooted 但 foreign」与「混合子句」两个最易画错线的形态。--ledger-root让判红可证明:自测 spawn 真脚本对坏副本断言 exit 1,仓库零改动;控制组防「副本读不到也 exit 1」的假阳。改前 main 上 exit 0 即变异证明。npm pack --dry-run实测liveness/README.md入包(29 文件)⇒ 非 releases-nothing,route 1 具名包;与 ci(spec): check:skill-examples 拒绝 os:check 块内的裸 any (#5943) #6049 的 skip 标签、fix(spec): docs-gen 把 retiredKey() 墓碑渲染成 never,而不是 any (#5606) #6058 的 patch 三种处置各有实测依据,不搞一刀切。范围备注:
packages/spec/liveness/README.md+12 行超出认领申报字面,但「开始判红的门必须同步作者文档」成立(否则下一作者靠撞红才知道规则变了),采纳——申报 ⛔ 针对的是 ledger JSON 数据,未触碰。#5475 影响已实测(错误数不变、文件分母 +1、新文件 0 错);#5837 碰撞面零。CI:风暴期,越过引导阶段的 job 全绿(含 ESLint 家族门、双 dup-guard、Dogfood 2/3 与 3/3);TypeScript / liveness / ESLint 的最终结论落地后由 PM 转 ready + 入队。
Generated by Claude Code
fix(spec): retire page.json's obsolete prose-in-note citation mandate (…
Bound a liveness evidence citation's LINE, not just its file
feat(spec): make a liveness citation name the property it is evidence…
feat(spec): make a liveness citation name the property it is evidence…
chore(spec): re-anchor six liveness ledgers to consuming symbols (obj…