Files
brain/docs/observer/notes/2026-05-31-claude-md-1b-insertion-draft.md
T

6.0 KiB
Raw Blame History

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:

  1. Temporarily narrow DEFAULT_PROTECTED_PATTERNS so enforce-read-path-deny does NOT block CLAUDE.md Read (keep the Bash/PowerShell + Write protections); then a normal claude-md-management session 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/projects transcripts + ~/.claude/runtime).
  2. 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. Commits ca52d354+6d512f5c..84dcf4aa+f740f612+80e514f5, push c8059880..84dcf4aa. §0 cross-refs не меняются (инфраструктура tools/, не tooling-канон / не ADR / не off-phase). §6 +абзац / §9 +этот entry. Через claude-md-management:revise-claude-md.