Commit Graph

1044 Commits

Author SHA1 Message Date
Дмитрий ebd94f3fc5 docs(security): go-live трекер — все блокеры B1-B6 сняты (GO), B2 anon на проде; gitignore lychee/walk артефактов
Accessibility (Pa11y live) / a11y (push) Has been cancelled
SAST — Semgrep / Semgrep SAST scan (push) Has been cancelled
2026-06-18 06:13:56 +03:00
Дмитрий 8ad9e1d17f fix(test): routing-snapshot today+tomorrow в CsvWebhookRaceTest + PII на slack/papertrail/stderr
C: LeadRouter.activeSnapshotDate после 21:00 МСК = завтра; снимок только на сегодня не активен -> снимки на обе даты. A: PII-процессор на остальные лог-каналы, 6/6.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 21:37:41 +03:00
Дмитрий 7f5288726a feat(security): PII-scrubbing процессор логов — Medium go-live
Monolog PiiScrubbingProcessor (телефоны/email -> [PHONE]/[EMAIL]) + ScrubPii tap на single/daily в config/logging.php. Pest 6/6 GREEN. Sentry-scrubbing (OPEN-И-16) не реализуем: sentry-laravel не установлен — open-item.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 20:43:28 +03:00
Дмитрий b81a372e8f feat(security): webhook DNS-rebind пиннинг + аддитивный HMAC supplier-webhook — edge/P2 go-live
WebhookUrlGuard::safeDeliveryIp один резолв + CURLOPT_RESOLVE пиннинг в test(); supplier-webhook принимает HMAC X-Webhook-Signature как альтернативу URL-секрету + secretless-маршрут. Аддитивно, backward-compat. 6 новых тестов GREEN; 5 падений webhook-сюиты pre-existing (Phase-3 B-regex + CsvWebhookRaceTest), подтверждено baseline без моих файлов.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 20:21:11 +03:00
Дмитрий a0048448e1 docs(superpowers): спеки и планы церемоний синка квинтета v2.47 и починки lychee-ссылок
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 20:04:11 +03:00
Дмитрий 8bb72b3430 fix(pdn): anon-валидные маски без ::jsonb/::inet-каста + применено на прод 17.06.2026 — B2 закрыт
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 20:02:51 +03:00
Дмитрий 518d71e81f feat(security): per-IP route-throttle на auth-эндпоинтах — P1 go-live
Именованные лимитеры auth-login/auth-2fa/auth-password (perMinute 20 by IP) в AppServiceProvider; throttle-middleware на login/forgot/reset/2fa-verify/recovery в web.php. Закрывает per-IP объёмный перебор. Pest tests/Feature/Auth 97/97 GREEN.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 19:56:23 +03:00
Дмитрий f18491b987 docs: починка 12 битых относительных .md-ссылок долг lychee — корректные относительные пути и снятие ссылок на отсутствующие цели
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 19:55:37 +03:00
Дмитрий 39c96bdc3b docs: синхронизация cross-ref версии CLAUDE.md в квинтете на v2.47 — PSR и Tooling актуальные записи указывают v2.47
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 19:55:28 +03:00
Дмитрий cd51eca4ba docs: закрыты блокеры B3 и B6 на проде liderra.ru, SAAS_ADMIN_TEST_BYPASS=false и APP_DEBUG/APP_ENV проверены фактом
Co-Authored-By: Claude Opus 4.8
2026-06-17 19:36:57 +03:00
Дмитрий abb349c012 feat(pdn): правила маскирования ПДн pg_anonymizer на проде — SECURITY LABEL на ПДн-колонки + план применения — закрытие остатка B2
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 19:33:58 +03:00
Дмитрий 380aedb04e feat(security): CSP Report-Only под Vue+Vuetify SPA — 2-я ZAP Medium go-live
Report-Only политика в middleware SecurityHeaders; Pest 6/6 GREEN.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 19:30:51 +03:00
Дмитрий 150f10c54a docs(security): хвосты go-live аудита — снять дубли секций, статус блокеров B1/B4/B5, ward-report в .gitignore
Accessibility (Pa11y live) / a11y (push) Has been cancelled
SAST — Semgrep / Semgrep SAST scan (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 18:25:59 +03:00
Дмитрий 25f9016505 docs(superpowers): отчёт осмотра портала + баг-доки стены (walk/read-block) — для claude-brain
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 17:54:50 +03:00
Дмитрий d1976c9ccf feat(pdn): ретеншен ПДн удалённых лидов — анонимизация soft-deleted сделок — F-P1
152-ФЗ блокер B1/F-P1: телефоны и имена контактов soft-deleted сделок не
вычищались и хранились бессрочно. Добавлена плановая команда-ретеншен.

Команда pd:scrub-soft-deleted-deals анонимизирует phone/contact_name/phones
сделок с deleted_at старше N дней; N из system_settings
pd_scrub_soft_deleted_deals_days, по умолчанию no-op — юр.срок не зашит в код.
Значения затирания идентичны PdErasureService. Cross-tenant через
pgsql_supplier BYPASSRLS, идемпотентно, summary-запись в pd_processing_log
системным актором. Планировщик ежедневно 03:30 МСК с heartbeat.

Схема v8.41: partial index deals_deleted_at_index ON deals deleted_at WHERE
deleted_at IS NOT NULL для дешёвой выборки; счётчик индексов 120 на 121.

F-T2 проверен: /api/admin за middleware saas-admin fail-closed 503 — кодовой
правки не требует.

TDD: 4 Pest ScrubSoftDeletedDealsCommandTest GREEN. Escape-per-write — печать
церемонии не опечатывала план.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 17:24:48 +03:00
Дмитрий 84936929eb feat(security): middleware безопасных HTTP-заголовков — закрытие ZAP Medium anti-clickjacking
X-Frame-Options SAMEORIGIN + X-Content-Type-Options nosniff + Referrer-Policy на все web-ответы (go-live аудит 17.06). CSP вынесен отдельно (SPA Vue+Vuetify). TDD-тест на публичном /.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 17:12:32 +03:00
Дмитрий e13b9e7bea docs(security): аудит доведён до конца + поправка по верификации кода + баги стены
Прогон всех 5 сканеров: gitleaks 0 / Semgrep 0 / Ward 2(dev) / Nuclei 0(medium+) / ZAP 0(high). pg_anonymizer не установлен (факт). Три ложных P0 сняты проверкой кода (E9/E18/admin/SSRF закрыты). Вердикт NO-GO держат F-P1, pg_anonymizer, прод-.env. Трекер открытых вопросов + файл-баг (чтение под стеной, десинк F-J, зацикл наставника) для claude-brain.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 16:25:23 +03:00
Дмитрий e693cfc6b7 docs(security): go-live security gate отчёт 17.06 + уроки прогона в wall-guide
Прогон security-go-live на main, локальная цель 127.0.0.1:8000 — вердикт NO-GO.
Блокеры: pg_anonymizer не установлен (ПДн в дампах), F-P1 (телефоны лидов не
вычищаются по сроку), P0 из STRIDE (SAAS_ADMIN_TEST_BYPASS / SSRF webhooks-test /
открытые ручки). Nuclei чисто (1 info php). Semgrep/ZAP — PENDING.

Гайд стены: новый раздел уроков — читать контекст до печати плана, запасной
канал вставки в чат, недетерминизм судьи и рассинхрон указателя F-J.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 14:34:39 +03:00
Дмитрий de56d955ae docs: GUIDE стены - Фикс 1 теперь подписанные вердикты участников
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 13:34:38 +03:00
Дмитрий cf813c1091 feat: wall - подписанные строки вердиктов роутера наставника и судьи во всплытии
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 13:16:32 +03:00
Дмитрий 2f8427091d feat(deals): карточка сделки показывает Город — F1
Поле Город добавлено в секцию Параметры DealDetailBody со значением deal.city,
прочерк при пустом. TDD: 2 теста в DealDetailBody.spec.ts. Чистое отображение,
денежных полей не касается.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:40:49 +03:00
Дмитрий 77a16c07f7 chore(router): судья/наставник/роутер переведены на deepseek-v4-flash
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 11:08:15 +03:00
Дмитрий 42972627f7 chore(lychee): исключить мёртвый github-аккаунт CoralMinister из link-check
Accessibility (Pa11y live) / a11y (push) Has been cancelled
GitHub CoralMinister suspended - ссылки на него (compare/actions-runs в ПИЛОТ/handoffs/plans) мертвы навсегда. Exclude расширен с .../CoralMinister/liderra до всего аккаунта .../CoralMinister/. Прочие 77 битых relative-ссылок в доках - известный отдельный долг root-relative путей, отдельная задача.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 08:32:09 +03:00
Дмитрий 9fe5b5f229 imitation phase1 merge
# Conflicts:
#	app/app/Console/Commands/PhoneRangesImportCommand.php
#	app/app/Jobs/RouteSupplierLeadJob.php
#	app/app/Services/LeadRegionResolver.php
#	app/database/migrations/2026_05_31_100000_create_phone_ranges_and_resolution_log.php
#	app/tests/Feature/Console/PhoneRangesImportCommandTest.php
#	app/tests/Feature/Jobs/RouteSupplierLeadJobTest.php
#	app/tests/Feature/PartitionsCreateMonthsTest.php
#	cspell-words.txt
#	docs/observer/STATUS.md
#	tools/enforce-powershell-gate.test.mjs
#	tools/enforce-router-gate.mjs
#	tools/enforce-router-gate.test.mjs
#	tools/enforce-tdd-gate.test.mjs
#	tools/enforce-tdd-real-test-verifier.mjs
#	tools/enforce-tdd-real-test-verifier.test.mjs
#	tools/enforce-verify-record.test.mjs
#	tools/mcp-tool-classifier.test.mjs
#	tools/shell-content-rules.test.mjs
2026-06-17 08:03:35 +03:00
Дмитрий 66d52649c4 docs+chore: gitea-рубуки + support-тикет + .gitignore local-clutter
Accessibility (Pa11y live) / a11y (push) Has been cancelled
SAST — Semgrep / Semgrep SAST scan (push) Has been cancelled
docs/ops/gitea (5 доков миграции и бэкапа Gitea) + docs/support (YC SSH-тикет) в историю. .gitignore: локальные бэкапы settings.json, эталон-снимки, Ctemp-дампы - чтобы не висели в untracked.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 07:30:30 +03:00
Дмитрий a6aaaa5518 F-5 eslint: 0 problems
DealDetailDrawer: default для tenantId (require-default-prop). AdminPdSubjectRequestsView: v-slot:[...] в #[...] (v-slot-style, auto-fix). 2 region-спека: disable-комментарий no-explicit-any для VueWrapper-кастов F-3 - по конвенции 9 соседних тестов.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 07:22:08 +03:00
Дмитрий 5bd2dbc3f4 F-5 cspell: словарь продуктовых терминов + lefthook cspell-exclude
npm run spell = 0. cspell.json ignorePaths += superpowers/observer/archive, ~80 терминов в cspell-words.txt. lefthook cspell-джоб: exclude superpowers + авто-STATUS.md, чтобы авто-генерируемый дашборд не ронял коммиты.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 07:15:04 +03:00
Дмитрий a94e554a69 F-3 type: 3 vue-tsc TS2345 в region-тестах - cast findComponent к VueWrapper any + props - vue-tsc чисто
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 04:38:55 +03:00
Дмитрий 0ecfeb06a6 F-2 refactor: цвет stat-success вынесен из инлайна в scoped-правило по прецеденту .sep - тест TenantsStatsHeader зелёный
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 03:35:48 +03:00
Дмитрий 57f554ea7c F-2 a11y Tenants: label поиска по ИНН + AA-класс stat-success счётчика активных - 2 теста зелёные, регрессия 946 passed
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 03:17:32 +03:00
Дмитрий 3d37dad084 docs session 2026-06-16: bug-file deploy-commit-not-executable-under-wall для claude-brain + удалены черновики spec v1 v2 деплоя F-1
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 16:51:07 +03:00
Дмитрий 33c5fbccbd docs deploy: F-1 CVE vendor-апдейт выполнен на проде - спека v3 + план + runbook
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 16:31:57 +03:00
Дмитрий 293edb3e07 docs session 2026-06-16: F-4 baseline, gitea push, wall push lesson, mentor bug, F-1 deploy runbook, lead-region already-in-main finding, etalon update 2026-06-16 15:57:06 +03:00
Дмитрий ac2a3df2e2 docs router-mentor: оглавление + рецепт escape + дедуп 2026-06-16 15:37:07 +03:00
Дмитрий 1e524022cc docs router-mentor: gitea backup health-probe ceremony spec+plan, server verified alive
Accessibility (Pa11y live) / a11y (push) Has been cancelled
SAST — Semgrep / Semgrep SAST scan (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 13:50:05 +03:00
Дмитрий 317125e36a chore: regenerate larastan baseline - absorb lead-region drift
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 13:43:12 +03:00
Дмитрий 0f6c9f0e6e docs router-mentor: wall guide refresh - fix1/2/3 + F-J/F-K + commit reality
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:55:38 +03:00
Дмитрий 8e7a7803c1 fix: 152-FZ erasure - surgical scrub of deals.phones JSONB plus email no-op, F-P1b
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:54:45 +03:00
Дмитрий 1d3bfe58db docs router-mentor: worklog finale - fix3 done + F-K + revert incident for brain
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:22:27 +03:00
Дмитрий 9ac6d96dee feat router-mentor: arbitration fixes 1+2+3 - verdict visibility, round-memory judge-self-history and mentor-re-eval, owner-seal arbitration; 29/29 tools green
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:13:52 +03:00
Дмитрий 4f7e0b8f75 docs: lead-region merge runbook + domain-blockers F-T1/F-T2/F-P1 verification
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 09:04:00 +03:00
Дмитрий 417129ad0b docs: compact CLAUDE.md to v2.47, move history and phase journal to CHANGELOG
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 17:01:15 +03:00
Дмитрий d74d3113e5 feat: research-tooling Perplexity Pack #87-89 — registry/router/normative sync + ADR-019
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 15:44:42 +03:00
Дмитрий 3cfa684b40 docs mentor: git-approval commit recipe in GUIDE
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 13:43:42 +03:00
Дмитрий abc3124e2b docs mentor: escape-door activation note in GUIDE
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 13:34:13 +03:00
Дмитрий 58cf339a99 feat(research): Perplexity Pack — вет IS9 + перенос 3 MCP-серверов research-tooling (plan-v13, owner waiver)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 12:47:49 +03:00
Дмитрий f9d331482b docs(mentor): гайд стены — floor-safe планы + judge-timeout 90с (уроки 14.06)
Частые ошибки +floor-safe планы (не ставить node -e/curl/rm-rf/PS-write/runtime-write Bash-шагами плана — пол блокирует, стена после Δ7+ встаёт колом, escape не двигает указатель; файловые операции — Write/Edit). Async-нота: per-attempt таймаут тяжёлых LLM 30с→90с.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 11:00:06 +03:00
Дмитрий bb0d111f9f docs(research): спека интеграции Perplexity Pack (off-phase research-tooling) 2026-06-14 08:55:55 +03:00
Дмитрий 8961e3e5f5 docs(mentor): гайд стены — maintenance toggle + рецепт коммита со STATUS.md
Ещё два пользовательских пункта (по запросу владельца): (A) maintenance — точные шаги выключить/включить стену через settings.json hooks; (D) если lefthook ругается на STATUS.md — git restore --staged --worktree перед commit. Согласовано.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 08:07:26 +03:00
Дмитрий 5de25c333e docs(mentor): гайд стены — перезапуск≠сброс плана + память/правила требуют разрешения
Два пользовательских пункта по итогам сессии 14.06: (B) перезапуск Claude Code перечитывает settings.json, но не сбрасывает застрявшую печать/сессию — сброс через досрочное завершение или новую церемонию с другим именем; (C) запись в память/правила про саму стену by-design требует escape владельца или maintenance. Согласовано владельцем (в+с).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 08:03:18 +03:00