Skip to content

Commit dabef0f

Browse files
docs(pm-dispatch): merge main before landing a label PR when a new locale landed under it (#31536)
<!-- claude-projects-attribution: {"github_login":"zhuangjianguo"} --> _Requested by **Steedos** · [project thread](https://claude.ai/code/project/chan_018ETKaNwMZCNRYD7D8Q9Ubb?thread=cmsg_018ETKaNwMZCNRYD7D8Q9UbbPFKx9sEPgbmNpwJBY4DMwx)_ Fixes #31512 Clause-②: no Metadata-protocol: none ## 维护者速读 - 改了什么:在落地规则里加一条:新增或修改显示标签的 PR,如果它最后一次绿的 PR 检查之后 main 上又落了一个新语种的翻译包,席位在挂自动合并或入队之前必须先合入 main 并重跑检查。 - 为什么改:今天 pt-BR 和 ru 两个新语种包先后落地,压在两个标签 PR 底下;这两个 PR 自己的检查是绿的,进队列后翻译门禁变红,连带后面排队的 PR 被踢出 6 次。 - 风险与回滚:只改席位落地手册的一个文件,不动代码、门禁与仓库设置;回滚即撤销本提交。为守住行数上限,删了两行在别处已有原文的旧规则。 - 先看:`.claude/skills/pm-dispatch/references/landing-operations.md` 第 29 行与第 33–34 行(新规则),以及被删的两行(第 57、65 行旧位)。 - 两分钟验证:`pnpm check:pm-skill-ratchet`,预期 landing-operations.md 为 102 行、上限 102、退出码 0。 - 需要你做的:无,席位落地。 ## What changes - `landing-operations.md` §入队与落地: - The stale-base branch of the queue-red disposition (L29, "基上缺已合修复 ⇒ merge main") now names the case: a new locale bundle landing under the PR, which reds the translation gates, belongs to that branch (re-running cannot clear it). - New pair at the end of that section: a label PR whose last green PR run predates a new locale bundle on `main` merges `main` and re-runs before auto-merge is armed or it is enqueued. This is an exception to the platform-readings rule that a `behind` PR enqueues as usual. "Label" means the display labels the two translation gates count, named by their `lint.yml` step ids `check-generated-translation-bundles` (L6361) and `check-no-new-untranslated-declared-labels` (L6378): platform-objects objects, settings manifests, spec-declared labels. - Line ratchet: the file is 102/102 with headroom 0, so the two new lines are paid by deleting two lines whose content is already stated elsewhere. Nothing was re-wrapped, and every touched line is at most 120 bytes. - Deleted the `mergeable_state` `dirty` re-read before arming. The same file states it at the PR-open-to-MERGED read ("dirty ⇒ 当即合 origin/main 推新提交") and in the zero-enqueued check ①; `platform-readings.md` states "dirty 即入队否决"; the generated-artifact half is the next line ("非零 ⇒ 按 A 的固定序"). - Deleted the post-merge `closed_by_pull_requests` read. `platform-readings.md` §闭合关键词解析 states it ("消费侧检查 = 合并后读 closed_by_pull_requests"), and this file keeps the open-card reconciliation line, which checks the same mis-close. - Not done: the optional `check:i18n-coverage` derivation beside `check:i18n` in `scripts/pm/dispatch-gates.data.mjs`. It is not a one-row change. The row's self-test pin counts the section's lines (`i18nHit.length === 3`), so that pin and the docblock on the two i18n entries would also move. The gate also needs a full `pnpm build` before it reads anything, which every platform-objects card would then pay. And open PR #31454 edits the same self-test file. A local run would also sit on the same stale base, so it would not have caught either red. - An option the card raised, which is not written as a rule here: the repository setting "require branches to be up to date before merging" would also cover this. That is the maintainer's call. ## Tests None: this is a prose rule in a `.claude/**` reference, with no tested behaviour to ablate. ## Acceptance notes - Evidence for the cause is on the card: the seat's premise reading (comment 6721491029), the dev report, and the triage retriage answer. #31440 (pt-BR) landed after #31435's last green run, and the 08:40Z group went red. #31466 (ru) landed after #31448's last green run, and the 11:11Z group went red. - `platform-readings.md` L88 ("behind 的 PR 照常入队 … ⛔ 不为它先发 pr_update_branch") is not edited, because it is outside this card's file surface. The new line names itself as the exception to it. ## Verification <details><summary>Derived gates at head b65ebb6 (17 of 17, all exit 0)</summary> `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` derived 17 commands. Each one exited 0, and `--ran` reconciled 17 derived, 17 run, 0 NOT-MEASURED. Prerequisite: a locked `turbo run build --filter=@objectstack/formula --filter=@objectstack/lint` (VERDICT command-exit 0). `check:pm-skill-ratchet`: landing-operations.md is 102 lines (ceiling 102, headroom 0), and its widest table row is 0 bytes (pin 0). </details> --- _Generated by [Claude Code](https://claude.ai/code/session_01QsR2jRG212pSNYcqZAmR1Q)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 8a83814 commit dabef0f

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

‎.claude/skills/pm-dispatch/references/landing-operations.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@
2626
- 判据唯一来源是签名台账(锚点 issue),优先于现场判断;只有人工能升级台账。
2727
- 疑似新 flaky 只留提请,⛔ 不自行加表;纯计数不追记,只有改变修法作用域时才记。
2828
- 四分支:已知 flaky ⇒ 原样重投;已修签名再现 ⇒ ⛔ 不重投,判新问题重新诊断。
29-
- 基上缺已合修复 ⇒ merge main 推新提交,重跑无效。
29+
- 基上缺已合修复 ⇒ merge main 推新提交,重跑无效;新语种包落地致翻译门禁红同属此支。
3030
- 新签名 ⇒ ⛔ 不重投,PR 与其 `Fixes` 卡各留完整签名与初判;下条三事实全立可重投一次。
3131
- 三事实:失败文件 import 闭包与 diff 不相交、队列基座同 shard 绿、首错是超时非断言。
3232
- 每次处置留审计评论,重投写签名与台账依据或三行回执;同签名再弹即停,交下一席重诊。
33+
- 标签 PR 末次绿 PR 跑后 main 落新语种包 ⇒ 挂 auto-merge/入队前 merge main 重跑,`behind` 例外。
34+
- 标签即 `check-generated-translation-bundles`、`check-no-new-untranslated-declared-labels` 所计显示标签。
3335

3436
## A. 碰生成物的 PR:入队前先同步 + 整体重生成
3537

@@ -54,15 +56,13 @@
5456
- 落地评论 = 两个读数的探针表 + 一行状态变更(摘标/关卡/收口),⛔ 不复述 `## 席位核对`。
5557
- 转 ready/入队前跑 `check-governed-merges.mjs --pr N`:受管面照两层;>3000 行(含生成物)照 Tier H。
5658
- ⛔ 两层不由席位批准;清标即落地同受此闸,漏判会被队列守卫在 merge group 里拒收。
57-
- 再读 `mergeable_state`:`dirty` ⇒ 先 merge `origin/main` 再挂;生成物在面上按 A 的固定序。
5859
- 挂 auto-merge 的同一动作里重测生成物漂移,⛔ 不复用更早的零;非零 ⇒ 按 A 的固定序。
5960
- ready + 全绿 ≠ 已入队:队列从不主动拉 PR,入队是显式动作。
6061
- 零 `enqueued` 事件按序查三条:① `mergeable_state` 是否 `dirty`。
6162
- ② enable-auto-merge 调用根本没落地,重发与效果验证序列见 `platform-readings.md`。
6263
- ③ PR 碰 `.github/workflows/**`:令牌常驻 `workflows: write`(裁决评论 6104822731),仍拒即授权漂移。
6364
- 确认 MERGED 同一动作里给 `Part of` 卡收口、`Fixes` 卡代关但标也须摘,⛔ 不拆到下轮巡检。
6465
- 摘标换回 `pm:queue` 或按剩余物定级,加一条写清交付了什么、剩下归谁的评论。
65-
- 同刻读相关卡 `closed_by_pull_requests`,确认没有卡被正文闭合关键词误关。
6666
- 每次合并后重拉一次车道盘点与预期状态对账,⛔ 不留给下轮巡检。
6767
- 取 open 卡清单对照预期 diff:预期之外从 open 消失的,就是被闭合关键词静默误关的卡。
6868
- 落地后再核一次落地判据本身:队列的合并同样走 os-regen,A 的静默吞并一样能发生。

0 commit comments

Comments
 (0)