Skip to main content

Module intent_gate

Module intent_gate 

Source
Expand description

VIGIL intent gate — the live in-loop verify-before-commit call-site (arXiv 2601.05755; docs/proposals/intent-grounded-verification.md).

The VIGIL slices shipped as stateless verify/policy cores (car_verify::intent::check_intent / gate_intent, car_policy::intent_gate::enforce_intent); nothing on the runtime called them on a normal proposal. This module attaches them to the executor’s admission seam as an AdmissionGate — per the epic-merge review’s unification finding: ONE enforcement plumbing, the executor’s central ledger resolution (A7), instead of a second parallel ledger-resolving authority.

Semantics preserved from the cores: a forbidden capability or a tool-stream-influenced out-of-intent action (reachable from an untrusted tool’s result through the dependency graph — the injection signature) is a hard Reject, never approvable. Untainted drift is policy-driven (default: escalate to approval, resolved against the durable ledger by content-bound fingerprint).

Project config: .car/intent.json (the tool-labels.json idiom) — an IntentGateConfig naming the intent spec, the untrusted_tools whose outputs count as tool-stream input, and the untainted-drift policy.

Structs§

IntentGate
The admission gate. Cheap and side-effect-free per the seam contract: the cores are pure and the config is captured at construction.
IntentGateConfig
The deserialized .car/intent.json document.
IntentLoadError
Error raised while loading .car/intent.json.

Functions§

load_intent_config
Load .car/intent.json. Absent file ⇒ Ok(None) (the gate is opt-in); a present-but-malformed file is a loud error, never a silently-ungated session (the strict-and-loud A2 loader stance).