fix(ci): remove broken lint step from release workflow (exit 127) - #48
Conversation
Release run 33826226004 on tag v1.0.9 failed at the "Lint" step in "Build + e2e-smoke" with `sh: 1: eslint: not found` (exit 127). `eslint` is not a devDependency and no eslint config exists anywhere in the repo, so `npm run lint` (-> `eslint src/`) could never pass. Remove the broken Lint step. Coverage is not reduced: the workflow already runs a separate `Type-check` step (`npm run type-check` -> `tsc --noEmit`) immediately after, using the real typescript devDependency and tsconfig.json that already exist. That step can genuinely pass or fail, unlike the eslint step it replaces. package.json's `scripts.lint` entry is left in place: TESTING.md's machine-executed test-contract still references `npm run lint` as an optional (`required: false`) suite, so removing the script would break that caller. Verified in an isolated worktree: `npm ci --include=dev && npm run type-check` currently FAILS with 148 pre-existing TS errors (mostly @wave-av/sdk API surface drift plus 3 missing `../../types/index.js` modules), unrelated to this change and out of scope for it.
|
Your free trial PR review limit of 300 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI. |
|
ⓘ Qodo reviews are paused because your workspace is out of credits. Ask your workspace admin to add credits to resume reviews. Manage billing |
There was a problem hiding this comment.
Sorry @yakimoto, this account has used its review budget of 2,500,000 diff characters for the last 7 days.
You can request another review in 10 hours and 46 minutes by commenting @sourcery-ai review.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_4b471347-baa0-4d1e-aaa6-f394b83c7efd) |
|
Warning Review limit reachedNext included review available in 41 minutes. View limit detailsLimit details: You’ve used the included review currently available. Your 91 included PR review attempts over the past 7 days set your current allowance at 1 review per hour. Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Team Run ID: 📒 Files selected for processing (1)
Comment |
Reviewer's guide (collapsed on small PRs)Reviewer's GuideThe release workflow no longer invokes the permanently broken lint script; it proceeds directly from dependency installation to the existing type-check gate, converting an infrastructure failure into actionable CI feedback without adding an unconfigured linter or weakening error handling. Flow diagram for the updated release verification gateflowchart LR
Install[Install dev dependencies] --> TypeCheck[Type-check: npm run type-check]
TypeCheck --> Test[Test]
Test --> Build[Build]
Build --> E2E[E2E smoke test]
Lint[Removed lint step: eslint not found] -. eliminated .-> TypeCheck
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
Note Automatic reviews are paused because your team has used its included automatic processing for this billing period (headroom scales with your seat count). You can still comment "Gitar review" to run one anytime, and automatic reviews resume on their own by October 1. Add seats for more headroom. Code Review ✅ ApprovedRemoves the broken OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Gitar |
ApprovabilityVerdict: Would Approve Macroscope's review found this PR approvable — This is a one-file CI-only cleanup that removes an always-failing ESLint invocation while preserving type-checking, tests, builds, scans, smoke verification, and the existing publish dependency chain. It does not change CLI runtime behavior, package contents, or deployment targets. Not approved because:
Review your spending limits in Billing settings. You can add or adjust custom eligibility rules. Learn more. |
Resolves the .github/workflows/release.yml conflict from PR #45/#46/#48 landing on main in parallel: - Keeps main's node-version/cache node-setup form and its dist-tag-aware `npm publish --tag $DIST_TAG` step (from VER-001/#46) in the publish job. - Keeps this branch's new npm->=11.5.1 floor check in the verify job. - Drops the redundant 'Verify tag matches package.json version' step in the verify job that main already removed (the publish job's own tag-vs-version check covers it; this is not undoing landed work). - Appends this branch's verify-publish job after the dist-tag publish step, fixing 'needs: release' -> 'needs: publish' since the workflow's actual job id (post-union with PR #17) is 'publish', not 'release'. - No Lint step is reintroduced (#48 removed it for exit-127 reasons).
Root cause
Release run 33826226004 on tag
v1.0.9failed at theLintstep of theBuild + e2e-smokejob:package.json'sscripts.lintis"eslint src/", buteslintis notdeclared in
devDependencies(which holds only@sentry/node,@types/inquirer,@types/node,@types/ws,tsup,typescript,vitest), and there is no eslint config file anywhere in the repo(
git ls-tree -r origin/main --name-only | grep -i eslintreturns nothing).The install step is
npm ci --include=dev, so this is not a stripped-dev-depsproblem — the binary genuinely was never declared.
npm run linthas neverbeen runnable on this repo; it only surfaced now because PR #17's new release
workflow is the first thing that actually invokes it.
The fix
Removed the broken
Lintstep from.github/workflows/release.yml'sverifyjob. The workflow already runs a separateType-checkstep(
npm run type-check->tsc --noEmit) immediately after whereLintusedto be, using the real
typescriptdevDependency andtsconfig.jsonthatalready exist. Coverage is not reduced by this change — the type-check
gate was already present in the job; only the step that could never pass
(exit 127, always) is gone. Comment references to "lint" elsewhere in the
workflow file (job-level summary comments) were updated to match.
This is not weakening a gate. The removed step could never pass under any
circumstance — it was a wall, not a gate, since the binary it invoked did not
exist and never has. No
continue-on-errorwas added, nothing is skipped,and the step was not left in place with a fake pass condition. The one gate
that remains where
Lintwas —Type-check— is a check that can genuinelypass or fail, so removing the dead step makes gate 2 real rather than
weaker.
What was NOT done, on purpose
config would either lint nothing (a fake gate) or surface a large unknown
set of violations across
src/— neither belongs in a release-unblockchange.
package.json'sscripts.lintentry was left in place. Pergit grep -n "npm run lint" origin/main,TESTING.md's machine-executedtest-contract (
testmd run) still declares alintsuite(
cmd: npm run lint,required: false). Since something else still callsit, it was not removed, only the workflow step that called it was changed.
npm run type-checkcurrently fails (see below) — silencing those errors by loosening
tsconfig would hide a real defect instead of fixing it.
Verification (in an isolated worktree, not the shared checkout)
npm ci --include=devsucceeded (288 packages, 17 pre-existing auditfindings unrelated to this change).
npm run type-checkFAILED withexit code 2 and 148
tscerrors — this is a real, separate, pre-existingdefect and is reported here rather than hidden:
@wave-av/sdk@2.0.14API-surface drift: dozens ofsrc/commands/**/index.tsfiles call SDK methods/properties(
PrismAPI.create,QrAPI.scan,SearchAPI.query,PipelineAPI.status,VaultAPI.recordings,ZoomAPI.*, etc.) that no longer exist on thecurrent SDK types, plus several request-shape mismatches
(
CreateQRRequest,CreateClipRequest,SynthesizeRequest, ...).TS2307: Cannot find module '../../types/index.js'fromsrc/lib/auth/device-flow.ts,src/lib/config/manager.ts, andsrc/lib/output/index.ts.This is out of scope for this PR (a release-CI-unblock change) and is not
touched here. It means: after this PR merges, the release workflow will
still fail — it will fail at
Type-checkwith real, actionable errorsinstead of failing at
Lintwith an infrastructure error. That is strictlybetter (a real signal instead of a permanent wall) but the release is not
yet green; the SDK-drift/missing-module errors need their own fix before
v1.0.9can ship.Operator action required after merge
Once this merges to
main, thev1.0.9tag must be re-cut against thenew main for the release workflow to retry (tags are immutable pointers;
pushing this fix alone does not re-trigger the tag-push-triggered release).
That is the repo operator's action, not something this PR does — no git tag
was created, moved, or deleted as part of this change.
Note
Low Risk
CI-only change that removes a step that could never pass; release verification still runs type-check, tests, build, and e2e-smoke.
Overview
Unblocks the tag-triggered release pipeline by removing the
Lintstep (npm run lint/eslint src/) from theverifyjob in.github/workflows/release.yml, which was failing with exit 127 becauseeslintis not installed and there is no ESLint config in the repo.Workflow comments and gate summaries are updated so Gate 2 is described as install → type-check → test → build → e2e-smoke (no lint). An inline NOTE documents why the step was deleted instead of using
continue-on-erroror adding ESLint as a dependency.Type-check, unit tests, build, and the tarball e2e-smoke remain unchanged;
package.json'slintscript is untouched.Reviewed by Cursor Bugbot for commit 7dfb276. Bugbot is set up for automated code reviews on this repo. Configure here.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by Sourcery
Remove the non-functional lint gate from the release workflow so releases proceed to the existing type-check, test, build, and smoke-test verification steps.
Bug Fixes:
Enhancements:
CI: