Skip to content

chore: sync workflow templates - #577

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

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

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

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: 8b8ad95b59c0

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

Copy link
Copy Markdown

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

@agents-workflows-bot

Copy link
Copy Markdown
Contributor

🤖 Keepalive Loop Status

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

Current State

Metric Value
Iteration progress [----------] 0/5
Action wait (missing-agent-label)
Disposition skipped (transient)
Gate unknown
Tasks 0/6 complete
Timeout 45 min (default)
Timeout usage 1m elapsed (4%, 44m 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

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 20:22:58 Codex wait (missing-agent-label-transient) skipped 0 0/6

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 template updates from stranske/Workflows, primarily to modernize the weekly metrics workflow’s Node setup and to enhance the bot-comment App auth coverage preflight diagnostics.

Changes:

  • Updated agents-weekly-metrics workflow to explicitly set up Node.js (instead of ad-hoc npm installs) and improved the coverage hard-block error annotation.
  • Enhanced bot_comment_auth_coverage.js with more robust parsing, artifact selection reporting, error counters (read/parse/non-auth), and organic-evidence configuration behavior.

Reviewed changes

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

File Description
.github/workflows/agents-weekly-metrics.yml Adds actions/setup-node and refines the hard-block error message emitted when coverage checks fail.
.github/scripts/bot_comment_auth_coverage.js Improves coverage report generation robustness and detail; adds artifact-dir matching logic and additional counters/blockers.

Comment on lines +13 to +14
wrapper: /^bot-comment-auth-coverage-wrapper-\d+$/,
reusable: /^bot-comment-auth-coverage-reusable-\d+$/,

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.

AUTH_ARTIFACT_DIR_PATTERNS now requires the artifact directory name to match bot-comment-auth-coverage-*-<digits> exactly. However, artifact selection in weekly_metrics_artifacts.js treats these as prefix-based families, so artifact names (and therefore unzip dirs) may legally include non-numeric suffixes; those would no longer be discovered by isPotentialAuthCoverageFile, causing silent coverage undercounting. Consider relaxing the regex (e.g., prefix match) or deriving the match from the same family logic used by artifact selection.

Suggested change
wrapper: /^bot-comment-auth-coverage-wrapper-\d+$/,
reusable: /^bot-comment-auth-coverage-reusable-\d+$/,
wrapper: /^bot-comment-auth-coverage-wrapper-\d+(?:-.+)?$/,
reusable: /^bot-comment-auth-coverage-reusable-\d+(?:-.+)?$/,

Copilot uses AI. Check for mistakes.
Comment on lines 364 to +374
function summarizeBotCommentAuthCoverage(records = [], options = {}) {
const policy = normalizePolicy(options);
const parseErrors = Number(options.parse_errors ?? options.parseErrors ?? 0);
const readErrors = Number(options.read_errors ?? options.readErrors ?? 0);
const parsedJsonRecordCount = Number(
options.parsed_json_record_count ?? options.parsedJsonRecordCount ?? records.length
);
const nonAuthRecordCount = Number(
options.non_auth_record_count ??
options.nonAuthRecordCount ??
Math.max(0, parsedJsonRecordCount - records.length)

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 new numeric conversions (e.g., read_errors / parsed_json_record_count / non_auth_record_count) use Number(...) without guarding against NaN. If these values come from env/args and are non-numeric, comparisons like readErrors > 0 will behave incorrectly and the report will emit NaN. Consider normalizing with Number.isFinite(...) ? ... : 0 (or a shared helper) before using these values.

Suggested change
function summarizeBotCommentAuthCoverage(records = [], options = {}) {
const policy = normalizePolicy(options);
const parseErrors = Number(options.parse_errors ?? options.parseErrors ?? 0);
const readErrors = Number(options.read_errors ?? options.readErrors ?? 0);
const parsedJsonRecordCount = Number(
options.parsed_json_record_count ?? options.parsedJsonRecordCount ?? records.length
);
const nonAuthRecordCount = Number(
options.non_auth_record_count ??
options.nonAuthRecordCount ??
Math.max(0, parsedJsonRecordCount - records.length)
function normalizeFiniteNumber(value, fallback = 0) {
const numericValue = Number(value);
return Number.isFinite(numericValue) ? numericValue : fallback;
}
function summarizeBotCommentAuthCoverage(records = [], options = {}) {
const policy = normalizePolicy(options);
const parseErrors = normalizeFiniteNumber(options.parse_errors ?? options.parseErrors ?? 0, 0);
const readErrors = normalizeFiniteNumber(options.read_errors ?? options.readErrors ?? 0, 0);
const parsedJsonRecordCount = normalizeFiniteNumber(
options.parsed_json_record_count ?? options.parsedJsonRecordCount ?? records.length,
records.length
);
const nonAuthRecordCount = normalizeFiniteNumber(
options.non_auth_record_count ??
options.nonAuthRecordCount ??
Math.max(0, parsedJsonRecordCount - records.length),
Math.max(0, parsedJsonRecordCount - records.length)

Copilot uses AI. Check for mistakes.

const hardBlockActive = policy.effective_mode === HARD_BLOCK_MODE;
const shouldFail = hardBlockActive && coverageStatus !== 'pass';
const shouldFail = hardBlockActive && coverageStatus === 'warning';

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.

shouldFail now only triggers in hard-block mode when coverageStatus === 'warning', which means a hard-block run will not fail on no-data. This differs from terminal_disposition_coverage.js (hard-block fails on anything other than pass) and can allow hard-block enforcement to be bypassed when no auth coverage records are found. Consider aligning the semantics (fail on no-data too) or explicitly documenting why bot-comment coverage is treated differently.

Suggested change
const shouldFail = hardBlockActive && coverageStatus === 'warning';
const shouldFail = hardBlockActive && coverageStatus !== '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.

3 participants