Skip to content

fleet-write relay: governedReviewPlan reads paths only, so a Tier S workflow PR still gets approvers requested #31690

Closed

Description

@objectstack-fleet

domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw

Filing gate: (b) a follow-up a review names. Contract review 6724981811 of PR #31628 (card #31538, merged 1a20cbc), boundary flag B2, answered there as an accepted deviation with a follow-up card. ⛔ Not a claim.

维护者速读

PR #31628 之后,objectstack 的工作流 PR 可以是 Tier S(席位自己落地)。但中继的 governedReviewPlan 只看路径,碰到 .github/workflows/** 仍然会请你和 hotlong 审。方向是安全的(多请了人,不会少),但会给你发不需要的审阅请求。

What

  • scripts/pm/fleet-write/execute.mjs L706 (main a2d0f73): governedReviewPlan({ paths, repo, … }) decides from paths alone; L1481 and L1497 call it with no workflow reading. The split's reading (readWorkflowDiff in check-governed-merges.mjs) needs both commits.

Ask

  • Let the relay judge a workflow-only PR with the same reading as the queue guard, and request approvers only when the reading says H. When the reading is not available in the run, keep requesting (fail closed).
  • Pin both: a Tier S workflow PR requests no one; an unreadable one still requests.

Related: #31538, PR #31628.

Activity

  1. added
    toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    on Nov 8, 2026
  2. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: domain:skills · p2 · pm:queue · 2026-11-08T22:04Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. added
    pm:queueReady for the PM dispatch loop
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Nov 8, 2026
  4. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw

    Claim: PM loop round 15 · 2026-11-08T22:12Z
    Session: session_01QsR2jT34CXs5fCn3BDirZw
    Account: zhuangjianguo (the seat's linked user; the card's assignee)
    Branch: the card thread's designated branch, named by claim amendment once the thread reports it (a measured platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-31690
    Domain: domain:skills
    Seat: domain:skills#2
    File surface: scripts/pm/fleet-write/execute.mjs (and its self-test, if separate) (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: TIER_DEFAULT (ungoverned scripts/pm; lane seat lands on ACCEPT), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the relay governed-review request (governedReviewPlan) | review flag B2 (6724981811): path-only plan requests approvers on a Tier S workflow PR, the requests ruling C was meant to stop
    Thread-read: 6727752837
    Premise: holds. On main 9bf32864 governedReviewPlan (L706) takes paths only and both callers (L1481, L1497) pass no workflow reading.
    Serial constraints cleared: no open PR edits fleet-write/execute.mjs; #31689 edits check-governed-merges.mjs, which this card only imports.

    Dispatch order: pasted verbatim into the card thread's opening message (common rules + order, from the seat folder skills-seat-2/ of the project files). Writes: PR only via relay pr_create; comments, labels and bodies only via scripts/pm write tools; no GitHub MCP writes.

  5. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 8, 2026
  6. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw

    Claim amendment · 2026-11-08T22:14Z · amends Claim 6727851327 (same session). Branch: claude/project-thread-jhc8or (the card thread's designated branch, a measured platform exception to claude/issue-<n>-<slug>; dev session session_01QsR2jTJ27J6P6KVq74iiqQ). Nothing else changes.

  7. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · zhuangjianguo · session_01QsR2jTJ27J6P6KVq74iiqQ
    os-dev-report

    {
      "issue": 31690,
      "status": "pr_open",
      "pr": 31710,
      "branch": "claude/project-thread-jhc8or",
      "head": "49babaa0a307b3764c08d666259c1f938e6bffa1",
      "fix_commit": "1fd8b980",
      "premise_still_valid": true,
      "files_changed": ["scripts/pm/fleet-write/execute.mjs"],
      "line_budget": { "added": 188, "removed": 11, "files": 1 },
      "gates": { "derived": 36, "ran": 36, "exit_nonzero": 0, "not_measured": 0, "ran_reconciliation": "36 derived, 36 run, 0 NOT-MEASURED", "measured_at": "1fd8b980" },
      "self_test": { "command": "node scripts/pm/fleet-write/execute.mjs --self-test", "cases_before": 306, "cases_after": 312, "batteries": 25, "governed_review_battery_floor": "30 -> 36", "exit": 0 },
      "new_pins": ["tier-s-workflow-pull-requests-no-one", "h-reading-workflow-pull-requests", "unreadable-workflow-pull-requests", "mixed-workflow-pull-requests", "objectui-workflow-pull-requests", "the plan with a reading"],
      "ablation": { "mutation": "workflowSplitReadable returns read:false", "exit": 1, "red": 3, "restored": "git checkout HEAD --, hash equals HEAD blob" },
      "checkout_reading": { "workflow": ".github/workflows/fleet-write.yml", "checkout": "actions/checkout@v7 defaults: main, depth 1, persist-credentials false", "head_or_merge_base_present": false, "remedy": "executor fetches merge base and head by sha at depth 1, anonymous (public repo); merge base from GET compare", "workflow_edit": false },
      "live_reading": { "31544": "S", "31559": "H", "31468": "H", "fetch_seconds_from_empty_repo": 21 },
      "imports_from_check_governed_merges": ["applyWorkflowSplit", "readWorkflowDiff", "slugFromRemote"],
      "check_governed_merges_edited": false,
      "deviations": ["the relay run now does one GET compare and, when the commits are missing, one anonymous git fetch --depth=1 of two shas; the order named the checkout but did not name a fetch"],
      "changeset": "skip-changeset",
      "api_writes": { "count": 2, "endpoints": ["fleet-write pr_create (relay)", "post-stamped issue comment"] },
      "mcp_calls": 0
    }
  8. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw

    Landed · 2026-11-08T23:20Z — PR #31710 merged through the merge queue (merge commit 9feb925), on the seat's ACCEPT 6728194971 (ungoverned scripts/pm, TIER_DEFAULT).

    • At pr_ready, the relay's governed-review follow-up now reads the workflows split for a pull whose only governed hits are that row in a split.repos repository. It imports the queue guard's own readWorkflowDiff, reading merge base to head: the merge base comes from the compare API, and the two commits are fetched by sha at depth 1. A Tier S reading requests nobody.
    • Fail closed: no checkout, an unread compare, a missing commit, git throwing, another repository's checkout, an H reading, a mixed pull, or objectui/cloud each requests approvers exactly as before, and the log line says which case applied.

    Self-test 306 → 312. pm:dispatched removed. Nothing left on this card.

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

Metadata

Metadata

Assignees

Labels

domain:skillsDomain lane — seat card indexed by label:pm:seatpriority:p2Medium: important, M3toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions