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
Work queue: create_pull_request/create_discussion delivery never verifies because output_id isn't an allowed message field #75274
TL;DR: Since #74376 (in v1.2.0), every safe output gets an automatic output_id. The work-queue creation verifier rejects any message field outside a fixed allow-list, and output_id isn't on it. So every queue-bound create_pull_request / create_discussion ends claim_delivery_unverified, even when the PR was created correctly. The Work stays completed with delivery=pending, and dependent Works never become eligible.
Cause (gh-aw main @ f7b1cc2c3a)
actions/setup/js/safe_output_submission.cjs (~L124–126) adds output_id to every recorded entry, unconditionally.
actions/setup/js/work_queue_native_creation_delivery.cjs (~L324–338): the fields set doesn't include output_id, so Object.keys(options.message).some(f => !fields.has(f)) returns { verified: false } (creation.receipt.unsupported undeclared_fields=true).
Deterministic repro with the existing fixture in work_queue_native_creation_delivery.test.cjs:
it.each([false,true])("verifies PR delivery (output_id present: %s)",asyncwithOutputId=>{constf=fixture("create_pull_request");if(withOutputId)f.message.output_id="so_xbzi2dhGSY-3";letverification;awaitf.execute(async()=>{awaitf.capture();verification=(awaitf.settle()).verification;});expect(verification).toBe("verified");// passes without output_id, fails with it});
Suggested fix
Add output_id (and depends-on) to the allowed fields, or strip submission metadata before verification (as safe_output_submission.cjs ~L110 already does before handlers). Add the test above for create_pull_request and create_discussion.
Minor, related
A Work whose delivery can't be verified stays delivery=pending with no operator way to settle it (clear keeps it).
Write-capable Work without resource_scope is only rejected at push time (claim_scope_invalid), after the agent has spent credits; submit-work could reject it up front.
Activity