Conversation
Automated sync from stranske/Workflows Template hash: 814572819bd0 Changes synced from sync-manifest.yml
🤖 Keepalive Loop StatusPR #286 | 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
Syncs workflow templates from stranske/Workflows, enhancing weekly agent-metrics collection/aggregation and expanding telemetry/coverage contracts used by GitHub Actions workflows in this repo.
Changes:
- Adds a download manifest/contract for weekly metrics artifacts and emits a JSON summary alongside the existing markdown metrics summary.
- Extends terminal disposition coverage + bot-comment auth coverage reporting to track verifier model compatibility and wrapper→reusable expectations.
- Updates workflows to publish additional artifacts/metadata and tweaks gate followup metrics JSON generation.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
scripts/aggregate_agent_metrics.py |
Enriches parsed metrics with artifact/source metadata, tracks parse error details, and writes a JSON contract summary. |
.github/workflows/agents-weekly-metrics.yml |
Generates artifact download manifest + uploads new JSON outputs and manifest artifacts. |
.github/workflows/agents-bot-comment-handler.yml |
Adds wrapper terminal disposition artifact and exposes skip reason from PR resolution logic. |
.github/workflows/agents-81-gate-followups.yml |
Uses compact JSON output for metrics payload (jq -cn). |
.github/scripts/weekly_metrics_download_manifest.js |
New helper to create/update/finalize a machine-readable artifact download manifest + markdown. |
.github/scripts/weekly_metrics_artifacts.js |
Adds priority-family status reporting for artifact selection results. |
.github/scripts/terminal_disposition_coverage.js |
Expands coverage report to include verifier-model compatibility and richer artifact-selection normalization. |
.github/scripts/terminal_disposition.js |
Adds model/mode-related fields to normalized terminal disposition records. |
.github/scripts/coverage_monitor_summary.js |
New weekly “coverage monitor” contract summarizer for terminal + bot-auth coverage reports. |
.github/scripts/bot_comment_auth_coverage.js |
Adds wrapper/reusable expectation fields and richer organic-evidence requirement reporting. |
.github/scripts/agents_pr_meta_update_body.js |
Adds issue metadata markers and a Closes #... line when a source issue is present. |
| file_entries: list[dict[str, Any]] = [] | ||
| file_errors: list[ParseErrorDetail] = [] | ||
| raw_lines: list[str] = [] | ||
| with handle: | ||
| for line in handle: | ||
| for line_number, line in enumerate(handle, start=1): | ||
| raw = line.strip() | ||
| if not raw: | ||
| continue | ||
| raw_lines.append(raw) |
There was a problem hiding this comment.
In _read_ndjson, raw_lines is appended for every non-empty line even when the file parses successfully, but it’s only used for the fallback whole-file JSON parse when there are parse errors and no per-line entries. This can add avoidable memory overhead for large NDJSON files. Consider only buffering lines after the first parse error is encountered (or limiting the buffered lines) so the common case doesn’t retain the full file content.
| if (parseErrors > 0) enforcementBlockers.push('parse-errors'); | ||
| if (artifactSelectionWarning) enforcementBlockers.push('artifact-selection-warning'); | ||
| if (verifierModelCompatibility.status !== 'pass') { | ||
| enforcementBlockers.push('unsupported-verifier-model'); |
There was a problem hiding this comment.
enforcementBlockers appends 'unsupported-verifier-model' whenever verifierModelCompatibility.status !== 'pass', but that status is also set to warning for missing verifier model metadata (not just unsupported models). This blocker label becomes misleading in the missing-metadata case. Consider using a more generic blocker name (e.g., verifier-model-compatibility-warning) or splitting into distinct blockers for unsupported models vs missing metadata.
| enforcementBlockers.push('unsupported-verifier-model'); | |
| enforcementBlockers.push('verifier-model-compatibility-warning'); |
| - 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.
This workflow uses actions/upload-artifact@v7 (a floating tag). Elsewhere in this repo workflows pin actions/upload-artifact to a specific commit SHA with an inline version comment (e.g. # v7) to avoid supply-chain risk from tag retargeting. Please pin this action to the same SHA pattern used in the other workflows.
Sync Summary
Files Updated
Files Skipped
Review Checklist
Source: stranske/Workflows
Manifest:
.github/sync-manifest.yml