Commit Graph

2299 Commits

Author SHA1 Message Date
Дмитрий b65066f17c 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
Дмитрий d0c6fcd55f fix(billing): единый источник runway — дашборд = биллинг (F3)
Дашборд считал «хватит на дни» от legacy balance_leads (≈0 для рублёвых тенантов)
и расходился с биллингом. Введён общий RunwayCalculator; оба контроллера считают
runway от affordable leads (рубли→лиды по тарифу, BalanceToLeadsConverter). Фронт
DashboardView больше не режет число дней до 7 сегментов полосы. TDD: 4 Pest нового
сервиса + обновлён DashboardSummary + 1 vitest.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 14:07:22 +03:00
Дмитрий ca7ff37b8d docs: GUIDE стены - Фикс 1 теперь подписанные вердикты участников
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 13:34:38 +03:00
Дмитрий d5f8b11526 feat(deals): карточка показывает реальную стоимость лида — F2
Backend: GET /api/deals/{id} отдаёт cost_kopecks — снимок rub-списания из
lead_charges по deal_id, либо null для prepaid/не списано. Frontend: ApiDeal.cost_kopecks
→ MockDeal.costKopecks → карточка DealDetailBody показывает formatCost(costKopecks/100)
либо прочерк вместо вводящего в заблуждение 0 рублей. TDD: 3 Pest + 4 vitest.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 13:30:46 +03:00
Дмитрий 9d8188cd65 feat: wall - подписанные строки вердиктов роутера наставника и судьи во всплытии
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 13:16:32 +03:00
Дмитрий 5c39b65c78 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
Дмитрий b1795b7153 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
Дмитрий a09aaafd0b chore(lychee): исключить мёртвый github-аккаунт CoralMinister из link-check
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
Дмитрий 2b54359e47 security: allowlist secret-scanner test fixture в gitleaks
gitleaks-full-history находка private-key оказалась тест-фикстурой (PEM-заголовок + AWS EXAMPLE-ключ) в удалённом tools/enforce-read-path-deny.test.mjs - не живой секрет, ротация не нужна. Путь внесён в allowlist рядом с observer-pii-filter.test.mjs. Полная история gitleaks = no leaks found.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 08:12:33 +03:00
Дмитрий 59831cf7dc 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
Дмитрий 8af4ed9140 docs+chore: gitea-рубуки + support-тикет + .gitignore local-clutter
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
Дмитрий 2d76f53563 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
Дмитрий 9be2ea39f6 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
Дмитрий 5b6ea93de4 F-5 md-lint: исключить docs/superpowers и авто-STATUS.md из markdownlint
npm run lint:md = 0. Negation-globs в scripts package.json + exclude в lefthook markdownlint-джобе + строка в .markdownlintignore для IDE. Внутренние черновики стены/мозга и авто-генерируемый STATUS.md больше не флагуются линтером.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 06:05:40 +03:00
Дмитрий 1f92309331 ci: add lead-region prod-ops workflow 2026-06-17 05:46:10 +03:00
Дмитрий ae286b9a0d WIP чекпойнт: lead-region/supplier бэкенд + фронт-редизайн + Pint + тесты
92 файла одной пачкой. Исключены чужие зоны: CLAUDE.md, .claude/settings.json, docs/observer/.pii-counters.json.
gitleaks staged: no leaks found. Не верифицировано тестами - сохранение труда в историю.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 05:17:12 +03:00
Дмитрий 989afff5ad 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
Дмитрий b87d9208ca 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
Дмитрий d39a10cd2e 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
Дмитрий c99bae63bb 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
Дмитрий 9f575fa683 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
Дмитрий 6c4de31505 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
Дмитрий b1cb3580f7 docs router-mentor: оглавление + рецепт escape + дедуп 2026-06-16 15:37:07 +03:00
Дмитрий c2004e40d0 docs router-mentor: gitea backup health-probe ceremony spec+plan, server verified alive
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 13:50:05 +03:00
Дмитрий 9171f1dc60 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
Дмитрий 8c54cf91aa 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
Дмитрий e80f465c83 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
Дмитрий 4fed9dbf97 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
Дмитрий f67acb2186 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
Дмитрий e4c920aebf 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
Дмитрий 963b5c6c2b fix(security): composer update — patch 14 CVE (laravel/framework, guzzle psr7, symfony yaml/http-foundation)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 08:08:30 +03:00
Дмитрий 25a2d551af feat: merge lead-region cascade to main — deals-city + rossvyaz normalize, prod-parity verified
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 07:28:33 +03:00
Дмитрий 4022a71bac feat: merge lead-region cascade to main — deals-city + rossvyaz normalize, prod-parity verified
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 07:17:38 +03:00
Дмитрий 9a4ccbb7e3 fix router-mentor: router-classifier per-attempt timeout 30s -> 300s for DeepSeek; prevents Agent Router calls being truncated and hanging in aitunnel logs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 17:32:06 +03:00
Дмитрий f4d623a39e 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
Дмитрий 2f777007bf chore router-mentor: control LLM claude-sonnet-4-6 -> deepseek-v4-pro via aitunnel; HEAVY_LLM_TIMEOUT_MS 90s->300s; fix reasoning content-block text extraction in callAnthropicAPI
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 17:00:35 +03:00
Дмитрий c7762b2d38 chore: prune brain test-layer to claude-brain
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 05:03:55 +03:00
Дмитрий 44bf22885b fix: registry-render-check single-line warn-only — Windows if-parse bug
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 15:59:06 +03:00
Дмитрий cdd3cbfa3b 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
Дмитрий 9d9553d863 fix(research-tooling): gate read_only + perplexity via aitunnel base URL
Закрывает spec-gap Perplexity Pack — enforce-mcp-classification default-блокировал
неклассифицированные MCP-инструменты. Добавлены mcp__perplexity__*, mcp__exa__*,
mcp__firecrawl__* как read_only (ADR-019 постура, решение владельца 2026-06-14).
TDD RED-GREEN, регрессия tools-only 3931 passed / 2 skip.

