Sanctions Desk gathers and checks the evidence for every sanctions-screening alert and recommends an outcome; a person with the right entitlement approves it. One alert, start to finish · The problem it works on
Sanctions Desk / Receipt log
Receipt log
Meterless Nightshift routes each model call the desk makes: Nemotron 3.5 Lightning answers on the analyst's laptop and Nemotron 3 Ultra in the cloud. Every answer Nightshift serves is signed, and the desk pins the key it must be signed with.
In the 32 exported runs the desk made 2,788 model calls. 2,532 were Nightshift answers, each with a signed receipt verified against the pinned key. Another 51 came from the local Ollama backup, which has no receipt by design. The other 205 failed and returned no answer. The small studies add 879 more signed receipts, all verified.
Every model call in the 32 committed run exports: the step, the mode the desk asked Nightshift for, the Nemotron model that served it, and its signed receipt. 2,532 receipts verified when these pages were built, across 2,788 model calls; a call without a receipt is either an answer from the Ollama backup or a call that failed before any answer.
Each signature is Ed25519 over the receipt body in receipts.jsonl.gz, checked with the same code as npm run evidence:verify. The receipt key of the Nightshift runtime is pinned in config/default.json: a receipt counts only if it is signed by that key, so it shows both that the receipt was not changed and that this runtime signed it. The build stops if a receipt is signed by another key, if a receipt is missing, does not verify, or names a different model from the trace.
| Run | Model calls | Receipts verified | Lightning, laptop (receipt) | Ultra, cloud (receipt) | Ollama backup (no receipt) | Failed calls (no answer) |
|---|---|---|---|---|---|---|
heldout-routed-20261023T121140Z | 162 | 142 | 32 | 110 | 0 | 20 |
routed-20261023T133311Z | 311 | 260 | 73 | 187 | 5 | 46 |
single-20261023T161731Z | 158 | 132 | 70 | 62 | 3 | 23 |
no_memory-20261023T173107Z | 51 | 42 | 11 | 31 | 2 | 7 |
heldout2-sys2-routed-20261023T180732Z | 141 | 81 | 19 | 62 | 0 | 60 |
heldout2-sys2b-routed-20261023T193436Z | 102 | 98 | 42 | 56 | 0 | 4 |
sys2b-routed-20261023T195504Z | 315 | 305 | 109 | 196 | 6 | 4 |
heldout-sys2b-routed-20261023T214515Z | 136 | 135 | 57 | 78 | 0 | 1 |
heldout2-sys2bnoscreen-routed-20261023T222222Z | 104 | 102 | 21 | 81 | 1 | 1 |
heldout3-sys3-routed-20261023T231901Z | 69 | 67 | 25 | 42 | 1 | 1 |
heldout3-sys3-single-20261023T234224Z | 38 | 36 | 25 | 11 | 1 | 1 |
heldout4-sys4-routed-20261024T024523Z | 56 | 56 | 24 | 32 | 0 | 0 |
heldout4-sys4-single-20261024T025629Z | 36 | 36 | 24 | 12 | 0 | 0 |
sys5-routed-20261025T074505Z | 443 | 431 | 255 | 176 | 9 | 3 |
text70-nemotron_alone-20261025T093017Z | 114 | 92 | 38 | 54 | 7 | 15 |
notext70-nemotron_alone-20261025T104135Z | 96 | 77 | 20 | 57 | 6 | 13 |
sys6-routed-20261025T115200Z | 456 | 440 | 251 | 189 | 10 | 6 |
Baselines without a model (rules, name matching, escalate everything): no model calls, so no receipts — 15 runs.