Skip to content
HONESTASDecision-Evidence Operating System

Capability deep-dive · model production

A model reached production last quarter. Can you name its owner, and what it was tested against?

Most model-risk questions are not about the mathematics. They are about whether the chain that put a version behind a decision left anything behind — a dataset with provenance, an evaluation that actually ran, an accountable name, and a way back. A dashboard does not answer that. A refusal does.

Five steps, one job, one causal order

step 1

prep

prepared datasetdataset lineage required before anything reads it

step 2

tune

checkpointsubmitted as a batch job through one gateway; streamed, not polled blind

step 3

eval-gate

eval reportthe only step that can stop the promotion

step 4

register

registered modela named owner, or no registration

step 5

deploy

serving endpointonly a model that actually registered

There is no pipeline definition file. The chain is one row in the skill registry, and the five steps run as a single job with one identity, one progress stream and one causal order — so the thread for a training run is an unbroken chain rather than five loosely correlated jobs someone has to correlate afterwards. Each step’s output is stored under its own key and injected into the next by declared path, which makes the dependency graph a readable artefact instead of an implicit convention.

5chain steps registered and bound, each calling its executor directly with no model in the invocation path[O]
11compute providers registered behind the one gateway every training and evaluation job goes through[O]
6 × 3alert types by severity in the drift taxonomy that already exists, with queries and an acknowledge path[O]
no statisticbehind the drift types — the detection logic is not built — [P: to be calibrated][P]

The platform today can carry, route, rank and acknowledge a drift alert. It cannot yet compute one, and an empty chart would be a worse answer than this sentence.

A model may argue inside a governed chain. It may never be how a step is invoked

This rule was not derived from principle. It was measured. Every step originally invoked its tool through a reasoning loop, and the model did not reliably emit the tool call — even with the call forced — so the executor never ran, the step output was an empty string, and the downstream steps fell into a skip cascade that read to an operator as “the evaluation report is empty”.

A second measured defect is worth carrying for the same reason: a queue name off by one value produced a dispatch that resolved, enqueued and returned success onto a queue no worker consumed. The run sat queued forever while everything else processed normally. A dispatch acknowledgement is not evidence that work happened. Only the run ledger is.

The promotion gate, and the hole in it we are closing

Registration runs only if the evaluation shows no quality regression and no safety regression, and deployment runs only if registration actually happened. That gate is expressed in the step definition and enforced in the executor, which short-circuits before the registry is even consulted — defence in depth that exists because the team hit the invocation defect above and did not want the gate to depend on a prompt.

The hole is precise and we would rather print it than have a model-risk reviewer find it: a skipped evaluation — meaning no evaluation ran at all — currently admits promotion. For a general-purpose factory that is a defensible default, because it avoids fabricating a benchmark that never happened. For an insurance factory it is inadmissible, because “we did not test” is not a pass under any validation regime. The required gate separates absence of evidence from evidence of no regression, and it is a strict narrowing of a shipped predicate: one branch removed, one comparison parameterised against the tenant’s own risk appetite.

the five step executors(shipped)the single accelerated-compute path(shipped)the model plane of record(shipped)the evaluation harness’s rendered-script path(designed, not built)dataset lineage, the validation calendar and the model change board(designed, not built)

Where the chain fails closed

One more, stated because it is our own open item rather than a feature: where a training job is tenant-owned and no organisation resolves from the authenticated request, the chain must refuse with a machine code rather than substitute a platform identity. Today the seam substitutes. Making it refuse is a named build item, and it is a platform mechanism — every future application inherits it without its author knowing the factory exists.

The honest limit

What this connects to

Validation evidence

What the run ledger is for: a dossier compiled out of runs that were reproducible on the day they happened.

Stress testing

The other place run identity decides admissibility — and where a back-test cannot validate what it looks like it validates.

Cross-model gates

The rung between evaluated and board-approved, applied to a model’s own outputs on a sequestered fold.