Core concepts
Citations and determinism
What verified_by points at, what we guarantee about it, and what we do not.
verified_by
Every valid answer carries one, in the form chart@6baf09f0.
It identifies the version of the rules the output was checked against — not the build that produced it, not the service version. That split is the whole point. How answers are produced may change; the version a citation identifies does not, and a citation whose meaning moved with every release would not be worth issuing.
The hash moves when the rules move, and only then.
Store it next to the artifact. It is what lets you answer "which version of the rules was this checked against?" long after the conversation that produced it.
What is guaranteed
A valid artifact passed that version of the rules. That is a statement about the
artifact you are holding, and it stays true forever.
The citation is stable. The same rules produce the same identifier. Two
artifacts carrying the same verified_by were held to the same rules.
The catalogue is the contract. An oracle in GET /v1/oracles is callable by
your key; a format in its formats is one it will accept.
Determinism
The same intent does not guarantee the same artifact. The same intent can return a different artifact. Two identical requests can return two different valid charts, and both are correct.
The same intent does not guarantee the same verdict. Asking twice can return
valid once and invalid the next time. If you need a fixed artifact, store the
one you got — do not re-derive it.
Rules can get stricter. If they do, their hash changes, so an artifact you already hold keeps its original citation and keeps meaning what it meant. What we will not do is change the rules while leaving the identifier alone.
What is not guaranteed
That an intent is satisfiable. Some are not, and invalid is the honest answer.
That the artifact is what you meant. The check confirms form, not intent — a valid chart of the wrong column is valid.
That two oracles agree. They have different rules and are not comparable.