Files
dirigent/crates/dirigent_fermata/CLAUDE.md
T
2026-05-08 01:59:04 +02:00

1.5 KiB

Package: dirigent_fermata

Harness-agnostic policy gate for AI coding agents.

Quick Facts

  • Type: Library + binary (fermata)
  • Main Entry: src/lib.rs, src/bin/fermata.rs
  • Dependencies: ignore, toml, regex, globset, serde, clap (cli feature)
  • Status: v0.1 — library + CLI + Claude hook adapter

Layering

Three concentric layers; nothing inner imports from anything outer.

  • core/ — harness-unaware, transport-unaware, sync. Types (Op, Decision), .botignore walker, botignore.toml parser, Policy::check / check_command, path extraction. Sync, no tokio.
  • harness/HarnessAdapter trait over a normalized ToolCall. Each adapter (Claude, future Codex, etc.) lives in its own submodule, feature-gated.
  • bin/fermata.rs — only place where clap, stdio, and exit codes appear.

Release Model

Developed in this monorepo; planned to be exported as a standalone repo in the future for advertising / external distribution. Development stays here. See docs/tools/fermata.md.

Dependency Direction

dirigent_tools depends on dirigent_fermata, never the reverse. Fermata must remain usable as a standalone hook/MCP without dragging in the in-process ACP tool runtime.

Out of scope (v0.1)

Codex / Gemini hook adapters, MCP server mode, PostToolUse envelope, readonly_only Bash mode, audit log, filesystem watcher. Each is a future task with its own plan.

See also

  • docs/tools/fermata.md — Dirigent integration plan
  • docs/workpad/brainstorm/fermata.md — canonical product spec