{"abstract":"Projection removal subtracts the reference direction unchanged.","category":"Embedding vector normalization","checks":6,"contract":"For each embedding vector, remove its orthogonal projection onto a shared axis. A zero axis leaves vectors unchanged; an empty batch returns empty.","contract_signature":"vectors, axis","evaluation_group":"embedding-orthogonal-projection-removal","failed_approach":"Using dot(vector,axis) directly as the projection coefficient only works when the axis is unit length.","family":"w3-embedding-vector-normalization-reference-projection-removal","id":"FA-99436","implementations":{"attempt":{"sha256":"2458807bfcf3ce6f721b0c26ff17866abec203d7790079f2588e5b94e322e997","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(vectors, axis):\n    return [[x-sum(p*q for p,q in zip(v,axis))*a for x,a in zip(v,axis)] for v in vectors] if any(axis) else [list(v) for v in vectors]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('unit axis', solve([[3,4],[1,-2]],[1,0]), [[0,4],[0,-2]])\ncheck('nonunit axis', solve([[3,4]],[2,0]), [[0,4]])\ncheck('diagonal projection', solve([[3,1]],[1,1]), [[1,-1]])\ncheck('zero axis', solve([[N,2*N]],[0,0]), [[N,2*N]])\ncheck('empty batch', solve([], [1,0]), [])\ncheck('scaled axis and row', solve([[2*N,N]],[N,0]), [[0,N]])\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":"f133db033afa7f617df313143edd4ff3909976824b2a69c7a3985d3f27b31653","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(vectors, axis):\n    return [[x-a for x,a in zip(v,axis)] for v in vectors]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('unit axis', solve([[3,4],[1,-2]],[1,0]), [[0,4],[0,-2]])\ncheck('nonunit axis', solve([[3,4]],[2,0]), [[0,4]])\ncheck('diagonal projection', solve([[3,1]],[1,1]), [[1,-1]])\ncheck('zero axis', solve([[N,2*N]],[0,0]), [[N,2*N]])\ncheck('empty batch', solve([], [1,0]), [])\ncheck('scaled axis and row', solve([[2*N,N]],[N,0]), [[0,N]])\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":"Inputs are finite toy vectors or token rows; this contract makes no claim about model quality or production embedding behavior. 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":"w3-embedding-vector-normalization-reference-projection-removal","generated_at":"2026-09-30T16:48:24.023825+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A small embedding preparation contract can be checked without a model or retrieval system.","root_cause":"The reference axis is subtracted once instead of removing each vector's projection onto that axis.","sha256":"8ef5de4ebb617d4ef68b18cbc24f238eee0b39bc5654db00a5d425b12432c6d9","title":"Projection removal subtracts the reference direction unchanged · case 01","variant":1,"variant_policy":"The fixture code references N, supplied as 1 through 5. Fixed boundary checks may repeat. These records share one mechanism and must remain together in evaluation splits.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":30.463,"exit_code":1,"observations":[{"actual":[[0,4],[0,-2]],"check":"unit axis","expected":[[0,4],[0,-2]],"passed":true},{"actual":[[-9,4]],"check":"nonunit axis","expected":[[0,4]],"passed":false},{"actual":[[-1,-3]],"check":"diagonal projection","expected":[[1,-1]],"passed":false},{"actual":[[1,2]],"check":"zero axis","expected":[[1,2]],"passed":true},{"actual":[],"check":"empty batch","expected":[],"passed":true},{"actual":[[0,1]],"check":"scaled axis and row","expected":[[0,1]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unit axis\", \"actual\": [[0, 4], [0, -2]], \"expected\": [[0, 4], [0, -2]], \"passed\": true}, {\"check\": \"nonunit axis\", \"actual\": [[-9, 4]], \"expected\": [[0, 4]], \"passed\": false}, {\"check\": \"diagonal projection\", \"actual\": [[-1, -3]], \"expected\": [[1, -1]], \"passed\": false}, {\"check\": \"zero axis\", \"actual\": [[1, 2]], \"expected\": [[1, 2]], \"passed\": true}, {\"check\": \"empty batch\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"scaled axis and row\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":27.263,"exit_code":1,"observations":[{"actual":[[2,4],[0,-2]],"check":"unit axis","expected":[[0,4],[0,-2]],"passed":false},{"actual":[[1,4]],"check":"nonunit axis","expected":[[0,4]],"passed":false},{"actual":[[2,0]],"check":"diagonal projection","expected":[[1,-1]],"passed":false},{"actual":[[1,2]],"check":"zero axis","expected":[[1,2]],"passed":true},{"actual":[],"check":"empty batch","expected":[],"passed":true},{"actual":[[1,1]],"check":"scaled axis and row","expected":[[0,1]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unit axis\", \"actual\": [[2, 4], [0, -2]], \"expected\": [[0, 4], [0, -2]], \"passed\": false}, {\"check\": \"nonunit axis\", \"actual\": [[1, 4]], \"expected\": [[0, 4]], \"passed\": false}, {\"check\": \"diagonal projection\", \"actual\": [[2, 0]], \"expected\": [[1, -1]], \"passed\": false}, {\"check\": \"zero axis\", \"actual\": [[1, 2]], \"expected\": [[1, 2]], \"passed\": true}, {\"check\": \"empty batch\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"scaled axis and row\", \"actual\": [[1, 1]], \"expected\": [[0, 1]], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}