{"id":"join-semi-result-check","version":"1.0.0","description":"Check a claimed ordered semi-join index result and report its first discrepancy.","supported_operations":["check claimed semi-join result","validate ordered semi-join pairs","find first wrong semi-join row","audit semi-join output certificate","verify duplicate-key semi-join order","compare claimed semi-join indices"],"unsupported_operations":["compute or return a replacement joined table","evaluate arbitrary SQL predicates or expressions","coerce key types or treat nulls as equal"],"semantics":["Rows are compared by own-property keys; key values are null, strings, booleans, or exact JSON safe integers. No coercion occurs. Null never matches, including null against null.","Nested-loop order is deterministic: ascending left index, then ascending right index. Duplicates produce distinct pairs. LEFT emits one null right index for an unmatched left row; SEMI emits each matching left index once.","claimed_rows is a certificate, not row data: inner/left entries identify source pairs; semi entries identify source left rows. The first missing, unequal, or extra entry is reported and the claim is never repaired.","Input objects must be ordinary plain objects with own properties. Unknown fields, inherited/prototype-polluted objects, missing join keys, unsupported key types, non-safe integers, and out-of-range certificate indices are invalid_input.","Reference version: ISO/IEC 9075-2:2023 §7.7 + deep24 deterministic-order profile 1.0.0."],"limits":{"max_left_rows":200,"max_right_rows":200,"max_claimed_rows":40000,"max_comparisons":40000,"max_key_chars":64,"max_input_bytes":1048576},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["left_rows","right_rows","left_key","right_key","claimed_rows"],"properties":{"left_rows":{"type":"array","maxItems":200,"items":{"type":"object","additionalProperties":{"type":["string","number","boolean","null"]}}},"right_rows":{"type":"array","maxItems":200,"items":{"type":"object","additionalProperties":{"type":["string","number","boolean","null"]}}},"left_key":{"type":"string","minLength":1,"maxLength":64},"right_key":{"type":"string","minLength":1,"maxLength":64},"claimed_rows":{"type":"array","maxItems":40000,"items":{"type":"object","additionalProperties":false,"required":["left_index"],"properties":{"left_index":{"type":"integer","minimum":0,"maximum":199}}}}}},"output_schema":{"type":"object","additionalProperties":false,"required":["valid","reason","discrepancy","reference_version"],"properties":{"valid":{"type":"boolean"},"reason":{"type":["string","null"],"enum":["result_mismatch",null]},"discrepancy":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["path","index"],"properties":{"path":{"type":"string"},"index":{"type":"integer","minimum":0,"maximum":40000},"expected":{},"actual":{}}}]},"reference_version":{"type":"string","const":"ISO/IEC 9075-2:2023 §7.7 + deep24 deterministic-order profile 1.0.0"}}},"examples":[{"input":{"left_rows":[{"id":1},{"id":2}],"right_rows":[{"id":2},{"id":2}],"left_key":"id","right_key":"id","claimed_rows":[{"left_index":1}]},"output":{"valid":true,"reason":null,"discrepancy":null,"reference_version":"ISO/IEC 9075-2:2023 §7.7 + deep24 deterministic-order profile 1.0.0"}},{"input":{"left_rows":[{"id":1},{"id":2}],"right_rows":[{"id":2},{"id":2}],"left_key":"id","right_key":"id","claimed_rows":[]},"output":{"valid":false,"reason":"result_mismatch","discrepancy":{"path":"/claimed_rows/0","index":0,"expected":{"left_index":1}},"reference_version":"ISO/IEC 9075-2:2023 §7.7 + deep24 deterministic-order profile 1.0.0"}}],"execute_url":"/v1/tools/join-semi-result-check/versions/1.0.0/execute"}