ci: least-privilege lint job and correct engines.node floor - #108
Conversation
`eslint .` executes .eslintrc.cjs and every installed ESLint plugin, so the reusable lint workflow must not inherit the caller's contents:write / id-token:write token. Pin the job to `permissions: contents: read`, which makes lint.yml byte-identical to the rest of the plugin fleet. Also raise engines.node to >=22.0.0: that is the documented ether plugin floor, and >=18 is a false claim now that eslint-config-etherpad@5 pulls a dependency that excludes Node 18. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013S4pYSjwUsiZtdtMMpW7bw
These repos were the pilots for the lint repair and merged before eslint-config-etherpad@5.0.2 was published, so they still pinned ^4.0.5 while the rest of the fleet moved to ^5.0.0. Bump them and regenerate the lockfile so every ether plugin lints against the same config. `pnpm run lint` is clean on 5.0.2 (no new errors), so no source changes were needed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013S4pYSjwUsiZtdtMMpW7bw
|
ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing |
PR Summary by QodoHarden lint permissions and align Node and ESLint requirements
AI Description
Diagram
High-Level Assessment
Files changed (3)
|
Code Review by Qodo
1. Strict installs reject the lint stack
|
Brings this repo into line with the rest of the ether plugin fleet. Its lint
repair PR merged before two later fixes existed, so it is one of only three
repos missing them.
1. Least-privilege lint job (Qodo: High)
.github/workflows/lint.ymlis now byte-identical to the fleet copy. The newjob-level block is:
Without it the reusable lint job inherits the caller's
contents: write+id-token: writetoken while runningeslint ., which executes.eslintrc.cjsand every installed ESLint plugin — repo-controlled code thatshould never be handed a write/publish-capable token.
2.
engines.nodefloor>=18.0.0->>=22.0.0. That is the documented ether plugin floor, and>=18is now a false claim because
eslint-config-etherpad@5pulls a dependency thatexcludes Node 18.
3.
eslint-config-etherpad^4.0.5->^5.0.0This repo was one of the lint-repair pilots and merged before 5.0.2 was
published, so it stayed on 4.x while the fleet moved to 5.x. Bumped and
lockfile regenerated.
pnpm run lintis clean on 5.0.2 (exit 0) with no sourcechanges needed, so there is no lint-fix commit.
No behaviour changes.
🤖 Generated with Claude Code
https://claude.ai/code/session_013S4pYSjwUsiZtdtMMpW7bw