ODIN is the runtime that is allowed to say no.
ODIN executes intelligence work under a written contract. The contract — not the code — decides which stages run, what happens when evidence is missing, and who may approve the result. When the evidence does not support a claim, ODIN abstains, and abstention counts as a successful run.
- Orchestration is data
- A behaviour change ships as a new contract version, not a code change.
- Fail-closed by default
- Missing evidence is recorded as a gap. It is never filled in.
- Append-only audit
- Every stage, gap and decision is written once and never edited.
- Release
- 0.2.0-agentic
- Environment
- production
- commit
- 5c72166
- Build
- 2026-09-10 02:04:53 UTC
What ODIN has actually done
Not a roadmap. These are rows in the production ledger.
Executions of a versioned contract chain.
Sources retrieved, hashed and preserved — including the ones that failed.
Append-only. Written once, never edited.
Every image judged before an article could carry it.
Raised against the live network, for a person to resolve.
ODIN measured against real editorial output it was not allowed to touch.
Point-in-time snapshot of the ODIN production instance, read on 2026-09-10. Counts cover 2026-08-14 to 2026-09-10. This page is not a live feed — the figures are correct as of that reading and do not update on their own.
Orchestration is data
Pick a contract. The chain below is not an illustration — it is the stage list ODIN actually executes for that contract, in that order.
Turns acquired evidence into an article CANDIDATE for human review — never into a published article. It adds three stages to the intelligence-request shape: validate (is this evidence writable-from at all), draft (produce a structured article, not prose) and editorial-gate (mechanically refuse anything the evidence does not support).
- 1acquireevidence
Read the sources. An empty result is recorded as a gap, not filled in.
- 2validateeditorial
Is this evidence writable-from at all? If not, the run stops here.
- 3representparticles
Turn the source into structured particles under an R6 constraint.
- 4drafteditorial-intelligence
Produce a structured article object — fields and citations, not free prose.
- 5editorial-gateeditorial
Mechanically refuse any claim the evidence does not support.
- 6persistpersistence
Write the candidate and its evidence chain, append-only.
- No evidence, no factual claim. A claim with no resolvable citation does not ship.
- ODIN cites the primary publisher, never the Pulse edition to its own readers.
- Corroboration counts DISTINCT PUBLISHERS, not URLs.
intelligence-request 1.1.0 differs from 1.0.0 in exactly one behaviour: a missing memory becomes a recorded gap and the run continues, instead of abstaining. That change shipped as a new JSON contract. The executor was not touched.
Half of all runs end in a refusal
And that is the system working. A run that abstains has decided the evidence does not support an output — so it produces none.
The chain reached a point where the evidence did not support going further. No output was produced, and the reason was recorded.
ABSTAINED and PERSISTED are both successful terminal states. FAILED means the run itself broke, which is a different thing entirely.
Fail-closed, measured
Before an article can carry an image, the canonical-media contract decides. Five terminal states; only two of them let the image be published. Choose an edition to see how it actually lands.
Rights and subject both resolved. The image may be published.
May be publishedApproved as contextual rather than as a depiction of the specific event.
May be publishedHeld for a person. Not published while it waits.
Refused or heldExplicitly refused — the asset must not carry this article.
Refused or heldNothing met the bar. The article renders with no image at all.
Refused or heldThe default is refusal. Across every edition, the overwhelming majority of decisions end in NO_VERIFIED_MEDIA — the article renders without an image rather than with an unproven one.
The network reviews itself, twice a day
pulse-editorial-review reads the live sites from the outside — the same way a reader does — and raises findings for a person. No review code holds a write connection to Pulse.
- 1Deterministic parsing and HTTP/media checks.
- 2Existing rendered Pulse data.
- 3Token and entity event matching.
- 4A human review flag for any judgement rules cannot safely make.
Breaking / immediate editorial attention
Measured against production, forbidden from touching it
The shadow contract takes the same input real editorial work received, forms its own output, and compares the two semantically. It has no authority over production, and the ledger proves it did not use any.
ODIN’s interpretation was within tolerance of the authoritative output.
ODIN declined to form a comparable output — recorded honestly rather than scored as a miss.
ODIN and production genuinely disagreed. These are the interesting ones.
Exact agreement.
Three live editions
ODIN runs against a real, published network with real readers — not a staging fixture.
The rules ODIN runs under
- No evidence, no factual claim. A claim with no resolvable citation does not ship.
- Corroboration counts distinct publishers, not distinct URLs.
- A missing input becomes a recorded gap. It is never backfilled from a legacy store.
- The model router is the only sanctioned call site for any external model.
- Evidence is append-only. Resolving a finding changes workflow state, never the evidence.
- ODIN produces candidates. A person publishes.
These figures are ODIN running Ordinis’s own editorial network. They are real production measurements, not a benchmark, not a client deployment and not independently audited. A run that abstained is not evidence that abstaining was correct — only that the system refused rather than guessed. Replay is possible from the recorded contract and registry versions; external bytes may since have changed, so retained hashes are the historical evidence.
See your organisation clearly.
Start with a read-only OISA audit — what is known, what is missing and what to decide.