Skip to content
This repository was archived by the owner on Sep 11, 2026. It is now read-only.

fix(lint): зелений main — jscpd-дублікати тест-мосту auto-worktree і knip-конфіг lang-плагінів - #142

Merged
vitaliytv merged 1 commit into
mainfrom
claude/priceless-elion-8eab64
Jul 19, 2026
Merged

vitaliytv merged 1 commit into
mainfrom
claude/priceless-elion-8eab64

Conversation

@vitaliytv

Copy link
Copy Markdown
Member

Що зламалось на main

Два кластери червоних прогонів (не повʼязані з #141):

  1. Lint repo-wide — червоний з 18.07 ~16:33 (2ceb2b28). Перші прогони падали з exit 2 на транзієнтному GitHub API: tag_name missing for open-policy-agent/conftest (детектор adr/settings_json → ensure-tool/conftest). Далі, з d517975f…a680550e, стабільна причина — 14-15 knip-порушень від фаз виносу lang-python/lang-rust (rules/** не покриті knip-конфігом).
  2. Lint JS + repo-wide після d98ac9dc (фаза 5a) — +2 jscpd-дублікати тестів і +4 knip (воркспейс lang-js без конфігу, дубль-експорт jsProvider, @7n/rules-lang-js у root devDeps). Разом 2 jscpd + 19 knip.

Виправлення

jscpd — тіла тестів bringChangesBackToOriginal/removeAutoCreatedWorktree зібрано у спільний набір describeAutoWorktreeBridge (npm/scripts/utils/tests/auto-worktree-suite.mjs): auto-worktree.test.mjs ганяє його на прямому імпорті (branch main-lint), orchestrate.test.mjs — на реекспорті (main-taze).

knip:

  • воркспейс plugins/lang-js додано в knip.json (entry: provider, тести, stryker/vitest-конфіги);
  • lang-python/lang-rust: entry-глоби rules/*/lib/*.mjs, rules/*/*/main.mjs, rules/*/*/fix-*.mjs, rules/**/*.test.mjs (+doc-files/extractors.mjs для rust) — закриває «unused files/exports» для динамічно завантажуваних правил;
  • JSDoc-типи lint-surface у плагінах — пакетний шлях @7n/rules/scripts/lib/lint-surface/types.mjs замість битого відносного ../../../scripts/... (10 файлів, як у ci-github);
  • jsProvider — лише default-експорт (стиль rust/python-провайдерів), прибирає duplicates;
  • ignoreDependencies: @7n/rules-lang-js (root, workspace-лінк як інші плагіни), jscpd (npm — спавниться як bunx jscpd, knip цього не бачить), @earendil-works/pi-ai (llm-lib — devDep лише щоб задовольнити optional peer pi-coding-agent, статичних імпортів нема).

npm-tarball: !**/tests/** у files — тест-хелпер не публікується (перевірено: під tests/ немає жодного не-тестового файлу, що публікувався).

Плюс changelog-фрагменти (patch/Fixed) для npm, lang-js, lang-python, lang-rust і актуалізовані file-docs (рестамп CRC; для orchestrate.mjs CRC дрейфував ще з мерджу 5a).

Верифікація

  • bun npm/bin/n-rules.js lint js --no-fix → exit 0 (було 2 jscpd + 19 knip);
  • bun npm/bin/n-rules.js lint --no-fix, lint doc-files → exit 0;
  • vitest: 129/129 по зачеплених файлах (lang-js, auto-worktree, orchestrate, utils/tests).

Поза обсягом PR

npm-publish на d98ac9dc впав лише на першій публікації @7n/rules-lang-js@0.2.0: ENEEDAUTH (пакета ще нема в registry — 404). Новому пакету треба бутстрап trusted publishing/OIDC на npmjs (як свого часу платформним пакетам llm-lib) — з коду репо це не виправляється.

🤖 Generated with Claude Code

…19 knip-порушень

jscpd: тіла тестів bringChangesBackToOriginal/removeAutoCreatedWorktree
зібрано у спільний набір describeAutoWorktreeBridge
(npm/scripts/utils/tests/auto-worktree-suite.mjs); auto-worktree.test.mjs
ганяє його на прямому імпорті, orchestrate.test.mjs — на реекспорті.

knip: воркспейс plugins/lang-js додано в knip.json; entry-глоби rules/**
для lang-python/lang-rust (+doc-files/extractors.mjs); JSDoc-типи
lint-surface у плагінах через пакетний шлях @7n/rules/scripts/... замість
битого відносного; jsProvider — лише default-експорт; ignoreDependencies:
@7n/rules-lang-js (root), jscpd (npm, спавниться bunx-ом),
@earendil-works/pi-ai (llm-lib, optional peer для pi-coding-agent).

npm-tarball: tests/** виключено з files (тест-хелпери не публікуються).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vitaliytv
vitaliytv merged commit 1184780 into main Jul 19, 2026
7 checks passed
@vitaliytv
vitaliytv deleted the claude/priceless-elion-8eab64 branch July 25, 2026 05:03
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant