Gap 1: Spec-declared workspace now bypasses tool-level path checks for
filesystem ops. Direct filesystem operations when workspace differs from
default, executor's own PolicyEngine check is sufficient.
Gap 2: shell_allowlist in spec constraints extends PolicyEngine's base
allowlist per-spec. Specs can allow additional commands without weakening
global security.
Gap 3: New edit_file tool — targeted find-and-replace. Reads file, verifies
old_text exists exactly once, replaces with new_text. Safer than full
overwrite for cross-repo work. Wired through PolicyEngine, TOOL_REGISTRY,
facade, and spec schema.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dial in Codemine chassis for OpenRouter + HF Spaces deployment
- Fix neurograph_tool.ingest_workspace() calling can_access_path() with
wrong signature (was 1 arg, needs 3) — use check_tool_call() dispatcher
- Tighten all tools/ except Exception to specific types (OSError, ValueError, etc.)
- Replace print() with logger.warning() in notebook_tool and workspace_tool
- Tighten app.py API boundary catches to (OSError, ConnectionError, ValueError)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fix gate loop, metadata sanitization, and write confirmation