You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
label-write: refuse a state label (the six pm states incl. needs-user-decision) on a pull request, and pm:awaiting-merge on an issue #31148
Filing gate: ③ a task on the maintainer's word. The account owner, in session_012dn2AdARJtc4RgABPH7PHk, answering this seat's proposal to file it: 「以上都同意」. Reader: triage routes it; the expected lane is domain:skills (scripts/pm/**, non-gate PM tooling).
scripts/pm/label-write.mjs on main: refuseTwoStates refuses two states on one card, but nothing reads whether the target is a pull request.
check-half-states.mjs H48 finds a governed PR missing pm:awaiting-merge after the fact (report-only); it does not stop the write.
Expected
label-write.mjs reads the target once (it already reads the current label set in step ①; the issue object carries pull_request) and refuses, before any write and with the rule quoted: any of the six state labels (pm:queue, pm:dispatched, pm:blocked, pm:on-hold, pm:awaiting-maintainer, needs-user-decision) added to a pull request, and pm:awaiting-merge added to an issue.
Removing a label is never refused (that is how a wrong one is cleaned up).
A self-test case per direction.
No new gate, workflow or label: it is the existing rule enforced at the single write door ("declared ≠ enforced" → enforce).
Dedupe (objectstack, open and closed): label-write needs-user-decision pull request → 752 hits (broad; the nearest relevant is #29745, the ruling that split the two inboxes, closed), awaiting-merge only on pull requests → 72 hits (#29745 again; no card enforces it at the write door).
scripts/pm/label-write.mjs lets a pm state label (including needs-user-decision) onto a pull request, and pm:awaiting-merge onto an issue. The rule forbids both (SKILL.md L107, L189/L194). On 2026-11-06 a cloud PR fell out of the "awaiting your merge" list into the decision box this way.
p2: it hides a PR from the maintainer's merge list. Lane domain:skills (non-gate scripts/pm/** tooling), pm:queue.
A refusal inside the write tool enforces an existing rule at its own door. It adds no CI gate.
Claim: PM loop round 21 · 2026-11-07T19:30Z
Session: session_01J8VVAj7CvjkGXvgXzd6RZ7
Account: huangyiirene
Branch: claude/project-thread-lrk2f0 (the card thread's designated branch; dev session session_01J8VVAmFDSZbE4U1G4PSfKs)
Worktree: objectstack-issue-31148
Domain: domain:skills
Seat: domain:skills#3
File surface: scripts/pm/label-write.mjs (the refusal on both paths that add labels, and its self-test cases); a shared pm vocabulary module only if the PR-vs-issue rule belongs there by that file's own header; .changeset/* only as check-empty-changeset asks (skip-changeset path, no package entry). check-half-states.mjs, docs and skills are outside: stop and report first.
Container & model: M, mode:thread, project-default model, effort: high. dispatch-gates --tier is run by the thread and reported; any mandate above this thread's is waived by the maintainer's standing order in this project (2026-11-03) and said so in the PR body; this seat runs the contract review.
Clause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect in shipped code (a declared rule, SKILL.md ≈L107 and ≈L189/L194, not enforced at the single label write door)
Thread-read: 6708587186
Premise: holds on maind3f36861: refuseTwoStates reads only the target label set, and no path in label-write.mjs reads whether the target is a pull request.
Serial constraints: none open. The seat runs serially (one card) by the maintainer's word of 2026-11-07.
Fixes #31148. Tier read by check-governed-merges at the PR.
Activity
objectstack-fleet commentedon Nov 7, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p2 ·
domain:skills· 2026-11-07T14:58Z⛔ Not a claim.
scripts/pm/label-write.mjslets a pm state label (includingneeds-user-decision) onto a pull request, andpm:awaiting-mergeonto an issue. The rule forbids both (SKILL.md L107, L189/L194). On 2026-11-06 a cloud PR fell out of the "awaiting your merge" list into the decision box this way.domain:skills(non-gatescripts/pm/**tooling),pm:queue.Generated by Claude Code
objectstack-fleet commentedon Nov 7, 2026
domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7
Claim: PM loop round 21 · 2026-11-07T19:30Z
Session:
session_01J8VVAj7CvjkGXvgXzd6RZ7Account:
huangyiireneBranch:
claude/project-thread-lrk2f0(the card thread's designated branch; dev sessionsession_01J8VVAmFDSZbE4U1G4PSfKs)Worktree:
objectstack-issue-31148Domain:
domain:skillsSeat:
domain:skills#3File surface:
scripts/pm/label-write.mjs(the refusal on both paths that add labels, and its self-test cases); a shared pm vocabulary module only if the PR-vs-issue rule belongs there by that file's own header;.changeset/*only ascheck-empty-changesetasks (skip-changeset path, no package entry).check-half-states.mjs, docs and skills are outside: stop and report first.Container & model:
M,mode:thread, project-default model,effort: high.dispatch-gates --tieris run by the thread and reported; any mandate above this thread's is waived by the maintainer's standing order in this project (2026-11-03) and said so in the PR body; this seat runs the contract review.Clause-②: no
Metadata-protocol: none
Responsibility:
n/a — not a defect in shipped code(a declared rule, SKILL.md ≈L107 and ≈L189/L194, not enforced at the single label write door)Thread-read: 6708587186
Premise: holds on
maind3f36861:refuseTwoStatesreads only the target label set, and no path inlabel-write.mjsreads whether the target is a pull request.Serial constraints: none open. The seat runs serially (one card) by the maintainer's word of 2026-11-07.
Fixes #31148. Tier read bycheck-governed-mergesat the PR.