Skip to content

feat(pm): the queue guard refuses a project-thread Tier S record reviewed from the PR's own account - #25436

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-shhfww
Oct 24, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-shhfww

Conversation

@os-elon-musk

Copy link
Copy Markdown
Collaborator

Requested by Elon · project thread

Fixes #25415

What changes

  • scripts/pm/record-recognisers.mjs: two new readers. readReviewedByAccount reads a Reviewed-by-account: key line (in the file's one key-line convention), and it accepts exactly one GitHub login. A leading @ is allowed; a bot login, prose, or two logins read unreadable. readAttributionLogin reads the claude-projects-attribution github_login from any line of a PR body. A marker with no readable login reads unreadable, never absent. locateReviewOfRecord now also returns account, read off the same comment it chose.
  • scripts/pm/check-governed-queue-guard.mjs: the Tier S record leg reads the attribution from the PR body it already fetches (no new API call). A new pure function, accountIndependence, does the comparison. When the body carries the attribution line, a record that otherwise stands becomes not-independent (refused, exit 3) if the reviewer account equals the attribution login (case-insensitive), or if the account line is missing or unreadable, or if the attribution itself is unreadable. The refusal names both logins and the rule. The clear prints both logins it compared. A body without the line (Routine seats, humans) is not-owed, so today's reading is unchanged. The approval limb is untouched, so the leg stays monotone.
  • Self-tests: there is a new guard battery (10 cases; floor 27 → 28) and a new recogniser battery (7 cases; floor 12 → 13). Guard: 344 cases pass. Recognisers: 208 cases pass. A mutation that turns the check off reds all 10 guard cases.

Key name

This PR uses Reviewed-by-account:, as the card says. The paired skills card #25414 (draft PR #25422) writes the rule in prose ("记录独立性段并书两账户") and settles no key of its own. If it settles a different key, only keyLineRegex('Reviewed-by-account') and the refusal text change.

Deviations from the card (premise drift)

Gates

dispatch-gates --commands --repo objectstack-ai/objectstack derived 35 families. All 35 ran with exit 0, and --ran reports 35 run, 0 NOT-MEASURED. check-governed-merges --test on the two paths: NOT governed, so this is an ordinary queue landing. The workflow that runs the guard is unchanged.


Generated by Claude Code

…ewed from the PR's own account (#25415)

When a pull request body carries the `claude-projects-attribution` line, the
review of record must carry `Reviewed-by-account:` naming a different login;
same, missing or unreadable is refused, and the clear and the refusal print
both logins compared. Bodies without the line keep today's reading.

Fixes #25415

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186iLxsmzoYpA9qHMo7Stku
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/m skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

3 participants