Expand description
Information-flow admission gate + tool-label loading (EPIC A / A3+A4).
car_verify::check_information_flow is a verified static check for data
exfiltration and forbidden tool orderings, but it was never called by
the runtime, and it needs per-tool labels (capability, confidentiality,
trust, sink) that nothing produced. This module supplies both halves:
- A3 — labels: a built-in default label table for CAR’s commodity
tools, plus a
.car/tool-labels.jsonloader so a project can declare which tools are sinks, which produce confidential data, and what tool orderings are forbidden. - A4 — the gate:
InformationFlowGate, ancrate::admission::AdmissionGatethat runscheck_information_flow→gate_flowon every admitted proposal, blocking exfiltration and escalating forbidden orderings to approval (which fails closed until A7 wires the approval transport).
Structs§
- Flow
Load Error - Error raised while loading
.car/tool-labels.json. - Information
Flow Gate - An
AdmissionGatethat enforces information-flow safety: confidential data must not reach an exfiltration sink, and forbidden tool orderings are escalated to human approval. - Tool
Label Config - The deserialized
.car/tool-labels.jsondocument: per-tool labels plus the flow policy (what counts as a hazard) and the gate policy (what to do about each hazard class). Every field defaults, so a partial file is valid.
Constants§
- NET_
SEND - The capability that marks a tool as reaching the network.
Functions§
- builtin_
tool_ labels - Default information-flow labels for CAR’s built-in commodity tools.
- load_
tool_ labels - Load tool labels for a project, merging
.car/tool-labels.jsonwith the built-in defaults. - tool_
output_ is_ external - Whether a tool’s output should be treated as coming from outside the trust boundary (car#723).