docs(customization): 按实况重画 customization/index 的 src/ 目录树并纳入 docs-drift 守卫 (#988) - #995
Conversation
…ft 守卫 (#988) customization/index 三语页是 #984 的同型孪生:目录树画着 agents/、后缀表 列着 *.agent.ts,两者都随应用自带的两个 copilot 一起被 #512 移除。整树 逐目录对账后补上了真实存在却缺席的 hooks/、datasets/、mappings/、docs/、 interfaces/,:15 表格里已不存在的 "agent wiring" 按 skills barrel 实况改写。 修好后三语加入 test/docs-drift.test.ts 的 PRODUCT_TREE_DOCS——#984 在该处 留的注释正指向本单。TREE_DIAGRAM_DOCS 由该列表展开而来,故一处登记同时 覆盖 inline 与目录树两条轴。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
CI 三项红的定案:GitHub Actions 平台故障,非本 PR 改动head (link-check job 92667634724;Analyze Code job 92667633042 同形,15:40:15 收尾;Build and Test job 92667633058 同形,15:41:31 收尾。) 这三个 job 从未取到仓库代码,因此本 PR 的任何文件改动都不可能是成因。同一 head 上凡是成功解析到 action 的 job 全绿:Quality Checks、Check Changeset、Label Pull Request、Playwright、Vercel。 逐一排除 PM 提出的两条假设
处置三个 run 均已
Generated by Claude Code |
续:重跑证实了平台故障的判断
余下两项 当前状态
代码侧无待办:本地六道门在与 CI 将测同一棵树( Generated by Claude Code |
三度重跑仍受阻于平台;代码侧无待办对
结论的证据链
因此这两项红与本 PR 的 5 个文件改动无因果关系,平台恢复后重跑即可,不需要任何代码改动。 本地等价证据(与 CI 将测同一棵树
|
| CI 步骤 | 本地对应 | 退出码 |
|---|---|---|
| Source hygiene | node scripts/check-source-hygiene.mjs |
0 |
| Validate metadata | pnpm validate |
0 |
| Lint metadata | pnpm lint |
0 |
| TypeScript | pnpm typecheck |
0 |
| Build | pnpm build |
0 |
| Tests | pnpm test —— 75 files / 1772 passed / 1 skipped |
0 |
link-check 侧:其配置只扫改动过的 .md(file-extension: '.md',check-modified-files-only: yes)。本 PR 唯一改动的 .md 是 .changeset/docs-customization-index-src-tree.md,其中不含任何链接,4 处站内路径全部在反引号内。三个 .mdx 页不在该 job 的扫描面内。
Generated by Claude Code
第 4 次尝试同样受阻——停止重试,交由平台恢复后重跑
与前三次同一个卡点。四次尝试的行为完全一致,故不再重试,以免持续占用 runner。 汇总:四次尝试
attempt 2 里 交接本 PR 代码侧无待办,平台恢复后直接重跑这两项即可,不需要任何改动:
其余 7 项检查(Quality Checks、Check Changeset、Playwright、CodeQL、Analyze Code、Label PR、Vercel)均已 success。 Generated by Claude Code |
Fixes #988
customization/index三语页是 #984 的同型孪生:同一棵src/树、同一个已被 #512 删除的agents/分支、同一行*.agent.ts后缀。#984 的边界只覆盖getting-started/for-developers,本页与它行集互斥,故按 Prime Directive #10 另立本单。前提复核
先对
origin/main验证 issue 正文的每一条,全部成立:ls src/实有 18 个目录,其中没有agents/;find src -name '*.agent.ts'零命中;:28的树逐行画着agents/,:50的后缀表列着*.agent.ts,:15的表格把 AI skills 一节描述为 “Copilot skills and agent wiring”。改了什么
整树逐目录对账(沿 PR #991 全套口径,不止剪掉死分支)。树上现有 18 项,与
ls src/精确一一对应:删agents/,补真实存在却缺席的hooks/、datasets/、mappings/、docs/、interfaces/,每条注释按实况写——objects/同时装*.object.ts模型与*.hook.ts生命周期逻辑;hooks/是把它们汇总交给 stack 的 barrel;interfaces/index.ts目前只有版权头,如实写作“空 barrel”。docs/的注释写作“陈述流程所实现业务规则的应用文档”,依据是test/docs-drift.test.ts本身就拿这批src/docs/*.md与 flows 对账。后缀表清掉
*.agent.ts一行;:15表格按 skills barrel 实况改写为“面向平台助手的 skills,以及注册它们的 barrel”——src/skills/index.ts导出 6 个 skill 汇成allSkills,没有任何 agent 接线。树下新增一段落地文本,与 #991 同型。守卫扩面:两条轴,一处登记
三语页加入
PRODUCT_TREE_DOCS。TREE_DIAGRAM_DOCS本身就是['README.md', 'AGENTS.md', 'docs/README.md', ...PRODUCT_TREE_DOCS]展开而来,故这一处登记同时覆盖 inline 与目录树两条轴;若再往TREE_DIAGRAM_DOCS里重复列一遍,只会得到重名用例与重复执行。既有断言零改动。入列是有门槛的,本页得先挣到:inline 检查拒绝空转,而本页此前一条 inline
src/< dir >/都没有——唯一的候选是黄金法则里的`src/**/index.ts`,那是 glob,正则不匹配。使这三页够格入列的,正是新增落地文本里那句src/skills/index.ts。这一层已写进守卫注释,免得后来者以为“会画树就能进 PRODUCT_TREE_DOCS”。同理,落地文本刻意写作“及其所在目录已被移除”而不写
src/agents/字面量:本页现已入列,任何 inline 形式的src/agents/(哪怕是否定式)都会被判为“指向不存在的目录”。#991 的措辞正是为此,本页照搬。红→绿两阶段验证
红(旧文档 + 扩面守卫)——6 条失败,方向与事先预判完全一致,且分属两种不同断言:
三语各两条。值得记一笔:inline 那三条红的是空转断言(
expected 0 to be greater than 0),不是“列了不存在的目录”——因为旧文档压根没有 inline 路径。派单模板预设的是后者;实际触发的是前者,如实照录。目录树那三条才是agents直中。绿(修好后):
Test Files 75 passed (75),Tests 1772 passed | 1 skipped (1773)——恰好是红阶段1766 passed | 6 failed的那 6 条转绿。六道门(
flock内串行,--max-old-space-size=4096,--maxWorkers=2)validatetypechecklinthygieneno raw control bytes in first-party files,扫描面含 content 与 .changeset)buildtestpush 前另做一次控制字节自扫(
grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f]'),无命中。边界
src/零改动,只动content/docs/与test/;未碰@objectstack/*版本与content/docs/releases/。customization/ai-skills.mdx:10那句合法否定式(“there is nosrc/agents/directory”)未受影响——该页没有入列,守卫按页白名单而非遍历content/docs,这正是白名单存在的理由。#595 不预判。三语同步,zh 内链不带锚。