Skip to content

Add trusted dispatch and fix work-queue history amplification - #68827

Merged
pelikhan merged 6 commits into
mainfrom
pelikhan-eslint-queue-review-ee0
Oct 14, 2026
Merged

pelikhan merged 6 commits into
mainfrom
pelikhan-eslint-queue-review-ee0

Conversation

@pelikhan

@pelikhan pelikhan commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The ESLint factory investigation exposed a missing supported way to request trusted dispatch and repeated checkpoint-history verification that made trusted queue controls extremely slow. This adds the dispatcher CLI, fixes production cache wiring, and covers claiming, native-run binding, retries, and performance end to end.

  • Add gh aw work-queue --repo OWNER/REPO dispatch DISPATCHER, with preview and optional waiting. Dispatch goes through the trusted controller rather than assigning or rebinding immutable Claims; source/revision validation and native-run correlation protect the execution boundary.
  • Construct a cache-eligible queue client from the protected publisher token before the first control-step queue load. The compiler uses the exact same shared token resolver as the existing publisher input, preserving App/PAT/default-token fallback precedence. Worker-launch credentials remain separate.
  • Exercise real compiled factory configuration, the control adapter, store, checked publication, deployment synchronization, scheduling, and native binding against in-memory GitHub APIs. Assert durable Claims/receipts, bound runs, API-call budgets, and retries without writes or duplicate launches across REST and GraphQL publication.
  • Add optional offline tests against a captured live ledger and actual native Git history. Git subprocesses disable lazy fetching and replacement objects. Captured queue data and profiles are not committed.
  • Fix same-epoch compacted-Policy recovery for accepted control requests without a compacted parameters digest, retaining actor and request-fingerprint checks. Document performance testing and share the factory native-API fixture.

Performance results

The same full-step fixture has 32 ancestors, three deployment updates, 15 existing Work items, and 100 retained requests:

Measurement Uncached injected-client baseline Fixed compiled-token path
API calls, GraphQL publication 4,946 305
Ancestry commit reads 2,080 65
Local elapsed time with fake APIs 8,181 ms 705 ms

This removes 93.8% of API calls and reduces local fixture elapsed time by approximately 11.6x. The extra baseline requests are entirely Git commit/tree/blob reads. REST publication also stays within the single-history-traversal budget (338 total calls); full-batch retries make no writes or duplicate launches.

A fresh read-only live snapshot at b4a11c106a7f5445a6cd8a6f4bb64c070b89c986 contains 212,953 bytes, 15 Work items, 15 historical Claims, and 118 retained requests. Repeated reads cost 413 calls without caching versus two fresh probes with registered caching. The first cold read still costs 413 calls in either case.

Cache eligibility rules, checkpoint verification, fresh authorization/ref probes, and compare-and-swap semantics are unchanged. Arbitrary injected/dynamic-auth clients without an explicit publisher token remain uncached negative controls; preview does not construct credential clients. Proof reuse is scoped to a registered, unchanged static-auth client within one invocation. Local timings use fake/offline transports, not GitHub latency.

Validation

  • make agent-report-progress passed, including impacted tests and all 344 workflow drift checks; broad compilation reported 361 existing warnings. The 33 regenerated locks each add only the protected publisher-token environment binding. No authored workflow Markdown or provenance-managed locks changed.
  • npm --prefix actions/setup/js run test:work-queue-performance with the fresh captured ledger/history: all 16 tests passed.
  • Updated related JavaScript regression selection: 159 tests passed across four matched files. The earlier broader selection passed 211 tests across five files.
  • npm --prefix actions/setup/js run typecheck, make fmt, and make lint-cjs passed; lint reported warnings but no errors.
  • Focused shared-token-resolver and work-queue compiler tests passed. go test -tags=integration ./pkg/workflow -run 'TestWorkQueueCompiledPolicyAndLaunchIdentity$' -count=1 passed, executing the generated control script with separate publisher/launch identities and rejection cases.
  • ./gh-aw compile eslint-factory-dispatcher --dry-run passed strict validation, model checks, and shellcheck with zero warnings. Optional scanners were not run; the production lock was restored afterward. An initial --dry-run --no-emit attempt was rejected as an unsupported flag combination and was replaced by this emitted-lock check.
  • Read-only security review found no confirmed vulnerabilities in the performance fix.
  • No live workers were launched or queue records changed to validate this optimization. The earlier dispatcher run was cancelled during trusted controls after 14m30s in that step and does not establish successful worker delivery.

