Skip to content

CI maintenance report: 10 recent failures analyzed — all addressed in open PRs, merge path needed #42

@erudenko

Description

@erudenko

CI Maintenance Report — 2026-04-13

This issue was created by the CI/CD maintenance agent after auditing recently failed GitHub Actions runs for MadAppGang/magus. The gh CLI and GitHub Actions REST API were unavailable (unauthenticated rate limit), so analysis was performed via the GitHub MCP server (PR check runs, file contents, commit history).


Failed runs summary (10 most recent)

Run ID Workflow Branch Root cause
24307096245 Test Stats Plugin fix/ci-all-fixes-final Stale dates in integration.test.ts (commit 84411b6)
24307096246 Test Plugins fix/ci-all-fixes-final browser-use 1.1.1 vs 1.1.2 (commit 84411b6)
24298790076 Test Stats Plugin fix/ci-workflow-trigger-broadening Stale dates in stats tests
24298790072 Test Plugins fix/ci-workflow-trigger-broadening TS6133 unused imports
24298782547 Test Stats Plugin fix/ci-workflow-trigger-broadening Stale dates in stats tests
24298781727 Test Plugins fix/ci-workflow-trigger-broadening TS6133 unused imports
24276607217 Test Plugins fix/ci-24065489776-ts-and-dates browser-use version mismatch
24276583408 Test Stats Plugin fix/ci-type-errors-and-stale-test-date Stale dates in stats tests
24276582786 Test Plugins fix/ci-type-errors-and-stale-test-date TS6133 unused imports
24040412326 Test Stats Plugin fix/ci-type-errors-and-stale-test-date Stale dates in stats tests

None of the failures are transient (no network timeouts or rate limits). All are deterministic code/config bugs.


Root causes (4 distinct)

1. Unused TypeScript imports (TS6133) — tsc --noEmit fails under noUnusedLocals

Three imports left unreferenced after refactors:

File Import
tools/claudeup-core/src/__tests__/integration/conventions-integration.test.ts removeGitignoreEntries — imported but never called in any test
tools/claudeup-core/src/__tests__/unit/doctor.test.ts vi — imported but no usage after a refactor
tools/claudeup-core/src/services/conventions-manager.ts existsSync — unused since a refactor

(A fourth, InstalledPluginEntry in doctor.ts, was removed in commit c8561cc0 on the base branch.)

2. Stale hardcoded test dates in plugins/stats

plugins/stats/tests/integration.test.ts uses "2026-03-26" as the default date in makeSession(). As of today (2026-04-13) that date is 18 days old — well outside the 7-day window for getSessionSummary/getTopTools and the 14-day window for getDurationTrend. Those tests assert length > 0 and specific counts, but the DB queries return zero rows.

The companion file db.test.ts was partially fixed on the base branch (commit c8561cc0) but integration.test.ts was missed until PR #34.

3. browser-use version mismatch in marketplace.json

plugins/browser-use/plugin.json is at v1.1.2 but .claude-plugin/marketplace.json still has "version": "1.1.1". The marketplace-sync integration test in test-plugins.yml catches exactly this drift:

AssertionError: Plugin browser-use: version mismatch - plugin.json has 1.1.2, marketplace.json has 1.1.1

Confirmed by reading .claude-plugin/marketplace.json on the base branch (fix/ci-type-errors-and-stale-test-date @ 7e440fb7).

4. Hardcoded branch filters in workflow triggers (structural, now fixed)

Both test-plugins.yml and test-stats.yml had branches: [main, fix/ci-type-errors-and-stale-test-date] allowlists. Any branch not named exactly one of those two was invisible to CI — only GitGuardian fired on those PRs. This is why PRs #22, #23, #28, #31 never got test CI runs.

This was addressed in PRs #32, #33, and #34 by removing the branches: key entirely (path filters still limit CI to relevant file changes).


Current PR landscape

PR Branch Latest CI Covers
#24 fix/ci-24065489776-ts-and-dates ✅ 7/7 green (2026-04-11) Causes 1 + 2 + 3 + partial 4
#33 fix/ci-consolidated ✅ 7/7 green (2026-04-12) Causes 1 + 2 + 3 + 4 (full)
#34 fix/ci-all-fixes-final ✅ 13/13 green (2026-04-12) Causes 2 + 3 (on top of partially-fixed base)
#32 fix/ci-workflow-trigger-broadening ❌ failures (old run) Cause 4 only (code issues not fixed)
#31 fix/ci-main-browser-use-version No test CI (targets orphan main) Cause 3 only
#28, #23, #22 various No updated test CI Partial subsets

The base source branch (fix/ci-type-errors-and-stale-test-date) still has all 4 root causes present. All open fix PRs layer their changes on top of it.


Recommended merge path

None of the active fix PRs were created by this maintenance agent — all pre-existed. No new branches or PRs were opened because the fixes are already done and green.

The cleanest resolution:

  1. Merge PR fix(ci): consolidated — TS imports, stale dates, browser-use version, unrestricted triggers #33 (fix/ci-consolidated) into fix/ci-type-errors-and-stale-test-date.

    • It includes all 4 fixes (TS imports, rolling dates, browser-use bump, trigger broadening).
    • CI is fully green (7/7).
    • After this merge, the base branch itself will be green.
  2. Close PRs fix(ci): remove unused TS imports + fix stale stats test dates #22, fix(ci): resolve merge conflict — unused TS imports + stale stats test dates #23, fix(marketplace): bump browser-use version 1.1.1 → 1.1.2 in marketplace.json #28, fix(marketplace): bump browser-use version 1.1.1 → 1.1.2 to fix CI #31, fix(ci): remove hardcoded branch filters from workflow triggers #32, fix(ci): complete all-fixes branch — rolling stats dates in integration.test.ts + browser-use 1.1.2 #34 as superseded by fix(ci): consolidated — TS imports, stale dates, browser-use version, unrestricted triggers #33 (they all address overlapping subsets of the same issues).

    Alternatively, if fix(ci): complete all-fixes branch — rolling stats dates in integration.test.ts + browser-use 1.1.2 #34 is preferred (it was more recently pushed by @erudenko directly), merge fix(ci): complete all-fixes branch — rolling stats dates in integration.test.ts + browser-use 1.1.2 #34 and close the others. Note fix(ci): complete all-fixes branch — rolling stats dates in integration.test.ts + browser-use 1.1.2 #34 only fixes causes 2 and 3 — cause 1 (TS imports) and cause 4 (trigger broadening) must come from another PR or a separate commit.

  3. After the base branch is green, any future PRs targeting it will start from a clean state.


What this agent did NOT do

  • Did not create any new fix branches or PRs (fixes already existed in green PRs)
  • Did not re-run any failed runs (failures are code bugs, not transient)
  • Did not force-push or merge anything (merge decisions belong to the repo owner)
  • Could not retrieve full workflow run logs (GitHub Actions REST API was rate-limited and no gh CLI available in the execution environment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingci

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions