What owns what
Cardinality
What a turn freezes
When a turn starts, Matrices works out its configuration once and freezes it for that turn and any replay:- the profile ID and profile version
- the one model picked from the profile’s selectors
- the system prompt and the hook list
- the resolved access, meaning what it may call: each selected role by version, the exact built-in tools, the eligible toolsets, and any conditional grants
roleIds, or a role’s own rules and the change lands on the
next admitted turn. Work already running keeps the snapshot it started with.
The budget is checked at the same moment, so lowering one stops new turns rather
than killing a running one.
From there it loops: ask the model, run the tool calls the snapshot allows,
append the results, ask again. That same resolved access decides what the model
can find, and checks every call as it runs. Credentials are attached to the
outgoing request, so the model never sees a raw secret and never grants itself
anything.