Architecture decision

ADR: ADR-68827: Route Trusted Work-Queue Dispatch Through the Controller and Build the Control Queue Client From the Publisher Token.

pelikhan and others added 2 commits October 14, 2026 12:36
Activate verified queue dispatchers through the GitHub CLI while preserving scheduler-selected immutable Claims. Require exact native run correlation and revision checks, and propagate dispatcher wait failures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Exercise trusted controls, publication transports, deployment refresh, native bindings and idempotent recovery with deterministic API budgets. Add optional read-only benchmarks of captured live ledger Git history and fix same-epoch submission retries after Policy compaction.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Construct a cache-eligible queue client with the protected publisher token independently of dispatch credentials. Cover compiled credential isolation, preview behavior, full-step budgets and captured native history.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@pelikhan pelikhan changed the title Add trusted work-queue dispatch and end-to-end performance coverage Add trusted dispatch and fix work-queue history amplification Oct 14, 2026
@pelikhan
pelikhan marked this pull request as ready for review October 14, 2026 21:19
Copilot AI max review requested due to automatic review settings October 14, 2026 21:19
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

✅ Test Quality Sentinel completed test quality analysis.

Test Quality Sentinel

Outcome: reported_no_action

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.

Generated from Test Quality Sentinel · sonnet50 · 14 AIC · ⌖ 14.8 AIC · ◇ 6.53 AIC · ⊞ 12.0K · ◷

🧪 Test quality analysis by Test Quality Sentinel

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

✅ Design Decision Gate 🏗️ completed the design decision gate check. See the comment below for the result and any generated ADR draft.

Commit pushed: 25076a9

🏗️ ADR gate enforced by Design Decision Gate 🏗️

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

✅ Ponytail Reviewer completed successfully!

Ponytail Reviewer

Outcome: reported_no_action

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.

Generated from Ponytail Reviewer · gpt56 · 18.3 AIC · ⌖ 5.22 AIC · ⊞ 14.2K · ◷

Generated by Ponytail Reviewer for #68827

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

✅ PR Code Quality Reviewer completed the code quality review.

🔎 Code quality review by PR Code Quality Reviewer

@github-actions

Copy link
Copy Markdown
Contributor

🏗️ Design Decision Gate — ADR Required

This PR makes significant changes to core business logic (600 new lines across pkg/, actions/, and docs/ business paths; no implementation label, enforcement triggered by code volume) but does not have a linked Architecture Decision Record (ADR).

📄 Draft ADR committed: docs/adr/68827-trusted-work-queue-dispatch-and-cached-control-client.md — review and complete it before merging.

🔒 This PR cannot merge until an ADR is linked in the PR body.

🔍 Evidence used
  • 59 changed files; largest: actions/setup/js/work_queue_control_performance.test.cjs (+283), pkg/cli/work_command_dispatch_test.go (+215), pkg/workqueue/dispatcher.go (+121), pkg/cli/work_command_dispatch.go (+62).
  • Two architectural decisions inferred from the diff and PR body: (1) dispatch routed through the trusted controller instead of worker assignment / Claim rebinding; (2) control-step queue client constructed from the protected publisher token (GH_AW_WORK_QUEUE_TOKEN) to make checkpoint-history verification cache-eligible, requiring 33 lock files to be regenerated.
  • No ADR link found in the PR body, no fixes #N linked issue, and no docs/adr/68827-*.md on the branch before this run.
📋 What to do next
  1. Review the draft ADR committed to your branch — it was generated from the PR diff
  2. Complete the missing sections — confirm the Deciders line (marked [TODO: verify]), refine the decision rationale, and confirm the alternatives actually considered
  3. Commit the finalized ADR to docs/adr/ on your branch
  4. Reference the ADR in this PR body by adding a line such as:

    ADR: ADR-68827: Route Trusted Work-Queue Dispatch Through the Controller and Build the Control Queue Client From the Publisher Token

