54 Commits

Author SHA1 Message Date
Дмитрий b365ebe567 docs(pravila): +§18 дисциплины работы агента (A/D1/D2) — v1.45
Внесён единый раздел §18 «Дисциплины работы агента под управляющим слоем»: 18.1 A (препятствие
на ходу — перепланируй, не гадай), 18.2 D1 (деплой — читать вывод каждого шага, стоп на аномалии,
опасное — per-command согласие), 18.3 D2 (сохранение под ревью — раздельные согласия деплоя/коммита,
опасное вне общего согласия). Нормативная формулировка действующего поведения; код не меняется.
Версия свода v1.44 -> v1.45; история догнана записью v1.44 (Perplexity Pack). Через церемонию стены:
спека (v3) + план (v4-push) опечатаны наставником+судьёй; §6-правка авторизована escape владельца.
Синхрон квинтета (PSR/Tooling/CLAUDE.md) — отдельным шагом.

GUIDE (bags/router-mentor-wall-GUIDE.md): +урок про escape-окошко (строку давать в чат для
копирования, вставлять в поле ответа окошка) +урок про коммит/пуш шагами плана (обоснование
docs-only git под claude-md-management).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 23:23:05 +03:00
Дмитрий bf3d557cce feat: разворачивание комка design-plugin — 7 навыков (роутер-реестр)
Эпик роутер-реестр, спека v2 §2, этап 1. Зонтик design-plugin развёрнут
в 7 карточек-навыков + 7 под-узлов #46a..#46g. Контракт раньше описывал
лишь 3 из 7 реальных навыков — теперь покрыты все.

- 7 карточек: accessibility-review, design-critique, design-handoff,
  design-system, research-synthesis, user-research, ux-copy
- nodes.yaml: узел #46 → #46a..#46g; триггеры (дизайн-критика→critique,
  ux-копирайт→ux-copy, research synthesis→research-synthesis)
- зонтик убран; registry-load.test: 123 узла / 115 active

Регрессия (без 5 pre-existing node:test файлов): 4365 passed, exit 0.
(askuser-cosmetic-escape-exempt флакает под параллелизмом — изолированно зелёный, не связан.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:18:20 +03:00
Дмитрий 0258b9d2a7 feat: разворачивание комка product-management — 8 навыков (роутер-реестр)
Эпик роутер-реестр, спека v2 §2, этап 1. Зонтик product-management развёрнут
в 8 карточек-навыков + 8 под-узлов #42a..#42h.

- 8 карточек: write-spec, roadmap-update, metrics-review, product-brainstorming,
  sprint-planning, stakeholder-update, synthesize-research, competitive-brief
- nodes.yaml: узел #42 → #42a..#42h; триггеры (planning/prd→write-spec,
  роадмап→roadmap-update, метрики→metrics-review); ссылка L9 обновлена
- product-management:competitive-brief отличён от marketing:competitive-brief
  (та самая коллизия имён, ради которой имя файла несёт плагин)
- зонтик убран; registry-load.test: 117 узлов / 109 active

Регрессия (без 5 pre-existing node:test файлов): 4361 passed, exit 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:13:44 +03:00
Дмитрий f01f5b8bbc feat: разворачивание комка adr-kit — adr + judge (роутер-реестр)
Эпик роутер-реестр, спека v2 §2, этап 1. Зонтик adr-kit развёрнут в
2 содержательные карточки (служебные init/setup/upgrade/lint/migrate/
install-hooks в реестр не входят — решение владельца 18.06).

- 2 карточки: adr-kit__adr (ведение ADR) + adr-kit__judge (сверка vs Accepted ADR)
- nodes.yaml: узел #36 → #36a/#36b; триггеры (adr→#36a, enforcement→#36b);
  ссылки L4/L5 обновлены на adr-kit:adr
- зонтик adr-kit убран (карточка + узел)
- registry-load.test: 110 узлов / 102 active
- m3b-node-graph: резолв известного узла #36 → #36a

Регрессия (без 5 pre-existing node:test файлов): 4361 passed, exit 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:09:38 +03:00
Дмитрий ded5372f4e feat: разворачивание комка plugin-dev — 7 навыков (роутер-реестр)
Эпик роутер-реестр, спека v2 §2, этап 1. Зонтик plugin-dev развёрнут в
7 карточек-навыков + 7 под-узлов #57a..#57g.

