fix: address sync review followups - #1996
Conversation
Automated Status SummaryHead SHA: 9c72fdd
Coverage Overview
Failure triageDetected failure types: pytest.
Updated automatically; will refresh on subsequent CI/Docker completions. Keepalive checklistScopeNo scope information available Tasks
Acceptance criteria
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: be026b7405
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| owner, | ||
| repo, | ||
| prNumber, | ||
| labels: [NEEDS_ATTENTION_LABEL, NEEDS_HUMAN_LABEL, PAUSE_LABEL], |
There was a problem hiding this comment.
Preserve explicit keepalive pause labels on draft recovery
When a draft PR is auto-converted to ready, this cleanup set removes agents:paused unconditionally along with routing labels. If a maintainer intentionally applied agents:paused to stop keepalive activity, this path silently unpauses the PR and allows later automation rounds to resume against operator intent. Consider only clearing pause when provenance indicates automation added it, or leave pause untouched and clear only agent:needs-attention/needs-human.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Pull request overview
This PR addresses sync-review follow-ups by simplifying legacy autofix dispatch handling, improving keepalive draft-disposition behavior and messaging, and updating workflow documentation to reflect the consolidated Gate follow-up path.
Changes:
- Simplify
agents-autofix-dispatcher.yml(and its consumer template) to a no-permissions acknowledgement step, removing checkout/App token minting and the legacy workflow dispatch. - Enhance keepalive Gate runner draft handling: scope checklist evaluation to Tasks/Acceptance sections, improve disposition comments/reasons, clear routing labels after draft conversion, and reduce duplicate comment scanning.
- Update workflow docs to describe the consolidated autofix/keepalive flow (but some updated doc statements are currently inconsistent with actual workflow behavior).
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| templates/consumer-repo/.github/workflows/agents-autofix-dispatcher.yml | Removes write permissions/App token/checkout and leaves an informational acknowledgement for consolidated autofix handling. |
| templates/consumer-repo/.github/scripts/keepalive_orchestrator_gate_runner.js | Refines draft disposition logic (scoped checklist parsing, improved comments, label cleanup, comment scanning helper). |
| docs/WORKFLOW_GUIDE.md | Updates workflow inventory descriptions for consolidated autofix flow and maintenance workflows. |
| docs/ci/WORKFLOWS.md | Updates CI/workflow topology documentation for consolidated autofix and related maintenance/health workflows. |
| .github/workflows/agents-autofix-dispatcher.yml | Same dispatcher simplification as the consumer template. |
| .github/scripts/keepalive_orchestrator_gate_runner.js | Same keepalive draft disposition improvements as the consumer template. |
| .github/scripts/tests/keepalive-orchestrator-gate-runner.test.js | Adds/updates tests to cover the new draft-disposition paths and comment/GraphQL edge cases. |
| } | ||
|
|
||
| if (typeof github.paginate?.iterator !== 'function') { | ||
| return hasExistingDraftDispositionComment(await loadIssueComments()); |
| } | ||
|
|
||
| if (typeof github.paginate?.iterator !== 'function') { | ||
| return hasExistingDraftDispositionComment(await loadIssueComments()); |
|
|
||
| * Gate's `summary` job now emits the consolidated PR comment, uploads `gate-summary.md`, and publishes `gate-coverage.json` / `gate-coverage-delta.json` for downstream consumers. | ||
| * [`maint-sync-env-from-pyproject.yml`](../../.github/workflows/maint-sync-env-from-pyproject.yml) keeps `pyproject.toml`, templates, and `requirements.lock` aligned to the canonical `autofix-versions.env` file. | ||
| * [`maint-sync-env-from-pyproject.yml`](../../.github/workflows/maint-sync-env-from-pyproject.yml) syncs dev tool versions from `pyproject.toml` to `autofix-versions.env` after Dependabot merges. |
| * [`maint-51-dependency-refresh.yml`](../../.github/workflows/maint-51-dependency-refresh.yml) regenerates `requirements.lock` using `uv pip compile`, validates tool-pin alignment, and opens a refresh pull request when dependency updates are detected (dry-run friendly). | ||
| * [`maint-39-test-llm-providers.yml`](../../.github/workflows/maint-39-test-llm-providers.yml) verifies LLM provider API keys (GitHub Models, OpenAI) are configured correctly for task completion analysis. | ||
| * [`maint-sync-env-from-pyproject.yml`](../../.github/workflows/maint-sync-env-from-pyproject.yml) syncs `pyproject.toml`, templates, and direct `requirements.lock` pins from the canonical `autofix-versions.env` file after source pin changes land. | ||
| * [`maint-sync-env-from-pyproject.yml`](../../.github/workflows/maint-sync-env-from-pyproject.yml) syncs dev tool version pins from `pyproject.toml` to `autofix-versions.env` after Dependabot updates land. |
| @@ -186,7 +186,6 @@ Scheduled health jobs keep the automation ecosystem aligned: | |||
| * [`health-73-template-completeness.yml`](../../.github/workflows/health-73-template-completeness.yml) validates that consumer-intended workflows exist in the template directory and sync manifest - prevents workflows from being added to .github/workflows/ without being synced to consumer repos (PR, push on workflow/template changes). | |||
| * [`health-74-template-drift.yml`](../../.github/workflows/health-74-template-drift.yml) checks for drift between main workflows and their consumer repo templates - warns when templates are significantly out of sync with their source workflows (PR, push on workflow/template changes). | |||
| * [`health-75-api-rate-diagnostic.yml`](../../.github/workflows/health-75-api-rate-diagnostic.yml) monitors API rate limit utilization across PATs and GitHub Apps - alerts when usage exceeds 85% and provides load balancing analysis (scheduled every 4 hours, manual dispatch). | |||
| * [`agents-dedup.yml`](../../.github/workflows/agents-dedup.yml) detects duplicate issues using semantic similarity analysis and posts findings as a comment. | ||
| * [`agents-verify-to-issue-v2.yml`](../../.github/workflows/agents-verify-to-issue-v2.yml) creates follow-up issues from verification feedback when PRs receive CONCERNS or FAIL verdicts using the enhanced LangChain analyzer. (Legacy `agents-verify-to-issue.yml` has been removed.) | ||
| * [`agents-verify-to-new-pr.yml`](../../.github/workflows/agents-verify-to-new-pr.yml) creates a follow-up issue from verification feedback, enforces the follow-up chain-depth limit, emits verifier follow-up ledger records, and kicks off a new PR when policy allows it. | ||
| * [`agents-verify-to-new-pr.yml`](../../.github/workflows/agents-verify-to-new-pr.yml) creates a follow-up issue from verification feedback and emits metadata to kick off a new PR. | ||
| * [`maint-dependabot-auto-label.yml`](../../.github/workflows/maint-dependabot-auto-label.yml) automatically applies the `agents:allow-change` label to Dependabot PRs. |
| * [`maint-dependabot-auto-lock.yml`](../../.github/workflows/maint-dependabot-auto-lock.yml) automatically regenerates requirements.lock when dependabot updates pyproject.toml. | ||
| * [`maint-dependabot-weekly-sweep.yml`](../../.github/workflows/maint-dependabot-weekly-sweep.yml) sweeps registered consumer repos weekly to enable Dependabot auto-merge and merge eligible PRs when checks are green. | ||
| * [`agents-verifier.yml`](../../.github/workflows/agents-verifier.yml) runs when `verify:*` labels are applied to a pull request (or via manual dispatch) to assemble acceptance/task context, execute LLM-based verifier modes, and post a verdict. `checkbox` mode uses the Codex CLI to drive checklist-style verification, while `evaluate` and `compare` run non-Codex verifier flows. In `compare` mode, two LLM providers (gpt-5.4 + claude-sonnet-4-6) evaluate independently with unanimous-PASS consensus. On CONCERNS or FAIL, maintainers (or follow-up automation) can apply the `verify:create-new-pr` label to trigger `agents-verify-to-new-pr.yml`, which uses a 4-round LLM pipeline to generate a follow-up issue when chain-depth policy allows it. Follow-up chain depth must not exceed 2; the workflow records policy/disposition metadata and applies `needs-human` at the limit. See [`docs/analysis/verify-compare-40pr-evaluation-feb-2026.md`](../analysis/verify-compare-40pr-evaluation-feb-2026.md) for the Feb 2026 evaluation baseline. | ||
| * [`agents-verifier.yml`](../../.github/workflows/agents-verifier.yml) runs when `verify:*` labels are applied to a pull request (or via manual dispatch) to assemble acceptance/task context, execute LLM-based verifier modes, and post a verdict. `checkbox` mode uses the Codex CLI to drive checklist-style verification, while `evaluate` and `compare` run non-Codex verifier flows. In `compare` mode, two LLM providers (gpt-5.4 + claude-sonnet-4-6) evaluate independently with unanimous-PASS consensus. On CONCERNS or FAIL, maintainers (or follow-up automation) can apply the `verify:create-new-pr` label to trigger `agents-verify-to-new-pr.yml`, which uses a 4-round LLM pipeline to generate a follow-up issue. Follow-up chain depth should not exceed 2; automated enforcement is pending. See [`docs/analysis/verify-compare-40pr-evaluation-feb-2026.md`](../analysis/verify-compare-40pr-evaluation-feb-2026.md) for the Feb 2026 evaluation (40-PR sample, 35% first-fix rate, 2.7 avg chain depth). |
| - **`maint-50-tool-version-check.yml`** — Weekly/manual tool-version audit that reads `autofix-versions.env`, hits PyPI to detect drifts, and files/refreshes the maintenance issue via the default token + load-balanced helper (no extra App mint). | ||
| - **`maint-51-dependency-refresh.yml`** — Twice-monthly/manual dependency snapshot refresh that compiles `requirements.lock`, verifies tool pins, and opens a helper PR using the default workflow token (no extra App mint). | ||
| - **`maint-52-sync-dev-versions.yml`** — Fans out to each registered consumer repo (or a supplied subset), reports `autofix-versions.env` freshness for visibility, then syncs the dev-dependency pins using the PAT provided via `REPO_TOKEN`; now reuses `scripts/list_registered_consumer_repos.py` and avoids redundant GitHub App token mints. | ||
| - **`maint-52-sync-dev-versions.yml`** — Fans out to each registered consumer repo (or a supplied subset) after verifying `autofix-versions.env` is current, then syncs the dev-dependency pins using the PAT provided via `REPO_TOKEN`; now reuses `scripts/list_registered_consumer_repos.py` and avoids redundant GitHub App token mints. |
|
Closing as superseded by current main. The docs directionality / health inventory / chain-depth comments are already reflected in current docs, and the helper/pause-label concerns apply to code paths that are not present on current main. Keeping this dirty branch open would reintroduce stale workflow edits. |
Summary
Validation
Addresses sync-generated review feedback from stranske/Inv-Man-Intake#351.