{ "spec": "JouleClaw Oracle v1 — closure-gate Verdict", "schema_id": "oracle/1", "note": "Verdict { Pass { chain: [oracle_id, ...] } | Fail { reasons: [FailReason, ...] } }. CompositeOracle runs its members in registration order and short-circuits on the first Fail. Every implementer MUST produce the same Verdict (byte-equal under serde_json) for every (oracle_program, candidate) pair below.", "vector_count": 5, "vectors": [ { "n": 1, "description": "AlwaysPass — emits Pass with the oracle's id in the chain.", "input": { "candidate": {"id": "c1", "content": "ok", "language": "rust", "source_tier": "lut", "provenance": "lut:t1"}, "oracle_program": [{"kind": "always_pass"}] }, "expected_verdict": {"kind": "pass", "chain": ["unattested-pass"]} }, { "n": 2, "description": "AlwaysFail — emits Fail with a single Custom reason.", "input": { "candidate": {"id": "c2", "content": "ok", "language": "rust", "source_tier": "lut", "provenance": "lut:t1"}, "oracle_program": [{"kind": "always_fail", "reason": "no oracle in this env"}] }, "expected_verdict": { "kind": "fail", "reasons": [{"kind": "custom", "subkind": "no-oracle", "message": "no oracle in this env"}] } }, { "n": 3, "description": "Composite with two AlwaysPass oracles — chain contains both ids in registration order.", "input": { "candidate": {"id": "c3", "content": "ok", "language": "rust", "source_tier": "lut", "provenance": "lut:t1"}, "oracle_program": [ {"kind": "composite", "id": "compile-and-test"}, {"kind": "always_pass"}, {"kind": "always_pass"} ] }, "expected_verdict": { "kind": "pass", "chain": ["compile-and-test", "unattested-pass"] } }, { "n": 4, "description": "Composite with AlwaysPass then AlwaysFail — short-circuits on first Fail (the second oracle is not consulted; only the first AlwaysPass and the AlwaysFail contribute).", "input": { "candidate": {"id": "c4", "content": "ok", "language": "rust", "source_tier": "lut", "provenance": "lut:t1"}, "oracle_program": [ {"kind": "composite", "id": "lint-then-test"}, {"kind": "always_pass"}, {"kind": "always_fail", "reason": "test failed"}, {"kind": "always_pass"} ] }, "expected_verdict": { "kind": "fail", "reasons": [{"kind": "custom", "subkind": "no-oracle", "message": "test failed"}] } }, { "n": 5, "description": "Empty composite — trivially passes with an empty chain.", "input": { "candidate": {"id": "c5", "content": "ok", "language": "rust", "source_tier": "lut", "provenance": "lut:t1"}, "oracle_program": [ {"kind": "composite", "id": "empty"} ] }, "expected_verdict": {"kind": "pass", "chain": ["empty"]} } ] }