- 7 карточек plugin-dev__<навык>.contract.json (agent/command/hook/mcp/
  plugin-structure/plugin-settings/skill-development)
- nodes.yaml: узел #57 → #57a..#57g; keyword-триггеры на plugin-structure;
  ссылка L11 обновлена на plugin-dev:plugin-structure
- зонтик plugin-dev убран (карточка + узел)
- registry-load.test: 109 узлов / 101 active

Регрессия (без 5 pre-existing node:test файлов): 4361 passed, exit 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:05:06 +03:00
Дмитрий 5a7c5c255c feat: разворачивание комка superpowers — 14 навыков (роутер-реестр)
Эпик роутер-реестр, спека v2 §2, этап 1. Зонтик superpowers (14 meta-skills
одной карточкой) развёрнут в 14 отдельных карточек-навыков + 14 под-узлов
ради точного подбора роутером.

- 14 карточек superpowers__<навык>.contract.json (skill = superpowers:навык)
- nodes.yaml: узел #19 развёрнут в #19a..#19n; классификации-триггеры
  распределены: feature в brainstorming, planning в writing-plans, tdd в TDD, debug в debugging
- writing-plans приведён к конвенции (был own без префикса/узла → external + узел)
- зонтик superpowers убран (карточка + узел)
- тесты: registry-load 103 узла/95 active; m3a/m3c образцы own/external
- splitting-inventory: прогресс + доп-каскады для крупных комков

Регрессия свода: 4361 passed, 0 failed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 22:53:20 +03:00
Дмитрий e98ba1e527 feat: разворачивание комка claude-md-management — пилот реестра роутера
Эпик роутер-реестр, спека v2 §2. Развёрнут самый маленький комок-зонтик
в 2 отдельные карточки-навыка ради точного подбора роутером. Пилот выверил
конвенцию для остальных 11 комков.

- 2 карточки: claude-md-management__claude-md-improver + __revise-claude-md;
  поле skill = плагин:навык, kind external, zero-hash source
- nodes.yaml: узел #33 развёрнут в дочерние #33a/#33b; ссылка L12 обновлена
- schema.json: паттерн id расширен на дочерний суффикс #NNa
- registry-load.test: счётчики узлов 89 в 90, active 81 в 82
- splitting-inventory.md: инвентаризация 12 комков + выверенная конвенция
- тест-сторож split-pilot-claude-md + план пилота