Once an ADR is linked in the PR body, this gate will re-run and verify the implementation matches the decision.

📋 Michael Nygard ADR Format Reference

An ADR must contain these four sections to be considered complete:

  • Context — What is the problem? What forces are at play?
  • Decision — What did you decide? Why?
  • Alternatives Considered — What else could have been done?
  • Consequences — What are the trade-offs (positive and negative)?

All ADRs are stored in docs/adr/ as Markdown files numbered by PR number.

🏗️ ADR gate enforced by Design Decision Gate 🏗️ · pi · opus50 · 52.9 AIC · ⌖ 51.4 AIC · ⊞ 1.9K · ◷
Comment /review to run again

@github-actions

Copy link
Copy Markdown
Contributor

Comment Memory

Peek at saved memory (pr-code-quality-reviewer)
reviewed_at: 2026-10-14T21:22:39Z
review_event: REQUEST_CHANGES
top_themes: [default-branch dispatch race, source-lock allowlist drift]
files_reviewed: [pkg/cli/work_command_dispatch.go, pkg/workqueue/dispatcher.go, pkg/cli/run_workflow_execution.go, pkg/workflow/safe_outputs_env.go, actions/setup/js/work_queue_control_adapter.cjs, actions/setup/js/work_queue_dispatch.cjs]
comment_count: 2

Note

This comment is managed by comment memory.

Expand the saved memory block to view or edit the persistent context for this thread.
Edit only the text inside the backtick fences; workflow metadata and the footer are regenerated automatically.

Learn more about comment memory

🔎 Code quality review by PR Code Quality Reviewer · copilot · gpt54 · 67.1 AIC · ⌖ 8.16 AIC · ⊞ 21.4K · ◷
Comment /review to run again

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REQUEST_CHANGES

The new trusted-dispatch path still has two boundary failures: it can launch an unverified revision on a default-branch race, and it does not verify that the committed lock still matches the source allowlist.

Themes
  • Post-dispatch SHA verification is too late. Dispatch still targets the moving default branch, so a branch advance between route verification and workflow activation can execute a different dispatcher revision before the client detects the mismatch.
  • Source/lock parity is not enforced. The dispatcher source and compiled lock are each validated in isolation, but the embedded compiled worker allowlist is never compared to safe-outputs.dispatch-workflow.workflows. A stale or broadened lock can therefore bypass the narrowed source policy.

These both undermine the "trusted dispatcher" guarantee, so I'm treating them as merge blockers.

🔎 Code quality review by PR Code Quality Reviewer · copilot · gpt54 · 67.1 AIC · ⌖ 8.16 AIC · ⊞ 21.4K
Comment /review to run again

Comment thread pkg/cli/work_command_dispatch.go Resolved
Comment thread pkg/workqueue/dispatcher.go Resolved

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skills-Based Review 🧠

Applied /diagnosing-bugs and /tdd, focused on the highest-impact files per pr-triage (pkg/workqueue/dispatcher.go, actions/setup/js/work_queue_dispatch.cjs, pkg/cli/run_workflow_revision.go, pkg/cli/work_command_dispatch.go, pkg/workflow/safe_outputs_env.go).

📋 Key Themes & Highlights

Key Themes

  • Regression test gap for the core bug fix: the one-line change in work_queue_dispatch.cjs that removes the compacted_parameters_digest guard (the stated root-cause fix for "same-epoch compacted-Policy recovery") isn't directly exercised by a test that constructs the previously-failing shape (same-epoch request with no digest). Existing coverage always routes through compactTransactions, which sets a digest, so this specific path was likely uncovered before and after the fix.
  • New native-run verification logic (verifyExpectedWorkflowRun) has decent coverage for full-field mismatches but the @-suffix stripping on run.Path isn't independently tested with a suffixed path value.
  • Dispatcher lock validation (validateDispatcherLock) correctly guards type assertions with ok checks (no panics), but a defensive-boundary test for malformed inputs would make that safety contract explicit and regression-proof.

