Skip to content

chore: sync workflow templates - #623

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

chore: sync workflow templates#623
stranske wants to merge 1 commit into
mainfrom
sync/workflows-1da4b4051d91

Conversation

@stranske

Copy link
Copy Markdown
Owner

Sync Summary

Files Updated

  • 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
  • weekly_metrics_artifacts.js: Bounded weekly metrics artifact selection contract
  • weekly_metrics_download_manifest.js: Weekly metrics artifact download and extraction manifest contract

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
Source SHA: 9a17c457d376f9288ca9abc64a8590b6b2440c44
Template hash: 1da4b4051d91
Sync branch: sync/workflows-1da4b4051d91
Consumer repo: stranske/Template
Manifest: .github/sync-manifest.yml

Automated sync from stranske/Workflows
Template hash: 1da4b4051d91

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 19:44
@stranske-keepalive

Copy link
Copy Markdown
Contributor

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

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-consumer template updates by expanding weekly agent-metrics tooling/contracts to include Codex CLI freshness metrics and richer artifact-selection metadata.

Changes:

  • Add codex-cli-freshness as a recognized/priority weekly metrics artifact family.
  • Extend metrics aggregation to bucket + summarise Codex CLI freshness records and to track verifier CLI versions.
  • Expand the download manifest’s embedded selection details into a richer, reusable shape.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
scripts/aggregate_agent_metrics.py Recognizes codex-cli-freshness entries, summarizes them, and adds verifier CLI-version counting to the markdown + JSON contract.
.github/scripts/weekly_metrics_download_manifest.js Refactors manifest “selection” block creation into compactSelectionDetails() and includes additional selection metadata.
.github/scripts/weekly_metrics_artifacts.js Adds codex-cli-freshness to known artifacts and priority families for selection.
.github/scripts/terminal_disposition.js Captures llm_cli_version into terminal disposition normalization for downstream aggregation/reporting.

Comment on lines +755 to +761
status = str(entry.get("status") or "unknown")
statuses[status] += 1
package = str(entry.get("package") or "unknown")
packages[package] += 1
pinned = str(entry.get("pinned_version") or "unknown")
latest = str(entry.get("latest_version") or "unknown")
pinned_versions[pinned] += 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.

In _summarise_codex_cli_freshness, status, package, pinned_version, and latest_version are converted with str(...) but not normalized (trim/lower). This can split counts across values that differ only by case/whitespace and can make derived fields like outdated_records / latest_unavailable_records inaccurate (they rely on exact string keys). Consider normalizing these strings (e.g., .strip().lower() and, if needed, mapping _ to -) before counting and before looking up specific statuses.

Copilot uses AI. Check for mistakes.
return {
path: selectionPath,
schema: cleanString(selection.schema),
status: cleanString(selection.status || 'pass'),

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.

compactSelectionDetails() stores selection.status via cleanString(selection.status || 'pass') without normalizing casing. Since later logic treats 'error' as a sentinel (buildInitialManifest/finalizeManifest compare to 'error'), a non-lowercase value like 'Error' would silently fail to propagate an error status. Consider normalizing this field (e.g., cleanString(...).toLowerCase() or reuse normalizeStatus() with allowed values).

Suggested change
status: cleanString(selection.status || 'pass'),
status: normalizeStatus(selection.status || 'pass', ['pass', 'error'], 'pass'),

Copilot uses AI. Check for mistakes.
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