Регрессия свода: 4361 passed, 0 failed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 22:35:59 +03:00
Дмитрий 7cf91ecf12 feat: роутер-реестр — словарь capability-токенов, прототип A8, замок словаря 2026-06-18 20:33:42 +03:00
Дмитрий 0d31e62248 feat: анти-диктовка свободного floor_escape (consent forgery C)
Свободный floor_escape (лёгкий escape в чате) НЕ доверяется, если контроллер в своём тексте
текущего хода инструктировал владельца вписать метку. processEvent читает текст контроллера
из транскрипта хода (readTranscript + lastAssistantText, переиспользован), один раз на событие
зовёт detectOtherSocialEng (раньше был мёртвой проводкой — не вызывался нигде); flagged →
floor_escape не пишется. Паттерны detectOtherSocialEng усилены императивной диктовкой метки
FLOOR-ESCAPE (глагол рядом; простое упоминание концепта не флагуется). fail-open observability —
сбой чтения транскрипта → как раньше. Применяется к floor_escape (git-approval закрыт #A).
Завершает кодовую часть эпика (A + B1-B5 + C). Спека §C. Свод 4350 зелёный.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 19:54:25 +03:00
Дмитрий 11969ac3ea feat: пол требует терминальный грант для разрушительного (consent forgery B5)
Per-command escape несущего пола (rm -rf / git push --force / migrate:fresh / db:wipe / запись в
runtime/секрет) открывается ТОЛЬКО терминальным грантом владельца (origin+подпись, fail-closed),
не chat floor_escape — Поза 1. Пол по определению блокирует лишь необратимое → весь его escape
тяжёлый: enforce-floor::main грузит loadTerminalGrants вместо loadFloorEscapes. decide()/floorDecide
агностичны источнику — логика и тесты пола не тронуты. Стена (supreme-gate 396) не правится: пол
(matcher '*') связывает первым. Завершает Часть B (терминал-канал). Свод 4346 зелёный, пол 12/12.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 19:26:24 +03:00
Дмитрий 5bcf229e4f feat: plan-done и арбитраж gate3 — только терминальный грант (consent forgery B4)
Снятие печати плана (plan-done) и арбитраж gate3 (gate3-arb:accept/continue) — тело-агностичные
согласия, обходящие/снимающие стену — теперь открываются ТОЛЬКО терминальным грантом владельца
(Поза 1, HOLE-4). supreme-gate: новый параметр terminalGrants в decideMode/runGate, PLAN_FINISH_ACTION
проверяется против него (лёгкий escape остаётся на chat-грантах); main грузит loadTerminalGrants.
gate3-loop: арбитраж-гранты грузятся через loadTerminalGrants (loader-swap; resolveOwnerArbitration
агностична). Ядро стены: 138/138, gate3 44/44, полный свод 4346. Спека §B/§DEC.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 19:03:10 +03:00
Дмитрий 29287d73c9 feat: деплой и коммит — только терминальный грант владельца (consent forgery B3)
ops-runbook:<hash> (деплой) и commit:<hash> (коммит агентом) открываются ТОЛЬКО
терминальным грантом владельца (origin:owner-terminal + валидная подпись, ключ обязателен —
fail-closed #KEY), не chat floor_escape — Поза 1. loadPlanScopedGrants переписан как
loadTerminalGrants + фильтр по префиксу (origin/подпись/нижняя граница в одном месте, DRY).
Мосты blessed-ops/commit-grant не тронуты (читают через те же обёртки). Тесты загрузчиков
переписаны под новый контракт. Спека §B/§KEY/§CRIT6.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 18:39:48 +03:00
Дмитрий f87090702c feat: owner-seal только из терминального гранта (consent forgery B2)
Печать «одобрено владельцем» (owner-seal) теперь открывается ТОЛЬКО терминальным грантом
владельца (loadTerminalGrants), не chat floor_escape — Поза 1 для самого тяжёлого согласия.
Вычисление вынесено в тестируемую ownerSealOpenForEvent (источник грантов инъектируется);
sealTurnProd зовёт её с loadTerminalGrants. sealOnWiredGo (берёт ownerSealOpen параметром) и
его тесты не тронуты. Убран ставший неиспользуемым верхний импорт loadFloorEscapes
(escape-валве судьи берёт его динамически). Спека §B/§CRIT7.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 18:17:46 +03:00
Дмитрий dec0ed502a feat: терминальный грант владельца — примитив (consent forgery B1)
Несомненный канал согласия для тяжёлого (Поза 1): floor_escape с origin:owner-terminal,
подписанный ключом keychain. Скрипт владельца tools/owner-consent.mjs строит+подписывает+
пишет грант (запускает владелец; контроллер не может — нет ключа + floor режет запись runtime).
Читатель loadTerminalGrants принимает ТОЛЬКО origin-помеченные валидно-подписанные гранты,
ключ обязателен (fail-closed, #KEY). Нулевой радиус: живые потребители НЕ тронуты —
подключение (owner-seal/ops-runbook/commit/plan-done/gate3/bash) отдельными заходами B2+.
Спека: specs/2026-06-18-consent-forgery-fix-design.md §B/§KEY.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 18:02:28 +03:00
Дмитрий cdc32b1a1d fix: anti-button — согласие только из свободного ввода владельца (consent forgery A)
Ответ AskUserQuestion, дословно совпавший с ярлыком контроллерской кнопки, больше
не порождает доверенную запись (floor_escape И approve_git_operation). Закрывает
наблюдаемую подделку owner-seal и HOLE-1 (git-approval тем же классом). Фундамент —
guard в единственном писателе processEvent + чистый предикат answerMatchesOption.
Спека: specs/2026-06-18-consent-forgery-fix-design.md §A.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 17:43:58 +03:00
Дмитрий a5830a8a1c docs: handoff — §3.4 десинк закрыт (cdcaf61), остался только норматив-хвост
Обновлён docs/superpowers/2026-06-18-wall-improvements-handoff.md: §3.4 помечен
СДЕЛАНО (ленивое снятие печати), свод 4320. Единственный оставшийся хвост —
норматив-заметки A/D1/D2 в Pravila/GUIDE (когда стена вернётся).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 14:53:26 +03:00
Дмитрий 6bc0f6d040 docs: handoff допила эталона — B+C ч.2/D1/D2 DONE + решения по хвостам
Обновлён docs/superpowers/2026-06-18-wall-improvements-handoff.md:
- «Сделано» дополнено B+C ч.2 (bc1d2a3), D1 (bbc053e), D2 (b47a71c); свод 4319.
- «Осталось» переписано: только §3.4 десинк (решение владельца — отдельной
  сессией; механизм + безопасный путь зафиксированы) + норматив-заметки.
- §3.3 docs/ops без criterion/verify — ЗАКРЫТО (владелец 2026-06-18): строго .md,
  расширение на не-.md ops-артефакты не делаем (конфликт с CLAUDE.md §13).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 14:32:26 +03:00
Дмитрий b47a71c66b feat: D2 — канал коммита под ревью (агент коммитит под commit:<hash>)
Опечатанный ревью-план (GO наставника+судьи, judge_mode=live-block) + одно
согласие владельца `FLOOR-ESCAPE: commit:<plan-hash>` → агент делает git
add/commit/push без терминала владельца. Гейт ПРИСУТСТВИЯ (router-gate
git-approval) отходит; гейты КАЧЕСТВА (criterion-gate/verify-gate) НЕ тронуты —
код-коммит всё равно требует по-критерийный GREEN и свежую расписку. Согласия
деплоя (ops-runbook:) и коммита (commit:) — раздельные кнопки.

- escape-grant: обобщён plan-scoped загрузчик (loadPlanScopedGrants/
  planScopedGrantOpen, окно = существование плана); D1 ops-runbook стал тонкой
  обёрткой; добавлены commit: COMMIT_GRANT_PREFIX/loadCommitGrants/commitGrantOpen.
- commit-grant (новый мост план↔router-gate): commitGrantOpenForSession —
  открыт ли commit:<hash> на валидный sealed live-block план сессии.
- shell-content-rules classifyGitCommand: conditional-git пускается при
  ctx.commitGrantOpen; GIT_HARD (force-push/--no-verify/-c) блокирует ПЕРВЫМ
  (качество/безопасность не ослаблены).
- enforce-router-gate: main кладёт ctx.commitGrantOpen (gated через мост).

План: docs/superpowers/plans/2026-06-18-agent-commit-channel-plan.md
Спека: docs/superpowers/specs/2026-06-18-agent-commit-channel-design.md §3.1-3.2.

ОТЛОЖЕНО (требует решения владельца, в хвосте плана):
- §3.3 docs/ops без criterion/verify: .md уже пропускается; расширение на
  не-.md ops-артефакты конфликтует с CLAUDE.md §13 v2.40 — нужен явный список.
- §3.4 десинк push-последним-шагом: рискованная правка снятия печати стены.

+22 теста, свод 4319 passed / 2 skipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 13:58:05 +03:00
Дмитрий bbc053e0a6 feat: D1 — благословлённый ops-runbook (деплой выполняет агент под ревью)
Деплой, помеченный **Kind:** deploy и опечатанный (наставник+судья GO,
judge_mode=live-block), агент выполняет по белому списку шагов под ОДНИМ
согласием владельца `FLOOR-ESCAPE: ops-runbook:<plan-hash>` — без аварийного
выхода на каждую команду. «Ядерный» набор (rm -rf/force-push/migrate:fresh/
db:wipe) остаётся на per-command escape.

- plan-lock: freezePlan принимает kind (в подписанную базу + хеш, как delivery);
  не-'normal' добавляет поле, обычные планы байт-идентичны старым печатям.
- plan-skills: parsePlanKind (**Kind:** deploy|normal, default normal).
- seal-orchestration: sealablePlan/sealPlan прокидывают kind в печать.
- escape-grant: loadOpsRunbookGrants (окно = существование плана, БЕЗ 5-мин
  фильтра) + opsRunbookGrantOpen (точный матч на plan_id).
- floor-decide: floorDecide получает инъектируемый blessedOps(cmd); content-block
  команда из набора пропускается, ЯДЕРНЫЙ набор (bashIsFloor) исключён из послабления.
- blessed-ops (новый модуль-мост): buildBlessedOps + loadBlessedOpsForSession —
  знает план+пол, чтобы СОХРАНИТЬ Δ9 (enforce-floor не зависит от модуля печати плана).
  Предикат пускает команду только дословно из Bash-листов опечатанного deploy-плана.
- enforce-floor: gated — blessed-ops грузит план/гранты ТОЛЬКО при открытом
  ops-runbook-гранте; без согласия владельца пол плана не касается (Δ9 цел).

План: docs/superpowers/plans/2026-06-18-blessed-ops-runbook-plan.md
Спека: docs/superpowers/specs/2026-06-18-blessed-ops-runbook-design.md §3.1-3.7.
+33 теста, свод 4299 passed / 2 skipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 13:19:22 +03:00
Дмитрий e9ba6fb9a2 feat: B+C part1 - смотрящие инструменты свободны под/без плана (isQueryOnly)
Новый предикат isQueryOnly (ToolSearch/WebFetch/WebSearch/read-only браузер:
navigate/snapshot/wait/screenshot) проведён во все ветки стены: смотрящие и
спрашивающие инструменты проходят и в разговорном режиме (осмотр чужого сайта
без плана), и под опечатанным планом, не двигая указатель шагов. Действующие
инструменты (клик/ввод) сюда не входят - они пойдут через сеанс осмотра
(часть 2 B+C). Свод зелёный: 4229 passed, 2 skipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 10:52:47 +03:00
Дмитрий e91aa021f0 feat: A - чтение под опечатанным планом свободно (ДР-1 снят в impl)
Под планом авторское чтение больше не блок: свой вывод, лог упавшего шага,
новый файл доступны. Чтение не двигает очередь шагов; impl-чтения логируются
с пометкой impl:true для ретро и не считаются во фронт-лоад порог. Секреты
держит отдельный read-path-deny. Свод зелёный: 4221 passed, 2 skipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 10:40:23 +03:00
Дмитрий abf2060328 feat standby: штатный режим - флаг, управляющий хук, сброс, страж в 12 хуков
Сессионный флаг standby-mode + управляющий UserPromptSubmit-хук рукопожатия + SessionStart-сброс. Страж if standbyActive в 12 блокирующих хуках; рельсы floor/snapshot/verify-gate не тронуты.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 10:07:04 +03:00
Дмитрий 2b9e72ab46 docs: mark open-items roadmap + produce-verify-receipt bag resolved
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 08:10:39 +03:00
Дмитрий 2380e82002 feat: gate-3 owner acceptance live wiring Phase 2d finale
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 05:28:49 +03:00
Дмитрий c50ac7c915 restore: run-test-json конфиг от корня репо через resolveVitestConfig plus тест buildVitestJsonArgs plus GUIDE Уроки 9 формат плана
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 20:20:23 +03:00
Дмитрий 07f24382e8 docs: .gitattributes принудительный LF plus GUIDE Уроки 8 диагностика CRLF-саги (vitest@4 давится на CRLF .mjs)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 20:15:21 +03:00
Дмитрий 7ae53216bf docs: черновики deliderra-cleanup и app-path-split-legacy-fix спеки и планы plus bag wall-read-block
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 20:10:14 +03:00
Дмитрий 46c1b2301d feat: E-S1 Фаза 2b судья-карточки gate3card линзы card_matches_product/no_overstatement/verify_steps_real plus чистый помощник видимости gate3CardSurfaceRecord стадия judge:gate3card
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 16:54:52 +03:00
Дмитрий ba584a8335 docs: bag-репорты багов стены plus спеки и планы фаз gate3 plus роадмап открытых вопросов по сессиям
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 15:41:09 +03:00
Дмитрий cd831b872f fix: наставник-хук silent-swallow срыв в видимый degraded plus GUIDE Уроки 7 диагностика наставник не вернулся
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 15:13:28 +03:00
Дмитрий 15e217fcb4 feat: E-S1 gate-3 приёмка владельца фаза 2a ядро buildOwnerCard plus расширение decideGate3Closure и фикс produce-verify-receipt выбор конфига от корня репо
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 14:39:40 +03:00
Дмитрий a8489a22c7 feat: видимость вердиктов роутер и gate3 в баннер и снимок-стор
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 13:06:07 +03:00
Дмитрий fed3c4f9b8 feat: E-S1 gate-3 owner-acceptance phase 1 delivery mark plumbing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 10:53:25 +03:00
Дмитрий e4a0b48c0a feat: E-S1 gate-3 trigger Stop-hook enforce-gate3-loop plus wall loop-open marker
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 08:54:54 +03:00
Дмитрий dfa5ef180f feat: E-S1 gate-3 safe core buildGate3Product and decideGate3Closure
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 06:55:43 +03:00
Дмитрий 4f5c928796 fix: classifyJudgeOutcome skip vs degraded plus bug notes and SP2a design
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 05:43:18 +03:00
Дмитрий c4774c55fb feat: supreme-gate two-tact step-pointer tentative-advance F-J SP4
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 04:52:00 +03:00
Дмитрий 921bb1146c wip: снимок перед бэкапом в Gitea 2026-06-16 2026-06-16 14:12:52 +03:00
Дмитрий a885ed1b63 docs: SP1 видимость вердикта — дизайн+план + handoff №7 arbitration epic
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 13:30:32 +03:00
Дмитрий 29d2dd3ebd feat: brain-plugin манифест + marketplace + reviewer-agent + GUIDE-cleaning — Фаза 2 Спек 1
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 12:28:22 +03:00
Дмитрий 318add8fa0 feat: brain-config classifyFilePath стемы нормативки config-driven — greenfield #3 observer
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 12:23:40 +03:00
Дмитрий c19941aea0 docs(brain-plugin): handoff №6 — #1/#2/#3-cross-ref/#3-shell done, остаток observer+Фаза2
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 10:17:55 +03:00
Дмитрий 3d7690650e feat(brain-config): shell-content защита config-driven (greenfield #3 shell)
buildProtectedPatterns 2-й параметр normativeFiles даёт anchored .md stem-паттерны; оба гейта в main строят protectedPaths из loadConfig (try/catch fallback DEFAULT). DEFAULT 32-34 сохранён (backward-compat); augment только добавляет защиту. shell-content-rules импортирует docStem из cross-ref-checker.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 09:41:58 +03:00
Дмитрий deb504988a feat(brain-config): cross-ref имена config-driven (greenfield #3 cross-ref)
docStem снимает версию; buildCrossRefPatterns строит linkRe/crossRe/normalizeName/pathToName из normative_files плюс DEFAULT_ALIASES; CLI спредит в detectMismatches. Дефолт 5 доков = детект как хардкод; greenfield распознаёт свои доки. shell/observer — отдельные планы.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 08:16:27 +03:00
Дмитрий a16023743c feat(brain-config): wire classifier_context в classify + reviewViaDirectApi (Task 7 follow-up #2)
Glue читает loadConfig().classifier_context; pure-fns и их тесты уже были. Дефолт = brain.local.md Лидерра-строка; greenfield без файла = generic.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 07:25:51 +03:00
Дмитрий 8c4c50cfb3 test(brain-config): обновить assertions под deepseek-v4-pro миграцию
3 пре-существующих красных от ba10068: router-config модель + 2 timeout-assert HEAVY_LLM_TIMEOUT_MS 90000 to 300000. Parse-движок не тронут.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 06:48:06 +03:00
Дмитрий 03a1f2c995 docs(brain-config): дизайн+план normative_files-модели + handoff-5
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 04:25:02 +03:00
Дмитрий 4ff8f2b418 docs(brain-plugin): session-2 handoff — Task 1-2 + Task 4 benign + wall learnings
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 11:56:09 +03:00
Дмитрий 97985b44f1 feat(brain-config): cross-ref-checker config-seam — opts override (Task 4 benign)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 11:42:26 +03:00
Дмитрий b9730afb8a feat(brain-config): чистый загрузчик brain.local.md + fail-safe resolveConfig (Фаза 1 Задачи 1-2)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 10:21:50 +03:00