docs(pm-dispatch,os-dev): 增补三条 operational note —— advisory 门禁红着合并、死掉的 dev ≠ 维护者中止、截断判读双读取 (#5741) - #5909
Merged
Merged
Conversation
…5741) 一天实操撞到的三个坑,SKILL.md 现状未覆盖,按「每条 operational note 是被咬过 之后写下的」体例落稿。既有 notes 1-9 与决策框架四份拷贝一字未动。 - note 10「合并前认门禁 job 的结论,不认聚合读数」:PR #5584 的 ESLint job 19:53:08Z 结论 failure,PR 在 20:12:26Z(红后 19 分钟)照常过队合并,这条红 随 main 的 merge ref 进了每个后续 PR 的 ESLint job(#5601 job 92432801994), 热修 #5615 才解除;治理半边 #5617(required 集怎么配)与本条互补并交叉引用。 实测确认三个门禁(engine-double-contract / error-code-casing / route-envelope)确实都是 lint.yml 里 job `lint`(显示名 ESLint)的步骤。 - note 11「dev 子代理自己死了 ≠ 维护者中止」:#5085 上两种情形都出过 —— 08-05 07:00Z 是推断(误判,门压到 08-06 02:42Z,近 20 小时),08-06 04:12Z 是宿主明确回报 stopped by the user(真中止,两分钟后维护者示意重派)。症状 一样,判据是信号,所以只有显式信号成立,否则按 step 4 stale-claim 回收。 - note 12「截断判读必须双读取」:#5148 / #5149 / #5164 被判正文被 sanitizer 截断并要求作者重贴;REST 双读取复核三条正文均完整(body 实测 4321 / 5183 / 4181 字符,body_html 需 application/vnd.github.full+json 才返回),真因是 读取端截断。与 notes 6(零命中反查)、notes 7(公开更正)同源交叉引用。 - step 7 复核清单增一行「报告到达 ≠ CI 收敛」,os-dev 交付清单增配套一行 「等 CI 收敛再交报告,本地绿不等于 CI 绿」,并显式声明这是前台阻塞等待、 不是可以中途返回的后台守望(与 resource rule 6 不冲突)。 - 段首计数「九条」→「十二条」;os-dev 的新条目加在无编号的 Definition of done 列表里,不触碰任何编号交叉引用(同 #5727 的保序做法)。 三处按实测收紧了拟稿:门压时长写实测的近 20 小时而非「一整天」;note 11 补上 同一 issue 上的真中止对照(拟稿只有误判半边);那道门实际只写在评论里、标签退回 了 pm:queue,比 pm:on-hold 更隐蔽,照实记。 Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GX3sL71LFq8m2usg6VqTSE
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
os-zhuang
marked this pull request as ready for review
August 6, 2026 11:32
This was referenced Aug 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #5741
(派发令写的是
Closes #5741—— duplicate-fix-guard 的关键词集两者同权,这里取仓内现行写法Fixes,与 step 7 复核判据一致。仓内无pull_request_template.md,版式沿用同文件前序单 PR #5877。)基于合并了 PR #5877 之后的 main(
73571306b,含28de40f11= #5845/#5877 对本文件的 B 段重写与 notes 6 第四条 bullet)开工。零发明整合:三条 note 的正文由原作者(issue 正文)与分诊轮评论拟好,本 PR 只做落稿、锚定证据链、维护编号与计数一致性。单仓两文件:
.claude/skills/pm-dispatch/SKILL.md(+70/-1)、.claude/agents/os-dev.md(+14)。⛔ 产品码零改动,⛔ 未触碰content/docs/releases/。落点 × 事实源(逐条可比对)
92425566733)conclusion: failure、completed_at19:53:08Z;PRmerged_at20:12:26Z ⇒ 红后 19 分 18 秒过队合并,同 PR 其余 23 个检查全绿。毒化实例 #5601(job92432801994,同一条同行号),热修 PR #5615,治理 issue #5617body实测 4321 / 5183 / 4181 字符(#5148 / #5149 / #5164),body_html需application/vnd.github.full+json才返回(#5148 实测 6958 字符,结尾完整)os-dev.md的Definition of done列表(无编号),skip-changeset条之后三处按实测收紧了拟稿
/auth/*转发层把内部请求对象直接交给 better-auth:未知 auth 子路径(如POST /api/v1/auth/login)返回 500 并外漏内部 TypeError,而非干净 404/405 #5085 上两种都出过,而症状完全一样(零推送、无分支)—— 所以 note 的判据落在「有无显式信号」(维护者原话,或宿主回报 stopped by the user),而不是落在症状上。这半边是/auth/*转发层把内部请求对象直接交给 better-auth:未知 auth 子路径(如POST /api/v1/auth/login)返回 500 并外漏内部 TypeError,而非干净 404/405 #5085 04:12Z 评论原话,不是发明。pm:queue—— 队列视图显示可派发而谁也不敢派,比pm:on-hold更隐蔽(状态机根本读不到它)。拟稿说的是「立成pm:on-hold」,照实改并保留纪律结论(真要 hold 就pm:on-hold+ 带重启条件的评论成对落地)。另有两处与拟稿的计数不符,按实测办:派发令说「四条 operational note」,但 issue 与分诊轮加起来只拟了三条 note 正文(issue ① / issue ③ / 分诊轮第四条),issue 的 ② 本身就是「step 7 一行 + os-dev 一行」的配套、没有 note 正文 —— 故本 PR 落三条 note,⛔ 不发明第四条。现有 notes 最大编号实测为 9,新条顺延为 10 / 11 / 12(与 issue 猜的区间恰好一致,但取自实测)。
一致性与不动区
N 条式引用已逐一 grep,只此一处指 notes 总数。仓内其它文档(含发布版skills/objectstack-pm-dispatch/SKILL.md)无本节计数镜像,无需同步。diff原 113–243 行,零差异);标题结构与origin/main逐行相同;决策框架四份拷贝未触碰(同构门禁绿)。Definition of done列表里,不触碰resource rule 1/6、(rule 6)等既有编号交叉引用(同 docs(agents): os-dev isolates scratchpad temp files in a per-issue subdir (#5614) #5727 的保序做法)。它并显式声明这次等待是前台阻塞轮询(等同 resource rule 1 的flock),⛔ 不是可以中途返回的后台守望 —— 否则新条会与 resource rule 6 读起来冲突。grep.github/workflows/lint.yml确认check:route-envelope(:203)、check:error-code-casing(:212)、check:engine-double-contract(:382)都是 joblint(显示名 ESLint)的步骤,typecheck job 显示名为 TypeScript Type Check。验证
改动文件控制字符自扫
grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]'→ 零命中。无代码改动 ⇒ 无受影响包可test/typecheck;.claude/内部 agent 工具、无发布物 ⇒ 无 changeset,走skip-changeset标签路线(同 PR #5877)。Generated by Claude Code