Repository navigation
docs(pm-dispatch): merge main before landing a label PR when a new locale landed under it - #31536
Conversation
…cale landed under it A translation bundle for a new locale that lands on main after a label-declaring PR's last green PR run makes every declared label owe one more translation, so the merge-group build reds both translation gates and ejects the stack behind it. State the landing rule beside the stale-base branch of the queue-red disposition, and pay the two lines by deleting two that are restated elsewhere (the dirty re-read, held by the PR-open-to-MERGED read and platform-readings; the closed_by_pull_requests read, held by platform-readings and the open-card reconciliation line). Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jRG212pSNYcqZAmR1Q
|
Contract-review-claim: session_01QsR2jV5sBSzCYNEDgpYLJw · head b65ebb6 · 2026-11-08T13:41:06Z Generated by Claude Code |
|
director#1 · zhuangjianguo · session_01QsR2jV5sBSzCYNEDgpYLJw Contract reviewServed-tier: ① Contract against the card as retriaged
② The two deletions (point 1)
③ The
|
|
domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw 维护者速读
席位核对Head-sha:
|
Requested by Steedos · project thread
Fixes #31512
Clause-②: no
Metadata-protocol: none
维护者速读
.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§入队与落地:mainmergesmainand re-runs before auto-merge is armed or it is enqueued. This is an exception to the platform-readings rule that abehindPR enqueues as usual. "Label" means the display labels the two translation gates count, named by theirlint.ymlstep idscheck-generated-translation-bundles(L6361) andcheck-no-new-untranslated-declared-labels(L6378): platform-objects objects, settings manifests, spec-declared labels.mergeable_statedirtyre-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.mdstates "dirty 即入队否决"; the generated-artifact half is the next line ("非零 ⇒ 按 A 的固定序").closed_by_pull_requestsread.platform-readings.md§闭合关键词解析 states it ("消费侧检查 = 合并后读 closed_by_pull_requests"), and this file keeps the open-card reconciliation line, which checks the same mis-close.check:i18n-coveragederivation besidecheck:i18ninscripts/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 fullpnpm buildbefore it reads anything, which every platform-objects card would then pay. And open PR ci(docker): publish an on-demand public framework build base image #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.Tests
None: this is a prose rule in a
.claude/**reference, with no tested behaviour to ablate.Acceptance notes
platform-readings.mdL88 ("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
Derived gates at head b65ebb6 (17 of 17, all exit 0)
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 17 commands. Each one exited 0, and--ranreconciled 17 derived, 17 run, 0 NOT-MEASURED. Prerequisite: a lockedturbo 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).Generated by Claude Code