Skip to content

fix(pr-pipeline): start the address-feedback and review-dependency subscription legs from trusted values #9365

Closed

Description

@kyle-sexton

Problem

In .github/workflows/pr-unblock.yml, the address-feedback-subscription and review-dependency-subscription legs start on the read runner's run-job outputs: if: needs.<leg>.outputs.lane-class == 'credit-stop' || needs.<leg>.outputs.credential-present == 'false'. Rule h16 holds the read runner's run job hostile, and these values come from it. A forged run job can therefore start or suppress the subscription leg.

#9363 fixes this for fix-ci (#8890). It adds a fix-ci-handoff job that reads this run's jobs through the Actions API and starts the subscription on needs.fix-ci-handoff.outputs.posted != 'true'. It also leaves one residual in fix-ci itself: the subscription's fallback: label (credit-stop or no-key) still reads needs.fix-ci.outputs.lane-class.

Fix

Give address-feedback and review-dependency the same handoff job as fix-ci, and start each subscription leg on its output. Derive the fallback: label from a trusted source too, or drop it if nothing gates on it. Extend the callers.test.mjs pin to assert that no subscription leg's if: reads a run-job output.

Refs: #8890, #9363

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 23, 2026
  2. github-actions commented on Oct 23, 2026

    @github-actions
    Contributor

    Proposed work class: none

    Thanks for the report. Automated triage handed this issue to a maintainer.

    Unconfirmed model suggestion: work-class: scoped
    Basis: automated intake triage; a maintainer confirms or changes it.

    Automated triage. A maintainer reviews it.

  3. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.status: needs-decisionAwaiting a human or maintainer judgment call.

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions