Skip to content

chore: sync workflow templates - #920

Closed
stranske wants to merge 1 commit into
mainfrom
sync/workflows-daec38e5dbf4
Closed

stranske wants to merge 1 commit into
mainfrom
sync/workflows-daec38e5dbf4

Conversation

@stranske

Copy link
Copy Markdown
Owner

Sync Summary

Files Updated

  • agents-81-gate-followups.yml: Gate followups hub - consolidates keepalive and autofix followups
  • agents-bot-comment-handler.yml: Bot comment handler - dispatches agents to address bot review comments (deprecated; replaced by agents-80-pr-event-hub.yml, removal no earlier than 2026-02-15)
  • agents-weekly-metrics.yml: Weekly metrics - aggregates auto-pilot, keepalive, autofix and verifier metrics into summary reports
  • aggregate_agent_metrics.py: Aggregates downloaded weekly agent metrics - required by agents-weekly-metrics.yml
  • terminal_disposition.js: Machine-readable terminal disposition records and source summaries
  • terminal_disposition_coverage.js: Warning-only terminal disposition source coverage preflight
  • bot_comment_auth_coverage.js: Warning-only bot-comment App auth coverage preflight
  • coverage_monitor_summary.js: Machine-readable weekly coverage monitor checkpoint
  • weekly_metrics_artifacts.js: Bounded weekly metrics artifact selection contract
  • weekly_metrics_download_manifest.js: Weekly metrics artifact download and extraction manifest contract
  • agents_pr_meta_update_body.js: Updates PR body with agent metadata

Files Skipped

  • pr-00-gate.yml: File exists and sync_mode is create_only
  • ci.yml: File exists and sync_mode is create_only
  • dependabot.yml: File exists and sync_mode is create_only
  • llm_slots.json: None

Review Checklist

  • CI passes with updated workflows
  • No repo-specific customizations were overwritten

Source: stranske/Workflows
Manifest: .github/sync-manifest.yml

Automated sync from stranske/Workflows
Template hash: daec38e5dbf4

Changes synced from sync-manifest.yml
@stranske stranske added sync Automated sync from Workflows automated Automated sync from Workflows labels Apr 26, 2026
Copilot AI review requested due to automatic review settings April 26, 2026 08:42
@stranske stranske added sync Automated sync from Workflows automated Automated sync from Workflows labels Apr 26, 2026
@stranske-keepalive

Copy link
Copy Markdown
Contributor

⚠️ Action Required: Unable to determine source issue for PR #920. The PR title, branch name, or body must contain the issue number (e.g. #123, branch: issue-123, or the hidden marker ).

@stranske-keepalive

stranske-keepalive Bot commented Apr 26, 2026

Copy link
Copy Markdown
Contributor

🤖 Keepalive Loop Status

PR #920 | Agent: Codex | Iteration 0/5

Current State

Metric Value
Iteration progress [----------] 0/5
Action wait (missing-agent-label)
Disposition skipped (transient)
Gate success
Tasks 0/15 complete
Timeout 45 min (default)
Timeout usage 5m elapsed (12%, 40m remaining)
Keepalive ❌ disabled
Autofix ❌ disabled

🔍 Failure Classification

| Error type | infrastructure |
| Error category | resource |
| Suggested recovery | Confirm the referenced resource exists (repo, PR, branch, workflow, or file). |

@stranske-keepalive

stranske-keepalive Bot commented Apr 26, 2026

Copy link
Copy Markdown
Contributor
Keepalive Work Log (click to expand)
# Time (UTC) Agent Action Result Files Tasks Progress Commit Gate
0 2026-04-26 08:44:37 Codex wait (missing-agent-label-transient) skipped 0 0/15
0 2026-04-26 08:46:45 Codex wait (missing-agent-label-transient) skipped 0 0/15 cancelled
0 2026-04-26 08:48:26 Codex wait (missing-agent-label-transient) skipped 0 0/15 success

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.

Pull request overview

Syncs workflow templates from stranske/Workflows, expanding the weekly metrics pipeline and related telemetry/coverage tooling to produce richer, machine-readable contracts and more detailed operational diagnostics.

Changes:

  • Add a weekly artifact download manifest (JSON + markdown) and publish it alongside weekly metrics artifacts.
  • Extend aggregate_agent_metrics.py to enrich records with artifact/source metadata, capture structured parse errors, and emit a JSON summary contract.
  • Enhance terminal disposition + bot-comment auth coverage reporting (priority-family status reporting, verifier model compatibility signals, wrapper terminal disposition artifact emission).

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 ingested metrics with artifact metadata, tracks parse error details, and writes a JSON summary contract (plus new verifier model stats).
.github/workflows/agents-weekly-metrics.yml Adds download-manifest generation/recording and uploads additional JSON/markdown artifacts (including the new metrics JSON summary).
.github/workflows/agents-bot-comment-handler.yml Emits a wrapper “review-thread terminal disposition” artifact and exposes a skip_reason output.
.github/workflows/agents-81-gate-followups.yml Switches jq invocation to compact/no-input mode (jq -cn).
.github/scripts/weekly_metrics_download_manifest.js New helper to initialize, record, and finalize weekly artifact download/unzip manifest + markdown rendering.
.github/scripts/weekly_metrics_artifacts.js Adds priority-family missing/status reporting to the artifact selection contract and markdown output.
.github/scripts/terminal_disposition_coverage.js Adds verifier model compatibility checks and richer artifact-selection normalization for terminal coverage reporting.
.github/scripts/terminal_disposition.js Extends normalized terminal disposition records to include llm_model, model_selection_reason, and verifier_mode.
.github/scripts/coverage_monitor_summary.js New weekly “coverage monitor” contract summarizing terminal + bot-auth monitor states.
.github/scripts/bot_comment_auth_coverage.js Tracks skipped/missing organic requirements and adds wrapper-aware logic for reusable invocation expectations.
.github/scripts/agents_pr_meta_update_body.js Adds issue metadata marker + “Closes #…” line to PR preamble when a source issue is present.

