CI Failure Triage — 2026-04-30
Automated CI/CD maintenance scan. gh CLI is unavailable in this environment so workflow run logs were accessed via GitHub API check-run data on each open PR.
Current CI State
| PR |
Branch |
CI Status |
Last check run |
| #22 |
fix/ci-typescript-and-stats-dates |
GitGuardian only (trigger never fired) |
Apr 10 |
| #23 |
fix/ci-typescript-and-stats-dates-resolved |
GitGuardian only (trigger never fired) |
Apr 10 |
| #24 |
fix/ci-24065489776-ts-and-dates |
✅ ALL 7 CHECKS PASS |
Apr 11 |
| #28 |
fix/ci-24276607217-browser-use-version |
GitGuardian only (trigger never fired) |
Apr 11 |
| #31 |
fix/ci-main-browser-use-version |
GitGuardian only (targets dist-only main) |
Apr 12 |
| #32 |
fix/ci-workflow-trigger-broadening |
❌ FAILING (test(20) + test-stats) |
Apr 12 |
| #33 |
fix/ci-consolidated |
✅ ALL 7 CHECKS PASS |
Apr 12 |
| #34 |
fix/ci-all-fixes-final |
✅ ALL 13 CHECKS PASS |
Apr 12 |
CI has been failing for 18+ days (since ~April 6). No fix has been merged.
Root Causes (affecting PR #32 and the unpatched base branch)
1. Unused TypeScript imports — tsc --noEmit fails with TS6133
Three imports flagged by noUnusedLocals:
| File |
Unused import |
tools/claudeup-core/src/__tests__/integration/conventions-integration.test.ts |
removeGitignoreEntries |
tools/claudeup-core/src/__tests__/unit/doctor.test.ts |
vi |
tools/claudeup-core/src/services/conventions-manager.ts |
existsSync |
2. Stale hardcoded test dates — time-windowed queries return zero rows
plugins/stats/tests/db.test.ts and integration.test.ts used "2026-03-26" which is now 35 days old — well outside the 7-day and 14-day rolling query windows in getSessionSummary, getTopTools, and getDurationTrend.
3. browser-use version mismatch
plugins/browser-use/plugin.json was bumped to v1.1.2 but .claude-plugin/marketplace.json was never updated (still v1.1.1). The marketplace-sync integration test catches this.
4. Workflow trigger branch allowlist (fixed in #32/#33, not yet merged)
Both test-plugins.yml and test-stats.yml had branches: [main, fix/ci-type-errors-and-stale-test-date] — any other branch name is invisible to CI. This is why PRs #22, #23, #28 never got test coverage.
Why PR #32 is still failing
PR #32 only removes the trigger branch allowlist. It is based on fix/ci-type-errors-and-stale-test-date (HEAD 7e440fb) which still contains issues #1, #2, and #3 above. CI now runs on #32 (the trigger fix worked) but the tests themselves fail because the underlying code was never patched.
Recommended action: merge PR #33
PR #33 (fix/ci-consolidated, commit c0f9c52) addresses all four root causes in a single, self-contained PR:
- Removes 3 unused TS imports (fixes TS6133 /
tsc --noEmit)
- Replaces hardcoded dates with dynamic
TODAY/YESTERDAY/TWO_DAYS_AGO constants
- Bumps
browser-use in marketplace.json to 1.1.2
- Removes
branches allowlist from both workflow trigger definitions
All 7 CI checks passed as of April 12. The date fixes are dynamic so they will not go stale.
Superseded PRs (can be closed after merging #33)
| PR |
Reason |
| #22 |
Partial subset of #33; trigger never fired — CI never validated it |
| #23 |
Partial subset of #33; trigger never fired |
| #28 |
Subset (browser-use version only); CI never fired on its branch |
| #31 |
Targets dist-only main; no workflows exist there; can never be tested |
| #32 |
Trigger fix only; code issues still present; superseded by #33 |
| #34 |
Equivalent to #33 on a different branch; redundant if #33 merges |
Also worth doing: branch cleanup
There are 30+ fix/ci-* branches accumulating. Most are stale fix attempts. A cleanup pass (git push origin --delete <branch>) would reduce confusion.
Conclusion
No new fix branch is warranted — PR #33 is the correct, fully-validated solution. The only action needed is a human review and merge of PR #33 into fix/ci-type-errors-and-stale-test-date.
CI Failure Triage — 2026-04-30
Automated CI/CD maintenance scan.
ghCLI is unavailable in this environment so workflow run logs were accessed via GitHub API check-run data on each open PR.Current CI State
fix/ci-typescript-and-stats-datesfix/ci-typescript-and-stats-dates-resolvedfix/ci-24065489776-ts-and-datesfix/ci-24276607217-browser-use-versionfix/ci-main-browser-use-versionmain)fix/ci-workflow-trigger-broadeningfix/ci-consolidatedfix/ci-all-fixes-finalCI has been failing for 18+ days (since ~April 6). No fix has been merged.
Root Causes (affecting PR #32 and the unpatched base branch)
1. Unused TypeScript imports —
tsc --noEmitfails with TS6133Three imports flagged by
noUnusedLocals:tools/claudeup-core/src/__tests__/integration/conventions-integration.test.tsremoveGitignoreEntriestools/claudeup-core/src/__tests__/unit/doctor.test.tsvitools/claudeup-core/src/services/conventions-manager.tsexistsSync2. Stale hardcoded test dates — time-windowed queries return zero rows
plugins/stats/tests/db.test.tsandintegration.test.tsused"2026-03-26"which is now 35 days old — well outside the 7-day and 14-day rolling query windows ingetSessionSummary,getTopTools, andgetDurationTrend.3. browser-use version mismatch
plugins/browser-use/plugin.jsonwas bumped tov1.1.2but.claude-plugin/marketplace.jsonwas never updated (stillv1.1.1). Themarketplace-syncintegration test catches this.4. Workflow trigger branch allowlist (fixed in #32/#33, not yet merged)
Both
test-plugins.ymlandtest-stats.ymlhadbranches: [main, fix/ci-type-errors-and-stale-test-date]— any other branch name is invisible to CI. This is why PRs #22, #23, #28 never got test coverage.Why PR #32 is still failing
PR #32 only removes the trigger branch allowlist. It is based on
fix/ci-type-errors-and-stale-test-date(HEAD7e440fb) which still contains issues #1, #2, and #3 above. CI now runs on #32 (the trigger fix worked) but the tests themselves fail because the underlying code was never patched.Recommended action: merge PR #33
PR #33 (
fix/ci-consolidated, commitc0f9c52) addresses all four root causes in a single, self-contained PR:tsc --noEmit)TODAY/YESTERDAY/TWO_DAYS_AGOconstantsbrowser-useinmarketplace.jsonto1.1.2branchesallowlist from both workflow trigger definitionsAll 7 CI checks passed as of April 12. The date fixes are dynamic so they will not go stale.
Superseded PRs (can be closed after merging #33)
main; no workflows exist there; can never be testedAlso worth doing: branch cleanup
There are 30+
fix/ci-*branches accumulating. Most are stale fix attempts. A cleanup pass (git push origin --delete <branch>) would reduce confusion.Conclusion
No new fix branch is warranted — PR #33 is the correct, fully-validated solution. The only action needed is a human review and merge of PR #33 into
fix/ci-type-errors-and-stale-test-date.