— Worktree artefacts from Superpowers using-git-worktrees skill
(Pravila §11.3 — может быть нестабилен на Windows + кириллица,
но директория появляется при попытках)
— Vitest --coverage output (app/coverage/), не должен попадать в commits
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Captures brainstorming output for two-way integration:
- Sharing model: один supplier-лид → много deal-копий клиентам Лидерры
- 3 supplier-проекта на источник (B1/B2/B3), shared между клиентами
- Dynamic limit adjustment через 20:30 МСК cron + AJAX rt-project-update
- Quota distribution Total/3 с приоритетом B1→B2 на остатке
- Instant FIFO routing по дате создания проекта клиента
- Резервирование обоих направлений: pending-changes queue + CSV reconciliation
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sprint 2 Phase A (modernization). Закрытие audit O-stack-01/02/03 + O-perf-07:
- O-stack-01: Pest 4 browser-tests scaffold. testsuite Browser в phpunit.xml,
Pest.php extend(...)->in('Browser'), tests/Browser/SmokeTest.php
(login-flow + deal-create-flow). На Windows native PHP плагин
pest-plugin-browser требует ext-sockets (отсутствует в стандартной
сборке) и при автозагрузке вызывает socket_create_listen() ДО старта
тестов, что ломает весь Pest. Поэтому плагин НЕ в require-dev,
тесты помечены ->skip(...) с инструкцией активации на Linux CI.
Скелет тестов в комментариях — на CI достаточно
composer require pestphp/pest-plugin-browser --dev + npx playwright
install + раскомментировать тела.
- O-stack-02: infection/infection ^0.32.7 в require-dev + app/infection.json
(minMsi=50, source: Http/Models/Services). composer mutation script.
Запуск отдельной задачей в CI (медленный). allow-plugins для
infection/extension-installer.
- O-stack-03: Laravel 13 string-based lazy-loading в routes/web.php —
убран блок use App\Http\Controllers\Api\* (16 импортов), все
ссылки заменены на строки 'App\Http\...\X@method'. Контроллеры
не загружаются автозагрузчиком при boot route'ов; класс резолвится
только при матче маршрута. Использован строковый синтаксис, а не
FQN-class — Pint default preset (fully_qualified_strict_types fixer)
сворачивает FQN-class обратно в use, на строки не действует.
- O-perf-07: Larastan result cache через tmpDir: .phpstan-cache в
phpstan.neon (cache-dir не дублируется флагом — phpstan не принимает
оба источника). lefthook job 6 (larastan) использует этот же
tmpDir автоматически. Ускорение инкрементальных pre-commit прогонов:
на правке одного файла — переанализ только зависящих, не всего
графа классов. .phpstan-cache в .gitignore.
Pest: 416/416 PASS + 2 skipped (browser smoke pending Linux CI).
Larastan: 0 errors above baseline.
Infection: vendor/bin/infection --version → 0.32.7.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Подготовка перед composer create-project laravel/laravel app
(стратегия B — Sail на Windows FS, monorepo).
Расширены Laravel-пути:
- /app/vendor/, /app/node_modules/, /app/public/build/
- /app/storage/{app/public,framework,logs}/, /app/bootstrap/cache/*
- /app/.env*, /app/auth.json, /app/.phpunit.cache/, /app/.pest.cache/
- /app/.idea/, /app/.vscode/, /app/Homestead.{json,yaml}
- !/app/storage/logs/.gitkeep, !/app/bootstrap/cache/.gitkeep
(Laravel требует пустые папки)
Также игнорируем лендинг/ — локальный дизайнерский трек
(TZ_landing_v1_0.md + README + ZIP-handoff ~9.5 МБ для дизайнера),
не должен случайно попасть в основной репо.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Получен 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>
After move from c:\Users\KDV\Projects\lidpotok (Win10) to
c:\моя\проекты\портал crm\Документация (Server 2022, 07.05.2026):
- c--Users-*/ — JSONL-сессии Claude со старой машины (~24 МБ)
- .tmp/ — рабочая папка Playwright MCP
Гипотеза «репо удалён» при первом 404 от fine-grained PAT была ошибкой:
PAT просто не имел Repository access. После восстановления через Git DB API
все 24 коммита истории на месте.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 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>
После первого демо Playwright MCP в корне создался скриншот
demo-01-login-fullpage.png и временная директория .playwright-mcp/.
Добавил соответствующие паттерны в .gitignore, чтобы будущие screenshot'ы
и DOM-snapshot'ы не попадали в коммиты.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>