Дмитрий
408a44a53a
docs: починка 12 битых относительных .md-ссылок долг lychee — корректные относительные пути и снятие ссылок на отсутствующие цели
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 19:55:37 +03:00
Дмитрий
7414b51523
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
Дмитрий
dea02e402d
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
Дмитрий
a617de3bde
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
Дмитрий
db469fbb89
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
Дмитрий
714d6885f9
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
Дмитрий
3bf5eaed81
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
Дмитрий
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
Дмитрий
9d8188cd65
feat: wall - подписанные строки вердиктов роутера наставника и судьи во всплытии
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 13:16:32 +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
Дмитрий
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
Дмитрий
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
Дмитрий
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
Дмитрий
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
Дмитрий
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
Дмитрий
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
Дмитрий
4f9d735e4d
revert(wall): откат Post-advance — PostToolUse не срабатывает на упавшем Bash
...
Live-смоук: PostToolUse не запускается на exit≠0 → Post не двигает указатель на RED-шагах. Код возвращён к Pre-advance (3928 GREEN). Спека/план помечены ОТВЕРГНУТО. Настоящий фикс desync = перестановка skill-discipline перед supreme-gate.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-14 06:11:11 +03:00
Дмитрий
ad76cdf496
fix(wall): supreme-gate сдвигает указатель на PostToolUse (фикс рассинхрона)
...
Pre-такт = ворота + журнал-намерение (без сдвига); Post-такт = сдвиг по подтверждённому исполнению. Лечит desync при блоке поздним хуком / user-deny. +runGatePre/runGatePost/isPostEvent, runGate → compat-обёртка. Регрессия tools-only 3938 passed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-14 05:34:33 +03:00
Дмитрий
e0442ef71c
feat(mentor): тупой судья навыков + фикс роутера prefilter-bypass
...
- router: classify({skipPrefilter}) — наставник зовёт мозг роутера мимо detectMicro
(ловил 'format' подстрокой в имени модуля → роутер не доходил до LLM); recommendedChainOf
в on-plan-write маппит node/recommended_node/recommended_chain (рекомендация не теряется)
- skills в ПОДПИСАННУЮ печать (Вариант 1): sealablePlan/freezePlan/sealPlan
- стена: isPlanDeclaredSkill — объявленный в опломбированном плане навык вызываем (снимает дедлок)
- enforce-domain-skill-discipline (новый хук): объявил → обязан вызвать (журнал M1) до
первого мутирующего шага; поверх готового domain-skill-discipline
- гайд docs/superpowers/router-mentor-wall-GUIDE.md + дизайн/план-доки
- регрессия tools-only 3928 passed + 2 skip, 0 регрессий
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-14 04:08:53 +03:00
Дмитрий
52e116ecee
docs(mentor): спека+план мержа роутер↔наставник + протокол сессии Р1-Р9 + l1-l2 redesign
...
Design-of-record для коммита cd1c4609 (мерж роутера в наставника):
- specs/plans 2026-06-13-router-mentor-merge-* (спека простым языком + 9-задачный TDD-план)
- session-protocol-2026-06-13 (решения Р1-Р9, записи только по команде владельца)
- specs/plans 2026-06-13-l1-l2-negotiation-redesign-* (redesign согласования, Фазы 0-6)
- cspell-words.txt +8 терминов (скилам/грепом/Пивот/таймаутил/эмбеддинги/мержа/стэк/вызыватель)
- markdownlint MD032 авто-фикс (пустые строки вокруг списков)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-13 11:42:09 +03:00
Дмитрий
155e9dc24a
docs(mentor): two-level negotiation spec-v2 (anchored) + plans
2026-06-12 19:15:48 +03:00
Дмитрий
e523b1ec49
docs(mentor): инцидент 12.06 — вход Фазы 8 на main, баннер в handoff #5 , судьба d1ad4e85 (cherry-pick только внутри Ф8) + cspell словоформы + observer refresh
2026-06-12 10:45:53 +03:00
Дмитрий
6af37af7c0
fix(mentor): smoke этап 4 пройден — деталь ошибки транспорта в catch вердикта + env ROUTER_LLM_BASE_URL в дефолте callAnthropicAPI (смена оператора на aitunnel) + контракт массива строк в промпте plan_points_addressed (F-C3); runbook этап 4 + env-таблица + блок смены оператора; smoke-план; cspell +aitunnel и словоформы. Регрессия tools 3753 GREEN
2026-06-12 07:55:31 +03:00
Дмитрий
5fba781936
feat(mentor-activation): активационная обёртка наставника — рубильник SEAM + journal/verdict store + export PLAN_PATH_RE + контекст-в-плане + producer-хук PostToolUse + freeze-gate зубы в печать судьи (план T1-T7 + sharp-edges W-1..W-4)
2026-06-12 05:51:41 +03:00
Дмитрий
142e620531
fix(mentor-finreview): финревью Фазы B 5-скил — FR-1 freeze-gate VF-1/SE-A1 inline + FR-2 единый рендер районов/staleness (W1-канон) + FR-4 balanced-парс JSON + VA-1 единый рендер контекста/ДР-1 + VA-2 маркер КОНТЕКСТ ПУСТ + VA-3 валидация request_district + F-C2-6/W7 ноты
2026-06-11 20:10:42 +03:00
Дмитрий
05714e978d
feat(mentor-integration): боевая проводка C2 — W1 catalog≠graph+районы (М3) + W2 гейт ДР-1 в стене (М2, аддитивно) + W3 onPlanWrite + W4 warn-прокидка O18 + W6 интеграционный тест + W7 контракты (sub-plan C2 + Д-С2-1..7 + sharp-edges F-C2-1..5)
2026-06-11 19:09:39 +03:00
Дмитрий
3e5cd6a504
docs(router-mentor): sub-plan A-E R6.3 amendments — все 24 находки ревью закрыты (C-1/нах.F1-F7/SE1-SE13/VF-1/V-1..6)
2026-06-11 13:25:12 +03:00
Дмитрий
b7c93afa2d
docs(router-mentor): sub-plan C2 (манифест интеграции V-1) + F (радары нах.F2)
...
- C2: реестр деферралов W1-W7 (renderDistricts/«(100%)», reading-wiring, onPlanWrite, warn, мастер-порядок, интеграционный тест, контракты инъекций)
- F: graph-radar + skeleton-radar (проверка полноты §8 Q3)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-10 16:25:17 +03:00
Дмитрий
2eb65f67cb
docs(router-mentor): R6.3 §6.1 развод ролей наставника (C-1) + edit-план ревью
...
- спека §6.1 +R6.3 «два выхода наставника»: выбор-скила (router-трасса) vs разбор-плана (mentor-вердикт runMentorVerdict + onPlanWrite) — корень C-1
- новый edit-план (10 задач, 24 находки ревью 5-скил цепочки: F1-F7/SE1-SE13/VF-1/V1-V6/C1-C4)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-10 16:17:10 +03:00
Дмитрий
25826e1ba4
docs(router-mentor): sub-plan B+D+E+C — декомпозиция R6.2 завершена
2026-06-10 14:31:01 +03:00
Дмитрий
6199472ee8
docs(router-mentor): R6.2 + sub-plan A + handoff-2
2026-06-10 13:36:57 +03:00
Дмитрий
33894a625a
docs(escape-sign): отметить M6 FIX-5 как РЕАЛИЗОВАНО (спека §12 + план чек-боксы)
...
После закрытия реализации M6 FIX-5 (3 задачи TDD + гейт закрытия, регрессия
3478+2skip GREEN):
- spec 2026-06-10-floor-escape-signing-design.md: статус ЧЕРНОВИК → РЕАЛИЗОВАНО;
§12 боксы «Ревью владельца» + «writing-plans» → [x] (+пометка одобренного
отклонения Task 3: быстрый путь).
- plan 2026-06-10-floor-escape-signing.md: +статус-баннер (РЕАЛИЗОВАНО, регрессия,
отклонение Task 3); все рабочие чек-боксы (Task 1/2/3 + гейт) → [x].
Только docs. Прод-код инертен до провижининга ключа (Фаза 8).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-10 05:38:21 +03:00
Дмитрий
c566e85286
docs(router-mentor): phase-8 state snapshot + M6 FIX-5 design/plan
...
- docs/superpowers/2026-06-10-phase8-state-snapshot.md — снимок состояния
эпика «роутер-наставник» (что готово / owner-шаги / отложенное).
- M6 FIX-5 (подпись escape-гранта, key-gated, defense-in-depth): спека
(одобрена, 2 адверсар. прохода + self-review) + bite-sized TDD-план.
Реализация НЕ начата — design-only артефакты.
Кодовая фраза эпика: «роутер-наставник».
2026-06-10 05:04:52 +03:00
Дмитрий
c9f823df38
feat(board): live source for guard board escapes/blocks (D-3)
...
Доска «кто на посту» (STATUS.md §7) теперь показывает реальные недавние
escape владельца и блоки машин М1–М6 вместо хардкода []/[].
- new tools/guard-block-log.mjs: logGuardBlock (best-effort, fail-quiet,
Node fs append в guard-blocks-<sess>.jsonl) + loadRecentBlocks/
loadRecentEscapes (скан session-файлов runtime, окно 24ч + cap 10, ts→ISO).
- проводка logGuardBlock в block-ветку main() 9 машинных хуков (floor /
supreme-gate / judge-gate / snapshot / read-path-deny / mcp-classification /
normative-content-rules / verify-gate / criterion-gate). Логгер вызывается
ПОСЛЕ решения, не влияет на block; decide() pure не тронут.
- status-md-generator CLI: recentEscapes/recentBlocks из читателей вместо []/[].
До флипа Фазы 8 доска показывает 0/0 (хуки не зарегистрированы — данных нет);
реальная польза — пост-флип наблюдаемость.
TDD: guard-block-log.test (6) + 9 структурных wiring-тестов + 1 board-тест.
Гейт закрытия: sharp-edges (промежуточный по 9 хукам + читатели) +
variant-analysis (все block-ветки покрыты, иных источников нет). Регрессия
tools-only 3465 passed / 2 skipped / 0 failed (было 3449+2skip). 0 регрессий.
Plan: docs/superpowers/plans/2026-06-10-guard-board-live-source.md
2026-06-10 04:28:53 +03:00
Дмитрий
f2aa3fb755
feat(seal): validate judge_mode at freeze time (defense-in-depth, SE-2 §4)
...
assertValidJudgeMode guard in freezePlan/freezeArtifact: fail-CLOSE on any
mode != {null|shadow|live-block}. Closes YAGNI-candidate from sealed-plan §11
/ gate1+se2 §4 (SE-a) — bogus mode can no longer enter a seal at the source
(complements the wall's fail-closed live-block whitelist).
- freezePlan validates the judgeMode param; freezeArtifact validates the
embedded artifact.judge_mode (injected by seal-orchestration).
- guard sits before id/sig computation -> no partially-signed bogus-mode seal.
- throw is best-effort-swallowed at enforce-judge-gate.mjs onWiredSeal ->
no seal produced (fail-CLOSE), hook never crashes.
- real flow never trips it (judgeGateMode yields only inert/shadow/live-block,
inert never seals) — drift-only guard.
TDD: new tools/plan-lock-judge-mode.test.mjs (6 tests). Regression tools-only
3449 passed / 2 skipped / 0 failed (was 3443+2skip). 0 regressions.
sharp-edges + variant-analysis: clean (only two seal producers, both guarded;
wall comparison already fail-closed).
Plan: docs/superpowers/plans/2026-06-09-seal-time-judge-mode-validation.md
2026-06-10 03:48:07 +03:00
Дмитрий
2fc6e7ab49
docs(gate1+se2): design spec + TDD plan (М7 Фаза 8, 2 хвоста до флипа)
...
Спека docs/superpowers/specs/2026-06-09-gate1-and-se2-design.md (одобрена; 2 адверсариальных
прохода: SD-1 High «trim→артефакт не печатается» + VA-a/SE-a «fail-open→whitelist» закрыты)
+ план docs/superpowers/plans/2026-06-09-gate1-and-se2.md (4 задачи, bite-sized TDD).
2026-06-09 19:05:23 +03:00
Дмитрий
de39beb813
docs(seal): sealed-plan production design spec + TDD implementation plan
...
Спека (ОДОБРЕНА владельцем, 2 адверсариальных разбора, 18 находок закрыты)
+ bite-sized TDD-план (7 задач) для код-предусловия флипа Фазы 8
(производство двух печатей: артефакт-решение + план-шаги).
design-only — прод-код и стена не затронуты. Эпик «роутер-наставник» М7.
2026-06-09 16:51:46 +03:00
Дмитрий
539f5b788a
docs(router-mentor): Level B closure + phase 8 handoff 3
2026-06-09 12:46:13 +03:00
Дмитрий
6037250b23
docs(router-mentor): G1 closure + phase 8 handoff 2
2026-06-09 10:32:47 +03:00
Дмитрий
5937288c4d
docs(router-mentor): phase 8 migration handoff (audit tails then configure-test-deploy)
2026-06-09 09:20:20 +03:00
Дмитрий
e311efeeec
docs(router-mentor): A1 pre-code chain amendments (Write-only, judge-unavailable degraded-allow)
2026-06-09 08:30:43 +03:00
Дмитрий
5b5d8f10e4
docs(router-mentor): A1 judge gate2 wiring implementation plan
2026-06-09 08:19:54 +03:00
Дмитрий
2f8586c57b
docs(router-mentor): stage3 and m3 handoff
2026-06-09 07:55:03 +03:00
Дмитрий
3298d573c3
docs(router-mentor): stage 3 replay plan
2026-06-09 06:12:55 +03:00
Дмитрий
e834c12152
docs(router-mentor): self-consistent git anchor in handoff prompt
2026-06-09 05:31:03 +03:00