Files
portal/tools
Дмитрий e510037484 feat(m5): Блок 5 — сквозные инварианты N5/Δ9 + манифест-WARN Δ8 (Пакет 6)
Guard/инвариант-тесты над существующим кодом (новый prod-код только в 6.5) +
SessionStart-самопроверка регистрации. Все non-vacuous (positive controls).

6.1 (N5) — строгая проверка пола: поведенческие инварианты запирают фиксы аудита
  M1-M4 (finalGate снимает вето ТОЛЬКО на floorBlocked===false; runGateLadder не
  проходит на ok!==true / undefined / throw) + структурный grep по judge-orchestrator
  (центр «по всем полам разом»). Scope grep'а сужен до orchestrator — токенайзерные
  .ok в floor-decide НЕ floor-вердикты (избегаем ложного срабатывания).
6.2 (Δ9-а) — анти-усыхание floor-набора: снимок 11 команд, обязанных оставаться
  floor:true; удаление строки FLOOR_RE без ADR флипнёт одну → CI краснеет. +control.
6.3 (Δ9-б) — единственный источник DESTRUCTIVE_RE: уже в seed Пакета 1 (подтверждено).
6.4 (escape≠protection) — floor-хуки (enforce-floor/floor-decide) не ссылаются на
  override-вокабуляр; перенос защиты под override падает здесь. +control.
6.5 (Δ8) — floor-manifest-check.mjs (новый): SessionStart читает settings.json,
  cry-WARN при отсутствии регистрации пол-хука. НЕ блок (проблема черепах: «пол стоит»
  = сигнал, не гарантия). Чистое ядро collectHookCommands/checkManifest (settings
  инъектируется, битые секции не бросают) + fail-quiet I/O main (exit 0).

+27 тестов (21 инвариант + 6 манифест). Полная tools-only регрессия 2741 + 2 skip
(0 регрессий). Активация манифест-хука в settings.json — шаг владельца.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 15:01:25 +03:00
..