Skip to content

[codex] Tighten campaign queue source-fixed contracts - #1857

Merged
stranske merged 1 commit into
mainfrom
codex/campaign-source-fixed-queue-contracts
Apr 25, 2026
Merged

[codex] Tighten campaign queue source-fixed contracts#1857
stranske merged 1 commit into
mainfrom
codex/campaign-source-fixed-queue-contracts

Conversation

@stranske

Copy link
Copy Markdown
Owner

Summary

  • Counts source-fixed campaign matches separately from actionable local Codex work so already-fixed sync review items no longer occupy the visible queue or needs-local-codex total.
  • Renders retained source-fixed candidates in their own details section while keeping machine-readable marker state and status counts intact.
  • Broadens bot-comment auth artifact family matching in source and consumer templates so scanner and weekly selector accept stable family-prefixed artifact names beyond numeric run-id suffixes.

Verification

  • node --test .github/scripts/__tests__/sync_dependabot_campaign.test.js .github/scripts/__tests__/bot-comment-auth-coverage.test.js .github/scripts/__tests__/weekly-metrics-artifacts.test.js
  • python -m pytest tests/workflows/test_workflow_agents_consolidation.py -q
  • python scripts/validate_template_sync.py
  • python scripts/validate_template_completeness.py
  • git diff --check

Campaign Impact

Using durable campaign run 24941404418, the new derived stats would show 118 actionable local Codex items and 2 source-fixed candidates, moving Travel-Plan-Permission#896/#894 out of the top visible queue.

@stranske-keepalive

Copy link
Copy Markdown
Contributor

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

Copy link
Copy Markdown
Contributor

Automated Status Summary

Head SHA: ce3aad7
Latest Runs: ⏳ pending — Gate
Required contexts: Gate / gate, Health 45 Agents Guard / guard
Required: core tests (3.12): ⏳ pending, core tests (3.13): ⏳ pending, docker smoke: ⏳ pending, gate: ⏳ pending

Workflow / Job Result Logs
(no jobs reported) ⏳ pending

Coverage Overview

  • Coverage history entries: 1

Coverage Trend

Metric Value
Current 93.12%
Baseline 85.00%
Delta +8.12%
Minimum 70.00%
Status ✅ Pass

Top Coverage Hotspots (lowest coverage)

File Coverage Missing
src/cli_parser.py 81.8% 4
src/percentile_calculator.py 95.0% 1
src/aggregator.py 95.0% 2
src/__init__.py 100.0% 0
src/ndjson_parser.py 100.0% 0

Updated automatically; will refresh on subsequent CI/Docker completions.


Keepalive checklist

Scope

No scope information available

Tasks

  • No tasks defined

Acceptance criteria

  • No acceptance criteria defined

@agents-workflows-bot

agents-workflows-bot Bot commented Apr 25, 2026

Copy link
Copy Markdown
Contributor

🤖 Keepalive Loop Status