Positive Highlights

  • ✅ Clean credential separation: the new GH_AW_WORK_QUEUE_TOKEN plumbing in compiler_safe_outputs_job.go / safe_outputs_env.go reuses the exact existing token-resolution precedence (resolveSafeOutputGitHubTokenForConfig) rather than inventing a parallel path — good adherence to existing domain vocabulary.
  • ✅ pkg/cli/work_command_dispatch.go explicitly rejects --branch/--request-id overrides that would undermine the trusted dispatcher's authority boundary, and this is well covered by TestWorkQueueDispatchRejectsAuthorityOverrides.
  • ✅ Extensive, well-structured performance regression suite (work_queue_control_performance.test.cjs) with explicit API-call budgets and negative controls for uncached clients — strong /tdd discipline overall, which makes the one coverage gap above more notable by contrast.
  • ✅ Dispatcher name/source/lock validation (dispatcher.go) is thorough, with a large table-driven rejection test covering the adversarial cases that matter (invalid names, worker-assignment-compatible locks, denied source reads).

Note: given the diff size (59 files, ~1300 additions), review focused on the non-generated, highest-impact files per the triage heuristic; lock files and docs were not line-by-line reviewed.

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · copilot · sonnet50 · 198.1 AIC · ⌖ 15 AIC · ⊞ 11.1K
Comment /matt to run again