Comment on lines +56 to +83
stats: {
selected_count: selected.length,
download_pass_count: 0,
download_failed_count: 0,
unzip_pass_count: 0,
unzip_failed_count: 0,
unzip_skipped_count: selected.length,
},
artifacts: selected.map((artifact, index) => ({
id: artifact.id,
name: cleanString(artifact.name),
family: cleanString(artifact.family),
created_at: cleanString(artifact.created_at),
updated_at: cleanString(artifact.updated_at),
selected_index: index,
artifact_dir: defaultArtifactDir(artifactsRoot, artifact),
zip_path: defaultZipPath(artifactsRoot, artifact),
download: {
status: 'pending',
bytes: null,
error: '',
},
unzip: {
status: 'pending',
path: defaultArtifactDir(artifactsRoot, artifact),
error: '',
},
})),

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

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

buildInitialManifest() initializes stats.unzip_skipped_count to selected.length while each artifact’s unzip.status is set to pending. This makes the manifest/markdown report claim unzips were “skipped” before any download work happens, and then finalizeManifest() recomputes a different value. Consider either tracking a *_pending_count in stats, or initializing unzip_skipped_count to 0 (and/or setting initial unzip.status to skipped) so the stats align with the per-artifact statuses.

Copilot uses AI. Check for mistakes.
Comment on lines +442 to +444
verifier_mode = entry.get("verifier_mode")
if verifier_mode:
verifier_modes[str(verifier_mode)] += 1

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

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

verifier_modes is counted using the raw entry.get("verifier_mode") value, but earlier logic normalizes verifier modes with .strip().lower() (e.g., when deciding whether model metadata is required). This can split the same mode across multiple keys ("Evaluate" vs "evaluate") and make the summary inconsistent. Consider normalizing verifier_mode (trim/lowercase) before incrementing verifier_modes.

Suggested change
verifier_mode = entry.get("verifier_mode")
if verifier_mode:
verifier_modes[str(verifier_mode)] += 1
verifier_mode = str(entry.get("verifier_mode") or "").strip().lower()
if verifier_mode:
verifier_modes[verifier_mode] += 1

Copilot uses AI. Check for mistakes.
Comment on lines +172 to +179
const model = cleanString(record.llm_model ?? record.model).toLowerCase();
const reason = cleanString(record.model_selection_reason);
const verifierMode = cleanString(record.verifier_mode).toLowerCase();
const requiresCodexModel = verifierMode !== 'evaluate';
if (model) selectedModels[model] = (selectedModels[model] || 0) + 1;
if (reason) modelSelectionReasons[reason] = (modelSelectionReasons[reason] || 0) + 1;
if (!model && requiresCodexModel) {
const runId = cleanString(record.run_id);

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

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

In summarizeVerifierModelCompatibility, requiresCodexModel is computed as verifierMode !== 'evaluate'. When record.verifier_mode is missing/empty, this evaluates to true, so every verifier terminal disposition record without verifier_mode will be flagged as missing model metadata (even if the mode is effectively “evaluate” or otherwise unknown). Consider treating an empty verifier_mode as “unknown” and not applying the missing-model rule until the mode is present (or explicitly defaulting missing mode to evaluate if that’s the intended baseline).

Copilot uses AI. Check for mistakes.
@stranske

Copy link
Copy Markdown
Owner Author

pd-workloop-resume status: kept this as the canonical latest Workflows sync PR and closed the remaining superseded sync PRs (#911-#919; earlier duplicates were already closed, and #906 was already merged). Gate is green, but I am leaving this PR unmerged because Copilot has three actionable inline comments on synced Workflows-owned files. Per consumer repo policy, those should be fixed in stranske/Workflows first, then synced here.

@stranske

Copy link
Copy Markdown
Owner Author

Automation cleanup update (pd-workloop-resume): deduplicated the superseded Workflows sync PR stack and left #920 as the canonical latest sync PR (template hash daec38e5dbf4).\n\nCurrent blocker: #920 still has 3 unresolved Copilot inline comments on Workflows-synced files (.github/scripts/weekly_metrics_download_manifest.js, scripts/aggregate_agent_metrics.py, and .github/scripts/terminal_disposition_coverage.js). Per this consumer repo's AGENTS.md source-of-truth policy, those fixes should land in stranske/Workflows first and then be re-synced here; I am not merging this consumer sync PR while those review threads remain unresolved.

@stranske

Copy link
Copy Markdown
Owner Author

Automation update: the three unresolved Copilot threads on this consumer sync PR are on Workflows-owned synced files, so I opened the source-of-truth fix in stranske/Workflows#1883. This PR should not be duplicated or patched directly in the consumer repo; next step is to merge the Workflows source fix, let the consumer sync regenerate, then replace/advance this sync lane.

@stranske

Copy link
Copy Markdown
Owner Author

Superseded by the latest Workflows sync lane #938; closing this older automated sync PR so review and CI focus on the canonical branch.

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

Labels

automated Automated sync from Workflows sync Automated sync from Workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants