Brief P6: define Decision in brokerd, DecisionRecord in proto

Approved 2026-09-17. Evidence is in docs/decisions.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-09-17 00:38:32 -07:00
co-authored by Claude Fable 5.1
parent e353cd57fa
commit 4fc7ad3deb
2 changed files with 4 additions and 2 deletions
+3 -1
View File
@@ -197,6 +197,8 @@ Files are the source of truth. SQLite is allowed only for rebuildable indexes an
`inferproxy`, `toolkit` (tool container entrypoints), `bxctl` (owner CLI).
- No source file over 500 lines. No crate depends on another role's crate, only on `proto`.
- Authority is encoded in types: a tool cannot execute without a `Decision` value that only
`brokerd`'s policy module can construct.
`brokerd`'s policy module can construct. `Decision` is defined in `brokerd`, has a private
field and does not implement `Deserialize`, so no other crate or wire message can produce one.
`proto` carries a plain `DecisionRecord` for the audit log and the wire.
- Dependencies are few and justified in `docs/dependencies.md`. `cargo-deny` runs in the gate.
- No telemetry, no update checks, no outbound call not listed in `docs/egress.md`.