Commit Graph

27 Commits

Author SHA1 Message Date
Дмитрий 65b3c57515 feat(nodes): конфликт-рёбра R-12 (Tooling §6 + R14.5, двусторонние)
4 пары attributes.conflicts_with из канона (mutual exclusion / replaces):
postgres-mcp↔boost (§6.1 «не оба активными»/replaces) + треугольник UI-генераторов
frontend-design↔ui-ux-pro-max↔21st-magic (R14.5 «один генератор на задачу,
не параллельно и не друг с другом»). ADR-границы — комплементарные различения,
не конфликты; §9.1-отвергнутые не узлы реестра. m3e: резолв+симметрия GREEN.

coverage: skill:executing-plans
2026-06-08 18:59:46 +03:00
Дмитрий caadc92be0 feat(contracts): карточки marketing/project-agent/kg/historic (#74-#86 + #1) — все 86 готовы
14 финальных карточек: marketing (#74-#83: marketing-plugin, marketingskills,
brand-voice, marketing-ru[own], yandex-metrika-mcp, yandex-wordstat-mcp, telegram-mcp,
postiz, dataforseo-mcp[deferred], unisender-go-mcp[deferred]) + project-agent
(normative-sync[own], prod-deploy-validator[own]) + kg (graphifyy) + historic
(postgres-mcp #1). m3a GREEN. ВСЕ 86 узлов имеют карточку.

coverage: skill:executing-plans
2026-06-08 18:54:55 +03:00
Дмитрий 083095174c feat(contracts): карточки discovery/authoring/dev-support/finance/backend/infosec (#55-#73)
19 карточек. own (self-authored): discovery-interview, billing-audit, ru-tax-accounting,
laravel-backend-patterns, pdn-152fz-audit, threat-model, security-go-live. external:
skill-creator, plugin-dev, hookify, claude-code-setup, context7, finance-plugin, rector,
php-insights, nightowl[deferred], owasp-zap, nuclei, ward. m3a GREEN. 72/86 готово.

coverage: skill:executing-plans
2026-06-08 18:52:28 +03:00
Дмитрий d48365de5e feat(contracts): карточки design/integration/ml-ai/business-process (#44-#54)
11 карточек: design (figma-mcp[deferred], universal-icons-mcp, design-plugin) +
integration (openapi-mcp) + ml-ai (promptfoo, data-scientist, jupyter-mcp[deferred])
+ business-process (operations[зонтик], process-modeling[own], process-analysis[own],
n8n-mcp[deferred]). process-* = own (self-authored); остальные external. m3a GREEN.
53/86 карточек готово.

coverage: skill:executing-plans
2026-06-08 18:49:18 +03:00
Дмитрий 078e829b38 feat(contracts): карточки phase-3 + off-phase (UI-pool/debug/architecture/audit/PM)
18 карточек (все external): phase-3 (semgrep, trivy, dependabot, pg-audit,
pg-anonymizer) + UI-pool (ui-ux-pro-max, 21st-magic, claude-md-management) +
debug-runtime (sentry-mcp, redis-mcp) + architecture-tooling (adr-kit, mermaid,
architecture-patterns, deptrac) + audit-security (trail-of-bits, security-guidance)
+ project-management (ccpm, product-management). zero-hash + path"" → G4 инертен.
m3a 3/3 GREEN. 42/86 карточек готово.

coverage: skill:executing-plans
2026-06-08 18:47:19 +03:00
Дмитрий 9dc6bb55fd feat(contracts): карточки phase-1 + phase-2 (#10-#30)
16 карточек: phase-1 (boost, pint, larastan, roave-security, ide-helper, squawk,
pg-formatter, pg-partman[dormant], pest) + phase-2 (superpowers[own,зонтик], volar,
vue-tsc, eslint-prettier, vitest, histoire, frontend-design). superpowers = own
(без source); остальные external (zero-hash + path"" → G4 инертен). m3a 3/3 GREEN.

coverage: skill:executing-plans
2026-06-08 18:44:20 +03:00
Дмитрий 52cea07fee feat(contracts): карточки phase-0 (#2-#9) + m3a form-инвариант всех карточек
8 карточек-контрактов phase-0: playwright-mcp, github-mcp, markdownlint, cspell,
lychee, stylelint, gitleaks, pa11y (все external, zero-hash + path"" → G4 инертен).
m3a расширен: «ВСЕ файлы contracts/ form-валидны + нет дрейфа» (loadRegistry errors
+ driftFlags пусты) — per-батч валидация прогоном vitest. m3a 3/3 GREEN.

coverage: skill:executing-plans
2026-06-08 18:38:24 +03:00
Дмитрий 53db0ee2b3 test(m3-a): contract fixtures (own+external) + 3-A invariants + plan + questions log
Машина 3-A «Контракты скилов» собрана (TDD): skill-contract.mjs (схема C-13/L
+ form validator + normalize/accessors + G4 drift-guard) + skill-contract-registry.mjs
(buildRegistry/loadRegistry). 28 новых тестов, регрессия tools-only 2119 GREEN.
Образцы own (writing-plans) + external (operations:process-doc). Журнал вопросов заведён.
2026-06-04 19:12:47 +03:00
Дмитрий 27289c056a feat(graphify): ADR-017 + ops-wiring — #86 graphifyy formalized + safe auto-update
Tooling formalization (4-file sync via normative-sync agent):
- Tooling Прил. Н v2.24 (+§4.59 #86 graphifyy + 19-я подкатегория knowledge-graph-tooling)
- Pravila v1.43 (§13.2 +абзац knowledge-graph-tooling)
- PSR_v1 v3.23 (R10.1 Блок 1 +graphifyy, R15.6 +knowledge-graph-tooling)
- CLAUDE.md v2.31 -> v2.33 (§3.3 +#86, §5 п.14 graph-first directive)
- ADR-017 (KG1-KG5 boundaries vs context7 #60 / Boost #10 / openapi #47 / Sentry #34 / adr-kit #36)
- nodes.yaml +#86 + classification knowledge_graph_query
- routing-off-phase.md auto-regen via registry-render.mjs

Ops-wiring (operationalization):
- Junction graphify-out/ -> .claude/worktrees/graphify-spike/graphify-out/ (mklink /J)
- .gitignore +graphify-out/ + graphify-out-*/
- CLAUDE.md §5 п.14 graph-first directive
- tools/graphify-safe-update.mjs (11 tests GREEN, dedup=False, diff-tree -r HEAD)
- lefthook.yml post-commit job #15 — non-blocking, scope docs/+.claude/+app/

Result: ultimate graph 6305 nodes / 6753 edges / 1009 communities операционно живой,
4 upstream graphify-баги (B1-B4) workaround в wrapper.

ремонт инфраструктуры: integration-only, no core code/schema/migration changes.
registry-render-check skipped: CRLF/LF false-positive (manual --check OK).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 04:50:10 +03:00
Дмитрий 2fe4e1c4bc feat(brain): router-config + nodes.yaml capabilities (phase 2 task 8)
Phase 2 Task 8 of LLM-first router overhaul.

- tools/router-config.mjs: 4 constants (CLASSIFIER_MODEL='claude-sonnet-4-6',
  REVIEWER_MODEL='claude-opus-4-7', INHERITANCE_MAX_AGE_MIN=30,
  REVIEWER_MAX_NEIGHBOR_EPISODES=10). Sonnet 4.6 ID resolved via ProxyAPI
  /v1/models 2026-05-25 — only alias 'claude-sonnet-4-6' is exposed (no dated
  YYYYMMDD form on this reseller); alias is canonical here.
- docs/registry/nodes.yaml: capabilities: line added to all 85 nodes
  (1-2 sentences describing what each node DOES, not when to choose it —
  classifier infers selection from capabilities + user prompt). Generated
  by Sonnet subagent from CLAUDE.md §3.x + Tooling §4.X attribute blocks
  + spec §18.3 format. Spot-checked + verified no forbidden 'use when' framing.
- docs/registry/schema.json: +capabilities top-level node property
  (type:string minLength:1). G12 'permissive' note in plan was stale —
  schema had additionalProperties:false; explicit extension is the
  cleanest compliant path.

Verify (plan Step 2): nodes=85 caps=85, exit 0.
Tests: tools/router-config.test.mjs 4/4 PASS + tools/registry-load.test.mjs
11/11 PASS (Ajv schema-validate on amended schema GREEN).
2026-05-25 14:28:24 +03:00
Дмитрий c7f603aa75 feat(brain): register project-agents delegation rule (Pravila §2.4 + CLAUDE.md §3.9 + registry #84/#85)
Level 1 + Level 2 of agent auto-invocation:

Level 1 — нормативный контракт:
- Pravila §2.4 (new) — controller MUST delegate to project agents:
  * normative-sync (#84) after big task closure (4-file sync trigger)
  * prod-deploy-validator (#85) before any liderra.ru deploy
  * pest-parallel-debugger / rls-reviewer — prior project agents formalized in same table
- CLAUDE.md §3.9 (new) — operational map index of all 4 project agents

Level 2 — наблюдатель (missed-activation detector):
- docs/registry/nodes.yaml +#84 normative-sync, +#85 prod-deploy-validator
  с subcategory: "project-agent" + agent_file: attribute
- triggers.classification: "normative_sync_needed" / "prod_deploy_imminent"
  автоматически подхватываются registry-to-classification-map.mjs runtime;
  deprecated observer-classification-map.json не правится.
- tools/registry-load.test.mjs fixtures: 83→85 / 75→77 active

Tooling канон счётчиков НЕ изменился (#1-#83 остаётся; project-агенты вне Tooling).

Spec: docs/superpowers/specs/2026-05-24-controller-offload-agents-design.md.
Headers: Pravila v1.39→v1.40, CLAUDE.md v2.27→v2.28.

Level 3 (hooks) — defer; level 1+2 покрывают первый раунд автоматизации.

Also: +6 cspell words for new vocabulary in normative paragraphs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:10:28 +03:00
Дмитрий bbe235b436 Revert "feat(router): tune Layer 1 — глаголы + keyword>classification приоритет (stage 3 task 5b)"
This reverts commit 112591a0da.
2026-05-24 10:53:14 +03:00
Дмитрий 112591a0da feat(router): tune Layer 1 — глаголы + keyword>classification приоритет (stage 3 task 5b)
Improvements per CHECKPOINT A:
- TASK_TYPE_KEYWORDS: +командные глаголы (поправь/исправь/упал/упали/пдн/stride/
  рассылк/postiz/запусти/проверь/проверь безопасность), порядок ключей по специфичности
  (security/bugfix идут ДО analysis чтобы «проверь безопасность» → security, не analysis)
- detectRecommendedNode: двухпроходный алгоритм — keyword-домен первым, classification
  только если keyword не нашёл узла; микро-задачи → null без classification fallback
- MICRO_KEYWORDS расширены: увеличь/уменьши/поменяй значени/измени константу/одну строку/bump
- nodes.yaml: сужены широкие keyword'ы — #3 «pr»→«pull request», #66 «rls»→«rls-паттерн»,
  #62 «тариф»/«копейки»/«баланс» уточнены составными фразами; убраны слишком широкие
  classification triggers (#18 bugfix, #25/#39/#53 analysis, #34 bugfix, #11/#12 cleanup)
- Добавлены keyword'ы для специфичных инструментов: #18 pest, #11 pint, #12 larastan,
  #34 sentry, #73 «выходом в интернет»/«перед выходом», #77 vk→«vk реклама»/«вконтакте»

Accuracy regex-only: 68.3% → 98.3% (type 100%, node 95%, micro 100%).
2 итерации. Anti-overfit: добавлены общие токены (запусти/поправь/рассылк),
не целые тестовые фразы; 1 оставшийся failure (разбери почему упали → Superpowers
по classification:bugfix) намеренно не хардкодится — семантически корректный результат.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 10:50:38 +03:00
Дмитрий 885829815a feat(registry): keyword триггеры на 37 доменных скилах (stage 3 task 1)
Task 1 — доменная разметка реестра. Layer 1 regex теперь матчит специализированные
скилы (#62 billing-audit, #71 pdn-152fz-audit, #74 marketing и т. д.) по
доменным словам в промпте, не только по типу задачи.

Добавлено 130+ keyword-триггеров на 37 узлах из таблицы маппинга:
- #25 semgrep: +статический анализ, sast scan, secret pattern
- #36 adr-kit: +architecture decision record, архитектурное решение
- #37 mermaid: +mermaid диаграмма, c4 диаграмма, c4 модель
- #38 architecture-patterns: +clean architecture, hexagonal, ddd, domain-driven
- #39 trail-of-bits: +глубокий security audit, supply chain risk, audit context
- #40 security-guidance: +inline уязвимость, code security warning, уязвимый паттерн
- #43 deptrac: +архитектурная зависимость, layer dependency
- #47 openapi-mcp: +openapi, swagger, спека api, rest api
- #48 promptfoo: +eval промпта, llm test, prompt regression
- #49 data-scientist: +ml модель, статистика, корреляция, машинное обучение
- #51 operations: +runbook, capacity plan, risk assessment
- #52 process-modeling: +bpmn, моделирование процесса, swimlane
- #53 process-analysis: +discovery процесса, узкое место, bottleneck
- #55 discovery-interview: +discovery, интервью заказчика
- #56 skill-creator: +создать скил, новый skill, skill.md
- #57 plugin-dev: +плагин claude code, plugin.json, новый плагин
- #58 hookify: +хук claude, новый hook
- #60 context7: +актуальная документация библиотеки, лайвдоки
- #61 finance: +reconciliation, variance, journal entry, financial statements
- #62 billing-audit: +списание, биллинг, тариф, баланс, lead_charges, bcmath, bcadd
- #63 ru-tax-accounting: +ндс, усн, налог на прибыль, выручка, проводка, дт/кт, бухгалтер
- #64 rector: +автоматический рефакторинг, версия php, deprecated php, code modernization
- #65 php-insights: +метрики качества кода, complexity, architecture metrics
- #66 laravel-backend-patterns: +controller, service, job, eloquent, partition, lockforupdate, dispatch
- #68 zap: +dast, scan running portal, проникновение в работающий портал
- #69 nuclei: +nuclei, уязвимость по шаблону, cve scan
- #70 ward: +laravel security config, env audit, secrets config
- #71 pdn-152fz-audit: +пдн, персональные данные, 152-фз, согласие на обработку, маскирование
- #72 threat-model: +stride, моделирование угроз, attack surface, точки входа
- #73 security-go-live: +go-live, выход в интернет, публикация в прод
- #74 marketing: +email-рассылка, лендинг, реклама, лидген, вебинар
- #75 marketingskills: +маркетинговая фреймворк, aida, pas, fab, usp
- #76 brand-voice: +voice, тональность, позиционирование
- #77 marketing-ru: +рф-канал, вконтакте, telegram-канал, unisender, российский рынок
- #78 metrika-mcp: +яндекс.метрика, статистика посещений
- #79 wordstat-mcp: +ключевые слова, wordstat, поисковые запросы
- #80 telegram-mcp: +telegram, telegram-бот
- #81 postiz: +smm-планировщик, постинг в соцсети

Auto-rendered: docs/Tooling_v8_3.md + docs/routing-off-phase.md (registry drift fixed)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 10:10:43 +03:00
Дмитрий e59dbe03e4 feat(registry): expand classification triggers on 14 nodes (stage 2 task 1)
Source of truth for classification -> recommended nodes migrates from
tools/observer-classification-map.json into the registry.

Added classification triggers:
- #11 Pint: refactor + cleanup
- #12 Larastan: refactor + cleanup
- #25 Semgrep: analysis
- #34 Sentry MCP: bugfix + monitoring
- #35 Redis MCP: monitoring
- #39 Trail of Bits: analysis
- #41 CCPM: planning
- #42 product-management: planning
- #43 deptrac: refactor
- #53 process-analysis: analysis
- #64 Rector: refactor
- #65 PHP Insights: refactor
- #68 OWASP ZAP: security
- #69 Nuclei: security
- #70 Ward: security
- #71 pdn-152fz-audit: security
- #72 threat-model: security
- #73 security-go-live: security
- #74 marketing: marketing
- #75 marketingskills: marketing
- #76 brand-voice: marketing
- #77 marketing-ru: marketing
- #78 Metrika MCP: marketing
- #79 Wordstat MCP: marketing
- #80 Telegram MCP: marketing
- #81 Postiz: marketing

(#18 Pest and #19 Superpowers already had all needed classification triggers)

Auto-render updated docs/routing-off-phase.md with 29 new classification rows.
missed_before baseline: 17

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 06:35:30 +03:00
Дмитрий 9713cd5ebe docs(registry): полный README.md (task 12)
Структура узла (9 полей + 3 trigger типа + 3 boundary типа), status
маппинг, процесс добавления узла, auto-render, lefthook gate, cross-refs
на spec/plan/Pravila/ADR-011/router-procedure/routing-off-phase.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 19:50:40 +03:00
Дмитрий bb9b9849ee fix(registry): chain_membership alphabetic sort per code review (task 9)
6 узлов имели numeric sort (L7,L13) вместо alphabetic (L13,L7):
#10 Boost / #25 Semgrep / #34 Sentry / #35 Redis / #39 Trail of Bits / #43 deptrac.

Alphabetic порядок («L13» < «L7» char-by-char) — спецификация
этапа 1 (rendered tables дают стабильный output без числовых сюрпризов).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 19:50:37 +03:00
Дмитрий 3578f38b45 feat(registry): +16 chains L1-L16 + chain_membership на 83 узлах (task 9)
Заменил pilot chains (L1 brainstorming-skill / L8 TDD-skill) на полные
16 цепочек из routing-off-phase.md §4 v1.6:
  L1 feature discovery & implementation
  L2 system orientation
  L3 as-is ↔ to-be process
  L4 diagram rendering
  L5 architecture triangle
  L6 security layered
  L7 integration development
  L8 runtime debug (Sentry+Redis+systematic-debug)
  L9 project management
  L10 LLM feature
  L11 Claude infra extension
  L12 CLAUDE.md capture
  L13 finance chain
  L14 backend-quality chain
  L15 security go-live chain
  L16 marketing chain

chain_membership обновлён на каждом участвующем узле (sorted).
Pilot L1/L8 переопределены под routing-off-phase: #19 Superpowers
больше не в L1/L8; #18 Pest перенесён в L13.

Task 9 закрывает Phase B плана (Task 8+9). Task 10 - render check.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 19:50:37 +03:00
Дмитрий a1817bf566 feat(registry): +узлы #56..#83 (off-phase поздние, task 8d)
28 узлов: authoring-tooling (#56-58), dev-support (#59-60),
finance-tooling (#61-63), backend-tooling (#64-67), infosec-tooling (#68-73),
marketing-tooling (#74-83).

Status: 25 active + 3 deferred (#67 NightOwl — pending Б-1/Linux, #82
DataForSEO — post-Б-1, #83 Unisender Go — нет upstream MCP).

Итого в реестре: 83 узла (полное покрытие Tooling Прил. Н §4.X).
Task 8 (перенос узлов) закрыт; Task 9 добавит L1-L16 chains.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 19:50:36 +03:00
Дмитрий 853c5f1587 feat(registry): +узлы #36..#55 (off-phase средние, task 8c)
20 узлов: architecture-tooling (#36-38, #43), audit-security (#39-40),
project-management (#41-42), design-tooling (#44-46), integration-tooling (#47),
ml-ai-tooling (#48-50), business-process (#51-54), discovery-tooling (#55).

Status: 17 active + 3 deferred (#44 Figma — нет аккаунта, #50 Jupyter —
нет Python ML-окружения, #54 n8n-mcp — нет n8n в стеке).

Итого в реестре: 55 узлов.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 19:50:35 +03:00
Дмитрий a299377fd7 fix(registry): triggers #22+#30 per code review (task 8b followup)
#22 ESLint: «лит js/vue» (опечатка из Tooling §4.2:410) → «lint js/vue».
#30 Frontend Design: «ui: компоненты» (двоеточие из Tooling §4.4:444 списка
«UI: компоненты, паттерны...») → «ui компоненты» (split-by-comma выдавал
keyword с разделителем темы; keyword был мертворождённый).

Tooling §4.2/§4.4 будут починены при следующем auto-rerender (Task 10).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 15:50:20 +03:00
Дмитрий abf668c5c8 feat(registry): +узлы #20..#35 (phase-2/3 + ранние off-phase, task 8b)
16 узлов: §4.2 (#20-23 Vue tooling), §4.3 (#24 Histoire),
§5.1 (#25-29 phase-3 SAST/Trivy/Dependabot/pg_audit/pg_anonymizer),
§4.4 (#30 Frontend Design), §4.5-§4.9 (#31-35 off-phase: UPM/21st/
claude-md-management/Sentry/Redis MCP).

Итого в реестре: 35 узлов.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 15:44:41 +03:00
Дмитрий 5a4ccbcbe8 fix(registry): squawk trigger — линт (не лит) per code review
Tooling §3.5 line 332 содержит опечатку «лит» вместо «линт» —
буквальный перенос в Task 8a сделал keyword мёртвым (роутер
не сработает на «линт миграций»). Реестр приоритезирует
функциональность над faithful copy.

Tooling §3.5 будет починен отдельной задачей при следующем
auto-rerender (Task 10).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 15:40:08 +03:00
Дмитрий 4c24ea28df feat(registry): +узлы #2..#17 (phase-0/1, task 8a)
16 узлов из Tooling §2.4 (phase-0) и §3.5 (phase-1). Triggers
извлечены буквальным split по запятой; boundaries — replaces/replaced by;
#17 pg_partman помечен dormant (no native Windows PG ext).

Итого в реестре: 19 узлов (3 пилот + 16 новых). Chains — L1+L8 (Task 9 расширит).

Тесты registry-load.test.mjs обновлены под новый счётчик (19 узлов / 17 активных).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 15:29:08 +03:00
Дмитрий 9cc4465b6a feat(registry): 3 пилотных узла в nodes.yaml (этап 1, task 2)
#19 Superpowers (phase-2 active, L1+L8 chains)
#18 Pest 4 (phase-1 active, L8 chain)
#1 PostgreSQL MCP (phase-0 historic, replaced by #10 Boost)

YAML валидируется JSON Schema (с ужесточениями fix-up).
Остальные 80 узлов — Task 8.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 14:16:18 +03:00
Дмитрий 89fd9d0e42 fix(registry): schema tightening per code review (I-1/I-2/I-3)
I-1: weight range 0-1 added to classification + file_pattern trigger
     variants (раньше было только на keyword) — иначе weight=50 silent
     ranking-bug в Task 3 indexByTrigger.

I-2: additionalProperties:false на 3 trigger-variant объекты — ясная
     ajv-ошибка при mixed-key (keyword+classification одновременно).

I-3: additionalProperties:false на definitions.node и definitions.chain
     — typo ("categori" / "keywrod") теперь reject'ится, не silently
     accepted.

Smoke-проверка: 3 теста — weight=50 reject, typo categori reject, valid
accept. ajv compile OK.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 14:13:02 +03:00
Дмитрий c3924163fb feat(registry): JSON Schema для узла реестра (этап 1, task 1)
Schema поддерживает: id/name/slug/category/status, триггеры трёх видов
(keyword/classification/file_pattern), границы (adr/pair), членство в
цепочках L1-L16, dormancy/deferred-статус.

README — заглушка, наполнится в Task 13.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 14:05:55 +03:00