[GH-ISSUE #2508] ci: exclude generated website translation staging from lint inputs #829

Closed
opened 2026-10-15 18:28:49 +00:00 by bsakaguchi · 0 comments
Owner

Originally created by @N0zoM1z0 on GitHub (Oct 13, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/2508

Originally assigned to: @N0zoM1z0 on GitHub.

Problem

At main 8b181716aca2cb467be499cba226abfb5ae19141, running website checks while lint scans the checkout can make npm run check:ci fail on generated translation staging output. scripts/website_i18n.py::build_translations deliberately renders an atomic replacement under website/.i18n-*/site; the completed website/_site/ is Git-ignored, but its temporary sibling is not. Oxlint therefore scans copied example JavaScript under an unrecognized path, where the authored examples’ CommonJS override does not apply. This also makes lint inventory depend on whether the staging directory exists.

Reproduction and evidence

Pinned Node 24.18.0 / npm 11.16.0, fresh dependency install in a separate clean worktree. Concurrent python scripts/website.py check and npm run check:ci produced five typescript(no-var-requires) errors in website/.i18n-6w39yqze/site/examples/notes-electron/{main,preload}.js. Remote static checks passed in their separate job; this is a reproducible local workflow race, not a claim that the remote CI run failed.

A deterministic isolated fixture copied the repository’s real .gitignore and .oxlintrc.json, then created:

  • website/.i18n-regression/site/examples/notes-electron/main.js containing a CommonJS require;
  • website/public/assets/authored-regression.js containing the same actual lint violation.

The real summary checker exited 1 with two errors and retained both diagnostics. Only the second file is authored input. No sleep, timing assumption, mocked checker, or website publication was needed.

Proposed bounded correction

Ignore only the translation writer’s website/.i18n-*/ generated directories alongside the existing final _site/ output. Keep authored website sources in the checker inventory and preserve the real source error, nonzero exit, and complete diagnostic report. A regression should prove both sides with actual checker execution and the repository’s actual ignore/config files. Do not relax lint rules, discard error reports, add retries, or serialize unrelated developer commands.

Validation scope

Run the regression before and after the ignore change, static/input-inventory tests, real concurrent website/lint execution, complete test discovery, documentation/Python checks, complete coverage with existing gates, and selected remote CI lanes. Preserve all existing cancellation/cleanup/identity/capacity tests. No whole-suite speedup is claimed from this fix.

Originally created by @N0zoM1z0 on GitHub (Oct 13, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/2508 Originally assigned to: @N0zoM1z0 on GitHub. ## Problem At main `8b181716aca2cb467be499cba226abfb5ae19141`, running website checks while lint scans the checkout can make `npm run check:ci` fail on generated translation staging output. `scripts/website_i18n.py::build_translations` deliberately renders an atomic replacement under `website/.i18n-*/site`; the completed `website/_site/` is Git-ignored, but its temporary sibling is not. Oxlint therefore scans copied example JavaScript under an unrecognized path, where the authored examples’ CommonJS override does not apply. This also makes lint inventory depend on whether the staging directory exists. ## Reproduction and evidence Pinned Node 24.18.0 / npm 11.16.0, fresh dependency install in a separate clean worktree. Concurrent `python scripts/website.py check` and `npm run check:ci` produced five `typescript(no-var-requires)` errors in `website/.i18n-6w39yqze/site/examples/notes-electron/{main,preload}.js`. Remote static checks passed in their separate job; this is a reproducible local workflow race, not a claim that the remote CI run failed. A deterministic isolated fixture copied the repository’s real `.gitignore` and `.oxlintrc.json`, then created: - `website/.i18n-regression/site/examples/notes-electron/main.js` containing a CommonJS require; - `website/public/assets/authored-regression.js` containing the same actual lint violation. The real summary checker exited 1 with two errors and retained both diagnostics. Only the second file is authored input. No sleep, timing assumption, mocked checker, or website publication was needed. ## Proposed bounded correction Ignore only the translation writer’s `website/.i18n-*/` generated directories alongside the existing final `_site/` output. Keep authored website sources in the checker inventory and preserve the real source error, nonzero exit, and complete diagnostic report. A regression should prove both sides with actual checker execution and the repository’s actual ignore/config files. Do not relax lint rules, discard error reports, add retries, or serialize unrelated developer commands. ## Validation scope Run the regression before and after the ignore change, static/input-inventory tests, real concurrent website/lint execution, complete test discovery, documentation/Python checks, complete coverage with existing gates, and selected remote CI lanes. Preserve all existing cancellation/cleanup/identity/capacity tests. No whole-suite speedup is claimed from this fix.
bsakaguchi 2026-10-15 18:28:49 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#829
No description provided.