Дмитрий
40811c5bfd
docs(mentor): спека+план мержа роутер↔наставник + протокол сессии Р1-Р9 + l1-l2 redesign
...
Design-of-record для коммита b739d5ad (мерж роутера в наставника):
- 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
Дмитрий
9d8d3de782
feat(mentor): degraded-судья диагностируем — cause(no_key/transport_error)+errorType+at
...
Разбор «перемежающегося degraded судьи» по systematic-debugging: действующего
бага нет (ключ SET, 28/28 вердиктов чистые, degraded-строки несверяемы — at:null,
без парного WARN). Гипотеза «retry/таймаут» не подтверждена → таймаут не трогали.
Вместо этого закрыта слепота диагностики (TDD, под maintenance):
- callJudgeModel различает no_key vs transport_error+errorType (classifyLLMError);
- причина протекает в вердикт → warnJudgeUnavailable (+cause/error_type/at) и seal-запись;
- main() передаёт nowMs: Date.now() → seal/verdict/warn больше не at:null (логи сверяемы).
Файлы: tools/seal-log.mjs, tools/enforce-judge-gate.mjs. +9 тестов; 2 exact-match
приведены к новому контракту. Регрессия tools-only 3829 GREEN (база 3820), 0 регрессий.
cspell-words.txt +8 терминов. Роадмап: секция «Печать M7» + degraded-наблюдаемость.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-13 04:12:53 +03:00
Дмитрий
d786c273ca
fix(mentor): печать плана M7 — снять дедлок судья↔наставник + наблюдаемость seal-attempts
2026-06-13 03:40:20 +03:00
Дмитрий
ef2436e2e6
docs(mentor): roadmap двухуровневые переговоры (волны 1-7) + cspell
2026-06-12 19:35:46 +03:00
Дмитрий
cefb1b9612
docs(mentor): two-level negotiation spec-v2 (anchored) + plans
2026-06-12 19:15:48 +03:00
Дмитрий
4073164d0d
feat(mentor): wire mentor surface + counter + escalation card (wave 7)
2026-06-12 19:09:59 +03:00
Дмитрий
9f939cd41f
feat(mentor): wire judge escalation to arbitration card (wave 6)
2026-06-12 19:03:59 +03:00
Дмитрий
eca9be46c8
feat(mentor): objection-format judge+mentor formatters (waves 4-5) - 9 tests green
2026-06-12 18:43:43 +03:00
Дмитрий
8918190bbe
feat(mentor): negotiation-section parser (wave 3) - 4 tests green
2026-06-12 18:30:05 +03:00
Дмитрий
6c6d6d2e4c
feat(mentor): arbitration-card pure builder (wave 2) - 6 tests green
2026-06-12 18:26:17 +03:00
Дмитрий
48e8111cc2
feat(mentor): mentor NO-GO counter L1 (wave 1) - 3 tests green
2026-06-12 17:59:24 +03:00
Дмитрий
ebce8e5536
feat(m7): re-plan на ходу (impl-карвут) + эскалация судьи (escape-honor + счётчик NO-GO) + docs-хвост
2026-06-12 15:48:17 +03:00
Дмитрий
d86e1b453d
docs(mentor): тест-гейт Ф8 пройден 3754+2 GREEN + пусковой рецепт регрессии (npx, не app/node_modules — баг vitest 4.1.5 на out-of-root)
2026-06-12 11:10:42 +03:00
Дмитрий
880adcc449
docs(mentor): роадмап — хвосты вычеркнуты (env-фикс был в 95bb6b17, Связано: в шаблоне) + журнал bugs.md в репо + observer refresh
2026-06-12 10:52:24 +03:00
Дмитрий
dd41e474c2
docs(mentor): инцидент 12.06 — вход Фазы 8 на main, баннер в handoff #5 , судьба d1ad4e85 (cherry-pick только внутри Ф8) + cspell словоформы + observer refresh
2026-06-12 10:45:53 +03:00
Дмитрий
95bb6b17fd
chore(mentor): роадмап эпика 2026-06-12 + env ROUTER_LLM_BASE_URL в observer-self-assessment-api (зеркало транспорт-фикса, TDD) + cspell словоформы. Регрессия tools 3754 GREEN
2026-06-12 08:14:35 +03:00
Дмитрий
328ac009d6
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
Дмитрий
f677c6651f
feat(strict-llm-keys): оба строго — судья только ROUTER_JUDGE_LLM_KEY, наставник только ROUTER_MENTOR_LLM_KEY, общий ROUTER_LLM_KEY не фолбэк (решение владельца 2026-06-12; resolveJudgeLlmKey/resolveMentorLlmKey + env-тесты строгости + runbook-таблица ключей)
2026-06-12 06:39:17 +03:00
Дмитрий
8293ca2ce6
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
Дмитрий
7b6f5cbd15
docs(mentor): runbook активации роутера-наставника — 5 этапов для владельца (обёртка → флаг → регистрация → smoke → обкатка)
2026-06-11 20:15:29 +03:00
Дмитрий
57b811b3c0
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
Дмитрий
537154adf3
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
Дмитрий
ee65be2466
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
Дмитрий
3b03bdd98c
docs(router-mentor): спека R6.3 хвост — фолд ревью 5-скил цепочки
...
- §6.2 binding вердикт↔plan_hash (нах.F4), §5.5 INFERRED-guard (VF-1), §5.3 дозапрос соседа (нах.F7), §5.7/§8 радары=код (нах.F2), §10 карта закрытия, §0 changelog R6.3, шапка Статус R6.3
- §6.1 развод ролей уже в 1edddc42; закрытие C-1 + нах.F1-F7 + VF-1 + V-1/V-2/C-3 (детали §10)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-11 12:59:31 +03:00
Дмитрий
84e264f101
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
Дмитрий
1edddc420f
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
Дмитрий
886c0ac5d5
docs(router-mentor): sub-plan B+D+E+C — декомпозиция R6.2 завершена
2026-06-10 14:31:01 +03:00
Дмитрий
e69fd396b2
docs(router-mentor): R6.2 + sub-plan A + handoff-2
2026-06-10 13:36:57 +03:00
Дмитрий
364da6bf48
docs(phase8): refresh снимок+runbook + paste-ready settings.json блок
...
После закрытия M6 FIX-5 и верификации тест-гейта §9.2:
- 2026-06-10-phase8-state-snapshot.md: HEAD 4dd2098e→5be1cd6e; M6 FIX-5 из
«отложено» → закрыто (key-gated); D-3 доска live → закрыта (84231a14 );
регрессия 3449→3478; §9.2 верифицирован зелёным (предусловие C закрыто).
- 2026-06-09-phase8-deployment-runbook.md: Prerequisites регрессия →3478 +
§9.2 verified; +строка History 2026-06-10.
- 2026-06-10-phase8-settings-paste-block.md (новый): paste-ready записи для
settings.json — 13 хуков защитного контура (PreToolUse 10 / PostToolUse 2 /
Stop 1) + companion + список снятия зоопарка (~20). Merge-not-replace, атомарно,
пол #1 ДО снятия router-gate. Референс для владельца (Claude settings.json не пишет).
Только docs. Активация Фазы 8 (settings.json/keychain/ENV) — шаги владельца.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-10 05:52:32 +03:00
Дмитрий
5be1cd6e80
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
Дмитрий
ae3f841cee
feat(escape-sign): reader key-gated verify floor_escape (M6 FIX-5 Task 3)
...
loadFloorEscapes (единственный ВЫДАЮЩИЙ читатель floor_escape) теперь key-gated
проверяет подпись: ключ есть → оставить только валидно-подписанные (форж/
неподписанный/битый отброшены); нет ключа (truthy) → принять все (как сегодня,
content-floor backstop).
- Рефактор: generic loadRecords → floor_escape-специфичный readFloorEscapeRecordsAt,
возвращает ПОЛНЫЕ записи {type,action,ts,sig} (не stripped) для верификации.
Единственный вызыватель — loadFloorEscapes (loadConsumed читает другой файл).
- loadFloorEscapes(sessionId, now, {keyImpl, fsImpl, runtimeDir}) — 3-й опц.
аргумент, обратно-совместим (8 потребителей зовут loadFloorEscapes(sess)).
- ОТКЛОНЕНИЕ от дословного кода плана (одобрено владельцем): быстрый путь —
пропусков нет → [] БЕЗ резолва ключа. Поведение §3/§6 идентично, но keychain-
subprocess не дёргается на каждый tool-use в массовом пустом случае
(loadFloorEscapes — gate hot-path; 5 из 8 потребителей keychain не читали).
TDD: 6 новых тестов — 4 key-gated (signed принят / forged+tampered отброшены /
ключ null → все / '' falsy → все / окно 5 мин), 2 на быстрый путь (нет записей /
нет файла → [] без вызова ключа). Регрессия существующего escape-grant GREEN
(26 тестов). Суммарно 32 GREEN по затронутым файлам.
План: docs/superpowers/plans/2026-06-10-floor-escape-signing.md (Task 3)
Прод-код инертен до провижининга ключа (Фаза 8). Гейт закрытия — следующим шагом.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-10 05:28:40 +03:00
Дмитрий
f4ac596a11
feat(escape-sign): writer подписывает floor_escape при наличии ключа (M6 FIX-5 Task 2)
...
processEvent (PostToolUse AskUser) теперь подписывает floor_escape-пропуск
подписью FLOOR_ESCAPE, когда ключ доступен (resolveReceiptKey):
- +keyImpl=resolveReceiptKey, fsImpl={appendFileSync,mkdirSync} — инъекция для
hermetic-тестов; резолв ключа один раз на событие (fail-safe: ошибка → key=null
→ floor_escape пишется неподписанным, PostToolUse-наблюдаемость не ломается).
- esc подписывается только при наличии ключа; approve_git_operation (rec) НЕ
трогаем (§2.2). Нет ключа → esc без sig (как сегодня).
- Запись через fsImpl.* вместо прямых node:fs.
TDD: 2 новых теста (ключ → валидная подпись; ключ null → без sig). Регрессия
существующего enforce-askuser-answer-parser GREEN (approve_git_operation-путь цел).
Суммарно 10 GREEN по затронутым файлам.
План: docs/superpowers/plans/2026-06-10-floor-escape-signing.md (Task 2)
Прод-код инертен до провижининга ключа (Фаза 8).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-10 05:16:15 +03:00
Дмитрий
7faef3c93f
feat(escape-sign): домен FLOOR_ESCAPE + sign/verify helpers (M6 FIX-5 Task 1)
...
Defense-in-depth для escape-гранта: подпись пропуска floor_escape, чтобы форж
без секретного ключа отвергался (поверх content-floor). Task 1 — фундамент:
- receipt-sign.mjs: +домен RECEIPT_DOMAINS.FLOOR_ESCAPE='floor-escape' (R-31,
изолирует подпись floor-escape от approval/frozen-plan).
- askuser-answer-parser.mjs: +signFloorEscapeRecord/verifyFloorEscapeRecord —
зеркало signApprovalRecord/verifyApprovalRecord, домен FLOOR_ESCAPE. Чистые,
без ключа → sig:null.
TDD: 5 новых тестов (доменная изоляция, подпись/верификация целой записи,
подделка/без sig/без ключа/чужой ключ/чужой домен → false). Регрессия по
затронутым файлам 82 GREEN, 0 регрессий.
Спека: docs/superpowers/specs/2026-06-10-floor-escape-signing-design.md
План: docs/superpowers/plans/2026-06-10-floor-escape-signing.md (Task 1)
Прод-код инертен до провижининга ключа (Фаза 8).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-10 05:13:20 +03:00
Дмитрий
e506a836e7
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
Дмитрий
84231a1470
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
Дмитрий
4dd2098e7b
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
Дмитрий
ec73a5c2d0
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
Дмитрий
0289e93c0e
feat(gate1+se2): wire spec-judging (Гейт-1) + fail-closed wall whitelist (SE-2)
...
М7 Фаза 8 — последние 2 хвоста до флипа. Inline TDD; спека+план одобрены; 2 адверсариальных прохода.
Гейт-1 (печать артефакта в рантайме):
- extractGate1Product (enforce-judge-gate.mjs): детект записи specs/*.md (Write-only) → судить
линзами gate1 (движок уже поддерживает). runJudgeGate: спека→gate1, иначе план→gate2.
- judged_hash от СЫРОГО content (SD-1, разбор #1 High): trimmed source_sha не сошёлся бы с
печатью sealOnWiredGo → артефакт НИКОГДА не печатался бы. Один канон судья→печать.
- extractGate2Product не тронут (Гейт-2 = планы, регрессия зелёная).
SE-2 (стена не чтит shadow):
- decideMode (enforce-supreme-gate.mjs): fail-closed whitelist — энфорсмент ТОЛЬКО при
judge_mode==='live-block' на ОБЕИХ печатях; shadow/null/опечатка → разговорный (мутаторы block).
Разбор #1 (VA-a/SE-a): убрана единственная fail-OPEN сверка; опечатка режима безопасна.
- мигрированы 3 enforce-теста стены на judge_mode:'live-block'.
Тесты: gate1 10, SE-2 6; регрессия tools-only 3443 passed / 2 skip / 0 регрессий.
Гейт-1 тесты — отдельный файл enforce-judge-gate-gate1.test.mjs (real-test-verifier блокирует
import-only Edit существующего теста). Печать в рантайме до флипа НЕ производится.
2026-06-09 19:05:17 +03:00
Дмитрий
09598dd5bd
feat(seal): sealed-plan production pipeline (M7 Фаза 8 code-precondition)
...
Производство двух печатей (артефакт-решение + план-шаги), чтобы стене М2 было
что матчить — код-предусловие флипа. Inline TDD, спека/план одобрены владельцем.
- C1 artifact-from-spec.mjs: спека markdown -> {sections, source_sha} по якорям {#id} (P2-2).
- C2 plan-steps-parse.mjs: план -> [{op,object,ref}], fail-CLOSE, reject op:Task (VA-4),
канон object = repo-relative POSIX (SE-5; pathNormalize только на матче в стене, не на парсе).
- C3/C4 plan-lock.mjs: judge_mode в ПОДПИСАННОЙ базе freezePlan (VA-2) + атомарный persist
temp->rename для обоих save (SE-4/VA-3, артефакт ДО плана).
- C6 seal-orchestration.mjs: sealableArtifact/sealablePlan + judgedHashOf (SD-1) +
sealArtifact/sealPlan на РЕАЛЬНОМ GO (SE-3 wired===true), штамп artifact_id из текущего
артефакта (SD-3), judge_mode впрыснут в печать ПОСЛЕ хеш-сверки sealOnApproval (фикс TOCTOU).
- C5 enforce-judge-gate.mjs: SPEC_PATH_RE + sealOnWiredGo (печать на wired GO, инъекция в main,
юнит-тесты hermetic) + judged_hash в вердикте runJudgeGate. extractGate2Product не тронут
(Гейт-2 = планы; Гейт-1 spec-judging — отдельный заход перед флипом).
- Интеграция seal-to-wall: печать -> decideMode стены М2 (allow / non-match block / closed-door).
Тесты: full tools-only регрессия 3427 passed | 2 skipped, 0 регрессий (+29 новых кейсов).
Печать в рантайме НЕ производится до флипа (стена/судья не зарегистрированы) — сборка
готовит код-предусловие. Спека docs/superpowers/specs/2026-06-09-sealed-plan-production-design.md.
2026-06-09 17:50:25 +03:00
Дмитрий
8718e2a965
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
Дмитрий
d59b9177d4
Merge branch 'main' into worktree-brainrepo
...
# Conflicts:
# tools/enforce-coverage-verify.mjs
# tools/enforce-coverage-verify.test.mjs
# tools/enforce-router-gate.mjs
# tools/enforce-router-gate.test.mjs
2026-06-09 13:26:12 +03:00
Дмитрий
cc77a5817e
docs(phase8): owner deployment runbook for M7 zoo dissolution + activation
2026-06-09 13:03:56 +03:00
Дмитрий
5fa17070a9
docs(router-mentor): Level B closure + phase 8 handoff 3
2026-06-09 12:46:13 +03:00
Дмитрий
2c41971d88
docs(router-mentor): G1 closure + phase 8 handoff 2
2026-06-09 10:32:47 +03:00
Дмитрий
1478f56b51
docs(router-mentor): phase 8 readiness audit findings
2026-06-09 09:54:07 +03:00
Дмитрий
4ea4806f71
docs(router-mentor): phase 8 migration handoff (audit tails then configure-test-deploy)
2026-06-09 09:20:20 +03:00
Дмитрий
487a6f1db9
docs(router-mentor): A1 judge gate2 activation note (implementation-specific)
2026-06-09 08:55:33 +03:00
Дмитрий
cfca7ecfaa
docs(router-mentor): A1 pre-code chain amendments (Write-only, judge-unavailable degraded-allow)
2026-06-09 08:30:43 +03:00
Дмитрий
843097c0d6
docs(router-mentor): A1 judge gate2 wiring implementation plan
2026-06-09 08:19:54 +03:00
Дмитрий
44c194bc0f
docs(router-mentor): A1 judge gate2 wiring design spec
2026-06-09 08:11:13 +03:00