Browse documentation
What the deterministic core gives you
Make decisions repeatable by defining arithmetic and making environmental inputs explicit.
To explain a decision, you need to know the code, its inputs and the meaning of its operations. Hidden reads of time, uncontrolled I/O and ambiguous arithmetic make that explanation harder.
Septa keeps a defined core and brings environmental interactions through explicit effects. That gives replay and review a stable subject.
Separate a decision from its inputs
Consider an order total. Quantity, unit price, discount policy and tax inputs determine a result. Reading the current exchange rate is a separate interaction. Keep that boundary visible so a later review can distinguish the calculation from the rate it used.
Replay uses the execution contract and recorded inputs or outcomes. It does not assume that querying an external service today will return yesterday’s answer.
Arithmetic has a defined meaning
The core uses checked integers and exact decimals. Floating-point values and operations are outside the managed profile. Computation requiring them can happen beyond an explicit integration boundary.
Exact decimal representation avoids binary floating-point approximation, but business policy still matters. Choose the scale, rounding rule, acceptable range and handling of invalid operations. A currency calculation is not correct merely because it uses decimals.
Checked arithmetic also makes exhaustion meaningful. Overflow should follow the documented failure or checked-result contract rather than silently changing the intended value.
Determinism is an execution property
“Same inputs” includes more than function arguments. Applicable code identity, types, effect inputs, execution settings and relevant runtime semantics belong to the contract.
Scheduling, external delivery and information arriving from outside the core need their own rules. The deterministic core is a basis for reasoning about those interactions, not a claim that the entire outside world behaves predictably.
Why it helps agent-written code
A constrained semantic surface gives an agent clearer feedback and gives a reviewer fewer hidden behaviours to consider. A located refusal can direct the agent toward an explicit conversion, bound or effect boundary.
Tests can cover meaningful branches. Replay can reconstruct a recorded decision. A formal proof can establish a precisely stated property under its assumptions. These are complementary forms of evidence.
What it cannot decide for you
Deterministic code can repeat the wrong decision perfectly. A type can accurately represent a flawed policy. Review the requirements independently, especially when the same agent wrote the implementation and its tests.
Read the Rust profile for the admitted surface and evidence for how to interpret observations after a change.
Build software you can reason about.