Commit Graph

13 Commits

Author SHA1 Message Date
Дмитрий 3c13cc5d64 docs(rules): третий аудит нормативки — закрытие 13 находок (CLAUDE.md v1.86 + PSR_v1 v1.7 + Tooling v1.15)
P0 (4) — арифметические конфликты в CLAUDE.md, прошли мимо второго аудита:
- §3 header «Карта 28 инструментов» → «33» (header застрял с pre-FD эпохи)
- §3.4 header «(+5, итого 28)» → «итого 29» (после #30 в фазу 2)
- §3.3 footer «из 30 номеров минус #1 = 29» → «33 номеров: 29 phase-active + 3 off-phase + 1 historic»
- §6 «Активно: 19 инструментов из 29» (vs раскладка 9+8+7=24) → «24» в обоих местах

P1 (5) — sync stale `+`-refs после второго аудита:
- PSR_v1 шапка: «CLAUDE.md v1.84+/Pravila v1.9+» → «v1.86+/v1.10+»
- Tooling шапка: «Pravila v1.9+/PSR_v1 v1.5+/CLAUDE.md v1.84+» → «v1.10+/v1.7+/v1.86+»
- CLAUDE.md §5 п.5 «PSR_v1 v1.5+» → «v1.7+»

P2 (2) — внутренние несогласованности:
- PSR_v1 line 4/856 «slot уровня 2.5» → «уровня 2b» (описка внутри changelog'а v1.6)
- CLAUDE.md §3.3 #33 «вне Pravila §13» → «вне UI-пула §13» (Pravila §13.2 v1.10 включает claude-md-management как infrastructure subsection)

Sync-правки в connected files:
- README.md + README_АРХИВ_v8_5.md «карта 28 инструментов» → «33»
- Tooling §11.5/§12 «не входят в 28 инструментов» → «33 формализованные позиции»

Через `/claude-md-management:claude-md-improver` с cross-impact-анализом перед каждой группой правок. Pravila v1.10 без изменений (cross-refs к нему уже актуальны).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 06:32:17 +03:00
Дмитрий e2de8bf8a2 docs(narrative): sync versions + Histoire 21/43 + cross-refs (audit P1-01/03/06/08 + P2-03 + post-A)
Phase D Спринта 1 «Hygiene». Закрытие аудита 2026-05-09 (b6ae8dd):
- P1-01: README.md обновлён (CLAUDE.md ссылка с 28→29 инструментов и 5→6 уровней;
  Tooling v1.0→v1.10; Pravila v1.2→v1.6; PSR_v1 v1.3 добавлен; schema v8.5→v8.11
  (56 базовых + 12 партиций / 97 индексов / 38 RLS / 5 функций / 13 триггеров)).
- P1-03: CLAUDE.md Histoire 21/28 → 21/43 (заменено все вхождения, включая §0 и §3.3).
- P1-06: Pravila §13.9 cross-ref на Plugin_stack_rules_v1 теперь с (v1.3).
- P1-08: Tooling §2.1 п.7 Stylelint раздел дополнен версией stylelint-config-standard ^40.0.0.
- P2-03: CLAUDE.md F-K cross-link на Plugin_stack_rules_v1.md#история-версий.
- post-A: метрики schema в CLAUDE.md синхронизированы до v8.11 (97 / 38).

Также фикс битой ссылки в spec'е Sprint 1 (lychee 1 error → 0): относительный путь
до Plugin_stack_rules_v1.md из docs/superpowers/specs/ исправлен на ../../

Bump версий:
- CLAUDE.md v1.81 → v1.82
- Pravila v1.6 → v1.7
- Tooling Прил. Н v1.10 → v1.11

Все правки CLAUDE.md/Pravila/Tooling — через claude-md-management:claude-md-improver
(CLAUDE.md §5 п.10). README.md и spec — обычные правки.

lychee: 0 errors. markdownlint: 0 errors. cspell на web/v8/* — out-of-scope.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:36:36 +03:00
Дмитрий 59f8ca04bb phase1(hooks-fix): сужение pre-push lychee + 2 битых ссылки + allowlist demo HTML
При первом запуске pre-push hook'ов после установки lefthook (`4eee06f`)
обнаружились 3 проблемы — все легитимны, не в самом lefthook'е:

1. **gitleaks-full-history** ловил 42 хита `ru-phone-unmasked` в HTML-концептах
   handoff Платона (liderra_v8_handoff/concepts/v8_*.html и web/v8/v8_*.html).
   Это ДЕМО-данные для визуализации, не реальные ПДн. Добавлены в allowlist
   .gitleaks.toml: `liderra_v8_handoff/concepts/.*\.html` + `web/v8/.*\.html`
   + `app/composer.lock`.

2. **lychee-links** ловил 21 ошибку «Cannot resolve root-relative link» на
   ссылки `/login`, `/register`, `/legal/*` в HTML-концептах. Эти маршруты
   появятся только в фазе 2+ (Vue+Vuetify реализация). Сужен glob
   pre-push lychee — выкинут `web/**/*.html`. Дополнительно добавлены
   `liderra_v8_handoff/concepts` и `web/v8` в .lychee.toml exclude_path
   как защита для других вариантов запуска.

3. **2 РЕАЛЬНЫХ битых ссылки** в narrative — спасибо lychee, нашёл:
   - `docs/CRM_bp-gr_Инструкция_v8_5.md:6128` ссылался на `brandbook.md`,
     но этот файл удалён 08.05.2026 (заменён на `liderra_v8_handoff/docs/
     BRANDBOOK_v2.md` v8 Forest). Исправлен относительный путь.
   - `README.md:88` ссылался на `docs/README_АРХИВ_v8_4.md`, но переименован
     в `_v8_5.md` коммитом `4ffc19a` от 07.05.2026. Поправлено + bump v8.4→v8.5
     в подписи.

Финальный smoke-test после правок:
  - gitleaks detect (full history): «no leaks found»
  - lychee на narrative .md: 122 OK / 0 Errors / 5 Excluded

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 12:00:15 +03:00
Дмитрий 887abf444e rebrand(v8.5→Лидерра): дизайн-handoff Платона v8 Forest + Лидпоток→Лидерра
Получен handoff-пакет liderra_v8_handoff/ от дизайнера Платона
(kpd9363@gmail.com) от 07.05.2026 — v8 Forest. Заказчик 08.05 решил
применить только в части дизайна, имени, логотипа. Функционал, состав
страниц и правила (CTO-11, click-wrap, SSO break-glass, 14 статусов
воронки) — без изменений (источник — ТЗ v8.5/schema v8.5).

Что сделано:

- Массовая замена Лидпоток→Лидерра (с учётом падежей: Лидерры/Лидерре)
  в 33 файлах (449 вхождений) — все .md/.sql/.json/.toml/.yml/.txt/.html,
  кроме исторических упоминаний внутри liderra_v8_handoff/
- Удалён docs/brandbook.md v1.1 — заменён на BRANDBOOK_v2.md из handoff
- Скопированы 13 концептов liderra_v8_handoff/concepts/v8_*.html в
  web/v8/. Удалены старые web/01-login.html, 02-dashboard.html,
  03-deals.html, index.html (палитра v1.1 deprecated)
- CLAUDE.md v1.0→v1.1: §0 (BRANDBOOK_v2 + DEVELOPER_HANDOFF в источниках),
  §2 (палитра Forest, Inter+JBM, Lucide), §5 п.6 (anti-pattern Inter
  снят — в Forest Inter наш основной шрифт), §6 (13 концептов в web/v8/)
- Реестр Открытые_вопросы_v8_3.md v1.12→v1.13: добавлена запись о
  ребрендинге + 4 точечных расхождений handoff vs ТЗ (статусы воронки,
  click-wrap чекбоксы, SSO fallback, axe violations)
- package.json/package-lock.json: name lidpotok→liderra

4 расхождения handoff vs ТЗ (НЕ применены, источник истины — ТЗ/schema):

1. 14 «обобщённых» статусов в BRANDBOOK_v2 §3.6 ≠ 14 slug'ов в
   schema.sql:2076 (совпадает 2 из 14: «Переговоры», «Оплачено»).
   Источник — schema/ТЗ §6.4 (реселлерская модель из аудита crm.bp-gr.ru,
   6 системных + 8 настраиваемых статусов).
2. 3-й click-wrap в v8_login.html («маркетинг-опционально») ≠ ТЗ §1.5/§4.1
   («согласие на ПДн», обязательное, OPEN-Ж-3).
3. SSO в v8_admin.html («локальный 2FA fallback») ≠ ТЗ OPEN-И-13
   (break-glass super_admin, локальный 2FA выключен).
4. Заявление «axe-core 4.10.2 — 0 violations» в README handoff — локально
   Pa11y 9.1.1 + axe нашёл 81 violation на 10/13 HTML (преимущественно
   color-contrast на декоративных separator'ах с --ink-disabled).
   Чисто: settings/errors/palette_options.

Что НЕ включено в коммит:
- лендинг/TZ_landing_v1_0.md — untracked, не моя работа в этой сессии
- .tmp/ — gitignored

Что осталось (для следующих сессий):
- Возможное переименование GitHub-репо CoralMinister/lidpotok → liderra
  (отдельное решение заказчика)
- Опционально: обратная связь Платону по 4 расхождениям handoff vs ТЗ

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 07:11:58 +03:00
Дмитрий 4ffc19a7d2 docs(narrative): v8.4 → v8.5 — реализация 27 решений аудита C
Завершает блок реализации v8.5 после schema-коммита 038a884.

Переименования:
- docs/CRM_bp-gr_Инструкция_v8_4.md → _v8_5.md
- docs/README_АРХИВ_v8_4.md → _v8_5.md

Новые подразделы narrative (in-place):
- §10.8: Антифрод дублей (Биз-19), routing (Биз-17, CTO-16), scoring
  (Биз-22), регион (Биз-23), эскалация (OPEN-И-25), call-recordings
  задел (OPEN-И-26)
- §12.5.5: TTFR-SLA (Биз-18), UTM-когорты (CTO-14)
- §14.8: Append-only audit hash chain (OPEN-И-15), report_jobs export
  trigger (OPEN-И-20)
- §17.9: Telegram-бот (Биз-20), эскалация-нотификации (OPEN-И-25),
  late waiting_payment alert (Биз-24)
- §19.10.11–12: DNS-rebinding pin-IP (OPEN-И-18),
  marketing.conversion event (Биз-21)
- §22.13: SSO Yandex 360 + JIT + break-glass (OPEN-И-13), SET LOCAL
  test plan (CTO-13), RLS WITH CHECK + REVOKE (OPEN-И-14), Sentry
  PII whitelist+regex (OPEN-И-16), anti-DDoS Nginx+SmartCaptcha+
  blacklist (OPEN-И-21), TTL secrets 365d (OPEN-И-17/19),
  two-person impersonation (CTO-15+Ю-9), audit hash chain link
- §23.10.11: SSO login UI, break-glass dashboard, two-person UI,
  152-ФЗ ст.21 hard-block UI
- §7.1: метрики обновлены 53→54/86→91/33→34/3→4/12 триггеров/4 функции

Прил. И Часть Г (новая) — 9 операционных процедур:
- Г.1 RLS smoke-test через PgBouncer (CTO-13, BLOCKER для фазы 1)
- Г.2 Cron audit:verify-chain (OPEN-И-15)
- Г.3 Cron secrets:notify-expiring (OPEN-И-17)
- Г.4 Anti-DDoS (Nginx + Yandex SmartCaptcha + disposable-blacklist)
- Г.5 Per-tenant DEK + crypto-shred (OPEN-И-22)
- Г.6 pg_anonymizer для staging (OPEN-И-24)
- Г.7 Yandex 360 SSO setup (OPEN-И-13)
- Г.8 Cron leads:escalate-stale (OPEN-И-25)
- Г.9 Cron payments:notify-stale (Биз-24)

Кросс-ссылки обновлены: CLAUDE.md, README.md, web/index.html,
README архива (переименован v8_4→v8_5). Schema.sql v8.5 шапка
указывает на narrative v8_5.md.

cspell-words.txt: +SPE, +gethostbyname.

Lint+spell чистые. Архитектурно фаза 1 (composer create-project)
разблокирована — требуется только Г.1 (e2e-тест RLS) в спринте 1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 18:09:22 +03:00
Дмитрий 038a884daf schema(v8.5): реализация 27 решений аудита C — DDL + CHANGELOG + метрики
Закрывает все 27 решений из Открытые_вопросы v1.12 §13.10 на уровне
schema.sql. Narrative-обновление (§10/§12.5.5/§14/§17/§19.10/§22/§23.10/
Прил.И) — отдельным коммитом.

Метрики v8.4 → v8.5:
- 53 → 54 таблицы (+1: project_user_assignments)
- 86 → 91 индекс (+5)
- 34 → 35 RLS-политик (+1) + WITH CHECK на 2 существующих
- 34 → 35 ENABLE RLS (+1)
- 3 → 4 роли (+crm_audit_writer)
- 0 → 12 триггеров (5×2 audit append-only + 1 report_jobs export
  + 1 deals lead_score)
- 0 → 4 функции (audit_chain_hash, audit_block_mutation,
  report_jobs_log_export, calc_lead_score)
- +26 колонок: suppliers.quality_score; saas_admin_users (sso_provider,
  is_break_glass); impersonation_tokens (second_approver_id,
  second_approval_at); tenants (api_key_limit, telegram_bot_token);
  projects (assignment_strategy, ttfr_target_minutes); users
  (telegram_user_id); deals (assigned_at, escalated_count, duplicate_of_id,
  utm_source/medium/campaign/content, region_code, city,
  time_in_form_seconds, lead_score); +log_hash на 5 audit-таблицах
- ALTER api_keys.expires_at SET NOT NULL DEFAULT NOW()+365d
- REVOKE ALL на 6 saas-таблицах от crm_app_user

P0 (8) разблокировали триггер фазы 1 (composer create-project):
- Биз-17 (manual routing), Биз-18 (TTFR 15м), Биз-19 (24ч-дедуп без списания)
- CTO-13 (e2e SET LOCAL+PgBouncer тест в спринте 1; план в narrative)
- OPEN-И-13 (OIDC+JIT+break-glass), OPEN-И-14 (WITH CHECK + REVOKE)
- OPEN-И-15 (append-only audit + hash chain + crm_audit_writer)
- OPEN-И-16 (Sentry whitelist+regex; конфигурация в Laravel, не DDL)

Self-review: 0 orphan-FK, 0 дубликатов CREATE TABLE, метрики совпадают
с grep'ами; markdownlint+cspell чистые.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 17:46:46 +03:00
Дмитрий f1ea6a15a6 fix(config): B-1 — конфигурационные находки аудита B (P0+P1)
- cspell-words.txt: удалено сломанное `ofеrtу` (кириллица в латыни,
  пропущено мимо словаря; нормальные `оферта`/`оферты` уже есть).
- .gitignore: `.playwright-mcp/` → `**/.playwright-mcp/` (артефакт может
  появиться в любом подкаталоге, не только в корне).
- pa11y.config.json: добавлен `web/03-deals.html` (готовый прототип №03,
  ранее не попадал в a11y-check).
- lefthook.yml: pre-push +lychee-links — битые ссылки ловятся до push,
  как и было задумано (Прил. Н §1, в комментарии было, в jobs не было).
- CLAUDE.md §4: `gitleaks detect` / `gitleaks protect` → `./bin/gitleaks.exe ...`
  (на Windows бинарь в `bin/`, не в PATH).
- README.md: подпись `Прил. Л v0.1 от 05.05.2026` → `v0.4 от 06.05.2026`,
  синхронизация с таблицей версий (последняя запись v0.4).

Линтеры (markdownlint, cspell на затронутых .md) — чисто.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 23:31:14 +07:00
Дмитрий 4321251bc1 docs(archive): README v8.3.3 → v8.4 (синхронизация с narrative v8.4)
- Переименование: docs/README_АРХИВ_v8_3.md → _v8_4.md.
- Шапка: версия v8.3.3 → v8.4, состав 18 → 17 файлов в docs/
  (минус удалённый Plan_narrative_v8_4.md).
- Эволюция версий: добавлена запись v8.4 (06.05.2026 поздний вечер,
  финал narrative + переименование + schema v8.4 + регистр v1.10).
- Главный narrative: имя файла _v8_3 → _v8_4, размер ~310→~340 КБ,
  описание расширено под все 13 разделов плана v8.4.
- Прил. А (schema.sql): v8.3 → v8.4, метрики 51/81/31 → 53/86/33,
  +outbound_webhook_subscriptions/deliveries (закрытие тех-долга §19.10).
- Прил. Е (Открытые_вопросы): v1.6 → v1.10 (40/5🟦/5⏸, 0 P2).
- «Что осталось мне (Claude)»: v8.4 narrative  выполнено;
  Прил. Л — 3/8 готово, осталось 04..08.
- История версий: добавлена строка v8.4.
- Обновлены кросс-ссылки в CLAUDE.md (§0), README.md, db/CHANGELOG_schema.md,
  docs/Tooling_v8_3.md, docs/CRM_bp-gr_Инструкция_v8_4.md.
- Исторические упоминания старого имени в Объединённый_конспект.md,
  Analiz_originala_v8_3.md, Pravila_raboty_Claude_v1_1.md и в записях
  прошлых версий — оставлены намеренно (правило §4.4 правил работы
  Claude — прослеживаемость решений).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 19:35:40 +07:00
Дмитрий c8db9a26c4 docs(narrative): v8.4 финал (§23.10 + 13/13 + rename _v8_3 → _v8_4)
- §23.10 Админка SaaS: расширен с 5 до 10 подсекций — Биз-16
  (колонка «Желаемое × факт сегодня» с цветовым кодированием),
  Ю-2 (поставщики, дашборд маржи, сверка счетов), OPEN-Д-5/И-1
  (incidents_log: 8 типов × 4 severity, 24ч SLA уведомления РКН для
  data_breach по 152-ФЗ ст.18.1 ч.3.1), Прил. Д (workflow обращений
  субъектов ПДн с 30-дневным SLA), таблица преимуществ vs оригинал.
- Шапка narrative: убрано «in progress», блок «Что нового в v8.4»
  дополнен §23.10. Подвал: имя файла v8.4.
- Переименование: CRM_bp-gr_Инструкция_v8_3.md → _v8_4.md.
- Кросс-ссылки обновлены: CLAUDE.md (§0/§2/§6/§8 — версии, метрики
  схемы 53/86/33, счётчик прототипов 3/8), README.md (версии, статусы
  прототипов, репо CoralMinister), db/schema.sql, db/CHANGELOG_schema.md,
  web/index.html.
- .lychee.toml: exclude приватного github.com/CoralMinister/lidpotok
  (404 анонимно — норма).
- Plan_narrative_v8_4.md удалён (план v8.4 выполнен полностью, 13/13).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 19:14:53 +07:00
Дмитрий 04f38b1e57 docs(archive): add Прил. Н + CLAUDE.md, sync archive to v8.3.3
Новые файлы:
- CLAUDE.md (корень) — оперативная карта для Claude Code: приоритет правил
  (5 уровней), стек проекта, карта 28 инструментов «когда что использовать»,
  10 запретов, текущая фаза.
- docs/Tooling_v8_3.md (Прил. Н v1.0) — единый реестр 28 инструментов
  разработки, скиллов Claude Code, MCP-серверов и плагинов в 4 фазах
  (фаза 0 — текущая, +1 Laravel, +2 Vue/Vuetify, +3 pre-prod). §6 конфликты
  и решения, §7 приоритет правил, §9 что НЕ ставим (10+ запретов), §10
  процедура перехода между фазами, §11 Windows + PowerShell.

Обновления версий:
- docs/Pravila_raboty_Claude_v1_1.md → v1.2: §4.8 «Шифры приложений» —
  Н занят (12 шифров: А, Б, В, Г, Д, Е, Ж, З, И, К, М, Н).
- docs/README_АРХИВ_v8_3.md → v8.3.3: добавлена строка истории, обновлены
  таблицы состава (18 файлов в docs/+db/ + CLAUDE.md), добавлена ветка
  чтения «Claude / разработчик».
- docs/Открытые_вопросы_v8_3.md → v1.9 (через шапку, упоминание Прил. Н).

Точечные правки в архиве:
- 6 фиксов MD028 (пустые строки внутри blockquote → заменены на `>`):
  docs/Админка_SaaS_v8_2.md (1), docs/Приложение_Б_В_БД_диаграммы_v8_3.md (3),
  docs/Oferta_i_Politika_v8_2.md (2).
- 1 фикс MD056 (недостающая колонка в таблице) в
  docs/Аудит_partii_12_15_originala_v8_3.md:1085.
- 2 опечатки (русские буквы в латинских словах):
    docs/README_АРХИВ_v8_3.md: `соft-deleted` → `soft-deleted`
    docs/CRM_bp-gr_Инструкция_v8_3.md: `raтe limit` → `rate limit`
- Авто-форматирование trailing whitespace и blanks-around-lists
  через markdownlint --fix (хук .claude/settings.json).

Baseline после коммита:
- markdownlint: 0 errors
- cspell: 0 unknown words
- lychee: 24 OK / 0 errors
- stylelint: 0 errors
- gitleaks: no leaks

Архитектурных изменений: 0. Состав архива: 18 файлов в docs/+db/ + CLAUDE.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 04:45:22 +07:00
Дмитрий b5cda8886d Restructure: split files into docs/web/db folders 2026-05-06 01:39:59 +07:00
Дмитрий 5e2f2303f1 Add repository link section to README 2026-05-06 01:16:33 +07:00
Дмитрий 44212bb2ce Initial import from Claude project 2026-05-06 00:08:27 +07:00