Skip to content

chore: sync workflow templates#142

Merged
stranske merged 1 commit intomainfrom
sync/workflows-c5a1cca8dc92
Jan 3, 2026
Merged

chore: sync workflow templates#142
stranske merged 1 commit intomainfrom
sync/workflows-c5a1cca8dc92

Conversation

@stranske
Copy link
Copy Markdown
Owner

@stranske stranske commented Jan 3, 2026

Sync Summary

Files Updated

  • agents-keepalive-loop.yml: Keepalive loop - continues agent work until tasks complete
  • autofix-versions.env: Autofix tool version pins - shared dev tool versions (synced)
  • keepalive_loop.js: Core keepalive loop logic

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

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: c5a1cca8dc92

Changes synced from sync-manifest.yml
Copilot AI review requested due to automatic review settings January 3, 2026 20:52
@stranske stranske added sync Automated sync from Workflows automated Automated sync from Workflows labels Jan 3, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jan 3, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jan 3, 2026

🤖 Keepalive Loop Status

PR #142 | 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/0 complete
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 stranske merged commit aeb6752 into main Jan 3, 2026
42 of 47 checks passed
@stranske stranske deleted the sync/workflows-c5a1cca8dc92 branch January 3, 2026 20:54
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR syncs workflow templates from the central stranske/Workflows repository, focusing on enhancing keepalive loop logic with evidence-based productivity tracking and quality metrics for AI agent task analysis.

  • Adds comprehensive productivity scoring system that tracks file changes, task completion, and historical trends
  • Implements diminishing returns detection for early stopping when work naturally completes
  • Introduces quality metrics infrastructure for LLM analysis validation and confidence adjustment warnings
  • Removes runtime dependencies from shared autofix versions file, keeping only dev tools

Reviewed changes

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

File Description
.github/workflows/autofix-versions.env Removes runtime dependency pins (PyYAML, Pydantic, Hypothesis, jsonschema) with clarifying documentation that only dev tools should be synced
.github/workflows/agents-keepalive-loop.yml Adds five new quality metric inputs (raw confidence, quality warnings, data quality, effort score, analysis text length) to be passed to keepalive loop summary
.github/scripts/keepalive_loop.js Implements evidence-based productivity scoring, diminishing returns detection, and quality metrics display infrastructure with BS detection warnings


// Quality metrics for BS detection and evidence-based decisions
const llmRawConfidence = toNumber(inputs.llm_raw_confidence ?? inputs.llmRawConfidence, llmConfidence);
const llmConfidenceAdjusted = toBool(inputs.llm_confidence_adjusted ?? inputs.llmConfidenceAdjusted, false);
Copy link

Copilot AI Jan 3, 2026

Choose a reason for hiding this comment

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

The parameter name llm_confidence_adjusted is referenced in the JavaScript code but is never passed from the YAML workflow file. This will cause llmConfidenceAdjusted to always be false, making the confidence adjustment warning on lines 1289-1295 never display even when confidence has been adjusted. Either add the missing input parameter to the YAML file or remove the unused logic if this feature is not yet implemented.

Suggested change
const llmConfidenceAdjusted = toBool(inputs.llm_confidence_adjusted ?? inputs.llmConfidenceAdjusted, false);
const llmConfidenceAdjusted = llmRawConfidence !== llmConfidence;

Copilot uses AI. Check for mistakes.
// Track task completion trend
const previousTasks = state.tasks || {};
const prevUnchecked = toNumber(previousTasks.unchecked, checkboxCounts.unchecked);
const tasksCompletedSinceLastRound = prevUnchecked - checkboxCounts.unchecked;
Copy link

Copilot AI Jan 3, 2026

Choose a reason for hiding this comment

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

The tasksCompletedSinceLastRound calculation can result in a negative value if tasks are added between iterations (prevUnchecked < checkboxCounts.unchecked). This negative value is then used in productivity scoring (line 843) where only positive values are expected, potentially skewing the productivity score. Consider adding a check to ensure the value is non-negative: const tasksCompletedSinceLastRound = Math.max(0, prevUnchecked - checkboxCounts.unchecked);

Suggested change
const tasksCompletedSinceLastRound = prevUnchecked - checkboxCounts.unchecked;
const tasksCompletedSinceLastRound = Math.max(0, prevUnchecked - checkboxCounts.unchecked);

Copilot uses AI. Check for mistakes.
iteration >= 2 &&
prevFilesChanged > 0 &&
lastFilesChanged === 0 &&
tasksCompletedSinceLastRound === 0;
Copy link

Copilot AI Jan 3, 2026

Choose a reason for hiding this comment

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

In the diminishing returns detection, tasksCompletedSinceLastRound === 0 is checked, but this value can be negative if tasks are added between iterations. This could lead to false positives in detecting diminishing returns. The logic should check for tasksCompletedSinceLastRound <= 0 or ensure the value is clamped to non-negative values when calculated (see line 837).

Suggested change
tasksCompletedSinceLastRound === 0;
tasksCompletedSinceLastRound <= 0;

Copilot uses AI. Check for mistakes.
Comment on lines 1273 to +1286
`| Provider | ${providerIcon} ${providerLabel} |`,
`| Confidence | ${confidencePercent}% |`,
);

// Show quality metrics if available
if (sessionDataQuality) {
const qualityIcon = sessionDataQuality === 'high' ? '🟢' :
sessionDataQuality === 'medium' ? '🟡' :
sessionDataQuality === 'low' ? '🟠' : '🔴';
summaryLines.push(`| Data Quality | ${qualityIcon} ${sessionDataQuality} |`);
}
if (sessionEffortScore > 0) {
summaryLines.push(`| Effort Score | ${sessionEffortScore}/100 |`);
}
Copy link

Copilot AI Jan 3, 2026

Choose a reason for hiding this comment

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

The markdown table structure is broken when additional rows are conditionally added. Lines 1273-1274 start a table without a header row or separator, then lines 1282 and 1285 add rows to this table. Markdown tables require a header row followed by a separator row (e.g., | --- | --- |) before data rows. This will render incorrectly. Consider either using a definition list format or adding proper table headers and separators.

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