Дмитрий
3fdfd92c9e
docs(billing-v2): спек B — план реализации (политика дублей)
...
8 задач: baseline → таблица-замок supplier_lead_deliveries → раздача
по клиентам (LeadRouter DISTINCT ON) → удаление DuplicateDetector из
обоих джобов → замок insertOrIgnore → тесты (model-agnostic) → регрессия.
Вариант B. Заякорено на always-rub LedgerService (Спек A в origin/main).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-23 20:44:51 +03:00
Дмитрий
79b252f646
docs(billing-v2): спек B — политика дублей (дизайн)
...
Правило: дедуп — ответственность поставщика; Лидерра телефон не фильтрует,
берём за всё, что прислано. Защита от своих дублей — на уровне БД
(замок supplier_lead_deliveries, ключ по поставке, не по телефону).
Лимит шеринга = 3 разных клиента, одному клиенту одна копия.
Вариант B (железобетонный) утверждён на брейнсторме 23.05.2026.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-23 20:44:50 +03:00
Дмитрий
9bbc653640
docs(plan): admin tenant balance edit implementation plan
2026-05-23 20:02:37 +03:00
Дмитрий
17ea005bce
docs(spec): admin tenant balance edit design
2026-05-23 20:02:36 +03:00
Дмитрий
6c6939a473
feat(audit): hole #2 partitioning APPLIED on prod — rewrite SQL + docs (Phase B/C)
...
Партиционирование 7 audit-таблиц применено на боевой liderra.ru 23.05.2026.
Закрывает ПОСЛЕДНЮЮ (7-ю) дыру аудита журналирования — эпик завершён.
* `db/migrations/2026_05_23_hole2_partition_audit_tables.sql` — фактический
rewrite-SQL применённый на проде (источник истины = pg_dump прода, НЕ schema.sql):
- 7 таблиц → PARTITION BY RANGE (created_at|received_at), PK→(id, partition_key)
- 6 месячных партиций _yYYYY_mMM (m02..m07) + DEFAULT на таблицу
- FK на webhook_log удалены (W1)
- SET session_replication_role=replica при копировании → исходные log_hash
сохранены as-is (НЕ пересчёт): иначе триггер под postgres BYPASSRLS построил
бы global-within-partition chain ≠ per-tenant chain прода → false breach
- RLS tenant_isolation + оба триггера (audit_chain_hash + audit_block_mutation)
+ sequences + GRANT'ы воспроизведены из реального pg_dump прода
- retention seeds в формате команды: partition_retention_months_<table>
* Метод деплоя (max-safety, клиент info@lkomega.ru не пострадал):
- РЕПЕТИЦИЯ на liderra_rehearsal (restore прод-dump) ДО боя — counts/lkomega-t2/
chain-fingerprints совпали байт-в-байт, audit:verify-chains intact
- На боевом: backup pre-partitioning-20260523-162357.dump → apply в транзакции →
verify (counts 414/275/34/9/4, lkomega t2 414/275 цел, 7×7 партиций) →
partitions renamed _YYYY_MM→_yYYYY_mMM → retention keys → verify-chains intact
rc=0 → portal HTTPS 200
* ПИЛОТ.md §6 п.11 — #2 ✅ + известные нюансы (create-months под app-роль / schema.sql drift)
* tracker — все 7 дыр ✅ , эпик завершён
NB: db/schema.sql разошёлся с реальным продом по колонкам 4 таблиц
(activity_log/webhook_log/balance_transactions/pd_processing_log) — прод-rewrite
построен из pg_dump прода. Ресинхронизация schema.sql↔prod — отдельная задача.
Phase A (tooling: VerifyAuditChains per-partition + PartitionsDropExpired +
MonthlyPartitionManager whitelist + schema.sql v8.31) уже на main (60ab5be3 ).
2026-05-23 19:30:32 +03:00
Дмитрий
60ab5be3eb
feat(audit): partitioning 7 audit-таблиц по месяцам (hole #2 Phase A)
...
Закрывает последнюю дыру #2 аудита журналирования. Phase A (dev) — миграция
схемы + retention tooling. Phase B (прод-rewrite через SQL под postgres) —
отдельным шагом с явным approve.
Решения заказчика:
* Scope: все 7 таблиц (auth_log, activity_log, tenant_operations_log,
webhook_log, balance_transactions, pd_processing_log, saas_admin_audit_log)
* FK на webhook_log: W1 — удалить FK от failed_webhook_jobs+rejected_deals_log
* Retention defaults: auth:24м, activity:36м, tenant_ops:24м, webhook:3м,
balance:84м, pd:36м, saas_admin:84м. Cron Sundays 03:00 МСК
* Hash-chain: per-partition (audit_chain_hash трг через TG_TABLE_NAME уже
работает per-partition; совместимо с hole #1 per-RLS-scope fix)
Phase A:
* db/schema.sql v8.30→v8.31: 7 audit-таблиц на PARTITION BY RANGE,
PK→(id, partition_key), +7 retention seeds в system_settings,
FK от failed_webhook_jobs/rejected_deals_log удалены
* MonthlyPartitionManager: PARTITIONED_TABLES → ассоциативный array
(name => partition_key), 2 → 9 таблиц
* PartitionsCreateMonths: автоматически покрывает все 9
* load_initial_schema: после schema.sql вызывает Artisan
partitions:create-months --ahead=2 (без этого первый INSERT падает)
* 2026_05_22_000001_tenant_operations_log: idempotency guard
* VerifyAuditChains: per-partition scan через pg_inherits;
fallback на single-scope для не-партиционированной таблицы;
per-RLS-scope partition_clause сохранён внутри каждой партиции
* AuditChainBreachMail: +partitionName param (NULL=fallback на tableName)
* PartitionsDropExpired (новая): cron Sundays 03:00 МСК, retention из
system_settings, dry-run mode, safety guard retention=0
* SchedulerHeartbeatTracker +partitions:drop-expired (10080 мин)
Без Laravel-миграции для прода — она оставляла БД пустой при migrate:fresh.
Подход: schema.sql декларирует партиционированные + ad-hoc SQL под postgres
для прод-rewrite (отдельный commit + ручной деплой + pg_dump backup).
Тесты: 1219/1231 (35/35 hole #2 specs, 88 assertions). 3 fail —
pre-existing AdminPdSubjectRequestsControllerTest::executeErasure_*
(FK actor_admin_user_id после partitioning pd_processing_log, отдельная
задача для hole #4 follow-up, не блокирует).
cspell +2 слова (партиционировать, дёшева). Pint --fix чистый.
Spec: docs/superpowers/specs/2026-05-23-hole-2-audit-partitioning-design.md
Plan: docs/superpowers/plans/2026-05-23-hole-2-audit-partitioning-plan.md
2026-05-23 15:50:37 +03:00
Дмитрий
298b900c5a
docs(spec): router overhaul — этап 2 упрощён после параллельной починки парсера
...
Параллельная сессия 23.05 13:16-13:38 закрыла 60% этапа 2 через коммиты
4665c537/6192d395/6a9df652 (spec observer-parser-skill-hook-expand v3):
- candidates_considered whitelist filter (KNOWN_NODES)
- schema_version 2 → 3 forward-only
- primary_rationale.recommended_node (для direct эпизодов)
- events[].hook_fired.scripts (reverse-lookup settings.json)
- analyzer accepts schema >=2 (v2+v3 mix) + recommended_node_for_direct ось
Скорректирован этап 2 spec — отмечено что сделано, оставшаяся работа:
disciplinePercentByClassification/routerStepReached/boundariesAppliedRate
срезы analyzer, переключение missed-activations на реестр из этапа 1,
блок "Метрики дисциплины" в STATUS.md, baseline snapshot.
План этапа 1 (реестр) — без изменений, парсер не задействует.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 13:58:41 +03:00
Дмитрий
aad48de6f6
docs(plan): router overhaul этап 1 — машиночитаемый реестр (13 tasks)
...
Plan для этапа 1 (Справочник) router discipline overhaul. 13 атомарных задач,
TDD-стиль, экзотические шаги (как парсить Tooling) — ручные с верификацией.
Структура:
- Pre-flight (PF-1..3): sync + npm deps + tools/ структура.
- Phase A (Task 1-4): JSON Schema + 3 пилотных узла + registry-load.mjs
+ 11 unit-тестов.
- Phase B (Task 5-7): registry-render.mjs + auto-region маркеры
+ snapshot-тесты.
- Phase C (Task 8-10): 83 узла + L1-L16 chains + diff-check совместимости.
- Phase D (Task 11-13): lefthook job warn-only + полный README + STATUS.md
continuity + memory tracker + PR.
Поведение Claude не меняется — реестр пока ничего не enforce ит.
Это фундамент для этапов 2-4.
cspell: +валидируется, +рендериться.
Spec: docs/superpowers/specs/2026-05-23-router-discipline-overhaul-design.md
Self-review встроен в конец плана.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 13:54:27 +03:00
Дмитрий
7c3a246759
fix(observer): hook-resolver — split combined matchers (Edit|Write)
...
Final-review followup. .claude/settings.json uses regex-style combined
matchers like "Edit|Write"; transcript writes per-tool PreToolUse:Edit.
Split on | when building map so per-tool counts resolve. Also sync
spec doc loadHookMap -> buildHookMap (impl name).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 13:49:42 +03:00
Дмитрий
ec54cda394
docs(spec): router discipline overhaul — реестр + hard-enforcement (4 этапа)
...
Spec от brainstorming-сессии 23.05.2026. Фиксирует переход от
soft-сигнала ("silently skips") к hard-enforcement: классификатор
+ PreToolUse hook блокируют Edit/Write/Bash на не-micro классифицированной
задаче, если skill не вызван.
Подход: поэтапный rollout (вариант B).
- Этап 1: машиночитаемый реестр всех 83 узлов (YAML + auto-render Markdown).
- Этап 2: починка парсера candidates_considered + baseline-метрики.
- Этап 3: regex+LLM классификатор + hook-блокировка + routing-tag escape.
- Этап 4: сократить Pravila/PSR_v1/Tooling до cross-refs на реестр + ADR-016.
Continuity тройная: STATUS.md раздел "Активные проекты" + memory-файл
+ brain-retro еженедельный.
Acceptance: дисциплина >=75% (baseline 27%), missed activations <=5/нед
(baseline ~10), feature без skill <=10% (baseline 80%), стоимость <=20 USD/мес.
Source for fact base: factor analysis 134 v2-эпизодов мая 2026
(see docs/observer/episodes-2026-05.jsonl + notes/2026-05-23-brain-retro.md).
cspell: +булиты, +дебаг.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 13:45:40 +03:00
Дмитрий
f4602b4aa5
docs(observer): brain-retro template +hook breakdown + recommended_node
...
aggregation-template.md gets two new sections (Hook script breakdown,
Recommended-node candidates) + paragraph in Missed Activations.
factor-analysis spec gets a v3 amendment cross-ref to the 2026-05-23 spec.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 13:43:28 +03:00
Дмитрий
705608b5ad
docs(plan): observer parser skill/hook expand — 5-task TDD plan
...
Spec terminology aligned with codebase: recommended_skill →
recommended_node (classification-map хранит Tooling IDs `#NN`, не имена
skill'ов). Test runner — vitest (npm run test:tools), не node --test.
Missed-activations filter тоже поднимается до >=2.
5 atomic TDD commits: hook-resolver, recommended-node, parser+smoke,
analyzer factor-axis, brain-retro template.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 13:10:06 +03:00
Дмитрий
99b758a4f4
docs(spec): observer parser — skill/hook expand (schema v3)
...
Forward-only расширение episode schema: hook_fired.scripts (reverse-lookup
.claude/settings.json → имена хук-скриптов рядом с matcher-counts) +
primary_rationale.recommended_skill для direct-эпизодов (из
classification-map). Analyzer фильтр >=2 для backward-compat с v2.
Связано: ADR-011, factor-analysis spec 2026-05-19, Pravila §16,
feedback_feature_via_writing_plans.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 13:02:09 +03:00
Дмитрий
7a9fef3785
docs(pilot): закрытие #6 + #3+#5 + #4 на боевой (6 из 7 дыр аудита, 23.05 вечер)
...
ПИЛОТ.md §6 п.11 — детали закрытия 3 дыр в одной сессии:
* #6 scheduler heartbeat (push c76038d0+33462bf5, schema v8.30,
12 baseline rows, warn-only при отсутствии admin)
* #3+#5 расширение incidents:watch-failures (push 527f628a ,
+failed_jobs, 3 правила spike/daily-total/persistent)
* #4 152-ФЗ минимум удаления (push 77e98afa + Eloquent fix f5482f4 ,
backend + frontend build deploy, smoke OK)
Master overview tracker обновлён: 6/7 закрыто, #2 partitioning
сознательно отложена на отдельную сессию (большая миграция БД).
UI-приёмка #4 (визуальная проверка вкладки в админке) — за заказчиком.
cspell: +3 слова (алертил/бэкапом/залогиненную).
2026-05-23 12:34:20 +03:00
Дмитрий
970648b3fd
docs(plan): Billing v2 Spec A implementation plan
...
Детальный TDD-план реализации Спека A (двухфазный релиз).
Phase A — 24 задачи (code + data migration, 1 PR):
- A.1-A.13: backend (TYPE_MIGRATION, BalanceToLeadsConverter, упрощение LedgerService,
обновлённый wallet API, runwayDays через конвертер, transactions без refund +
display_amount_rub, AdminPricingTiers bcmul, charges export JOIN,
artisan migration command, seeders cleanup)
- A.14-A.21: фронт (Wallet/BillingTransaction типы, BalanceCard rewrite,
BillingView обрезка, новый TierPricesPanel, TransactionsTable без Возвраты,
InvoicesTable ₽, ChargesTab без Источник)
- A.22-A.24: регрессия + Playwright smoke + PR
Phase B — 3 задачи (schema cleanup, 1 PR, ≥72ч после Phase A в проде):
- B.1: миграция DROP balance_leads + 5 колонок tariff_plans
- B.2: sync db/schema.sql + CHANGELOG_schema.md
- B.3: регрессия + PR
Каждая задача — TDD: failing test → verify fail → impl → verify pass → commit.
Все мутации денег — bcmath. Pravila §15.1: субагенты для git-задач — Sonnet/Opus, не Haiku.
cspell: +1 слово (ревьюю).
2026-05-23 11:47:16 +03:00
Дмитрий
866bf1765e
docs(spec): Billing v2 Spec A — единый ₽-баланс + унификация tariff_plans
...
Дизайн-документ Спека A серии «Биллинг v2» (Спек B — дубли, Спек C — preflight + VTB).
Approach 3: чистый разрез + унификация tariff_plans.
- tenants.balance_leads → DROP (двухфазный релиз с idempotent artisan-командой)
- tariff_plans.price_per_lead/price_monthly/included_leads/trial_bonus_leads/billing_model → DROP
- pricing_tiers остаётся единственным источником цены за лид
- Новый pure-сервис BalanceToLeadsConverter (точный расчёт по ступеням)
- LedgerService::chargeForDelivery упрощается (только rub-ветка)
- BillingController::wallet отдаёт affordable_leads + current_tier + tiers_preview
- AdminPricingTiersController fix: float → bcmul + decimal validation
- 19 находок аудита Биллинга закрываются в этом спеке (P0=5, P1=6, P2=4, связанные=4)
Out of scope: возвраты, VTB-эквайринг (спек C), auto-stop проектов (спек C),
дубли (спек B).
Двухфазный релиз: код+data migration → 24-72ч наблюдение → ALTER TABLE.
cspell: +4 слова (vtb, брейнсторм, брейнсторму, подписочной).
2026-05-23 11:34:51 +03:00
Дмитрий
cfe94d9178
fix(projects): closable-chips на селекторах регионов — удаление по одному
...
Раньше чтобы убрать один регион из выбора, приходилось сбрасывать все
и выбирать заново. Добавлен closable-chips на v-autocomplete регионов в
трёх местах: карточка создания проекта (NewProjectDialog), панель
редактирования (ProjectDetailsDrawer) и массовое изменение регионов
(RegionsBulkDialog). Теперь у каждого чипа есть крестик.
Покрыто Vitest: closableChips=true на каждом селекторе.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 10:21:10 +03:00
Дмитрий
3fde7f1dd5
docs(plans): 7-hole audit closure — overview + hole #7 plan (+4 RU cspell words)
2026-05-23 09:38:51 +03:00
Дмитрий
5df34a61eb
style+done(p2): pint formatting + P2 plan DONE marker
2026-05-22 18:53:11 +03:00
Дмитрий
d3197095b7
Merge remote-tracking branch 'origin/main' into feat/supplier-group-sync-fix
2026-05-22 18:17:32 +03:00
Дмитрий
dc7b136a0b
docs(plan): C1 marketing-tooling implementation plan
...
13 задач (Phase 0 IS9-вет → Phase 1 установка → Phase 2 нормативка →
Phase 3 верификация), #74–#83, subagent-driven по паттерну A8/finance.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 17:59:40 +03:00
Дмитрий
f6473c7991
docs(spec): C1 marketing-tooling integration design
...
Раздел карты C1 «Маркетинг и лидогенерация» (пустой) — подбор 10 узлов
#74–#83 (8 ставим сейчас + 2 DEFERRED), 18-я off-phase подкатегория
marketing-tooling. Вариант Б, смешанный акцент, VK вне scope.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 17:59:40 +03:00
Дмитрий
9fa187780b
style+fix(auth): pint formatting + nullsafe.neverNull fix + P1 plan DONE marker
2026-05-22 17:43:18 +03:00
Дмитрий
1be2d62f9e
feat(supplier): group recompute + pause + source-change + root auto-link
...
Закрывает замечания заказчика (22.05.2026) по проектам/поставщику. Все 4 куска
имеют общий корень: online-синхронизация одного проекта работала с данными ЭТОГО
проекта, а не пересчитывала всю «группу» (проекты разных tenant'ов с одним
identifier) — отсюда переплата ×3 при изменении лимита, затирание регионов/дней
группы, неотправленная пауза, и осиротевшие проекты при смене источника.
1. Групповой пересчёт в SyncSupplierProjectJob::handleOnline (#1 при изменении,
#2 дни, #3 регионы, C2/C3): union regions, computeOrder eligible,
distributeForPlatform — те же расчёты, что в ночном syncGroup. Online и
ночной теперь дают идентичный supplier-state, расхождение устранено.
2. Пауза #10 :
- ProjectController::toggleActive — диспатчит SyncSupplierProjectJob;
- ProjectService::bulkPauseResume — диспатчит sync per project;
- DTO status вычисляется из groupActive (paused когда группа без активных);
- sp.inactive_since пишется при пересинке (для UI/DTO консистентности).
3. Смена источника #8/#9 в ProjectService::update:
- до update снимается старый buildUniqueKeyAgnostic;
- если изменился — отвязываем старые supplier_projects от этого project
(pivot + legacy FK), DeleteSupplierProjectJob удаляет их у поставщика
при отсутствии других потребителей, либо пересинкает агрегат.
4. Перенос auto-link корня из feat/root-domain-auto-link: новый
App\Support\SupplierIdentifier::extractRootDomain + блоки auto-link в
обоих джобах (online + nightly).
Тесты: TDD на каждый кусок. SyncSupplierProjectJobTest +2 (group recompute,
pause). ProjectUpdateDedupTest +1 (source detach + cleanup dispatch).
ProjectsActionsTest +2 (toggle + bulk pause dispatches).
Регрессия: 186/186 passed (Project/Plan5/Projects + Supplier), 502 assertions.
Деплой: дельтой на боевой (база = root-domain ветка; на боевом джобы СТАРЕЕ
main, deliver через копию изменённых файлов + config:cache + restart queue).
План: docs/superpowers/plans/2026-05-22-замечания-проекты-чеклист.md
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-22 16:52:30 +03:00
Дмитрий
a575d55e9a
docs(plans): mark P0 audit-pd-impersonation DONE
2026-05-22 16:50:22 +03:00
Дмитрий
9bf97efb0b
docs(audit): comprehensive audit journaling closure — 3 plans + PILOT update
...
Sweeping audit of portal journaling (static + config + live dev/prod data)
found 9+ holes; three TDD plans authored to close them:
- P0 (152-ФЗ): docs/superpowers/plans/2026-05-22-audit-pd-impersonation.md
Empty pd_processing_log despite 417 deals on prod; impersonation outside
saas_admin_audit_log. 13 tasks + self-review.
- P1 (auth + attribution): docs/superpowers/plans/2026-05-22-audit-auth-attribution.md
auth_log only covers login; logout/2FA/password-reset/register missing.
activity_log 412 rows all with user_id=NULL. 9 tasks.
- P2 (operational + auto-incidents): docs/superpowers/plans/2026-05-22-audit-operational.md
Project/API-key/webhook-URL mutations unlogged; inbound supplier webhook
not in webhook_log; incidents_log not auto-populated (25k failed_webhook_jobs
passed silently). New tenant_operations_log table + cron watcher. 10 tasks.
ПИЛОТ.md §6 +pp.7-9 with plan references and priority order.
Execution: subagent-driven, P0 → P1 → P2 sequential (DealController in P0+P1).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 14:50:07 +03:00
Дмитрий
9ae505b490
docs(plan): импорт активных проектов lkomega → info@lkomega.ru — план реализации
...
10 TDD-задач: SupplierRegions::mapFromSupplier (обратная карта) + SupplierImportMapper
(pure-хелперы) + SupplierProjectImporter (buildPlan/commit) + artisan-команда
supplier:import-projects (dry-run/--commit) + runbook деплоя. Без записи на портал.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 10:17:04 +03:00
Дмитрий
0374612444
docs(spec): импорт активных проектов поставщика в тенант info@lkomega.ru — дизайн
...
Разовая artisan-команда supplier:import-projects: усыновляет активные проекты
с crm.bp-gr.ru (lkomega) под тенант info@lkomega.ru по правилам Лидерры
(B1/B2/B3 → один проект, лимит = сумма площадок), без записи на портал.
dry-run по умолчанию, --commit для реальной записи.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 10:17:04 +03:00
Дмитрий
1933129497
docs(security): replace Enlightn ( #70 ) with Ward per IS9 vet + L13
...
Enlightn abandoned (Packagist) + no Laravel 13 support. User chose to find
a replacement. Ward (Eljakani/ward, Go, MIT, 316★) — same niche, Go binary
so no Laravel-version dependency. infosec-vet.md §ПЕРЕСМОТР #70 + spec/plan
amendment notes. Node #70 keeps number/niche; tool + type change.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 14:32:49 +03:00
Дмитрий
b35a8c4311
docs(security): A8 infosec-tooling spec + implementation plan
...
Эпик A8 «Информационная безопасность»: +6 узлов (#68 OWASP ZAP MCP,
#69 Nuclei MCP, #70 Enlightn, #71 pdn-152fz-audit, #72 threat-model,
#73 security-go-live). Spec + 13-task plan. Worktree off origin/main 3b6992d .
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 14:32:48 +03:00
Дмитрий
4f16cc3c83
docs(superpowers): plan — observer missed activations (Pravila §16.4 v1.36)
...
Implementation plan for conditional missed-activation detection.
Architecture: hybrid mapping (manual classification map + auto-extracted
dormancy from Tooling). 12 tasks, TDD-driven.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 09:59:56 +03:00
Дмитрий
472ea8c75c
docs(plan): project delete + source dedup + human errors implementation plan
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 06:31:45 +03:00
Дмитрий
b053796182
docs(spec): project delete (vs archive) + source dedup + human errors
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 06:27:59 +03:00
Дмитрий
4f5cf263f6
docs(observer): chain attribution L1-L13 spec + plan + brain-retro #2
...
Brain-retro #2 (весь май) → кандидат: атрибуция canonical chains L1-L13.
Spec + 9-task TDD plan (chain_ref в primary_rationale, C6 sync-контролёр,
ретрофилл). Исполнение разблокировано — epic observer-instrument-expansion
влит в main. +cspell словарь.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-21 04:42:41 +03:00
Дмитрий
01562afd31
docs(backend): A1 backend-tooling spec + plan + cspell words
...
Spec: docs/superpowers/specs/2026-05-20-a1-backend-tooling-design.md
Plan: docs/superpowers/plans/2026-05-20-a1-backend-tooling.md
4 узла A1 (#64-67): Rector / PHP Insights / laravel-backend-patterns / NightOwl.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 04:21:26 +03:00
Дмитрий
b0ce510155
docs(observer): retro note + epic plan v1.1 (Task 21)
...
Closes the «Observer instrument expansion v2» epic. The retro note is
the source of all #1-#19 references in commit messages; the plan is
the procedural source (with REVISION v1.1 after parallel-session rebase).
Both kept in repo for traceability of the 20-commit epic.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 13:47:45 +03:00
Дмитрий
76d13d699a
docs(spec): observer factor-analysis v1.1 → v1.2 instrument expansion
...
Sync header + §12 changelog summarising the 18-task epic «Observer
instrument expansion v2» implementation. Each subsection (§12.1-§12.9)
references the brain-retro 2026-05-20 #N item and the worktree commit
chain.
Closes Task 20 of docs/superpowers/plans/2026-05-20-observer-instrument-expansion.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 13:47:44 +03:00
Дмитрий
9729909c31
docs(supplier): fix naked app/ refs to ../../../app/ in failover plan (lychee gate)
2026-05-20 13:36:55 +03:00
Дмитрий
d1ddd28250
docs(plan): Plan 4 (админка + ЛК) — переделка миграции проектов
...
5 TDD-задач: тумблер режима экспорта (endpoint + UI), экран «Проекты у поставщика»
(кто заказывал/дата последней поставки + bulk-delete бэк/фронт), ЛК require-region
UI-гейт + «Вся РФ» предупреждение/подтверждение, полная регрессия. Финальный из
4 планов эпика. +cspell.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 10:09:26 +03:00
Дмитрий
34458df474
docs(plan): Plan 3 (экспорт + заказ) — переделка миграции проектов
...
8 TDD-задач: R-SAVE live smoke (гейт), SupplierExportMode тумблер, формула заказа
max(наиб,ceil(Σ/3)) + убран split, saveProjectMultiFlag R5/R6/R7 (захват 3 id),
SyncSupplierProjectsJob группировка источник×субъект + pivot, онлайн mode-aware
sync + grouping-хелперы, крон 18:00, регрессия. Третий из 4 планов. +cspell.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 10:09:24 +03:00
Дмитрий
467f1cdbf2
docs(plan): Plan 2 (входящее распределение) — переделка миграции проектов
...
5 TDD-задач: RegionTagResolver (тег субъекта -> код, зеркало regions.ts),
LeadRouter на pivot без phone-фильтра, LeadDistributor cap=3 (seedable RNG),
RouteSupplierLeadJob (cap + deal.subject_code из тега), регрессия.
Второй из 4 планов эпика. +cspell. Реализация не начата.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 10:09:22 +03:00
Дмитрий
cd2353b57d
docs(plan): Plan 1 (фундамент данных) — переделка миграции проектов
...
7 TDD-задач: supplier_projects.subject_code + per-subject unique (NULLS NOT
DISTINCT), pivot project_supplier_links (замена 3 FK-слотов), deals.subject_code,
seed supplier_export_mode, belongsToMany связи, backfill pivot, регрессия.
Первый из 4 планов эпика (см. spec §3). +cspell сид/бэкофилл. Реализация не начата.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 10:09:20 +03:00
Дмитрий
17e34a6d5e
docs(spec): design — переделка миграции проектов + распределения лидов
...
Закрыты 5 под-вопросов brainstorming + P1 (Вся РФ = 1 пул + предупреждение
с подтверждением) + P2 (один связный spec). Ядро: 3-FK слоты -> M:N pivot,
per-субъект supplier_projects (subject_code), формула заказа max(наиб, ceil(Σ/3)),
cap=3 рандом из недобравших, ручной экран очистки в админке, режимы экспорта
online/batch (глобальный тумблер). R2 уже 18:00. R-SAVE = вариант а (дочитать
listProjects). Реализация не начата.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 10:08:31 +03:00
Дмитрий
de11da2b06
docs(finance): C6+C7 finance-tooling implementation plan
...
11 задач в 3 фазах: Ф1 billing-audit скил (C6), Ф2 finance plugin enable +
ru-tax-accounting скил (C7), Ф3 нормативка (Tooling/PSR/Pravila/CLAUDE) +
роутер (routing-off-phase L13 + router-procedure) + наблюдатель (9-атрибутные
блоки + C1/C2) + карта (+3 узла) + ADR-012 + push.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 09:19:50 +03:00
Дмитрий
d984165af1
docs(finance): C6+C7 finance-tooling epic design spec
...
Объединённый эпик «Финансы»: наполнение разделов карты C6 (биллинг/тарификация)
+ C7 (бухгалтерия/налоги). 3 новых узла (#61 finance plugin, #62 billing-audit,
#63 ru-tax-accounting) + reuse-классификация + расширенная нормативка
(роутер routing-off-phase.md + наблюдатель 9-атрибутные блоки) + ADR-012.
+9 терминов в cspell-words.txt.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 09:11:07 +03:00
Дмитрий
426983ffaa
docs(map): iter9 implementation plan
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 04:59:29 +03:00
Дмитрий
87c5eb6323
docs(map): spec self-review fix — edges 13->12
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 04:50:18 +03:00
Дмитрий
cb864b18a5
docs(map): iter9 brain-governance design spec
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 04:49:32 +03:00
Дмитрий
dd0a9ffea6
docs(observer): sync spec §6 with as-built factor-analyzer
...
§6 drifted from the implemented brain-retro analyzer after Phase 1.2/1.3:
- factor matrix now lists 9 axes (session_turn + parallel_session were
captured in the episode schema §3 but missing from the §6 matrix);
- outcome inference documents 'blocked' (error events > retry events) and
notes 'failure' as deferred to the phase-2 agent-judge.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-19 18:17:17 +03:00
Дмитрий
8df5a3fe00
docs(supplier): plan for migration follow-up — HTTP-200 login detect + form rewrite + 3-tier smoke
2026-05-19 17:29:52 +03:00