Env map[string]any `yaml:"env"`
} `yaml:"jobs"`
}
if err := yaml.Unmarshal(compiled, &workflow); err != nil {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[/tdd] validateDispatcherLock treats any string value for work_queue_assignment input key presence as blocking, but it never checks the on.workflow_dispatch value could be nil (bare workflow_dispatch:) vs. a map — that path is handled, but there is no test asserting a non-map inputs (e.g. inputs: null or inputs: a-string) is rejected safely instead of panicking via a bad type assertion.

💡 Suggested test
{name: "malformed inputs", source: dispatcherSource, lock: strings.ReplaceAll(dispatcherLock, "workflow_dispatch:", "workflow_dispatch:\n    inputs: not-a-map")},

The current code does dispatch["inputs"].(map[string]any) behind an ok check, so it will not panic, but a regression test documents the safety boundary explicitly and guards against future refactors that might drop the ok guard.

@copilot please address this.

state.transactions.flatMap(commit => commit.operations).find(operation => operation.kind === "Policy" && operation.epoch === prior.policy_epoch)?.policy ??
(prior.compacted_parameters_digest && prior.policy_epoch === state.policy_epoch ? state.policy : undefined);
state.transactions.flatMap(commit => commit.operations).find(operation => operation.kind === "Policy" && operation.epoch === prior.policy_epoch)?.policy ?? (prior.policy_epoch === state.policy_epoch ? state.policy : undefined);
if (!policy) throw new Error("work_queue_policy_missing");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[/diagnosing-bugs] This removes the prior.compacted_parameters_digest guard so same-epoch Policy recovery now also succeeds for accepted requests that were never compacted (no digest at all), fixing the bug described in the PR body. No new or modified test in this diff exercises the specific previously-failing case: policy_epoch matches current state, compacted_parameters_digest is undefined. The existing work_queue_deployment.test.cjs recovery test always goes through compactTransactions, which sets a digest, so it could not have caught this.

💡 Suggested regression test

Add a case where acceptedSubmissionParameters is called directly on a request object with policy_epoch equal to state.policy_epoch and compacted_parameters_digest left undefined (construct prior manually rather than via compactTransactions), asserting it now resolves instead of throwing work_queue_policy_missing. Without this, a future refactor could silently reintroduce the digest guard and regress the exact bug this PR fixes.

@copilot please address this.

HeadSHA string `json:"head_sha"`
Path string `json:"path"`
Event string `json:"event"`
Repository struct {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[/codebase-design] verifyExpectedWorkflowRun strips a @ref suffix from run.Path with strings.Cut(run.Path, "@") before comparing to logsWorkflowsPathSegment+lockFile, but GitHub's Actions API path field for a run triggered from a reusable/composite context can also include query-like suffixes or be reported without the .github/workflows/ prefix in some edge cases. There's no test covering a path value that already omits the prefix (defensive parsing) or contains unexpected trailing data (e.g., a version ref with special characters).

💡 Suggested test

Add a path mismatch case to TestWorkQueueDispatchVerifiesNativeRevision that exercises a run path like .github/workflows/dispatcher.lock.yml@refs/heads/main to confirm the @-stripping logic is actually required and correctly exercised — the existing workflow mismatch case only swaps to an entirely different filename, not a suffixed one.

@copilot please address this.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Trusted activation and credential-scoped caching affect security-sensitive paths and need human review, alongside unresolved compatibility issues.

4 open findings
What changed in this PR

Adds trusted dispatcher activation to gh-aw’s Git-backed work queue and reduces repeated checkpoint-history verification.

Changes:

  • Adds verified dispatcher activation, preview, waiting, and native-run correlation.
  • Wires publisher credentials into cache-eligible queue clients and regenerates 33 workflow locks.
  • Fixes compacted submission retries and adds performance coverage, shared fixtures, and documentation.
File Description
pkg/​workqueue/​provisioning_deployment.go Exposes the verified default route.
pkg/​workqueue/​dispatcher.go Validates dispatcher source and compiled configuration.
pkg/​workqueue/​dispatcher_test.go Tests dispatcher route validation.
pkg/​workflow/​work_queue_dispatch_identity_integration_test.go Checks publisher-token identity.
pkg/​workflow/​work_queue_dispatch_credentials_test.go Tests publisher and launch credential separation.
pkg/​workflow/​safe_outputs_env.go Extracts the shared token resolver.
pkg/​workflow/​compiler_safe_outputs_job.go Binds the queue publisher token.
pkg/​cli/​work_command.go Registers the dispatch command.
pkg/​cli/​work_command_test.go Checks dispatch command availability.
pkg/​cli/​work_command_dispatch.go Implements activation, preview, and waiting.
pkg/​cli/​work_command_dispatch_test.go Tests dispatch restrictions and run verification.
pkg/​cli/​run_workflow_revision.go Verifies the activated native run.
pkg/​cli/​run_workflow_execution.go Enforces expected revision and exact run identity.
docs/​src/​content/​docs/​reference/​work-queue.md Documents dispatch and performance testing.
actions/​setup/​js/​work_queue_store_checks.cjs Adds immutable fixture identifiers.
actions/​setup/​js/​work_queue_live_performance.test.cjs Measures offline captured-history reads.
actions/​setup/​js/​work_queue_dispatch.cjs Repairs same-epoch compacted-policy recovery.
actions/​setup/​js/​work_queue_control_performance.test.cjs Tests control-step budgets and retries.
actions/​setup/​js/​work_queue_control_adapter.cjs Constructs the publisher queue client.
actions/​setup/​js/​work_queue_control_adapter_checks.cjs Tests credential wiring and preview isolation.
actions/​setup/​js/​package.json Adds the performance-suite command.
actions/​setup/​js/​eslint_factory_portfolio.test.cjs Reuses shared native API fixtures.
actions/​setup/​js/​eslint_factory_native.test_helpers.cjs Shares compiled-policy and native API fixtures.
.github/​workflows/​repo-tree-map.lock.yml Binds the queue publisher token.
.github/​workflows/​eslint-refiner.lock.yml Binds the queue publisher token.
.github/​workflows/​eslint-monster.lock.yml Binds the queue publisher token.
.github/​workflows/​eslint-miner.lock.yml Binds the queue publisher token.
.github/​workflows/​eslint-factory-dispatcher.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-pydantic-ai.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-pi.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-opencode.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-kiro.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-goose.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-gemini.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-dispatcher.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-deepseek-harness.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-cursor.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-crush.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-copilot.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-codex.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-claude.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-aider.lock.yml Binds the queue publisher token.
.github/​workflows/​engine-conformance-agy.lock.yml Binds the queue publisher token.
.github/​workflows/​deep-report.lock.yml Binds the queue publisher token.
.github/​workflows/​daily-token-consumption-report.lock.yml Binds the queue publisher token.
.github/​workflows/​daily-team-evolution-insights.lock.yml Binds the queue publisher token.
.github/​workflows/​daily-secrets-analysis.lock.yml Binds the queue publisher token.
.github/​workflows/​daily-report-dispatcher.lock.yml Binds the queue publisher token.
.github/​workflows/​daily-repo-chronicle.lock.yml Binds the queue publisher token.
.github/​workflows/​daily-regulatory.lock.yml Binds the queue publisher token.
.github/​workflows/​daily-observability-report.lock.yml Binds the queue publisher token.
.github/​workflows/​daily-issues-report.lock.yml Binds the queue publisher token.
.github/​workflows/​daily-firewall-report.lock.yml Binds the queue publisher token.
.github/​workflows/​daily-evals-report.lock.yml Binds the queue publisher token.
.github/​workflows/​daily-compiler-quality.lock.yml Binds the queue publisher token.
.github/​workflows/​artifacts-summary.lock.yml Binds the queue publisher token.
.changeset/​patch-work-queue-control-cache.md Records the caching improvement.
.changeset/​patch-work-queue-compacted-control-retry.md Records the compacted retry fix.
.changeset/​minor-work-queue-dispatch-command.md Records the new dispatch command.

🧠 Review effort: Max

Comment on lines +420 to +422
if opts.ExpectedRevision != "" {
if runErr != nil {
return nil, fmt.Errorf("workflow activation was accepted but its run identity is unresolved; do not redispatch: %w", runErr)
}

func validateDispatcherSource(source []byte) error {
frontmatter, err := parser.ExtractFrontmatterFromContent(string(source))
Comment on lines +65 to +66
queue := tools["work-queue"]
enabled := queue == true
Comment on lines +77 to +84
dispatch, ok := outputs["dispatch-workflow"].(map[string]any)
if !ok {
return queueError("dispatcher_invalid", "dispatcher must declare safe-outputs.dispatch-workflow")
}
workers, ok := dispatch["workflows"].([]any)
if !ok || len(workers) == 0 {
return queueError("dispatcher_invalid", "dispatcher must declare safe-outputs.dispatch-workflow.workflows")
}
pelikhan and others added 2 commits October 14, 2026 14:40
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@pelikhan

Copy link
Copy Markdown
Collaborator Author

Reply to comment 6178759936:

Acknowledged the completed skills-based review. This status comment requests no additional code change.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

Reply to comment 6178761195:

Acknowledged the completed test quality analysis; reported_no_action is not evidence that tests passed. Validation evidence comes from the successful make agent-report-progress gate, not this bot outcome.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

Reply to comment 6178762020:

Reviewed and completed the generated ADR, retaining Proposed status until maintainer acceptance, and linked it in the PR body. This completion notice requires no additional dispatcher change.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

Reply to comment 6178763523:

Acknowledged the completed review; reported_no_action does not establish test success or publication readiness. Validation and publication are verified separately rather than inferred from this bot outcome.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

Reply to comment 6178768120:

Both findings from this code quality review, the dispatch race and source-lock allowlist drift, were fixed in 89a6d7de04, and their threads are resolved. This completion notice requires no further change.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

Reply to comment 6178868321:

Accepted: completed the ADR with implementation-checked decisions, alternatives and consequences, and linked it in the PR body. Its Proposed status explicitly leaves maintainer acceptance pending.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

Reply to comment 6178899863:

Both recorded themes were addressed in 89a6d7de04 through snapshot-bound activation and source-lock allowlist parity checks. The managed memory comment is left unchanged as historical reviewer context.

@pelikhan
pelikhan merged commit 6864335 into main Oct 14, 2026
49 of 50 checks passed
@pelikhan
pelikhan deleted the pelikhan-eslint-queue-review-ee0 branch October 14, 2026 22:04
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This pull request is included in a new release.

Release: v0.92.0

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants