A rule that has held across your last two hundred runs is a lookup, not an inference. polyx is the engine for that layer: it turns the journals your work already produces into candidate rules, scores them against a corpus before any of them is adopted, and keeps the evidence attached so a rule can be read, challenged, and re-scored when the corpus moves.
The input is history you already have: runs, the decisions taken inside them, and what came of those decisions. Nothing has to be written from memory, and no model is asked to invent a rule base.
Recurring structure in that history becomes a set of candidate rules — each one an explicit statement about what holds, not a summary of what usually happens.
A candidate is scored before it is allowed to carry weight. Support is a number over real history: how much of the corpus the rule accounts for, and where it fails.
An adopted rule travels with the runs behind it. That is what lets somebody who was not there read it, and somebody who disagrees with it argue about the evidence rather than the phrasing.
History keeps changing. A rule that held and stops holding is caught by the mechanism that admitted it. Learning here is replay, not retraining.
At run time the rule set is consulted, not reasoned about. Applying it costs nothing, gives the same answer every time, and is the thing you point at when someone asks why.
Adding expertise this way means adding artifacts, not a training run — so it can be adopted, audited and reversed on the timescale of a code review. A rule that stops matching the corpus is retired without anything being unlearned, and an agent that meets a genuinely new situation still has the whole model available for it.
It is also the only form in which the deterministic part of the work becomes inspectable. A step left to inference is a step you cannot check before it runs, cannot replay afterwards, and cannot explain to anyone who asks why. A scored rule is all three.