flowchart TB U["Developer"] --> C1["Claude Code"] U --> C2["Codex"] U --> C3["VS Code: @casan"] C1 --> E1["Project hook events"] C2 --> E1 C3 --> E2["CASAN-owned VSIX route"] E1 --> B[".casan/casan-hook.py"] E2 --> B B --> V{"Global harness
matches version.lock?"} V -- "No" --> D["Deny or degrade
according to mode"] V -- "Yes" --> A["Client adapter"] A --> G["Agentic bridge"] subgraph TURN["Per-turn lifecycle"] direction LR L1["Admission
H1 + H4"] --> L2["Pre-tool gate
H2 + H4"] L2 --> L3["Post-tool evidence
H5"] L3 --> L4["Finalize
H3 + H5 + H6 + H7"] end G --> L1 L4 --> S["Project runtime state
.specify/logs + state"] L4 --> R["Native client result"]