Skip to content

chore: sync workflow templates - #82

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

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

Conversation

@stranske

Copy link
Copy Markdown
Owner

Sync Summary

Files Updated

  • agents-weekly-metrics.yml: Weekly metrics - aggregates auto-pilot, keepalive, autofix and verifier metrics into summary reports
  • bot_comment_auth_coverage.js: Warning-only bot-comment App auth coverage preflight
  • weekly_metrics_artifacts.js: Bounded weekly metrics artifact selection 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
Manifest: .github/sync-manifest.yml

Automated sync from stranske/Workflows
Template hash: 61642342d6a9

Changes synced from sync-manifest.yml
Copilot AI review requested due to automatic review settings April 25, 2026 15:50
@stranske stranske added sync Automated sync from Workflows automated Automated sync from Workflows labels Apr 25, 2026
@agents-workflows-bot

agents-workflows-bot Bot commented Apr 25, 2026

Copy link
Copy Markdown
Contributor

🤖 Keepalive Loop Status

PR #82 | 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/7 complete
Timeout 45 min (default)
Timeout usage 5m elapsed (13%, 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). |

@agents-workflows-bot

agents-workflows-bot Bot commented Apr 25, 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-25 15:52:43 Codex wait (missing-agent-label-transient) skipped 0 0/7
0 2026-04-25 15:55:02 Codex wait (missing-agent-label-transient) skipped 0 0/7 cancelled
0 2026-04-25 15:55:59 Codex wait (missing-agent-label-transient) skipped 0 0/7 cancelled
0 2026-04-25 15:56:35 Codex wait (missing-agent-label-transient) skipped 0 0/7 success

@stranske-keepalive

Copy link
Copy Markdown
Contributor

⚠️ Action Required: Unable to determine source issue for PR #82. 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

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, extending the weekly metrics workflow to include bot-comment App authentication coverage signals alongside the existing terminal-disposition coverage reporting.

Changes:

  • Add a new “bot-comment auth coverage” preflight step to the weekly metrics workflow and upload its JSON/MD outputs as artifacts.
  • Expand weekly metrics artifact selection to include bot-comment auth coverage artifact families.
  • Introduce .github/scripts/bot_comment_auth_coverage.js to aggregate/format bot-comment auth coverage into summary outputs (warning-only vs hard-block modes).

Reviewed changes

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

File Description
.github/workflows/agents-weekly-metrics.yml Adds checkout of the new script, runs the new preflight, uploads outputs, and gates via combined “coverage hard-blocks” step.
.github/scripts/weekly_metrics_artifacts.js Recognizes and prioritizes bot-comment auth coverage artifact families during selection.
.github/scripts/bot_comment_auth_coverage.js New aggregator/report generator for bot-comment App auth coverage (JSON + markdown), with optional hard-block enforcement.

BOT_COMMENT_AUTH_COVERAGE_MD: bot-comment-auth-coverage-summary.md
BOT_COMMENT_AUTH_COVERAGE_MODE: ${{ vars.BOT_COMMENT_AUTH_COVERAGE_MODE || 'warning-only' }}
BOT_COMMENT_AUTH_HARD_BLOCK_APPROVED: ${{ vars.BOT_COMMENT_AUTH_HARD_BLOCK_APPROVED || 'false' }}
BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE: ${{ vars.BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE || 'client-id' }}

Copilot AI Apr 25, 2026

Copy link

Choose a reason for hiding this comment

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

bot_comment_auth_coverage.js supports overriding wrapper allowed auth modes via BOT_COMMENT_WRAPPER_ALLOWED_AUTH_MODES, but this workflow only wires BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE and BOT_COMMENT_REUSABLE_ALLOWED_AUTH_MODES. If wrapper allowed-modes are meant to be configurable too, consider adding the missing env var here; otherwise consider dropping that unused override path from the script to avoid confusion.

Suggested change
BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE: ${{ vars.BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE || 'client-id' }}
BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE: ${{ vars.BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE || 'client-id' }}
BOT_COMMENT_WRAPPER_ALLOWED_AUTH_MODES: ${{ vars.BOT_COMMENT_WRAPPER_ALLOWED_AUTH_MODES || 'client-id' }}

Copilot uses AI. Check for mistakes.
Comment on lines +109 to +117
return {
...base,
expected_mode: normalizeAuthMode(
options.wrapper_expected_mode ?? process.env.BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE
) === 'unknown'
? base.expected_mode
: normalizeAuthMode(
options.wrapper_expected_mode ?? process.env.BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE
),

Copilot AI Apr 25, 2026

Copy link

Choose a reason for hiding this comment

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

componentPolicy() calls normalizeAuthMode(options.wrapper_expected_mode …) twice when computing expected_mode. Store the normalized value in a local variable and reuse it to simplify the control flow and avoid duplicated parsing.

Suggested change
return {
...base,
expected_mode: normalizeAuthMode(
options.wrapper_expected_mode ?? process.env.BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE
) === 'unknown'
? base.expected_mode
: normalizeAuthMode(
options.wrapper_expected_mode ?? process.env.BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE
),
const wrapperExpectedMode = normalizeAuthMode(
options.wrapper_expected_mode ?? process.env.BOT_COMMENT_WRAPPER_EXPECTED_AUTH_MODE
);
return {
...base,
expected_mode: wrapperExpectedMode === 'unknown' ? base.expected_mode : wrapperExpectedMode,

Copilot uses AI. Check for mistakes.
Comment on lines +220 to +226
return {
component,
record_count: componentRecords.length,
latest,
expected_mode: componentPolicyConfig.expected_mode,
allowed_modes: componentPolicyConfig.allowed_modes,
status: blockers.length > 0 ? componentPolicyConfig.missing_record_severity === 'no-data' && !latest ? 'no-data' : 'warning' : 'pass',

Copilot AI Apr 25, 2026

Copy link

Choose a reason for hiding this comment

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

The status: assignment for each component summary is a nested ternary on a single long line, which is hard to read and easy to break when changing the conditions. Consider rewriting it as a small if/else block (or a helper function) so the no-data vs warning vs pass logic is explicit.

Suggested change
return {
component,
record_count: componentRecords.length,
latest,
expected_mode: componentPolicyConfig.expected_mode,
allowed_modes: componentPolicyConfig.allowed_modes,
status: blockers.length > 0 ? componentPolicyConfig.missing_record_severity === 'no-data' && !latest ? 'no-data' : 'warning' : 'pass',
let status = 'pass';
if (blockers.length > 0) {
if (componentPolicyConfig.missing_record_severity === 'no-data' && !latest) {
status = 'no-data';
} else {
status = 'warning';
}
}
return {
component,
record_count: componentRecords.length,
latest,
expected_mode: componentPolicyConfig.expected_mode,
allowed_modes: componentPolicyConfig.allowed_modes,
status,

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