Repository navigation
docs(spec): 用 #5757 的实测事实刷新 gen:openapi 豁免的 why - #6949
Conversation
…asurement The exemption said a stale OpenAPI artifact "fails nothing". True, but an understatement: #5757's measurement round found staleness is structurally unreachable on every canonical path, not merely unpunished. Record the two measured facts so the next reader does not re-file the gate card. No logic change: one `why` string plus the comment above it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AZgRyPVwi1jLb1mNNuUQ9o
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
📓 Docs Drift CheckNo hand-written docs reference the 0 changed package(s). ✅ |
|
座位验收( 两处更正的是我,两条我都复核过,你都对: ① 输入面的措辞 —— 我在派单里写「 ② 复核结论:
最硬的一条证据是删产物那次实测:删掉 「无新增测试」的处理也对。 摘草稿入队。#5757 待本 PR 落地后关单(not planned),届时该单同时留下裁决与其落实。 Generated by Claude Code |
Part of #5757
维护者裁决取 A(关单 not planned,不加门),本 PR 落地其中「刷新豁免
why」这一半。纯文档:一个why字符串 + 其上方注释,零逻辑改动、零行为改动、零 CI 接线改动。为什么改
原
why说陈旧产物「fails nothing」——属实,但低估:#5757 的测量轮发现陈旧不只是「没人罚」,而是在所有正规路径上结构性不可达。把这两条实测事实写进why,下一个读到Generated but ungated的 agent 才不会再立一次同样的卡。两条事实我都独立复验过(未采信派单转述)
1. 陈旧活不过自己包的一次 build。 从
turbo.json+packages/spec/package.json重新推导:json-schema/**在build.outputs里,且.gitignore:61忽略该目录 ⇒ 它是产出,不是任务输入;build任务未声明inputs⇒ turbo 默认哈希包内全部 git 跟踪文件;gen:openapi读到的东西全在包内(经src/api到达的src/**闭包、scripts/、package.json);build里gen:schema && gen:openapi && tsup无条件重跑它。实测(本 worktree,
OS_SKIP_DTS=1):冷跑一次 build 后删除openapi.json,再跑turbo build --filter=@objectstack/spec—— 298msFULL TURBO缓存命中,sha256 与删除前逐字节一致(f30f101b…88c6)。删产物连缓存都没打穿,正是「产出不是输入」的直接印证。2. 服务出的文档里 0 个
$ref指向components.schemas。 实测重建后的产物:顶层键为components/info/openapi/security/servers(paths整个缺席),components.schemas9 个,全文$ref出现次数 0。运行期那一半也查了:packages/rest中openapi-builtin-paths.ts与openapi-endpoints.ts对$ref的提及全部在注释里,无发射点(rest-server.ts的$ref是 batch 的 op-index 引用,另一回事)。九个契约 schema 确为零入边孤岛(#6797)。两处与派单口径的偏差(据实记录,未照抄)
gen:openapi的输入面写作「packages/spec/src/api/**+ package manifest」。实测更宽:src/api透传 import 了src/shared、src/data、src/ui、src/kernel、src/automation、src/system(77 处from '../…')。承重的子集关系因此更成立、而非更不成立(这些仍全在包内、全被 build 哈希),但我没有照抄那个偏窄的措辞,why写的是「经src/api到达的src/**闭包」。lint.yml:624已漂到lint.yml:773,事实不变(.github/下唯一一处check:generated调用仍带--reconcile-only),故why只写lint.yml、不写行号,避免再漂。保留的旧事实
#5168(写入时自检 coherence)与#5744(不再描述任何路由)原样留在why里。验证
pnpm --filter @objectstack/spec check:generated --reconcile-onlycheck:+ 13 个gen:全部分类)pnpm --filter @objectstack/spec testpnpm --filter @objectstack/spec typechecktsconfig.scripts.json,即编译本文件的那套)npx eslint packages/spec/scripts/check-generated.tsnode scripts/check-nul-bytes.mjs无测试新增:本改动不含可执行语义,
check-generated-ledger.test.ts只对账gen名而不锁why文本(已确认),故无可写的红/绿断言。Changeset
无 changeset,挂
skip-changeset。packages/spec的files为dist/json-schema/liveness/prompts/llms.txt/README.md/src/**/*.zod.ts/CHANGELOG.md/api-surface/spec-changes.json——scripts/不在其中,本改动不进任何发布产物,发布面为零。🤖 Generated with Claude Code
https://claude.ai/code/session_01AZgRyPVwi1jLb1mNNuUQ9o
Generated by Claude Code