Skip to content

[CI] Reduce localization audit and relay setup work in CI - #25665

Merged
nwparker merged 1 commit into
mainfrom
nwparker/ci-localization-relay-work-20261005
Oct 6, 2026
Merged

nwparker merged 1 commit into
mainfrom
nwparker/ci-localization-relay-work-20261005

Conversation

@nwparker

@nwparker nwparker commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 2 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​104 0 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​104
Prod 4 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​72 $\color{#cf222e}{\Huge{\mathbf{−}}}$​9 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​63

ELI5

CI does less repeated work while keeping the existing checks and test cases.

What Changed

  • The localization audit classifies only AST nodes that can emit string findings and reuses its class-property exclusion set. It still walks every child and preserves JSX handling.
  • Extraction is skipped for changes consisting entirely of test source paths already ignored by the real extractor. Catalogs, configuration, assets, unknown extensions, mixed changes and both sides of renames still trigger the check. Tests pin the actual extraction configuration.
  • Relay integration skips desktop native preparation and the Electron archive cache. General unit shards retain their desktop setup; the relay dependency build and both existing test files stay the same.

Why

Removing work these checks do not use shortens runner occupancy without adding jobs or cutting coverage. Extraction already overlaps other preflight work, so conditional extraction savings do not equal full-PR savings.

Linked Issue

N/A — internal CI efficiency follow-up.

Visual Proof

N/A — CI scripts and workflow setup only; no application UI change.

Testing

  • Checked locally: 53 localization cases, 21 existing workflow contract cases, formatting and changed-code quality. All 16 relay cases also pass on local Node 24.20.0 and Node 26.7.0.
  • Automated tests added for template strings, child traversal, exclusions and conservative extraction routing.
  • Hosted localization comparison: three fresh alternating pairs saved a median 4.209 seconds / 46.1% per complete coverage audit. The original range was 0.252 seconds. The full 13-finding JSON inventories match byte-for-byte.
  • The same comparison avoided a median 27.628 seconds of extraction for an ignored-test-only change. Original gates actually passed; candidate extraction was explicitly not selected. All 53 cases passed, four deliberate audit faults failed their intended assertions, and promoting an ignored fixture into production source failed on the missing translation key.
  • Fresh hosted Node 26.10.0 relay proof: all 16 existing cases passed on exact candidate 9a0a311f; desktop native modules, Electron binary and Electron cache state were absent before and after. Artifact digest, raw outcomes, source bindings and actual terminal success independently verified.
  • Normal PR checks: repository guards, full static analysis/typecheck, all five unit shards, Node 24 relay integration and Verify passed on 9a0a311f.

The final branch preserves current main’s source-filter refactor. Both normal PR checks and the fresh Node 26 proof passed on 9a0a311f. Historical timing results above remain tied to their original pinned source.

The comparisons exclude setup, queues and other checks. No full-PR percentile or concurrency-limit improvement is claimed. Relay setup savings are unmeasured.

Review

Reviewed the source, raw case outcomes, inventory equality, timing arithmetic, fault detection and source restoration independently.

Agent skill upstream boundary

  • Not applicable; no upstream agent skill material copied.

Checklist

  • Small, focused CI changes.
  • Explained the behavior, mechanism and reason for the approach.
  • Visual proof marked N/A.
  • Self-reviewed for correctness, security and performance.
  • Cross-platform source parsing retained; relay setup is confined to its existing Linux job. SSH execution and application behavior are unchanged.
  • All applicable normal CI gates passed; specialized build lanes were correctly not selected for this change.

@nwparker
nwparker requested a review from brennanb2025 as a code owner October 5, 2026 19:31
@pullfrog

pullfrog Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

This run croaked 😵

The workflow encountered an error before any progress could be reported. Please check the link below for details.

Pullfrog  | Rerun failed job ➔ | View workflow run | via Pullfrog | 𝕏

@coderabbitai

coderabbitai Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: ace33550-52e9-4d1c-9123-619e614abb32
📥 Commits

Reviewing files that changed from the base of the PR and between ef9a12d and eef687821455720dd15074c4fd60932ba7d50d99.

📒 Files selected for processing (1)
  • config/scripts/audit-localization-coverage.mjs

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.


📝 Walkthrough

Walkthrough

The localization audit now classifies string literals and template literals, with tests for candidate collection and nested JSX traversal. Localization extraction scope now excludes recognized test-source paths and retains other configured paths. The relay integration job no longer requests native runtime preparation or Electron package caching.

Priority: ➖ Normal

Merge Risk: ⚪ Minimal · up to eef68

The localization checks preserve extraction for mixed or renamed production changes, and the relay tests do not appear to depend on the removed setup. No merge-blocking behavior issue is established; normal PR checks remain pending.

Architecture Summary

Architecture risk: 🔵 Low · up to ef9a1

The change affects 3 systems.

Changed systems: config, docs, src

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — config (service) was modified; 4 changed files map to changed impact.
  • observed — docs (service) was modified; 1 changed file maps to changed impact.
  • observed — src (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in config/scripts/audit-localization-coverage.mjs: Adds CLASS_PROPERTY_NAMES containing className and classNames for use by string classification.
  • observed — Modified behavior in config/scripts/audit-localization-coverage.mjs: classifyStringNode now checks the shared CLASS_PROPERTY_NAMES set instead of constructing an equivalent set at each call.
  • observed — Modified behavior in config/scripts/audit-localization-coverage.mjs: The visitor now runs string classification and reports its parts only for string literals, no-substitution template literals, and template expressions. Previously it attempted classification for every visited node.
  • observed — Modified behavior in config/scripts/audit-localization-coverage.test.mjs: Adds a test expecting a static template in a call to be reported as nondynamic and each visible text segment around template expressions to be reported as dynamic.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 5 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main changes: reducing localization audit work and relay setup work in CI.
Description check ✅ Passed The description covers the change, reason, testing, visual proof, review, upstream boundary, and checklist. It marks the linked issue as not applicable for an internal follow-up, consistent with the t…
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nwparker
nwparker force-pushed the nwparker/ci-localization-relay-work-20261005 branch from f660ee0 to ef9a12d Compare October 5, 2026 20:28

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes

  • Narrowed the relay integration job: switched native-runtime to none and dropped the Electron archive cache. The two relay tests only reach node:sqlite, ws, tweetnacl, pg and pure-JS runtime modules, so neither the compiled native addons nor the Electron binary are needed; the general unit shards keep their desktop setup.
  • Guarded localization classification in audit-localization-coverage.mjs so classifyStringNode runs only for StringLiteralLike, NoSubstitutionTemplateLiteral and TemplateExpression nodes, which is the exact set stringParts can emit from. Child traversal and JSX handling are unchanged, so the finding inventory is preserved.
  • Added an isIgnoredTestSource mirror of the extractor's test exclusions to localization-extraction-change-scope.mjs, so ignored-test-only changes skip extraction. The mirror is a subset of the extractor's ignore, and it skips nothing the extractor processes.
  • Pinned config/i18next.config.ts extract.input/extract.ignore in the routing test, with path matrices covering near-matches, catalogs, assets, mixed changes and both sides of source↔test renames.
  • Added exact-array coverage for templates, nested class properties, generated JSX and traversal into callbacks in audit-localization-coverage.test.mjs.
  • Merged a duplicate WorktreeRemovalTarget type-only import in delete-worktree-failure-toast.tsx (the post-f660ee0 source delta); behavior is identical and it clears the pre-existing lint failure.
  • Documented the October 5 localization gate work and its explicit limitations in docs/reference/ci-runner-efficiency.md.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

@nwparker
nwparker force-pushed the nwparker/ci-localization-relay-work-20261005 branch from ef9a12d to eef6878 Compare October 6, 2026 00:57
@nwparker
nwparker force-pushed the nwparker/ci-localization-relay-work-20261005 branch from eef6878 to 9a0a311 Compare October 6, 2026 01:43
@nwparker
nwparker merged commit d73efcc into main Oct 6, 2026
30 checks passed
@nwparker nwparker changed the title Reduce localization audit and relay setup work in CI [CI] Reduce localization audit and relay setup work in CI Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant