Control
Non-reproducible AI decision
AI decisions about people should be reproducible so they can be explained and contested.
Informational data, not legal advice. Summaries are TwinEthos's own words and rules have not been reviewed by a lawyer: check the official text before relying on any of it. A guard addresses an item; adding it is not a statement that your code meets any law.
Reach
The guard to add
Call decision models with temperature 0, top_p 1, a fixed seed where supported, and a pinned model version, and record those settings and the output with each decision.
A dedicated parameter set for consequential decision calls (a DECISION_PARAMS constant or config used only on decision paths): temperature=0, top_p left at 1, a deterministic per-case seed where the provider accepts one, and a dated model id rather than a floating alias. At decision time, persist a record with the resolved model id, the parameters, the prompt template version or prompt hash, the inputs and features used, the output, the human reviewer and their action, and the timestamp. Providers do not guarantee identical output even at temperature 0, and some models reject sampling parameters, so the stored record is what makes the decision reproducible and explainable; keep higher temperatures for drafting and chat surfaces.
Where it goes: 2 data models, 8 model configuration, 9 AI output handling, 10 logs and telemetry.
What reviewers look for: decision-path model calls with temperature explicitly 0 (not unset or a provider default), top_p 1 or unset, a fixed seed where supported, and a dated model id; a decision record (model_version, prompt_hash, inputs, output, reviewer_id, decided_at) written at the same point the decision is stored, not only the outcome.
Example (Python + OpenAI SDK), before:
resp = client.chat.completions.create(model='gpt-4o', messages=msgs, temperature=0.7)
decision = parse(resp)After:
DECISION_MODEL = 'gpt-4o-2024-08-06' # dated snapshot, not an alias
seed = stable_seed(case.id)
resp = client.chat.completions.create(model=DECISION_MODEL, messages=msgs,
temperature=0, top_p=1, seed=seed)
decision = parse(resp)
decision_records.insert(case_id=case.id, model_version=resp.model,
system_fingerprint=resp.system_fingerprint, prompt_hash=sha256_of(msgs),
params={'temperature': 0, 'top_p': 1, 'seed': seed},
inputs=case.features, output=decision, decided_at=utcnow())Engineering guidance, not legal advice. Each provision below may add its own details (a cadence, a deadline, a required notice element): open it for those.
Every rule this guard addresses
Standard / soft law (1)
- International (INTL)
- AI decisions about people should be reproducible, not randomised OECD/LEGAL/0449 — Principle 1.5
TwinEthos recommendation (not law) (1)
- Everywhere (*)
- Record enough at decision time to reproduce and explain every consequential AI decision TwinEthos derivation — guardrail.output-decision-reproducibility-record
Related incidents
- Court compelled discovery on how nH Predict works (2026-03-09; confirmed). A federal magistrate judge in the District of Minnesota ordered UnitedHealth to produce documents on how nH Predict works, including whether it was designed to supplant physician decision-making. Plaintiffs needed litigation discovery to learn how the model was designed and used. Source: U.S. District Court, D. Minn. (Order, Doc. 162) · evidence grade: primary · cited by Record enough at decision time to reproduce and explain every consequential AI decision