.mcp.json: PERPLEXITY_BASE_URL=https://api.aitunnel.ru/v1 — роутинг sonar через AITUNNEL.
Live-smoke перезапуском: perplexity (sonar-pro), exa, firecrawl — все три GREEN.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 13:57:41 +03:00
Дмитрий 871c258a77 chore cspell: add 2 router-mentor dictionary words
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 13:45:57 +03:00
Дмитрий 4edc0b6bd4 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
Дмитрий 5f099eaaa0 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
Дмитрий 9e6d35710c 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
Дмитрий 8329f679fb 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
Дмитрий 052078c3cf fix(router-mentor): стена не двигает указатель на floor-блокируемый шаг (Δ7+)
floor-desync: supreme-gate Δ7 вето-без-сдвига смотрел только classifyDestructive.floor (rm-rf/force-push/migrate), а enforce-floor блокирует шире — content-block правило 8 (node -e/curl/eval), PowerShell, запись в runtime/секрет. Floor-блокируемый-не-destructive шаг (node -e) проскакивал со СДВИГОМ указателя, пол рубил исполнение → шаг терялся безвозвратно (desync, потеря safety-шага). Δ7 расширен на полный предикат floorDecide (пустой escape; escape обрабатывается в decideMode до decide). Order-independent. TDD RED→GREEN, регрессия tools-only 3930 passed + 2 skipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 10:58:14 +03:00
Дмитрий 23c3224413 fix(router-mentor): per-attempt таймаут тяжёлых LLM-вызовов 30с→90с
Судья/наставник по большой спеке/плану отвечают 25-32с; дефолт callAnthropicAPI 30с давал таймаут→degraded→печать не вставала (спека не запечатывалась gate1 → план не мог встать gate2). HEAVY_LLM_TIMEOUT_MS=90с в router-config, проброшен в callJudgeModel (судья) и buildLlmCall (наставник). TDD RED→GREEN, регрессия tools-only 3928 passed + 2 skipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 09:54:04 +03:00
Дмитрий d796457f9a docs(research): спека интеграции Perplexity Pack (off-phase research-tooling) 2026-06-14 08:55:55 +03:00
Дмитрий 88191eba2b 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
Дмитрий a4f478c2ba 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