Repository navigation
Commit 66ba23e
docs(pm-dispatch): mobile seat lands non-governed PRs through the merge queue (#29549)
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J
<!-- claude-projects-attribution: {"github_login":"huangyiirene"} -->
_Requested by **Irene** · [project
thread](https://claude.ai/code/project/chan_01TJXtQ1tVD26ecLDZxFS67x?thread=cmsg_01TJXtQ1tVD26ecLDZxFS67xVmtncq5zhb1K7T1mQGgugu)_
Fixes #29429
Clause-②: no
Metadata-protocol: none
## 维护者速读
- 改了什么:mobile 车道岗位说明写入你的裁定「非受管 PR 由席位落地」(objectstack-ai/mobile#160,评论
6578710331),替换原来「本仓 PR 的合并恒归维护者」那一条。
- 为什么改:你已开 Allow auto-merge 和 `main` 的合并队列,mobile 席位也已按此落地过一个
PR,但岗位说明还写着合并全归你,两边不一致。
- 风险与回滚:只改一份 PM 技能文本,不碰代码与发布;受管面 PR、改 workflow 的 PR、商店提交与版本切割仍归你;回滚即
revert 本 PR。
- 先看:`.claude/skills/pm-dispatch/references/lanes/mobile.md` 第 7 行与第 40
至 44 行。
- 两分钟验证:运行 `pnpm check:pm-skill-ratchet`,预期 mobile.md 仍是 56 行、上限 56,门禁绿。
- 需要你做的:无,席位落地。
## What changes
`.claude/skills/pm-dispatch/references/lanes/mobile.md` now states the
maintainer ruling recorded on objectstack-ai/mobile#160, comment
6578710331 (「非受管 PR 由席位落地」), with the five terms the card lists:
1. **Seat landing (new line 41, replaces the old line 42 conclusion).**
本席落地 applies to a PR that is not governed, does not touch
`.github/workflows/**`, has ACCEPT, and is green on the current head.
「席位落地」 is the term SKILL.md defines as the landing checks, label clear,
ready and auto-merge, so the line carries the `pr_ready` + auto-merge
mechanics without copying them.
2. **What stays with the maintainer.** Governed-surface PRs and
`.github/workflows/**` PRs fall outside the landing line, and line 7
(形态) now says the seat lands per that line while every other PR stops at
ACCEPT and belongs to the maintainer (「余止于 ACCEPT,归维护者」, the wording the
seat's contract review 6585356904 asked for in its S1, pushed as
6b41a06). The old 「落地窗口止于 ACCEPT 加交棒」 would have contradicted the
ruling, so it is rewritten in place.
3. **Release actions stay human (line 40, replaces 「三者皆按发布动作对待」).**
`eas-submit.yml` and version cuts are release actions the seat never
triggers. Store submission is `eas-submit.yml` per line 39, which is
unchanged.
4. **EAS guard (line 42, replaces 「EXPO_TOKEN 是否配置席位读不到,恒按已配置」).**
Before each landing the seat reads the latest EAS Build and Update runs
on `main`; if any build or publish step actually ran, it stops landing
and asks the maintainer for a new ruling through the decision box. The
old assumption line is superseded by this reading.
5. **Device checks (line 44).** 「落地不等于已上真机」 is appended in place to the
existing no-device-no-verified rule.
### Line budget
The file stays at 56 lines, its ceiling in
`scripts/pm/check-skill-line-ratchet.mjs`; the row is not touched. The
three old lines 40 to 42 become three new lines, and lines 7 and 44 are
rewritten in place. No two lines were folded into one to buy room, since
re-wrap is not ratchet currency. A separate line for the maintainer's
half would have needed 57, so that half is carried by the landing line's
own conditions plus line 7.
## Tests
No code changed, so there is no test. Local gate runs on `8c094cf` are
under Verification; on `6b41a068` (line 7 only) the line ratchet and
id-lint were re-run, both exit 0.
## Acceptance notes
- The card asked for the old line 42 to be replaced rather than a line
added beside it. Lines 40 and 41 in the same block also had to change,
because they stated the pre-ruling premise (all three EAS workflows are
seat-forbidden release actions; `EXPO_TOKEN` is always assumed
configured) that the ruling and its guard replace. Line 7 changed for
the same reason. All edits are in the one file the claim names.
- The ruling is quoted by comment id only; the id-lint pattern rejects
issue numbers in this corpus, and this body is where the provenance
lives.
## Verification
Run on head `8c094cf`, each exit code captured before any pipe. The gate
list is `node scripts/pm/dispatch-gates.mjs --commands`.
<details><summary>Derived gate families, all exit 0</summary>
- `pnpm check:pm-skill-ratchet`: exit 0, mobile.md 56 lines against
ceiling 56
- `pnpm check:pm-skill-id-lint`: exit 0, 108 files clean
- `pnpm check:nul-bytes`: exit 0
- `pnpm check:skill-frame-sync`: exit 0
- `pnpm check:pm-governed-merges`: exit 0
- `pnpm check:doc-authoring`: exit 0
- `pnpm check:agent-test-spelling`, `check:cross-package-test-inputs`,
`check:driver-memory-census`, `check:gitlink-declared`,
`check:refd-timer-probe`, `check:watch-hint-literal`: exit 0
- `node scripts/check-closing-keyword-parity.mjs` and its `--self-test`:
exit 0
- `node scripts/check-comment-mask-corpus.mjs`: exit 0
- `node scripts/pm/check-harness-current.mjs --self-test`: exit 0
- `pnpm --filter @objectstack/lint run check:doc-formula-expressions`:
exit 0, after building `@objectstack/formula` and `@objectstack/lint`
under the verify lock
- Line width: no line of the file is over 120 bytes.
</details>
No changeset: `.claude/**` does not publish (`skip-changeset`).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01J8VVAkM2AcGbFkbZkwLezC
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent df8d020 commit 66ba23e
1 file changed
Lines changed: 5 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
41 | | - | |
42 | | - | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
43 | 43 | | |
44 | | - | |
| 44 | + | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| |||
0 commit comments