Repository navigation
Make work queue Issue synchronization failures warning-only - #75369
Conversation
Keep Issue projection and coordination cleanup nonfatal after committed queue transitions. Preserve pending diagnostics, fatal Claim verification, and scoped projector credentials. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
✅ PR Specification Reviewer completed successfully! PR Specification ReviewerOutcome: The agent completed and reported no action. A no-op output alone does not verify that all required work was completed or that publication was possible. Agent messages are omitted from this comment. The category uses structured run status, not interpretation of agent prose.
|
|
🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅
|
|
✅ PR Code Quality Reviewer completed the code quality review.
|
|
✅ Design Decision Gate 🏗️ completed the design decision gate check. See the comment below for the result and any generated ADR draft. Design Decision Gate 🏗️Outcome: The agent completed and reported no action. A no-op output alone does not verify that all required work was completed or that publication was possible. Agent messages are omitted from this comment. The category uses structured run status, not interpretation of agent prose.
|
|
✅ Ponytail Reviewer completed successfully! Ponytail ReviewerOutcome: The agent completed and reported no action. A no-op output alone does not verify that all required work was completed or that publication was possible. Agent messages are omitted from this comment. The category uses structured run status, not interpretation of agent prose.
|
|
✅ Test Quality Sentinel completed test quality analysis. Test Quality SentinelOutcome: The agent completed and reported no action. A no-op output alone does not verify that all required work was completed or that publication was possible. Agent messages are omitted from this comment. The category uses structured run status, not interpretation of agent prose.
|
Comment MemoryPeek at saved memory (pr-code-quality-reviewer)Note This comment is managed by comment memory.Expand the saved memory block to view or edit the persistent context for this thread.
|
There was a problem hiding this comment.
The warning-only transition is not safely scoped: the conclusion projector now masks authentication, identity, and journal-integrity failures as pending synchronization, allowing a security-relevant failure to finish green.
Highlights
- Preserve fatal handling for non-retryable trust/integrity errors.
- Downgrade only explicitly typed, safe Issue synchronization conditions.
🔎 Code quality review by PR Code Quality Reviewer · copilot · gpt50 · ~3 AIC · ⌖ ~1 AIC · ⊞ 1.6K
Comment /review to run again
| @@ -160,6 +160,6 @@ func (c *Compiler) buildWorkQueueIssuesStep(data *WorkflowData) []string { | |||
| " script: |\n", | |||
| " const { main } = require('${{ runner.temp }}/gh-aw/actions/work_queue_issues.cjs');\n", | |||
| " const result = await main({ core, githubClient: github, context });\n", | |||
There was a problem hiding this comment.
This changes authentication, identity, and journal-integrity failures into warnings because main() catches every exception and returns it as pending, allowing a security-relevant projection failure to finish the conclusion job successfully.
💡 Preserve fatal projection errors
work_queue_issues.cjs catches errors from publisher authentication, queue validation, and checked-journal reads in the outer catch and converts them to a pending result, so this caller can no longer distinguish retryable Issue synchronization from trust/integrity failures. Keep a typed fatal/error result (or rethrow non-retryable codes) and only downgrade the explicitly safe pending cases; this preserves the stated guarantee that delivery and verification/integrity failures remain fatal.
There was a problem hiding this comment.
🟡 Changes recommended
The ADR still specifies failure for pending projections during conclusion and maintenance, contradicting the warning-only policy documented in the work-queue reference.
1 open issue
What changed in this PR
Updates gh-aw’s work-queue bookkeeping so pending Issue synchronization does not fail worker conclusion or scheduled maintenance after queue transitions have committed.
Changes:
- Replaces pending-sync failures with warnings while preserving fatal delivery, verification, and unresolved reconciliation errors.
- Adds regression assertions for warning behavior and projector credential wiring.
- Documents projector permissions and regenerates affected workflows.
| File | Description |
|---|---|
pkg/workflow/work_queue_issues.go |
Generates warning-only Issue projection handling. |
pkg/workflow/work_queue_issues_test.go |
Checks warnings and projector token wiring. |
pkg/workflow/maintenance_workflow_work_queue_compaction.go |
Generates deferred synchronization warnings after compaction. |
pkg/workflow/maintenance_workflow_work_queue_compaction_test.go |
Checks warning-only maintenance generation. |
docs/src/content/docs/reference/work-queue.md |
Documents warning behavior and token permissions. |
actions/setup/js/reconcile_work_queue_run.test.cjs |
Checks pending-sync warnings and deferral. |
actions/setup/js/reconcile_work_queue_run.cjs |
Warns instead of throwing for pending synchronization. |
.github/workflows/smoke-work-queue-worker.lock.yml |
Uses warning-only projection. |
.github/workflows/smoke-work-queue-dispatcher.lock.yml |
Uses warning-only projection. |
.github/workflows/repo-tree-map.lock.yml |
Uses warning-only projection. |
.github/workflows/eslint-refiner.lock.yml |
Uses warning-only projection. |
.github/workflows/eslint-monster.lock.yml |
Uses warning-only projection. |
.github/workflows/eslint-miner.lock.yml |
Uses warning-only projection. |
.github/workflows/eslint-factory-dispatcher.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-pydantic-ai.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-pi.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-opencode.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-kiro.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-goose.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-gemini.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-factory.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-dispatcher.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-deepseek-harness.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-cursor.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-crush.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-copilot.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-codex.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-claude.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-atomic.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-aider.lock.yml |
Uses warning-only projection. |
.github/workflows/engine-conformance-agy.lock.yml |
Uses warning-only projection. |
.github/workflows/deep-report.lock.yml |
Uses warning-only projection. |
.github/workflows/daily-token-consumption-report.lock.yml |
Uses warning-only projection. |
.github/workflows/daily-team-evolution-insights.lock.yml |
Uses warning-only projection. |
.github/workflows/daily-secrets-analysis.lock.yml |
Uses warning-only projection. |
.github/workflows/daily-report-dispatcher.lock.yml |
Uses warning-only projection. |
.github/workflows/daily-repo-chronicle.lock.yml |
Uses warning-only projection. |
.github/workflows/daily-regulatory.lock.yml |
Uses warning-only projection. |
.github/workflows/daily-observability-report.lock.yml |
Uses warning-only projection. |
.github/workflows/daily-issues-report.lock.yml |
Uses warning-only projection. |
.github/workflows/daily-firewall-report.lock.yml |
Uses warning-only projection. |
.github/workflows/daily-evals-report.lock.yml |
Uses warning-only projection. |
.github/workflows/daily-compiler-quality.lock.yml |
Uses warning-only projection. |
.github/workflows/artifacts-summary.lock.yml |
Uses warning-only projection. |
.github/workflows/agentics-maintenance.yml |
Emits synchronization warnings after maintenance compaction. |
Review effort: Max (auto)
| The compiler generates `agentic-workqueue.yml` for Issue events. Closing an exactly bound Issue can cancel unfinished Work after fresh identity and label checks; it cannot revoke completed delivery, stop a worker, or establish Result. | ||
|
|
||
| Projection hooks require `contents: write`, `issues: write`, and `actions: read`, with credentials kept outside agent execution. Failed projection does not roll back queue admission or justify rerunning a worker. Ambiguous Issue/comment creation remains pending rather than blindly creating duplicates; automatic recovery of unreceipted creation is not implemented. | ||
| Projection hooks require `contents: write`, `issues: write`, and `actions: read`, with credentials kept outside agent execution. Issue updates and coordination-lock cleanup use the same projector token; custom tokens must grant those permissions for every projected repository. Failed projection emits a warning rather than failing worker conclusion or scheduled maintenance; it does not roll back queue admission or justify rerunning a worker. Claim delivery and Result verification failures remain fatal. Ambiguous Issue/comment creation remains pending rather than blindly creating duplicates; automatic recovery of unreceipted creation is not implemented. |
|
🎉 This pull request is included in a new release. Release: |

A worker can finish its Claim with independently verified delivery and release its native reservation, yet still fail because the conclusion job cannot synchronize its tracking Issue. Issue projection is bookkeeping and should not turn a committed queue transition into a workflow failure.
Changes
Validation
make agent-report-progresspassed, including impacted tests, linting, and generated-workflow drift checks.Operational notes
The live runs preceded this patch. The worker's overall run failed on pending Issue projection despite successful Claim verification; the dispatcher separately encountered a transient native-run title mismatch that trusted activation later recovered. This change does not repair uncertain locks or alter dispatch correlation, and was not rerun live.
Projector jobs and hook-specific GitHub App tokens retain
contents: write,issues: write, andactions: read. Issue updates and lock cleanup use the same client. The default token expression isGH_AW_GITHUB_TOKEN || GITHUB_TOKEN; masked run logs cannot verify a custom PAT's actual scopes.