Skip to content

pm-dispatch: SKILL.md says one patrol routine per project, the references now say one per seat — pick the seat #28699

Closed

Description

@objectstack-fleet

domain:skills#2 · marchtian · session_017ihL2g7RyXa8ErM6GAkHyc

Filing gate: ② a should-fix of the contract review on PR #28687 (record 6558991413, ④ "unit of the routine"), outside that PR's surface because it needs a SKILL.md line. Filed by domain:skills seat 2. ⛔ Not a claim. No grade: triage sets it.
Reader: domain:skills, .claude/skills/pm-dispatch/SKILL.md 〈入口与角色〉 line 「项目席唤醒 = PR 订阅 + 每项目一个自建自绑巡查 routine」; next PR any SKILL.md edit in the lane.
Dedupe (open AND closed): "每项目一个" in:body → only #28642; "patrol routine per seat" in:title → none.
reach: every project that sits more than one seat (pm-dispatch ui skills), measured in this account's project on 2026-11-01: spec seat 4, devx seat 2 and skills seat 2 each run their own hourly patrol (:48, :18, :33), each bound to its own seat thread.

What is inconsistent

  • SKILL.md:72 (on main): one self-bound patrol routine per project.
  • After PR feat(pm): a project seat's patrol is part of seating, recorded on the stub, and its absence is a half-state reading #28687: references/seat-lifecycle.md 〈座位贴协议〉 says taking a seat creates the routine and records Patrol: on that seat's stub; references/project-forms.md 〈席位是读出来的〉 says 「坐席即建巡查 routine」 and opens one seat thread per seat. That is one routine per seat.
  • A project seated on two lanes therefore reads one routine from SKILL.md and two from the references. The board practice is per seat: each seat thread binds its own routine, because a routine fires into one session and each seat is its own session.

Wanted

  • SKILL.md:72 says the unit is the seat (one self-bound patrol routine per seat thread, the director seat excepted), with no other change. Net line count 0 (the ratchet only goes down).
  • Tier: SKILL.md is the contract-review tier by path (dispatch-gates --tier).

Activity

  1. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p2 · domain:skills · area:devpath · pm:queue · rides with #28642 · 2026-11-01T14:55Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · marchtian · session_017ihL2g7RyXa8ErM6GAkHyc

    Claim: PM loop round 1
    Session: session_017ihL2g7RyXa8ErM6GAkHyc
    Account: marchtian
    Branch: claude/issue-28699-patrol-per-seat
    Worktree: objectstack-issue-28699
    Domain: domain:skills
    Seat: domain:skills#2
    File surface: .claude/skills/pm-dispatch/SKILL.md line 72 only (stop on breach)
    Container & model: S, mode:subagent, model: opus (dispatch-gates --tier says MANDATORY CONTRACT_REVIEW_TIER for SKILL.md; exit taken: a one-line-class mechanical governed edit drops to opus execution, compensated by the skill-face review at CONTRACT_REVIEW_TIER), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (a self-contradiction in rules text)
    Thread-read: 6559597861
    Premise: holds — origin/main SKILL.md:72 still reads 「每项目一个自建自绑巡查 routine」 after PR #28687 (fa494d0538) made the references say one per seat.
    Serial constraints cleared: PR #28687 (the rider triage named, 6559597861) merged before this claim, so this lands as its own PR. Open PR #28716 (#28675) touches seat-lifecycle.md, seat-post-protocol.md, project-forms.md, not SKILL.md; no other open PR touches SKILL.md.

  3. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · marchtian · session_017ihL2g7RyXa8ErM6GAkHyc

    os-dev-report

    {
      "issue": 28699,
      "status": "done",
      "branch": "claude/issue-28699-patrol-per-seat",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/28739",
      "head": "ba301e3691ab0e71abff8951b53bb3fa57052a4d",
      "session": "session_017ihL2g7RyXa8ErM6GAkHyc",
      "premise_still_valid": true,
      "summary": "SKILL.md:72 now reads 「每席一个自建自绑巡查 routine」 in place of 「每项目一个…」; nothing else on the line or in the file changed. Claim 6560370830 names this branch; premise held on origin/main fa494d0538 (the old phrase present, references per seat after #28687).",
      "files_changed": [
        ".claude/skills/pm-dispatch/SKILL.md (+1/-1)"
      ],
      "line_budget": "SKILL.md 319 -> 319 (net 0); line 72 118 -> 115 bytes, under the 120-byte cap. 「每席位线程一个」 was measured at 124 bytes and rejected for that cap; 「每席」 is unambiguous because line 71 defines a project seat as a project thread.",
      "tests": "no code changed; no unit tests owed",
      "gates": "local, head ba301e3691, derived by dispatch-gates --commands --repo objectstack-ai/objectstack (20 families, 1 path, +1/-1): 20/20 exit 0, captured before any pipe. pnpm --filter @objectstack/lint run check:doc-formula-expressions first exited 3 (PREREQUISITE NOT MET: formula/lint dist), built under os-verify-lock (VERDICT command-exit 0), rerun exit 0. Order-named: check:pm-skill-ratchet 0, check:pm-skill-id-lint 0 (106 files clean), check:skill-frame-sync 0, check:pm-governed-prose 0. --ran reconciliation: 20 derived, 20 run, 0 NOT-MEASURED (derived zero, all with exit codes). CI check-runs: in_progress at report time, not awaited.",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "deviations": [
        "PR body opens with the attribution HTML comment line because the order spelled the first two lines exactly; os-dev.md lists that line as the harness exception.",
        "PR body ends with the 🤖 Generated with Claude Code line the order named, not the AGENTS.md session-URL footer; the session id is in body prose instead.",
        "Wording 「每席」 instead of a literal 「每席位线程」 (byte cap, see line_budget)."
      ],
      "mcp_calls": "0",
      "api_writes": "2 — relay pr_create (POST /repos/objectstack-ai/objectstack/pulls + POST issues/28739/labels skip-changeset) via fleet-write run 41325475399; this os-dev-report comment via post-stamped (POST issues/28699/comments). Plus git push (not REST).",
      "open_questions": [],
      "out_of_scope_findings": []
    }
  4. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · marchtian · session_017ihL2g7RyXa8ErM6GAkHyc

    ACCEPT → PR #28739 comment 6560685908 (head ba301e3691ab0e71abff8951b53bb3fa57052a4d; contract review PASS 6560664363). Waiting on an authorised approver. Follow-up filed: #28740.

  5. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · marchtian · session_017ihL2g7RyXa8ErM6GAkHyc

    Landed 2026-11-01T16:40Z: PR #28739 merged as e735b79ea5 (merge queue, readied and enqueued by os-zhuang). Contract review PASS 6560664363, seat ACCEPT 6560685908. The runbook's sibling wording (「每项目巡查」 in dispatch-runbook.md 〈巡查常设项〉) and the account-keyed review dedupe are carried by #28740.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:skillspriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions