6.0 KiB
CLAUDE.md insertion draft — safe-baseline 1b (ready to paste)
Why a draft, not a direct edit: enforce-read-path-deny (Smoke 5, 2026-05-30) added CLAUDE.md to the Read-protected paths (DEFAULT_PROTECTED_PATTERNS /(^|\/)CLAUDE\.md$/i). The harness Edit tool requires a prior Read of the target; with Read gate-blocked, Edit of CLAUDE.md is impossible for Claude, and a full Write-overwrite of the canonical file is too risky. This is an over-block of the legit claude-md-management workflow (the Smoke 5 fix targeted transcript/runtime exfil; normative-doc Read-deny is collateral).
Owner options:
- Temporarily narrow
DEFAULT_PROTECTED_PATTERNSsoenforce-read-path-denydoes NOT blockCLAUDE.mdRead (keep the Bash/PowerShell + Write protections); then a normalclaude-md-managementsession applies the inserts. Recommended — the Read-deny on CLAUDE.md has no security value (CLAUDE.md is public-in-repo; the real exfil targets are~/.claude/projectstranscripts +~/.claude/runtime). - Paste the blocks below manually.
The substantive learning is already committed in docs/observer/notes/2026-05-30-router-gate-v4-remaining-holes.md + the handoff note, so nothing is lost meanwhile.
Header version line — bump
Change the opening of **Версия:** 2.42 … to v2.43, prepending:
Версия: 2.43 от 31.05.2026 — router-gate v4 safe-baseline live wiring (item 1b) + enforce-runtime-write-deny (C3) + LLM-judge hook-обёртки реализованы, протестированы (1880 GREEN), запушены (commits
ca52d354+6d512f5c..84dcf4aa+f740f612+80e514f5на main). Spec v4 закрыл C1/C2/C3/H1/V2-1/V2-2 через 3 adversarial-ревью + ghost-pass; G3 override вырезан как защита-призрак. §0 cross-refs НЕ меняются (инфраструктураtools/, не tooling-канон #1-#86 / не ADR / не off-phase). v2.42 наследие: …(оставить прежний текст)…
§6 — prepend this paragraph (above the 2026-05-29 entry)
2026-05-31 router-gate v4 — safe-baseline live wiring (item 1b) + enforce-runtime-write-deny (C3) + LLM-judge hook-обёртки реализованы и запушены: tools/enforce-safe-baseline-metering.mjs получил живой main() (метеринг safe-baseline tools per-task + hard-block mutating-инструмента за hard-порогом без skill-match; escape = вызов любого Skill/EnterPlanMode, который этим слоем никогда не блокируется); новые чистые функции extractKeywords (детерминированная токенизация со стоп-словами против ложного overlap), detectSkillMatch (только реальный assistant tool_use Skill/EnterPlanMode — не self-writable text-path), runLiveDecision (контракт stickiness: skill-match привязан к задаче и явно сохраняется, без потери и без утечки между задачами). Новый standalone-хук tools/enforce-runtime-write-deny.mjs закрывает уже-существующую дыру: Write/Edit-инструмент мог писать в ~/.claude/runtime/** напрямую (git-approval anchor был открыт для Write-инструмента — Bash/PowerShell-гейты его прикрывали, Write-канал нет); нормализация через resolving pathNormalize (path.resolve+realpath) делает обход через ./..-сегменты невозможным. Спроектировано через superpowers:brainstorming (3 раунда adversarial-саморевью + ghost-pass), spec v4 docs/superpowers/specs/2026-05-30-safe-baseline-live-wiring-design.md закрыл C1/C2/C3/H1/V2-1/V2-2; G3 override-подсистема вырезана как защита-призрак. Реализация через superpowers:writing-plans → TDD. Также tools/enforce-llm-judge-per-tool.mjs + tools/enforce-llm-judge-response-scan.mjs (Layer 4 hook-обёртки, no-op main(), $0 до активации 2b). Регрессия vitest tools-only 1880 GREEN. Коммиты ca52d354+6d512f5c..84dcf4aa+f740f612+80e514f5 (push c8059880..84dcf4aa main, gitleaks-full-history GREEN / lychee 0 errors). Режим hard-block (решение владельца). Регистрация обоих хуков в .claude/settings.json — шаг владельца (Claude'у settings.json заблокирован); до регистрации хуки инертны. §0 cross-refs НЕ меняются — инфраструктура tools/enforce-*.mjs, не tooling-канон #1-#86 / не ADR / не off-phase. Через claude-md-management:revise-claude-md.
§9 — prepend this entry (above the v2.42 entry)
- v2.43 от 31.05.2026 — safe-baseline live wiring (item 1b) + enforce-runtime-write-deny (C3) + LLM-judge hook-обёртки —
tools/enforce-safe-baseline-metering.mjsживойmain()(метеринг + hard-block + Skill/EnterPlanMode escape) с чистымиextractKeywords/detectSkillMatch/runLiveDecision(stickiness-контракт V2-1); новыйtools/enforce-runtime-write-deny.mjs(C3 — защита~/.claude/runtimeот Write-инструмента,.-segment-proof черезpathNormalize); judge-обёрткиenforce-llm-judge-{per-tool,response-scan}.mjs(no-op main, $0). Спек v4 через brainstorming (3 adversarial-ревью + ghost-pass) закрыл C1/C2/C3/H1/V2-1/V2-2; G3 override вырезан как защита-призрак. TDD, регрессия 1880 GREEN. Commitsca52d354+6d512f5c..84dcf4aa+f740f612+80e514f5, pushc8059880..84dcf4aa. §0 cross-refs не меняются (инфраструктураtools/, не tooling-канон / не ADR / не off-phase). §6 +абзац / §9 +этот entry. Черезclaude-md-management:revise-claude-md.