PR #1857 | 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/8 complete
Timeout 45 min (default)
Timeout usage 6m elapsed (14%, 39m 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 22:09:16 Codex wait (missing-agent-label-transient) skipped 0 0/8
0 2026-04-25 22:10:07 Codex wait (missing-agent-label-transient) skipped 0 0/8 cancelled
0 2026-04-25 22:12:32 Codex wait (missing-agent-label-transient) skipped 0 0/8 success
0 2026-04-25 22:18:27 Codex wait (missing-agent-label-transient) skipped 0 0/8 success

@stranske
stranske marked this pull request as ready for review April 25, 2026 22:12
Copilot AI review requested due to automatic review settings April 25, 2026 22:12
@stranske
stranske merged commit 33e61c9 into main Apr 25, 2026
63 of 68 checks passed
@stranske
stranske deleted the codex/campaign-source-fixed-queue-contracts branch April 25, 2026 22:12

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

This PR tightens the sync/dependabot campaign queue “source-fixed” contract so already-fixed items don’t inflate the actionable local Codex queue, and broadens bot-comment auth artifact name matching to accept stable family-prefixed names (not only numeric run-id suffixes).

Changes:

  • Split “source-fixed candidates” from actionable needs-local-codex items in campaign stats + issue rendering.
  • Add a dedicated “Source-fixed candidates” details section while keeping marker/state counts intact.
  • Relax bot-comment auth artifact family regexes in both source scripts and consumer templates; update tests accordingly.

Reviewed changes

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

Show a summary per file
File Description
.github/scripts/sync_dependabot_campaign.js Separates actionable vs source-fixed counts and updates queue/details rendering.
.github/scripts/weekly_metrics_artifacts.js Broadens bot-comment auth coverage artifact family name matching.
.github/scripts/bot_comment_auth_coverage.js Broadens auth artifact directory contract matching for scanner input discovery.
templates/consumer-repo/.github/scripts/weekly_metrics_artifacts.js Mirrors artifact family regex broadening for consumer templates.
templates/consumer-repo/.github/scripts/bot_comment_auth_coverage.js Mirrors auth artifact dir regex broadening for consumer templates.
.github/scripts/__tests__/weekly-metrics-artifacts.test.js Updates tests for newly-accepted artifact names.
.github/scripts/__tests__/sync_dependabot_campaign.test.js Adds/updates tests for excluding source-fixed items from visible queue and stats.
.github/scripts/__tests__/bot-comment-auth-coverage.test.js Updates scanner file-candidate tests for expanded directory name matching.

return item.status === 'needs-local-codex' && !isSourceFixedCandidate(item);
}

function isVisibleQueueItem(item = {}) {

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.

isVisibleQueueItem() includes all local-codex-claimed items even when they are marked as source_fixed_candidate. Since formatItemDetails() now filters out source-fixed candidates, a claimed source-fixed item can still appear in the visible queue table but then be missing from the queue details section (and show up under source-fixed candidates instead). Consider excluding source_fixed_candidate items from the visible queue regardless of status (or alternatively keep them in queue details) so the table + details stay consistent.

Suggested change
function isVisibleQueueItem(item = {}) {
function isVisibleQueueItem(item = {}) {
if (isSourceFixedCandidate(item)) {
return false;
}

Copilot uses AI. Check for mistakes.
Comment on lines 699 to 703
const lines = [];
for (const item of cleanArray(items).slice(0, MAX_DETAIL_ITEMS)) {
const detailItems = cleanArray(items).filter((item) => !isSourceFixedCandidate(item));
for (const item of detailItems.slice(0, MAX_DETAIL_ITEMS)) {
lines.push(`### ${item.status}: ${item.repo}#${item.pr_number}`);
lines.push('');

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.

formatItemDetails() now filters out all source-fixed candidates (detailItems excludes anything with source_fixed_candidate), but the loop body still contains an if (item.source_fixed_candidate) block below. That block becomes unreachable; consider removing it (or adjusting the filter if you still want source-fixed info in the main queue details).

Copilot uses AI. Check for mistakes.
stranske added a commit that referenced this pull request Jun 1, 2026
…apping (#2208)

The consistency pass surfaced that the "Pattern A variant without no-emit" is
not a working variant — it is the uv "conflicting URLs for app-baseline-kit"
bug (unpinned @main in pyproject vs SHA-pinned lock), which a warm uv cache can
mask. Pension-Data hit it (fixed PR #498). Rewrite that callout as a warning and
state no-emit-package is required for Pattern A.

Correct the per-repo mapping to reflect reality after the migrations:
- PAEM was actually frozen at a SHA (not @main); migrated to A+no-emit (PR #1857).
- Pension-Data: A+no-emit (PR #498), excluded from lock.
- LMS: migrated from frozen SHA to A+no-emit (PR #232); no current Pattern C repos.
- TMP: note it should add no-emit on its next lock regen.

Co-authored-by: Tim Stranske <tim@stranskemo.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants