From d42ac3078a54e45717a945cbf3d7644ce2160c43 Mon Sep 17 00:00:00 2001 From: vitaliytv Date: Wed, 22 Jul 2026 15:08:25 +0300 Subject: [PATCH] =?UTF-8?q?refactor:=20=D0=BC=D0=B0=D0=BA=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=20=D1=87=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=B9=20spec-=D1=80=D0=B5=D0=BF=D0=BE=20=E2=80=94=20?= =?UTF-8?q?=D1=82=D1=96=D0=BB=D1=8C=D0=BA=D0=B8=20md=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=BA=D0=BE=D0=BB=D1=83=20=D1=96=20md-=D0=BB=D1=96?= =?UTF-8?q?=D0=BD=D1=82=D0=B8;=20layers=20=D0=BF=D0=B5=D1=80=D0=B5=D1=97?= =?UTF-8?q?=D1=85=D0=B0=D0=B2=20=D1=83=20mt-rust?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Прибрано layers/ (рушій шарової документації переїхав у nitra/mt-rust, docs/layers.json лишається як конфіг+CRC-дані з новим $schema на mt-rust), tests/, весь JS-лінт/тест-тулінг (vitest, stryker, eslint, oxlint, jscpd, knip, licensee) і відповідні cursor-правила/скіли (n-bun, n-js, n-js-run, n-test, n-doc-files). package.json звужено до мінімального публікованого @7n/mt (лише devDeps, потрібні для md-лінту). .n-rules.json/CLAUDE.md/AGENTS.md синхронізовано з новим набором правил і скілів. Виправлено md-борг: 10 легітимних термінів/англіцизмів додано у .cspell.json (без правок контенту), MD025 (дублікат H1 через зайве поле title у frontmatter) прибрано у docs/overview/{direction,index}.md, MD051 (застаріле посилання на розділ M3 у перекладі) виправлено в docs/roadmap.en.md. Канон ga вимагав .github/workflows/lint-repo.yml (repo-wide lint) і worktree-канон .vscode/settings.json — додано/приведено у відповідність; .v8rignore і .oxfmtrc.json лишились (text-канон вимагає їх незалежно від JS). Co-Authored-By: Claude Fable 5 --- .changes/260722-1502.md | 5 + .claude/commands/n-doc-files.md | 8 - .cspell.json | 10 + .cursor/rules/n-bun.mdc | 113 -- .cursor/rules/n-doc-files.mdc | 49 - .cursor/rules/n-js-run.mdc | 175 --- .cursor/rules/n-js.mdc | 185 --- .cursor/rules/n-test.mdc | 278 ---- .cursor/skills/n-doc-files/SKILL.md | 100 -- .../workflows/{lint-js.yml => lint-repo.yml} | 21 +- .gitignore | 11 - .jscpd.json | 15 - .licensee.json | 14 - .n-rules.json | 6 - .oxlintrc.json | 400 ----- .pi/skills/n-doc-files/SKILL.md | 9 - .vscode/settings.json | 38 +- AGENTS.md | 8 - CLAUDE.md | 11 - README.md | 12 +- bun.lock | 1376 +---------------- docs/layers.json | 2 +- docs/overview/direction.md | 1 - docs/overview/index.md | 1 - docs/roadmap.en.md | 2 +- eslint.config.js | 25 - hk.pkl | 11 - knip.json | 40 - layers/CHANGELOG.md | 15 - layers/bun.lock | 208 --- layers/docs/index.md | 10 - layers/docs/stryker.config.md | 29 - layers/docs/vitest.config.md | 41 - layers/lib/build.mjs | 357 ----- layers/lib/cli.mjs | 199 --- layers/lib/crc.mjs | 42 - layers/lib/docs/build.md | 34 - layers/lib/docs/cli.md | 34 - layers/lib/docs/crc.md | 33 - layers/lib/docs/index.md | 16 - layers/lib/docs/layers.md | 45 - layers/lib/docs/llm.md | 37 - layers/lib/docs/md.md | 54 - layers/lib/docs/status.md | 31 - layers/lib/docs/translate.md | 34 - layers/lib/layers.mjs | 163 -- layers/lib/llm.mjs | 123 -- layers/lib/md.mjs | 350 ----- layers/lib/status.mjs | 226 --- layers/lib/tests/build-run.test.mjs | 225 --- layers/lib/tests/build.test.mjs | 105 -- layers/lib/tests/cli-llm.test.mjs | 113 -- layers/lib/tests/cli.test.mjs | 98 -- layers/lib/tests/crc.test.mjs | 59 - layers/lib/tests/docs/helpers.md | 34 - layers/lib/tests/docs/index.md | 9 - layers/lib/tests/helpers.mjs | 61 - layers/lib/tests/layers.test.mjs | 120 -- layers/lib/tests/llm.test.mjs | 86 -- layers/lib/tests/md.test.mjs | 224 --- layers/lib/tests/status.test.mjs | 227 --- layers/lib/tests/translate.test.mjs | 192 --- layers/lib/translate.mjs | 212 --- layers/package.json | 21 - layers/schemas/layers.schema.json | 36 - layers/stryker.config.mjs | 14 - layers/vitest.config.mjs | 20 - package.json | 14 +- stryker.config.mjs | 18 - tests/docs.test.mjs | 43 - vitest.config.mjs | 13 - 71 files changed, 67 insertions(+), 6884 deletions(-) create mode 100644 .changes/260722-1502.md delete mode 100644 .claude/commands/n-doc-files.md delete mode 100644 .cursor/rules/n-bun.mdc delete mode 100644 .cursor/rules/n-doc-files.mdc delete mode 100644 .cursor/rules/n-js-run.mdc delete mode 100644 .cursor/rules/n-js.mdc delete mode 100644 .cursor/rules/n-test.mdc delete mode 100644 .cursor/skills/n-doc-files/SKILL.md rename .github/workflows/{lint-js.yml => lint-repo.yml} (55%) delete mode 100644 .jscpd.json delete mode 100644 .licensee.json delete mode 100644 .oxlintrc.json delete mode 100644 .pi/skills/n-doc-files/SKILL.md delete mode 100644 eslint.config.js delete mode 100644 hk.pkl delete mode 100644 knip.json delete mode 100644 layers/CHANGELOG.md delete mode 100644 layers/bun.lock delete mode 100644 layers/docs/index.md delete mode 100644 layers/docs/stryker.config.md delete mode 100644 layers/docs/vitest.config.md delete mode 100644 layers/lib/build.mjs delete mode 100644 layers/lib/cli.mjs delete mode 100644 layers/lib/crc.mjs delete mode 100644 layers/lib/docs/build.md delete mode 100644 layers/lib/docs/cli.md delete mode 100644 layers/lib/docs/crc.md delete mode 100644 layers/lib/docs/index.md delete mode 100644 layers/lib/docs/layers.md delete mode 100644 layers/lib/docs/llm.md delete mode 100644 layers/lib/docs/md.md delete mode 100644 layers/lib/docs/status.md delete mode 100644 layers/lib/docs/translate.md delete mode 100644 layers/lib/layers.mjs delete mode 100644 layers/lib/llm.mjs delete mode 100644 layers/lib/md.mjs delete mode 100644 layers/lib/status.mjs delete mode 100644 layers/lib/tests/build-run.test.mjs delete mode 100644 layers/lib/tests/build.test.mjs delete mode 100644 layers/lib/tests/cli-llm.test.mjs delete mode 100644 layers/lib/tests/cli.test.mjs delete mode 100644 layers/lib/tests/crc.test.mjs delete mode 100644 layers/lib/tests/docs/helpers.md delete mode 100644 layers/lib/tests/docs/index.md delete mode 100644 layers/lib/tests/helpers.mjs delete mode 100644 layers/lib/tests/layers.test.mjs delete mode 100644 layers/lib/tests/llm.test.mjs delete mode 100644 layers/lib/tests/md.test.mjs delete mode 100644 layers/lib/tests/status.test.mjs delete mode 100644 layers/lib/tests/translate.test.mjs delete mode 100644 layers/lib/translate.mjs delete mode 100644 layers/package.json delete mode 100644 layers/schemas/layers.schema.json delete mode 100644 layers/stryker.config.mjs delete mode 100644 layers/vitest.config.mjs delete mode 100644 stryker.config.mjs delete mode 100644 tests/docs.test.mjs delete mode 100644 vitest.config.mjs diff --git a/.changes/260722-1502.md b/.changes/260722-1502.md new file mode 100644 index 0000000..d63775f --- /dev/null +++ b/.changes/260722-1502.md @@ -0,0 +1,5 @@ +--- +bump: minor +section: Changed +--- +Максимально чистий spec-репо: прибрано layers/ (переїхав у nitra/mt-rust), тести, JS-лінт-тулінг і відповідні cursor-правила/скіли; залишились лише docs/ і md-лінт-тулінг. Виправлено md-борг (cspell/markdownlint) на docs/architecture, docs/overview, docs/roadmap.en.md. diff --git a/.claude/commands/n-doc-files.md b/.claude/commands/n-doc-files.md deleted file mode 100644 index de30bb4..0000000 --- a/.claude/commands/n-doc-files.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -description: >- - Обовʼязковий крок задачі (як lint): для кожного зміненого/нового кодового файлу (js/mjs/ts/vue/py) JS-оркестрована генерація лаконічної поведінкової української md-документації у теку docs/ поряд із кодом, зі звіркою застарілості за CRC у frontmatter ---- - -# n-doc-files - -Виконай інструкції зі скілу `.cursor/skills/n-doc-files/SKILL.md`. diff --git a/.cspell.json b/.cspell.json index 6977e6a..be1a66d 100644 --- a/.cspell.json +++ b/.cspell.json @@ -27,6 +27,8 @@ "chrono", "clippy", "CLIS", + "Crowdsourced", + "Daemonization", "dalek", "deadbe", "deadbeefdeadbeefdead", @@ -48,6 +50,7 @@ "Kratos", "libc", "libmt", + "lifecycles", "mktemp", "mktree", "msvc", @@ -63,8 +66,10 @@ "oneshot", "pubkeys", "refspec", + "reimplementation", "reqwest", "rescan", + "rescans", "rmcp", "roundtrips", "rsplit", @@ -73,9 +78,11 @@ "sanit", "schemars", "serde", + "sessionability", "sonarjs", "SPKI", "subdirs", + "subpackages", "subsec", "svkozak", "taskish", @@ -388,6 +395,7 @@ "платформозалежному", "побрейнштормимо", "поведі", + "поверхень", "портабельна", "пофайловий", "превʼю", @@ -427,6 +435,7 @@ "резолвнуту", "резолву", "реімплементації", + "реімплементацію", "реімплементовано", "реімплементує", "реімплементується", @@ -524,6 +533,7 @@ "хелпери", "хендшейк", "хендшейку", + "хешів", "чанки", "чекаутиться", "чекаючий", diff --git a/.cursor/rules/n-bun.mdc b/.cursor/rules/n-bun.mdc deleted file mode 100644 index 0b05078..0000000 --- a/.cursor/rules/n-bun.mdc +++ /dev/null @@ -1,113 +0,0 @@ ---- -description: Bun як єдиний package manager у монорепо -globs: "**/package.json,**/bunfig.toml,**/bun.lock,**/bun.lockb" -alwaysApply: false -version: '2.1' ---- - -Проект використовує тільки Bun для керування залежностями та запуску скриптів. - -- `package.json`: - -```json -{ - "packageManager": "видали поле — Bun не потребує packageManager (bun.mdc)", - "dependencies": "кореневий package.json не повинен містити dependencies — додай у workspace-пакети (bun.mdc)" -} -``` - -- `bunfig.toml`: - -```toml -[install] -linker = "hoisted" -``` - -## Rego-gate: відповідність bunfig.toml канонічному шаблону - -Rego-пакет: `bun.bunfig` - -Цільовий файл: `bunfig.toml` (корінь репо). - -Шаблон (leaf-значення, які gate порівнює): [bunfig.toml.snippet.toml](./template/bunfig.toml.snippet.toml) - -Gate порівнює кожен leaf-ключ у кожній секції шаблону з фактичним значенням у `bunfig.toml`. Зайві ключі та секції — ігноруються. Deny-повідомлення виникає, якщо: - -- секція відсутня або не є обʼєктом (`bunfig.toml: відсутня секція [install]`) -- leaf-ключ має інше значення (`bunfig.toml: у секції [install] має бути linker = "hoisted"`) - -## Структура lockfile та менеджер пакетів - -Проект використовує **тільки Bun** для керування залежностями та запуску скриптів. - -**Заборонені lockfile / директорії** (мають бути відсутні у репозиторії): - -- `package-lock.json` -- `yarn.lock` -- `pnpm-lock.yaml` -- `.yarnrc.yml` -- `.yarn/` - -Якщо якийсь із цих файлів чи директорій існує — **видали** його. - -**Обовʼязковий lockfile:** `bun.lock` (має бути присутній у корені). - -**Заборонені команди менеджерів пакетів:** - -- `npm install`, `yarn`, `pnpm` і їх відповідники lockfile (крім `bun.lock`) - -**Дозволені команди:** - -- `bun i` -- `bun run