Authority model

Capability Writs

Writs are signed, delegable, bounded capability documents.

Capability Writs

A capability writ is the sole source of authority in OpenThymos. It authorizes a subject to emit intents within explicit constraints. The runtime validates writs before proposal execution.

Writ Body

A writ body includes:

The writ id is derived from canonical body content. The signature is an ed25519 signature over the canonical body.

Tool Scopes

Tool scopes are literal names or prefix patterns. A writ that authorizes fs_* covers fs_read and fs_patch; a writ that authorizes fs_read does not cover fs_patch.

Tool scope is checked before tool execution and before the tool result can be committed.

Budget

Writ budget is multi-dimensional:

The compiler checks projected cost against remaining budget. The commit records budget cost incurred by the execution.

Effect Ceiling

Effect ceilings distinguish classes of effect:

A child writ cannot grant an effect that the parent forbids.

Time Window

A writ is valid only within its [not_before, expires_at] interval. The compiler rejects intents bound to expired or not-yet-valid writs.

Tenant Boundary

Every writ belongs to exactly one tenant id. Child writs must inherit the same tenant id as their parent. Cross-tenant delegation is invalid.

Delegation

A writ may be subdivided only when delegation bounds allow it. A child writ must satisfy:

This prevents lateral minting and privilege expansion.

Lifecycle

issue body -> sign body -> admit writ -> bind intent -> compile proposal
          -> debit projected budget -> commit observed cost
          -> optionally mint strict child writ

Invalid States

The runtime must reject:

Audit Value

Writ ids appear on proposals and commits. This makes execution authority traceable after the fact: an auditor can identify which capability authorized each effect.