Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions .claude/skills/pm-dispatch/references/platform-readings.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
- `dirty` 即入队否决(冲突对象是当前 main);draft PR 照答 `clean`/`blocked`/`unknown`,不答 `draft`。
- `needs:contract-review` 是合并闸:实测 `blocked` 而 `mergeable: true`,无标签同形兄弟回 `clean`。
- ready 翻转实测两序列 `clean→blocked→clean` 与 `blocked→unstable→clean`;`unstable` 瞬态非失败。
- `unstable` 可源自 check-runs 看不见的 commit STATUS(如 `Vercel`)⇒ ③ 另读 `/commits/{sha}/status`。
- 判头脏走零配额本地试合并:fetch PR ref 后 `git merge-tree --write-tree origin/main <ref>`。
- 它直接列出冲突文件;读数随 fetch 老化,重跑先 fetch。
- 它跑 `git merge` 的 merge-ort ⇒ 注册 `merge=os-regen` 的克隆照用驱动,未注册的退回文本合并。
Expand Down Expand Up @@ -81,6 +82,7 @@
- 入队事件与队列 ref 迟 1–3 分钟才出现 ⇒ 轮询预算按 3 分钟,⛔ 不按 1 分钟判没挂上。
- 队列窗口有界:满窗条目 ref 与 `merge_group` run 双缺席,ref 随前一条落地才现,不按计时器。
- ready 翻转触发检查重跑 ⇒ 入队落在翻转之后约一分钟,那段空窗不是挂载失败。
- 摘标签与翻 ready 是状态写,同 head 重起标签敏感检查 ⇒ ③ 在入队前末次状态写之后读。
- 检查全部完成的 PR 挂 auto-merge 即入队,本仓 28–60 秒 ⇒ 挂载与落地之间无窗口。
- `mergeable_state` 未落定时挂上的是经典 auto-merge、不入队,落定后再挂才入队。
- `behind` 的 PR 照常入队:落后于 main 不是入队否决,⛔ 不为它先跑 update-branch。
Expand Down Expand Up @@ -167,8 +169,7 @@
- 被销毁的 PR 仍占分支名:API 答 404,同名开新 PR 仍被拒 ⇒ 同批 commit 推新分支名再开。
- 本地对象库是最后备份:复核时 fetch 过的每条分支,其 head 在停用后仍在本地可推。
- 重建 PR 正文自报四件:head 逐字节同、无 rebase/amend/squash、数字出自旧基底、CI 为准。
- 文档载明未实测:条件请求答 `304` 不计 core 池。
- 公开仓零配额读法两档,payload 档优先 —— 只有 body 精确。
- 文档载明未实测:条件请求答 `304` 不计 core 池;公开仓零配额读法两档,payload 档优先。
- 网页档可达性逐会话逐 URL 形状分叉:一处容器 `/actions/**` 与 api. 回 403,另一处网页全 200。
- ⇒ 要用哪个形状先探哪个;本地权限分类器在网络之前的拒绝是第三种机制,⛔ 不记 403。
- 单卡页 `/issues/N` 内嵌 JSON 载原始 body:取含 `bodyHTML` 的 `script[type="application/json"]` 块。
Expand All @@ -181,8 +182,7 @@
- 自己刚写的按原写入通道回读;失效方向是空转与重发。
- 成因:本档经 CDN 缓存,专对最新内容失效且绕不掉,cache-busting 查询串与 no-cache 头都无效。
- 内容可滞后数分钟到数十分钟;它没有位置性对照 —— 更早内容全在,只有最新几条缺席。
- ⇒ 前 15 项那条判别式在此不成立,唯一出路是第二通道。
- 失效方向是据它对别人的工作下没有认领的判词。
- ⇒ 前 15 项判别式在此不成立,唯一出路是第二通道;失效方向是据它判他人工作无认领。
- PR 页把正文与每条评论的原始 markdown 放进 `clipboard-copy` 的 value 属性,是另一条零配额读。
- issue 页无此载体,且盲态与好态的提及计数相同 ⇒ 卡片评论只走 API,⛔ 不套 PR 页读法。
- 边界:⛔ 只因仓库公开成立;⛔ 覆盖单卡读,搜索页只给锚点不给正文。
Expand All @@ -204,8 +204,7 @@
- 翻页在偏移 ~9,900 硬拒:422 Pagination with the page parameter is not supported for large datasets。
- 该拒绝与规模、`per_page` 无关:小结果集同样在 `page=100` 拒,`per_page=1` 拒在 `page=9000`。
- ⇒ 总体超过它就按 `sort=created` 拆成 `asc` 加 `desc` 两趟、各 ≤99 页。
- `created` 序承重:新卡只追加到尾,页不在脚下重排。
- 以两趟的重叠证覆盖、对号码线闭合、缺号逐个直取核实。
- `created` 序承重:新卡只追加到尾、页不重排;两趟重叠证覆盖、号码线闭合、缺号直取。
- 403 走降级梯 MCP 档:单标签读全加本地求交;⛔ 不是翻页手扫,不完整枚举比零结果更险。
- 会话代理只服务 repo-scoped 路径,`/search/*` 的 403 体解析成净零。
- 代理回 403 加体 sessions are bound to their configured repositories,而那是合法 JSON。
Expand Down Expand Up @@ -275,6 +274,8 @@
- 两个通道的 `labels` 语义相反:REST 列表端点的 `labels=a,b` 是真 AND ⇒ ⛔ 不无条件改走 REST。
- 被拦的下载不是缺席证明:出口策略 403 只说取不来,不说没有,先找产物再下结论。
- 读数:Chromium 预装、`PLAYWRIGHT_BROWSERS_PATH` 已设,而 `cdn.playwright.dev` 回 403。
- zod v4 的 parse 方法挂 schema 实例不挂原型 ⇒ 在原型上 spy 抛属性未定义。
- 可行接缝是逐个包裹 barrel 导出体(实测 211 导出 408 方法);函数体内现造的不在半径内。
- 读数六坑 ①:`cd X && cmd` 短路 —— 路径不存在时命令在当前仓执行,跨仓恒 `git -C <path>`。
- ②:`git grep -c <pat> | wc -l` 数的是文件数不是命中数。
- ③:裸名 grep 被幸存家族当子串命中 —— 退役核验带引号精确名。
Expand All @@ -285,9 +286,9 @@
- ⑤:容器里没有 `gh`,于是 `gh … || echo "none"` 是不可证伪的否定。
- 127 命令不存在与 grep 没命中输出同值 ⇒ 回退分支照打印安心结论而一次都没检查。
- 安全拼写:先 `command -v <cmd>` 确认存在,或在 `||` 之前捕获状态。
- ⛔ 一般规则:任何可能不存在的命令上挂回退都是不可证伪的否定。
- PR 与查重类核验改走 MCP GitHub 工具或 git。
- ⛔ 通则:可能不存在的命令上挂回退即不可证伪的否定;PR 与查重核验改走 MCP 工具或 git。
- ⑥:只存在于拼接后的短语,单行 grep 对主体与控制词双零:先合并再搜,两个方向都要读。
- `-z` 下模式内字面换行即分隔符 ⇒ 换行短语只命中一侧,假阳性;`grep -Pz` 加 `\n` 才判别。
- auto 档判定随命令形状变,不随能力变 ⇒ 被拒的复合命令拆成裸动作重试再报 blocked。
- 读数:带链接与管道的 `git push` 被拒,裸 `git push origin <分支>` 放行,拒绝文案不点名元素。
- 判定跨天翻面 ⇒ ⛔ 一次拒绝不是能力边界;`permissions.allow` 条目才是仓库侧确定性通道。
Expand All @@ -299,8 +300,7 @@
- cancel-in-progress 窗口只罩得住慢载体 ⇒ 先比对 run `head_sha` 与 PR 当前 head,不开调查。
- 两仓 CI 并发组都按 PR 号不按 head:重跑过期 head 取消当前 head 的 run ⇒ 重跑是写不是读。
- CI 红了先取完整日志归档再下结论:断言文本只在归档里,直读工具拿不到。
- `get_check_run` 对本仓 CI job 回空 `output.text`。
- `get_job_logs` 无论 `tail_lines` 只回占满日志尾部的 post-step service-container teardown。
- `get_check_run` 回空 `output.text`;`get_job_logs` 无论 `tail_lines` 只回尾部的 service-container teardown。
- ⇒ 两者都答不了到底挂在哪;`GET /actions/jobs/{id}/logs` 被出口代理拒绝,CONNECT 403。
- 失败 step 名免下载即得:`actions_get method=get_workflow_job`。
- check-run annotations 端点带退出码与失败命令,是免归档的第二条便宜读。
Expand All @@ -315,8 +315,7 @@
- 读侧有确定性触发:正文含字面 script 开标记形状 token 时,API 与 MCP 读回在该处静默截断。
- doctype 开标记与 object 标签形状同触发;网页全文完好,⛔ 不修复只在 API 读短的卡。
- 同坑第三条读路径:MCP `issue_read` 与 PR 读路径把行内反引号里的尖括号片段整个吃掉。
- GitHub 存储字节完好,raw REST 取回一字不差。
- ⇒ ⛔ 永不单凭 MCP 读判截断,先取 raw REST 或 WebFetch 渲染页核对再判。
- GitHub 存储字节完好、raw REST 一字不差 ⇒ ⛔ 不单凭 MCP 读判截断,先取 raw 或渲染页核对。
- 否则 repair-first 被正确地应用到完好的卡上,重写毁掉的是正确内容。
- 唤醒中继渲染会把 `{` `}` `<` 转义 ⇒ 判已发布产物按 `GET` 取存储体,⛔ 永不按中继正文。
- 判据 = 数空的行内代码跨度:一个空跨度恰是短尖括号片段被吃掉的签名。
Expand All @@ -329,8 +328,7 @@
- 写侧 · issue body:落库删字节,网页同显;sanitizer 按 tag 形状删,不按尖括号。
- 行内反引号里的 tag 形状 token 整个被删,含注释标记、占位符、泛型这些未知标签形。
- HTML 注释形状标记裸写被整删留空行;孤立的行内尖括号与非 tag 形状带尖括号正则存活。
- ⛔ 围栏不防护:照删、留空围栏。
- 另一坑:感叹号紧跟左方括号即触发(TS 非空断言下标),无需尖括号。
- ⛔ 围栏不防护,照删留空围栏;另一坑:感叹号紧跟左方括号即触发(非空断言),无需尖括号。
- 围栏与行内代码同样丢字符,幸存文本仍像代码但意义已变;感叹号不接左方括号则存活。
- 作者侧:运算符用词拼出,或占位词定义一次。
- 写侧 · 评论是截断不是删片段:sanitizer 从首个命名 HTML 元素的尖括号片段起吃到结尾。
Expand All @@ -346,6 +344,7 @@
- MCP `update_pull_request` 包装器删掉 PR 正文的页脚块;该通道锁 1 已拒,读作历史。
- 裸 REST `PATCH /pulls` 追加一个裸页脚并保留既有 session-URL 页脚,差恰 58 字节。
- 同路送无页脚正文存回恰一条(平台裸形)⇒ 该格处方是不送页脚,⛔ 不是不重送正文。
- 页脚两拼写:裸版与 session-URL 版都要剥,漏剥的卡在正文中段,而 58 字节差照常。
- 第四形:建 PR 两通道同判 —— 送出体尾部不是 `---` 加页脚块时,追加一条同形页脚。
- 该追加带前置横线、恰 90 字节,送出体是存储体的严格前缀。
- 尾部已是该块则一字不追加,两通道各实测两向 ⇒ 建侧通道不是变量,判据是送出体尾部。
Expand All @@ -355,6 +354,7 @@
- 正文把 harness 两行块叠在页脚之上,存回是三条署名块;单块形态才复现成一条。
- ⇒ 形态随动作与送出体尾部变,改侧还随通道变;⛔ 不由任一条推其余,写后必回读。
- 平台在尾部 `---` 前后正反两向归一空行:比对正文只按首个差异偏移,⛔ 不按长度。
- 送全块即触发该归一 ⇒ `post-stamped` 的 `body` 档把这点空白判 `mutated`,净零字节良性告警。
- 评论创建两通道都追加 58 字节 ⇒ 严格解析 `os-dev-report` 必须停在最后一个右花括号。
- 评论 `PATCH` 重送含尾部页脚块的存储体是幂等的:逐字节一条页脚,与创建的追加相反。
- PR 正文的 `Check Changeset` 门读 clause-② 声明宽容:其失败文案自述 `- `、`> `、`**` 前缀照读。
Expand Down Expand Up @@ -390,6 +390,7 @@
- 强制档不得因不可用而降档 —— 那正是降档保险丝要拒的替换。
- 本车道强制多是过宽的回忆:`dispatch-gates.mjs --tier PATH` 逐路径现推,路径线是下限非放行。
- 该脚本只答自己那棵树:姊妹仓路径回 absent from this tree,姊妹仓的档位与条款②只能手推。
- `os-verify-lock.sh` 只住 objectstack:objectui 无它,跑本仓副本读的是容器级锁,非该仓深度。
- required checks 的名单是每仓事实,objectstack 七个:
`TypeScript Type Check` · `Lint & Repo Gates` · `Test Core` · `Dogfood Regression Gate` ·
`Build Core` · `Temporal Conformance (live PG + MySQL)` · `Governed Surface Queue Guard`。
Expand All @@ -406,7 +407,7 @@
- ⛔ 别处写下的计数值一律先复测再用。
- MCP `issue_write create` 落库丢掉正文尾部的署名页脚块,正文其余部分完好。
- MCP `issue_write` update 送尾部横线加页脚块则两者同被吃掉,而调用照常回 id 与 url。
- 建卡改走 REST `POST /issues` 页脚存活;回读后 `PATCH /issues/{n}` 重送正文逐字节存下
- 建卡走 REST `POST /issues`:带页脚存活,无页脚合成恰一条(+58);回读后 `PATCH` 重送逐字节存下
- issue 正文 `PATCH` 识别按整块:送全块或不送页脚都存回恰一条,已有页脚归一末尾不复制。
- 无横线的裸页脚不算页脚:它被保留而整块另追加,总数二 ⇒ 恒一条只对上行两输入成立。
- 该格两空:MCP 送裸页脚、`title`/`labels` 单字段 `issue_write` 是否动页脚,均未实测。
Expand Down Expand Up @@ -447,8 +448,7 @@

- 原则、定时器选型与恢复 playbook 在主文件;本节只放事实补遗。
- `npx ccusage blocks` 容器内可用,读本地会话记录,报当前 5 小时窗口边界、剩余与燃烧率。
- 盲区:窗口起点是本地推断的近似值。
- 撞墙报文形如 `limit reached, resets at HH:MM`,重置时刻只在此刻可得。
- 盲区:窗口起点是本地推断值;撞墙报文 `limit reached, resets at HH:MM`,重置时刻只此刻可得。
- agent 建的 Routine 起的会话不带 `mcp__github__*` 工具 ⇒ 对以 GitHub 读写为工作的席位不可用。
- 创建端现有 `connectors` 参数,声明起的会话可用哪些连接器 ⇒ 成因有了参数级解法。
- ⛔ 未实测,⛔ 不据参数在场推现在能用了。
Expand Down
Loading