Set the decision and its input
The supplied human and scanner candidate traces both contain A/1/2 at0/5/10. The programme compares each observed key and time in order and finds the sequences identical. Those observations cannot distinguish the origins. Manual or scanner capture mode selects routing, not verified physical provenance.
| Case | Input JSON |
|---|---|
| Base test | {"captureMode":"manual","traces":[{"candidateOrigin":"human","events":[{"key":"A","at":0},{"key":"1","at":5},{"key":"2","at":10}]},{"candidateOrigin":"scanner","events":[{"key":"A","at":0},{"key":"1","at":5},{"key":"2","at":10}]}]} |
Run the supplied comparison
The faulty path still calls the input scanner-originated. The correction keeps physicalOrigin unknown. No universally reliable speed classifier is proposed.
| Path | Output JSON |
|---|---|
| Faulty path | {"route":"scanner","physicalOrigin":"scanner","sameObservedTrace":true,"timingCanDistinguish":false} |
| Required path | {"route":"manual","physicalOrigin":"unknown","sameObservedTrace":true,"timingCanDistinguish":false} |
import assert from 'node:assert/strict';
const run=function run(i,corrected=true){
if(!['scanner','manual'].includes(i.captureMode))return {held:true};
const signature=trace=>trace.events.map(event=>[event.key,event.at]);
const sameObservedTrace=i.traces.length===2&&JSON.stringify(signature(i.traces[0]))===JSON.stringify(signature(i.traces[1]));
if(!sameObservedTrace)return {held:true,reason:'outside-matched-trace-example'};
return {route:corrected?i.captureMode:'scanner',physicalOrigin:corrected?'unknown':'scanner',sameObservedTrace,timingCanDistinguish:!sameObservedTrace};
};
const cases=[{"input":{"captureMode":"manual","traces":[{"candidateOrigin":"human","events":[{"key":"A","at":0},{"key":"1","at":5},{"key":"2","at":10}]},{"candidateOrigin":"scanner","events":[{"key":"A","at":0},{"key":"1","at":5},{"key":"2","at":10}]}]},"corrected":false,"expected":{"route":"scanner","physicalOrigin":"scanner","sameObservedTrace":true,"timingCanDistinguish":false}},{"input":{"captureMode":"manual","traces":[{"candidateOrigin":"human","events":[{"key":"A","at":0},{"key":"1","at":5},{"key":"2","at":10}]},{"candidateOrigin":"scanner","events":[{"key":"A","at":0},{"key":"1","at":5},{"key":"2","at":10}]}]},"corrected":true,"expected":{"route":"manual","physicalOrigin":"unknown","sameObservedTrace":true,"timingCanDistinguish":false}},{"input":{"captureMode":"scanner","traces":[{"candidateOrigin":"human","events":[{"key":"A","at":0},{"key":"1","at":5},{"key":"2","at":10}]},{"candidateOrigin":"scanner","events":[{"key":"A","at":0},{"key":"1","at":5},{"key":"2","at":10}]}]},"corrected":true,"expected":{"route":"scanner","physicalOrigin":"unknown","sameObservedTrace":true,"timingCanDistinguish":false}},{"input":{"captureMode":null,"traces":[]},"corrected":true,"expected":{"held":true}}];
for(const test of cases){const actual=await run(test.input,test.corrected);assert.deepEqual(actual,test.expected);console.log(actual);}
Choose from the boundary evidence
Explicit scanner mode leaves physical origin unknown. A missing mode is held; a different trace pair is outside this matched example and is not automatically classified.
- Compare complete traces
- Retain unresolved origin
- Choose routing explicitly
A fast trace is not hardware identity evidence.
| Condition | Input JSON | Expected output JSON |
|---|---|---|
| explicit scanner capture mode | {"captureMode":"scanner","traces":[{"candidateOrigin":"human","events":[{"key":"A","at":0},{"key":"1","at":5},{"key":"2","at":10}]},{"candidateOrigin":"scanner","events":[{"key":"A","at":0},{"key":"1","at":5},{"key":"2","at":10}]}]} | {"route":"scanner","physicalOrigin":"unknown","sameObservedTrace":true,"timingCanDistinguish":false} |
| mode not selected | {"captureMode":null,"traces":[]} | {"held":true} |
Does scanner mode prove the device origin?
Show the worked answer
No. It only selects capture routing. The identical observed traces remain compatible with both supplied origins.