Skip to content

fix(ci): lint-js — не кешувати node_modules + фікси нових unicorn-правил#1

Merged
vitaliytv merged 2 commits into
mainfrom
claude/focused-hodgkin-88176d
Jul 12, 2026
Merged

fix(ci): lint-js — не кешувати node_modules + фікси нових unicorn-правил#1
vitaliytv merged 2 commits into
mainfrom
claude/focused-hodgkin-88176d

Conversation

@vitaliytv

Copy link
Copy Markdown
Member

Проблема

lint-js.yml падає на main з 2026-07-11 (перший червоний прогін — коміт ae2c983), недетерміновано: «Cannot find module 'ajv/lib/refs/json-schema-draft-04.json'», «Parsing error: Unexpected token 'Vue'» або 12 lint-помилок.

Причини (дві незалежні)

  1. Отруєний кеш node_modules. actions/cache з fallback restore-keys: <os>-bun- відновлював node_modules, зібраний від іншого bun.lock (останній зелений прогін — 2026-07-06, до бампу cursor 14). bun install --frozen-lockfile поверх такого дерева доставляє лише дельту пакетів і не рематеріалізовує вкладені копії на кшталт node_modules/eslint/node_modules/ajv@6 (eslint 10 потребує ajv 6, тоді як hoisted корінь — ajv 8). Post-крок кешу зберігав уже бите дерево під новим ключем — падіння самопідтримувалось. Чиста інсталяція (rm -rf node_modules && bun i --frozen-lockfile) відтворити помилку не дає — вкладена копія матеріалізується коректно; ламає саме інкремент поверх чужого дерева.
  2. 12 справжніх помилок нових unicorn-правил (eslint 10.7 / бамп @nitra/eslint-config), до яких CI не доходив, вмираючи раніше.

Виправлення

  • setup-bun-deps: з кешу прибрано node_modules, кешується лише ~/.bun/install/cache (інсталяція з теплого кешу ~2 с; зміна path міняє cache version — старі отруєні записи більше не відновляться).
  • Виправлено всі 12 порушень: top-level await замість .then/.catch у app/bin/task.mjs, async persist() з try/catch, перенос декларації після early exit у format-ledger.js, some(!…) замість !every(…), vi.stubGlobal('localStorage', …), ' '.repeat(3); у claims.test.js — точковий disable unicorn/better-dom-traversing (false positive: children там — вузли task-дерева, не DOM).

Перевірка

Локально зелені: oxlint, eslint ., jscpd, knip, vitest (79/79), дельта-lint @nitra/cursor — 0 порушень. Доки перегенеровано, change-файли додано.

🤖 Generated with Claude Code

vitaliytv and others added 2 commits July 12, 2026 08:43
…равил

Кеш CI відновлював node_modules від старого bun.lock (restore-keys), а
bun install --frozen-lockfile поверх не рематеріалізовував вкладені копії
(eslint/node_modules/ajv) — звідси «Cannot find module 'ajv/…'» та
«Unexpected token 'Vue'». Тепер кешується лише ~/.bun/install/cache.

Також виправлено 12 порушень нових unicorn-правил eslint 10.7, до яких
CI раніше не доходив.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…n-88176d

# Conflicts:
#	owner/src/components/docs/OwnerScreen.md
@vitaliytv
vitaliytv merged commit 197099c into main Jul 12, 2026
4 of 5 checks passed
@vitaliytv
vitaliytv deleted the claude/focused-hodgkin-88176d branch July 12, 2026 06:37
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