Skip to content

ci(deps): sync action versions to templates - #27

Open
iamkayleb wants to merge 16 commits into
mainfrom
auto/sync-action-versions-20260325124011
Open

ci(deps): sync action versions to templates#27
iamkayleb wants to merge 16 commits into
mainfrom
auto/sync-action-versions-20260325124011

Conversation

@iamkayleb

Copy link
Copy Markdown
Owner

Automated PR to sync GitHub Action versions from .github/workflows/ to templates/.

This ensures templates stay in sync with Dependabot updates.

Updated versions:

  • actions/checkout: v6
  • actions/github-script: v8
  • actions/upload-artifact: v7
  • actions/download-artifact: v8
  • actions/cache: v5

iamkayleb and others added 16 commits March 3, 2026 03:12
The summary job's "Ensure consolidated summary comment" step crashes with
ENOENT when gate-summary.md doesn't exist. This happens because consumer
repos lack tools/post_ci_summary.py (not synced), so the "Prepare summary
body" step fails, the compose step aborts on empty body, and
gate-summary.md is never created — but the comment step runs anyway due
to if: always().

Two fixes:
1. Add fs.existsSync guard before reading gate-summary.md so the step
   skips gracefully instead of crashing (both main and template)
2. Add post_ci_summary.py, ci_failure_triage.py, and __init__.py to the
   sync manifest and consumer template so the root cause is resolved

https://claude.ai/code/session_01FC8XoyssN5v6hQCTtcjoB5
…t-D9Be2

Fix Gate summary job ENOENT crash in consumer repos
…t-68

The sync workflow fails on every run because REPO_TOKEN is empty when
neither OWNER_PR_PAT nor SERVICE_BOT_PAT secrets are configured. This
causes `gh repo clone` to exit with code 4 (auth required).

- Add `github.token` as final fallback so clone/read operations succeed
- Add explicit "Verify cross-repo token" step that fails early with a
  clear error message when no PAT is available for PR creation
- This prevents all 11 matrix jobs from failing with the same cryptic
  "set GH_TOKEN environment variable" error

https://claude.ai/code/session_01FC8XoyssN5v6hQCTtcjoB5
…t-D9Be2

fix(sync): add github.token fallback to prevent auth failures in main…
The gh pr create command in a shallow clone (--depth=1) fails with
"Head sha can't be blank, Base sha can't be blank" because it cannot
infer the base branch from the truncated git history.

Adding --base main and --repo explicitly resolves the ambiguity.

https://claude.ai/code/session_01FC8XoyssN5v6hQCTtcjoB5
…t-D9Be2

fix(sync): add explicit --base and --repo to gh pr create
gh pr create exits non-zero when --label references a label that
doesn't exist in the consumer repo, even though the PR itself was
created successfully. Split labels into separate gh pr edit calls
with || true so missing labels emit a warning instead of failing.

https://claude.ai/code/session_01FC8XoyssN5v6hQCTtcjoB5
…t-D9Be2

fix(sync): separate label application from PR creation
Consumer repos don't have .github/scripts/__tests__/*.test.js,
tests/workflows/github_scripts/, or scripts/check_issue_consistency.py.
These files only exist in the Workflows repo. Add existence checks so
the Gate workflow skips these steps gracefully instead of failing.

Fixes github-scripts-tests and issue-consistency Gate failures on
consumer repo sync PRs.

https://claude.ai/code/session_01FC8XoyssN5v6hQCTtcjoB5
…t-D9Be2

fix(gate): guard test and consistency steps for consumer repos
Automated sync from .github/workflows/ to templates/

Updated versions:
- actions/checkout: v6
- actions/github-script: v8
- actions/upload-artifact: v7
- actions/download-artifact: v8
- actions/cache: v5
@iamkayleb

Copy link
Copy Markdown
Owner Author

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

@iamkayleb

iamkayleb commented Mar 25, 2026

Copy link
Copy Markdown
Owner Author

Automated Status Summary

Head SHA: c2b0887
Latest Runs: ⏳ pending — Gate
Required contexts: Gate / gate, Health 45 Agents Guard / guard
Required: core tests (3.11): ⏳ pending, core tests (3.12): ⏳ 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

iamkayleb pushed a commit that referenced this pull request Aug 22, 2026
… systems

The opener cron selects work by `priority:high|normal|low` label. The
weekly repo-review's design-vs-impl pass selects by traced gap. Issues
created manually with `enhancement` or `feature` labels but no
`priority:*` label fall into a hole: neither system sees them.

Worked example surfaced 2026-05-07: Inv-Man-Intake #25, #26, #27 were
created 2026-03-01 with `enhancement` + `milestone:B-extraction-queue-images`
only. 71 days later, no activity, no agent ever picked them up.

New `scripts/repo_review_backlog_scan.py`:

  - Scans all active repos via `gh issue list`
  - Surfaces issues with `enhancement` OR `feature` label that:
    - have NO `priority:*` label (opener would already see them)
    - have NO `agent:*` label (an agent owns it)
    - have NO dependabot / sync* / process-eval label (other automations)
    - have NOT been updated in the past `--stale-days` days (default 7)
  - Sorts oldest-stale-first; writes JSON to --out

Coordinator runs the scan after the final evaluator pass and feeds the
result to the notify step. The desktop file now includes a "Backlog
needing your attention" section listing each stale item with the exact
three `gh issue edit/close` commands to promote / deprioritize / close
it. macOS notification subtitle shows both queue and backlog counts.

Goal: an enhancement issue sits unaddressed for at most 1-2 weekly
cycles before the human surfaces it.

Smoke-test against current state: found 4 items in Inv-Man-Intake
(#27, #26, #25 at 71 days; #10 at 14 days) — exactly the pattern the
user's report identified.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
iamkayleb pushed a commit that referenced this pull request Aug 22, 2026
…mans

The 2026-05-10 feedback: surfacing every unaddressed enhancement issue
for human triage is heavier than necessary. The system should label the
clear-cut cases itself and only ask for human input when the issue shape
is ambiguous.

Two-tier classification in `repo_review_backlog_scan.py`:

**auto-labelable** — leaf enhancement issues. Heuristic priority:
- has `milestone:*` label → `priority:normal` (declared planned work)
- created >90 days ago without milestone → `priority:low` (likely stale)
- otherwise → `priority:normal` (default)

With `--apply` (the cron default), the scanner calls `gh issue edit
--add-label priority:X` for each leaf. The opener picks them up on its
next pass.

**needs-human** — surfaced for decision, not auto-labeled:
- title contains epic/tracker/umbrella/roadmap/rollup/parent issue
- has `epic`/`umbrella`/`tracker`/`meta`/`parent`/`needs-triage`/`discussion`
- has any `blocked*` label
- body has ≥2 task-checkbox lines mentioning #NNN (umbrella tracking children)
- body has a "Children: #..." or "Child issues: #..." declaration

Validated against the user's worked example: #25/#26/#27 → leaf
(auto-label `priority:normal`); #10 → umbrella detected via 4 child
checkboxes (surface for human); #7 → umbrella detected via "epic" in
title. Matches the user's stated preference exactly.

The desktop reminder now renders two backlog subsections:
- **Auto-labeled this week (N items) — FYI, no action required**: brief
  one-line summary per item with applied priority.
- **Backlog needing your decision (M items)**: full three-command resolution
  block per item (promote / deprioritize / close).

macOS notification text now distinguishes the cases: clean weeks with
auto-labels only show "no action required"; weeks with needs-human items
show "decisions needed".

Coordinator now passes `--apply` to the scanner so the cron actually
mutates labels (dry-run is still the default when running the scanner
standalone for testing).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants