Commit Graph

41 Commits

Author SHA1 Message Date
Дмитрий 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
Дмитрий 3a422a00c3 docs: brain-plugin дизайн v6 + план Фазы 1 + handoff сессии
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 09:51:17 +03:00
Дмитрий 80aa729404 chore: prune Liderra frontend-product specs-plans from claude-brain 2026-06-15 09:29:27 +03:00
Дмитрий cbc0ab9e0e chore: prune Liderra-specs-plans over-copied into claude-brain 2026-06-15 09:23:18 +03:00
Дмитрий 397777089e feat: claude-brain — управляющий слой, выделен из Лидерры по ADR-020
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 08:06:08 +03:00