OwnLLM

The deterministic engine

Where a gate exists, the guarantee is absolute: an answer is returned only if an exact check accepts it (for bounds checks, a proof over *every possible buffer*, cross-checked against the Z3 solver on 1,500 random expressions), and a proven answer comes back identically, instantly, with no model call, forever after.

A model writes text by weighing probabilities, so the same question can get different answers, and any answer can be wrong. OwnLLM's deterministic engine (ownllm det) turns that around: the model is the last resort, not the engine. Answers come from proven knowledge and rules first. A model is asked only when nothing proven applies, and *nothing it says is used or remembered unless a proof gate accepts it.*

The cascade

Every question is a *hole* (a typed question for one kind of problem, called a vertical). It is offered to each tier in order of cost, and the first verified answer wins:

TierWhat answersModel?Checked?
0 Recallan answer proven earlier, returned exactly as storednore-checked by the gate on every recall
D Closed forma rule the vertical already knowsnoproof gate
1 Learned templatea rule inferred from two earlier proven answersnoproof gate
M Modela schema-constrained proposal from the local modelyesproof gate, with retries
- Unresolvednothing passed; queued for later-never guessed

When the model's proposal fails the gate, the *reason* (a concrete counterexample where there is one) goes back into the next prompt. When it passes, the answer is crystallized: stored compressed on disk, and, when two proven answers share a pattern, folded into a reusable rule. So the model is needed less and less, and a repeated or structurally similar question returns instantly, identically, with no model call.

What is guaranteed

Where it applies

The guarantee is "this passed the gate", so it applies to the problem types that have a gate. Today:

VerticalThe gate checks
length-prefix-parsersAn exact proof that a bounds-checked read stays inside the buffer, lands inside the stated limit, and starts at the stated offset, for *every possible buffer*. Counterexamples come with concrete values.
patent-claimsEvery antecedent term appears in the claim text as whole words; the listed dependencies are exactly the claims the text refers to; the claim index is consistent with them; the classification code is well-formed. (The outline text is not checked.) Plus a separate claim linter (numbering, dependencies, antecedent basis).

For free-form questions (chat, ask) there is no gate, so those answers are repeatable but not verified. Adding a vertical means writing its gate (det/src/verticals/); the cascade, lattice and model client need no changes.

Using it

ownllm det demo                                    # watch it learn, with no model at all
ownllm det solve length-prefix-parsers '{"pre_buflen_min":6,"post_max":65535,"offset_hint":2}'
ownllm det submit length-prefix-parsers '<context json>' '<fill json>'   # put any candidate through the gate
ownllm det lattice                                 # what has been proven and stored (compressed)
ownllm det claims claims.txt                       # lint numbered patent claims
ownllm det arith --pre 2 --post 65535 '<expression json>'

solve uses your local OwnLLM model as the last-resort tier when ownllm start is running.

Details worth knowing