{"abstract":"Stable query results are discarded at each new input row.","category":"Data systems","checks":8,"contract":"Evaluate projection expressions over row IDs. Expressions are [kind,key] with stable, volatile, or row. A deterministic counter starts at seed and increments on each stable first call or volatile call; stable calls cache by key for the whole query. Row expressions return the current row ID. Preserve expression and row order.","evaluation_group":"s3-data-systems-volatile-projection-scope","failed_approach":"An empty reconstructed cache still turns query-stable calls into per-row calls.","family":"s3-data-systems-volatile-projection-scope-stable-row-reset","id":"FA-45366","implementations":{"attempt":{"sha256":"97a5da584d78fce9e20955eaf07111502e9a81463b8c803d9bd0846ea02ad893","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        rows,expressions,seed=d\n        counter=seed; cache={}; result=[]\n        for row in rows:\n            projected=[]; cache={k:v for k,v in cache.items() if False}\n            for kind,key in expressions:\n                if kind=='row': value=row\n                elif kind=='stable':\n                    if key not in cache: counter+=1; cache[key]=counter\n                    value=cache[key]\n                else:\n                    counter+=1; value=counter\n                projected.append(value)\n            result.append(projected)\n        return result\n    except (IndexError, KeyError, ValueError, StopIteration) as exc:\n        return {\"representation_error\": type(exc).__name__}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 1]), [[2, 3]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 1]), [[2], [2]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 1]), [[2, 3]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 1]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 1]), [[2, 9, 3]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 1]), [[9, 2, 3]])\n    check('empty projection', solve([[9, 2], [], 1]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 1]), [])\nelif N == 2:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 2]), [[3, 4]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 2]), [[3], [3]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 2]), [[3, 4]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 2]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 2]), [[3, 9, 4]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 2]), [[9, 3, 4]])\n    check('empty projection', solve([[9, 2], [], 2]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 2]), [])\nelif N == 3:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 3]), [[4, 5]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 3]), [[4], [4]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 3]), [[4, 5]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 3]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 3]), [[4, 9, 5]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 3]), [[9, 4, 5]])\n    check('empty projection', solve([[9, 2], [], 3]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 3]), [])\nelif N == 4:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 4]), [[5, 6]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 4]), [[5], [5]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 4]), [[5, 6]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 4]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 4]), [[5, 9, 6]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 4]), [[9, 5, 6]])\n    check('empty projection', solve([[9, 2], [], 4]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 4]), [])\nelif N == 5:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 5]), [[6, 7]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 5]), [[6], [6]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 5]), [[6, 7]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 5]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 5]), [[6, 9, 7]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 5]), [[9, 6, 7]])\n    check('empty projection', solve([[9, 2], [], 5]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 5]), [])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"e709d340ae140329e8afebb628b8bca0062320a104b5c097a92f5935cd07acc3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        rows,expressions,seed=d\n        counter=seed; cache={}; result=[]\n        for row in rows:\n            projected=[]; cache={} \n            for kind,key in expressions:\n                if kind=='row': value=row\n                elif kind=='stable':\n                    if key not in cache: counter+=1; cache[key]=counter\n                    value=cache[key]\n                else:\n                    counter+=1; value=counter\n                projected.append(value)\n            result.append(projected)\n        return result\n    except (IndexError, KeyError, ValueError, StopIteration) as exc:\n        return {\"representation_error\": type(exc).__name__}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 1]), [[2, 3]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 1]), [[2], [2]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 1]), [[2, 3]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 1]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 1]), [[2, 9, 3]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 1]), [[9, 2, 3]])\n    check('empty projection', solve([[9, 2], [], 1]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 1]), [])\nelif N == 2:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 2]), [[3, 4]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 2]), [[3], [3]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 2]), [[3, 4]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 2]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 2]), [[3, 9, 4]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 2]), [[9, 3, 4]])\n    check('empty projection', solve([[9, 2], [], 2]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 2]), [])\nelif N == 3:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 3]), [[4, 5]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 3]), [[4], [4]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 3]), [[4, 5]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 3]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 3]), [[4, 9, 5]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 3]), [[9, 4, 5]])\n    check('empty projection', solve([[9, 2], [], 3]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 3]), [])\nelif N == 4:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 4]), [[5, 6]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 4]), [[5], [5]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 4]), [[5, 6]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 4]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 4]), [[5, 9, 6]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 4]), [[9, 5, 6]])\n    check('empty projection', solve([[9, 2], [], 4]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 4]), [])\nelif N == 5:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 5]), [[6, 7]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 5]), [[6], [6]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 5]), [[6, 7]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 5]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 5]), [[6, 9, 7]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 5]), [[9, 6, 7]])\n    check('empty projection', solve([[9, 2], [], 5]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 5]), [])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"031c2f9c4b0e9cf9a2ae56e8095eddbfc27b19c798e98466179c7179c98a7d0a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        rows,expressions,seed=d\n        counter=seed; cache={}; result=[]\n        for row in rows:\n            projected=[]\n            for kind,key in expressions:\n                if kind=='row': value=row\n                elif kind=='stable':\n                    if key not in cache: counter+=1; cache[key]=counter\n                    value=cache[key]\n                else:\n                    counter+=1; value=counter\n                projected.append(value)\n            result.append(projected)\n        return result\n    except (IndexError, KeyError, ValueError, StopIteration) as exc:\n        return {\"representation_error\": type(exc).__name__}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 1]), [[2, 3]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 1]), [[2], [2]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 1]), [[2, 3]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 1]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 1]), [[2, 9, 3]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 1]), [[9, 2, 3]])\n    check('empty projection', solve([[9, 2], [], 1]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 1]), [])\nelif N == 2:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 2]), [[3, 4]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 2]), [[3], [3]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 2]), [[3, 4]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 2]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 2]), [[3, 9, 4]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 2]), [[9, 3, 4]])\n    check('empty projection', solve([[9, 2], [], 2]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 2]), [])\nelif N == 3:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 3]), [[4, 5]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 3]), [[4], [4]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 3]), [[4, 5]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 3]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 3]), [[4, 9, 5]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 3]), [[9, 4, 5]])\n    check('empty projection', solve([[9, 2], [], 3]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 3]), [])\nelif N == 4:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 4]), [[5, 6]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 4]), [[5], [5]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 4]), [[5, 6]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 4]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 4]), [[5, 9, 6]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 4]), [[9, 5, 6]])\n    check('empty projection', solve([[9, 2], [], 4]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 4]), [])\nelif N == 5:\n    check('separate volatile calls', solve([[9], [['volatile', 'v'], ['volatile', 'v']], 5]), [[6, 7]])\n    check('stable across rows', solve([[9, 2], [['stable', 's']], 5]), [[6], [6]])\n    check('distinct stable keys', solve([[9], [['stable', 'a'], ['stable', 'b']], 5]), [[6, 7]])\n    check('row-dependent', solve([[9, 2], [['row', 'r']], 5]), [[9], [2]])\n    check('mixed expression order', solve([[9], [['volatile', 'z'], ['row', 'r'], ['stable', 'a']], 5]), [[6, 9, 7]])\n    check('row first expression', solve([[9], [['row', 'r'], ['stable', 's'], ['volatile', 'v']], 5]), [[9, 6, 7]])\n    check('empty projection', solve([[9, 2], [], 5]), [[], []])\n    check('no input', solve([[], [['volatile', 'v']], 5]), [])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Offline stipulated semantics over valid small inputs; no performance, concurrency, or production-engine conformance claim. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-data-systems-volatile-projection-scope-stable-row-reset","generated_at":"2026-09-29T14:44:21.524238+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A bounded deterministic data engine model makes representation and changelog faults reproducible.","repair":"Preserve the stated physical representation and operation order: Evaluate projection expressions over row IDs. Expressions are [kind,key] with stable, volatile, or row. A deterministic counter starts at seed and increments on each stable first call or volatile call; stable calls cache by key for the whole query. Row expressions return the current row ID. Preserve expression and row order.","root_cause":"volatile-projection-scope: Stable query results are discarded at each new input row.","sha256":"a8ac14dfba6615a5b4113b12351a1e22a164c2a158cdc4b43f10e53816bbf925","title":"Stable query results are discarded at each new input row · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.009,"exit_code":1,"observations":[{"actual":[[2,3]],"check":"separate volatile calls","expected":[[2,3]],"passed":true},{"actual":[[2],[3]],"check":"stable across rows","expected":[[2],[2]],"passed":false},{"actual":[[2,3]],"check":"distinct stable keys","expected":[[2,3]],"passed":true},{"actual":[[9],[2]],"check":"row-dependent","expected":[[9],[2]],"passed":true},{"actual":[[2,9,3]],"check":"mixed expression order","expected":[[2,9,3]],"passed":true},{"actual":[[9,2,3]],"check":"row first expression","expected":[[9,2,3]],"passed":true},{"actual":[[],[]],"check":"empty projection","expected":[[],[]],"passed":true},{"actual":[],"check":"no input","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"separate volatile calls\", \"actual\": [[2, 3]], \"expected\": [[2, 3]], \"passed\": true}, {\"check\": \"stable across rows\", \"actual\": [[2], [3]], \"expected\": [[2], [2]], \"passed\": false}, {\"check\": \"distinct stable keys\", \"actual\": [[2, 3]], \"expected\": [[2, 3]], \"passed\": true}, {\"check\": \"row-dependent\", \"actual\": [[9], [2]], \"expected\": [[9], [2]], \"passed\": true}, {\"check\": \"mixed expression order\", \"actual\": [[2, 9, 3]], \"expected\": [[2, 9, 3]], \"passed\": true}, {\"check\": \"row first expression\", \"actual\": [[9, 2, 3]], \"expected\": [[9, 2, 3]], \"passed\": true}, {\"check\": \"empty projection\", \"actual\": [[], []], \"expected\": [[], []], \"passed\": true}, {\"check\": \"no input\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":48.798,"exit_code":1,"observations":[{"actual":[[2,3]],"check":"separate volatile calls","expected":[[2,3]],"passed":true},{"actual":[[2],[3]],"check":"stable across rows","expected":[[2],[2]],"passed":false},{"actual":[[2,3]],"check":"distinct stable keys","expected":[[2,3]],"passed":true},{"actual":[[9],[2]],"check":"row-dependent","expected":[[9],[2]],"passed":true},{"actual":[[2,9,3]],"check":"mixed expression order","expected":[[2,9,3]],"passed":true},{"actual":[[9,2,3]],"check":"row first expression","expected":[[9,2,3]],"passed":true},{"actual":[[],[]],"check":"empty projection","expected":[[],[]],"passed":true},{"actual":[],"check":"no input","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"separate volatile calls\", \"actual\": [[2, 3]], \"expected\": [[2, 3]], \"passed\": true}, {\"check\": \"stable across rows\", \"actual\": [[2], [3]], \"expected\": [[2], [2]], \"passed\": false}, {\"check\": \"distinct stable keys\", \"actual\": [[2, 3]], \"expected\": [[2, 3]], \"passed\": true}, {\"check\": \"row-dependent\", \"actual\": [[9], [2]], \"expected\": [[9], [2]], \"passed\": true}, {\"check\": \"mixed expression order\", \"actual\": [[2, 9, 3]], \"expected\": [[2, 9, 3]], \"passed\": true}, {\"check\": \"row first expression\", \"actual\": [[9, 2, 3]], \"expected\": [[9, 2, 3]], \"passed\": true}, {\"check\": \"empty projection\", \"actual\": [[], []], \"expected\": [[], []], \"passed\": true}, {\"check\": \"no input\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.238,"exit_code":0,"observations":[{"actual":[[2,3]],"check":"separate volatile calls","expected":[[2,3]],"passed":true},{"actual":[[2],[2]],"check":"stable across rows","expected":[[2],[2]],"passed":true},{"actual":[[2,3]],"check":"distinct stable keys","expected":[[2,3]],"passed":true},{"actual":[[9],[2]],"check":"row-dependent","expected":[[9],[2]],"passed":true},{"actual":[[2,9,3]],"check":"mixed expression order","expected":[[2,9,3]],"passed":true},{"actual":[[9,2,3]],"check":"row first expression","expected":[[9,2,3]],"passed":true},{"actual":[[],[]],"check":"empty projection","expected":[[],[]],"passed":true},{"actual":[],"check":"no input","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"separate volatile calls\", \"actual\": [[2, 3]], \"expected\": [[2, 3]], \"passed\": true}, {\"check\": \"stable across rows\", \"actual\": [[2], [2]], \"expected\": [[2], [2]], \"passed\": true}, {\"check\": \"distinct stable keys\", \"actual\": [[2, 3]], \"expected\": [[2, 3]], \"passed\": true}, {\"check\": \"row-dependent\", \"actual\": [[9], [2]], \"expected\": [[9], [2]], \"passed\": true}, {\"check\": \"mixed expression order\", \"actual\": [[2, 9, 3]], \"expected\": [[2, 9, 3]], \"passed\": true}, {\"check\": \"row first expression\", \"actual\": [[9, 2, 3]], \"expected\": [[9, 2, 3]], \"passed\": true}, {\"check\": \"empty projection\", \"actual\": [[], []], \"expected\": [[], []], \"passed\": true}, {\"check\": \"no input\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}