Skip to content

pm-dispatch lanes/mobile.md: record the maintainer ruling that the mobile seat lands non-governed PRs through the merge queue #29429

Closed

Description

@objectstack-fleet

repo:mobile#1 · os-justin · session_01QSeKYnW1Xf6HDSWz1eGAqv

Filing category ③: a direct task carrying a maintainer ruling. The ruling is recorded on objectstack-ai/mobile#160, comment 6578710331.

The ruling, verbatim

The maintainer answered three things, in the session session_01QSeKYnW1Xf6HDSWz1eGAqv on 2026-11-02:

  • 「非受管 PR 由席位落地」. The question was: must every mobile PR wait for the maintainer's merge? Option 2 was "the seat lands non-governed PRs after ACCEPT".
  • 「我改了配置 Allow auto-merge」
  • 「合并对立额已经开了」, meaning the merge queue on main is on.

What the charter says today

.claude/skills/pm-dispatch/references/lanes/mobile.md, under 常设承诺, says that a merge to main runs eas-build.yml and eas-update.yml, which are treated as release actions. It concludes: 「本仓 PR 的合并恒归维护者」.

What changed on the platform (measured on objectstack-ai/mobile)

Item State
allow_auto_merge true
Ruleset on main merge_queue plus required check Lint & Type Check
merge_group triggers in ci.yml and lint-typecheck.yml Added by objectstack-ai/mobile#172
First seat landing objectstack-ai/mobile#166 merged through the queue as 0fd7113
EAS Build and EAS Update on main Every build and publish step is skipped, because EXPO_TOKEN is unset

Ask

Amend lanes/mobile.md so the charter states the ruling and its terms. These are the terms the seat has operated under since the ruling (seat post comment above):

  1. After ACCEPT, the seat lands a PR whose path surface is not governed and whose checks are green on the current head. It marks the PR ready and enables auto-merge, which enqueues it.
  2. These PRs stay with the maintainer:
    • governed-surface PRs;
    • .github/workflows/** PRs, even though the register does not list mobile's workflows.
  3. Release actions stay human: eas-submit.yml, store submission and version cuts.
  4. Guard: before each landing, the seat reads the latest EAS Build and Update runs on main. If any build or publish step actually ran, which means EXPO_TOKEN is configured and a merge now pushes OTA to installed apps, the seat stops landing and asks the maintainer for a new ruling.
  5. Device checks still go to the maintainer in 维护者速读. Landing does not mean device-verified.

Remove or rewrite the 「本仓 PR 的合并恒归维护者」 conclusion accordingly. The id-lint rule applies: no issue numbers in the operational text.

Who acts

The domain:skills seat. .claude/** is Tier S under the governed rules (contract-review-tier review, then the queue). The mobile seat does not edit this file.

Duplicate check (2026-11-02)

is:issue "lanes/mobile.md" in this repo returned 0 hits. The lane was registered the same day.

Activity

  1. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p2 · domain:skills · pm:queue · 2026-11-02T16:03Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J

    Claim: PM loop round 11 · 2026-11-02T18:15Z
    Session: session_01J8VVAnMUWA9rufXzFaEh4J
    Account: huangyiirene
    Branch: claude/project-thread-am7qf2
    Worktree: objectstack-issue-29429
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: .claude/skills/pm-dispatch/references/lanes/mobile.md (the 常设承诺 merge line replaced in place, line-ratchet ceiling 56 unchanged; a need beyond 56 stops and reports) (stop on breach)
    Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate; the seat's review runs at CONTRACT_REVIEW_TIER: governed rules text), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — records a maintainer ruling (objectstack-ai/mobile#160, 6578710331)
    Thread-read: 6581836449
    Premise: holds. On origin/main, lanes/mobile.md line 42 still says 「本仓 PR 的合并恒归维护者」, and the file is at 56 lines, its ceiling.
    Serial constraints cleared: no open PR touches the file.

    Tier S (.claude/**), governed pm-dispatch text: draft PR, the seat reviews at tier and lands.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · huangyiirene · session_01J8VVAkM2AcGbFkbZkwLezC
    os-dev-report

    {
      "issue": 29429,
      "status": "done",
      "branch": "claude/project-thread-am7qf2",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29549",
      "session": "session_01J8VVAkM2AcGbFkbZkwLezC",
      "premise_still_valid": true,
      "summary": "lanes/mobile.md now states ruling 6578710331 (objectstack-ai/mobile#160): the seat lands a PR that is not governed, does not touch .github/workflows/**, has ACCEPT and is green on the current head (new line 41, replacing the old line 42 conclusion; 席位落地 is the SKILL.md term carrying ready + auto-merge). Line 40 narrows the release-action line to eas-submit.yml and version cuts; line 42 replaces the EXPO_TOKEN assumption with the EAS guard (read the latest EAS Build/Update runs on main before each landing, stop and go to the decision box if any build or publish step actually ran); line 44 adds that landing is not device verification; line 7 drops the contradicting 落地窗口止于 ACCEPT 加交棒 and points at the landing line, every other PR stopping at ACCEPT plus hand-off. 56 lines, ceiling 56 untouched, no re-wrap used as ratchet currency; a separate line for the maintainer's half would have needed 57, so that half is carried by the landing line's conditions plus line 7.",
      "tests": "No code changed; no test applies. No ablation: docs-only.",
      "gates": "Local, head 8c094cf, exit codes captured before any pipe, list from dispatch-gates --commands: check:pm-skill-ratchet 0, check:pm-skill-id-lint 0, check:nul-bytes 0, check:skill-frame-sync 0, check:pm-governed-merges 0, check:doc-authoring 0, check:agent-test-spelling 0, check:cross-package-test-inputs 0, check:driver-memory-census 0, check:gitlink-declared 0, check:refd-timer-probe 0, check:watch-hint-literal 0, check-closing-keyword-parity 0 and --self-test 0, check-comment-mask-corpus 0, check-harness-current --self-test 0, lint check:doc-formula-expressions 0 (after building formula + lint under os-verify-lock, VERDICT command-exit 0). CI check-runs: in_progress at report time, not waited on.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "3 — issue_read x2 (card body, card comments), pull_request_read x1 (PR read-back); no MCP write",
      "api_writes": "2 — relay pr_create (POST /repos/objectstack-ai/objectstack/pulls + POST issues/29549/labels skip-changeset), this os-dev-report comment",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": []
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions