Conversation
Automated sync from stranske/Workflows Template hash: f2ff566b326e Changes synced from sync-manifest.yml
🤖 Keepalive Loop StatusPR #599 | Agent: Codex | Iteration 0/5 Current State
🔍 Failure Classification| Error type | infrastructure | |
Keepalive Work Log (click to expand)
|
There was a problem hiding this comment.
Pull request overview
This PR syncs workflow-template changes from stranske/Workflows, extending weekly metrics/coverage telemetry and adding additional terminal-disposition and bot-comment-auth coverage reporting details.
Changes:
- Extend weekly verifier metrics aggregation to include model, model-selection reasons, and verifier mode counts.
- Add wrapper terminal-disposition artifact emission to
agents-bot-comment-handler.ymland enrich artifact-selection reporting (missing priority families / statuses). - Introduce a new
coverage_monitor_summary.jscontract to summarize weekly coverage monitor checkpoints.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
scripts/aggregate_agent_metrics.py |
Adds verifier model / selection-reason / mode rollups to the weekly metrics summary output. |
.github/workflows/agents-bot-comment-handler.yml |
Emits wrapper terminal-disposition artifacts and propagates skip reasons for clearer telemetry. |
.github/scripts/weekly_metrics_artifacts.js |
Adds “missing priority families” and per-family status reporting to artifact selection output/markdown. |
.github/scripts/terminal_disposition_coverage.js |
Expands artifact-selection normalization and markdown reporting for terminal coverage preflight. |
.github/scripts/terminal_disposition.js |
Extends terminal-disposition schema normalization to include LLM metadata fields. |
.github/scripts/coverage_monitor_summary.js |
New script to build a machine-readable weekly coverage monitor summary and markdown output. |
.github/scripts/bot_comment_auth_coverage.js |
Enhances organic-evidence reporting with skipped/missing requirement details (esp. wrapper vs reusable expectations). |
| - name: Upload wrapper terminal disposition | ||
| if: always() | ||
| uses: actions/upload-artifact@v7 | ||
| with: | ||
| name: review-thread-terminal-disposition-${{ github.run_id }} | ||
| path: | | ||
| agent-metrics/review-thread-terminal-disposition.ndjson | ||
| terminal-disposition-summary.md | ||
| if-no-files-found: error |
There was a problem hiding this comment.
actions/upload-artifact is referenced via the floating @v7 tag here, while the rest of the repo pins third-party actions to full commit SHAs. Please pin this action to a specific SHA (with the inline major-version comment) to avoid supply-chain risk and unexpected breakages.
| - name: Write wrapper terminal disposition | ||
| if: always() | ||
| env: | ||
| RESOLVED_PR_NUMBER: ${{ steps.resolve.outputs.pr_number }} | ||
| REUSABLE_INVOCATION_EXPECTED: ${{ steps.resolve.outputs.should_run }} | ||
| SKIP_REASON: ${{ steps.resolve.outputs.skip_reason }} | ||
| run: | | ||
| mkdir -p agent-metrics | ||
| node <<'NODE' |
There was a problem hiding this comment.
The new wrapper step executes node directly, but this workflow/job never sets up a specific Node version (no actions/setup-node). For consistency with other workflows and to avoid runner-image drift, add a pinned actions/setup-node step (Node 20) before running setup-api-client/Node scripts in this job.
|
|
||
| function overallStatus(monitors) { | ||
| if (monitors.some((monitor) => monitor.should_fail || monitor.status === 'fail')) return 'fail'; | ||
| if (monitors.some((monitor) => ['missing', 'parse-error', 'warning'].includes(monitor.status))) { |
There was a problem hiding this comment.
overallStatus() doesn’t treat monitor status === 'unknown' as a warning/missing state. If a report parses but has a missing/invalid status (so normalizeStatus() returns 'unknown'), the overall result can incorrectly be pass. Consider including 'unknown' in the warning set (or mapping it to 'parse-error').
| if (monitors.some((monitor) => ['missing', 'parse-error', 'warning'].includes(monitor.status))) { | |
| if (monitors.some((monitor) => ['missing', 'parse-error', 'warning', 'unknown'].includes(monitor.status))) { |
Sync Summary
Files Updated
Files Skipped
Review Checklist
Source: stranske/Workflows
Manifest:
.github/sync-manifest.yml