fix(ci): repair the fallow workflow - #33
Conversation
The Fallow check has failed on every run since it was added, for two independent reasons: 1. Every run: fallow emits one SARIF run per sub-analysis, and the CodeQL upload action rejects multi-run files under a single category (GitHub change, July 2025). A new normalize step merges the runs (same driver, rules deduped by id) into a single-run file, and only produces it when the input parses - the empty file a crashed audit leaves behind used to pass the hashFiles() guard and fail the upload with a JSON syntax error. Upload action bumped v3 -> v4 (v3 deprecated December 2026). 2. PR #32's run: 'could not create a temporary worktree for base ref' - a fallow 2.88 base-snapshot fragility fixed upstream by the audit lifecycle hardening in 2.89-2.93. Upgraded fallow to ^2.93.0. The upgraded analyzer also surfaced two real dead-code findings that would fail the weekly regression job: examples/** is now ignored (the README marks it an intentionally standalone copyable sample), and spawnAndWait in the e2e harness is no longer exported (only used in-file). Audit and baseline regression both pass locally on 2.93.0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.
|
Warning Review limit reached
More reviews will be available in 1 minute and 48 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (7)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Preview removed for PR #33. |
Temporary debugging for the persisting worktree-creation failure: probe the exact git operation with stderr visible, and drop --quiet so fallow's hint line reaches the job log. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.
Root cause of the worktree failure, confirmed by the probe step: the repo's husky post-checkout hook (added 2026-06-11 in 23becc1) fires inside the fresh worktree that fallow's base-snapshot pass creates with 'git worktree add', dies there with exit 127, and fails the worktree creation. HUSKY=0 skips hook installation during pnpm install and short-circuits any installed shim. Probe step removed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.
With the worktree failure fixed (HUSKY=0), the audit now runs clean and the upload reached code scanning post-processing, which rejected it: 'locationFromSarifResult: expected at least one location'. fallow emits run-level notices as results without locations; code scanning requires one per result. Filter them in the normalize step - they still appear in the step summary. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
The Fallow check has failed on every run since it was introduced. This PR fixes it instead of removing it — the tool is genuinely useful (it gates dead code / complexity / duplication on changed files, and it had real findings on PR #31 that were ignored because the check was known-broken).
The two failure modes
1. SARIF upload rejection (every run). fallow emits one SARIF run per sub-analysis; since July 2025 the CodeQL upload action rejects multi-run files under one category. Fixed with a normalize step that merges the runs into one (same driver, rules deduped by id). The step only emits the merged file when the input parses as JSON — previously a crashed audit left an empty
fallow-audit.sarifthat passed thehashFiles()guard and failed the upload withUnexpected end of JSON input. Also bumpsupload-sarifv3 → v4 (v3 deprecated Dec 2026).2. Worktree creation failure (PR #32's run).
could not create a temporary worktree for base ref 'origin/main'— a fallow 2.88 base-snapshot fragility fixed upstream by the 2.89–2.93 audit lifecycle hardening (WorktreeCleanupGuard, cache reclaim). Upgradedfallow^2.88.1 → ^2.93.0.Dead-code regressions surfaced by the upgrade
The 2.93 analyzer flags two findings that would fail the weekly scheduled regression job:
examples/system-schema-federation/src/App.tsx— intentionally standalone copyable sample (per its README), now covered byexamples/**in.fallowrc.jsonignorePatternsspawnAndWaitintests/e2e/helpers/harness.ts— only used in-file;exportremovedVerification
fallow audit --changed-since origin/main --fail-on-issues: pass, 0 findingsfallow dead-code --fail-on-regressionagainst the existing baseline: 0 issues, delta +0🤖 Generated with Claude Code