{"abstract":"Loss mask includes prompt tokens.","category":"Sequence batch packing","checks":6,"contract":"Concatenate prompt and response tokens; return a mask of zero for prompt positions and one for response positions.","contract_signature":"prompt, response","evaluation_group":"w3-seqpack-prompt-loss-mask-v1","failed_approach":"Shifting one boundary token from prompt to response corrupts supervision ownership.","family":"w3-sequence-batch-packing-prompt-response-loss-mask","id":"FA-98121","implementations":{"attempt":{"sha256":"bb5ee3f6a30ff4c2dc06353c3591284bcd7ecdad9c67733f3c60745e8edd2a04","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(prompt, response):\n    return prompt+response, [0]*max(0,len(prompt)-1)+[1]*(len(response)+1)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\np=[N,2*N]; r=[3*N]\ncheck('one response', solve(p,r), (p+r,[0,0,1]))\ncheck('long prompt', solve(list(range(N)),[9]), (list(range(N))+[9],[0]*N+[1]))\ncheck('empty prompt', solve([],[N]), ([N],[1]))\ncheck('empty response', solve([N],[]), ([N],[0]))\ncheck('both empty', solve([],[]), ([],[]))\ncheck('multiple response', solve([1],[2,3]), ([1,2,3],[0,1,1]))\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":"8f22aa2f58964e55daad627e7ddc530bf54e359216f0d77ebc98943135e83614","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(prompt, response):\n    return prompt+response, [1]*(len(prompt)+len(response))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\np=[N,2*N]; r=[3*N]\ncheck('one response', solve(p,r), (p+r,[0,0,1]))\ncheck('long prompt', solve(list(range(N)),[9]), (list(range(N))+[9],[0]*N+[1]))\ncheck('empty prompt', solve([],[N]), ([N],[1]))\ncheck('empty response', solve([N],[]), ([N],[0]))\ncheck('both empty', solve([],[]), ([],[]))\ncheck('multiple response', solve([1],[2,3]), ([1,2,3],[0,1,1]))\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 short integer-token lists under the stated toy contract; results do not claim compatibility with a specific training framework. 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-sequence-batch-packing-prompt-response-loss-mask","generated_at":"2026-09-30T16:48:09.757875+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"This deterministic toy packing rule models a common boundary in preparing bounded training sequences.","root_cause":"The mask treats every concatenated token as a prediction target.","sha256":"427a1d5c4a59e6befce95c64dc69bc32cd304e5cde9965ff07f77f4eca2e7cf3","title":"Loss mask includes prompt tokens · 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":26.628,"exit_code":1,"observations":[{"actual":[[1,2,3],[0,1,1]],"check":"one response","expected":[[1,2,3],[0,0,1]],"passed":false},{"actual":[[0,9],[1,1]],"check":"long prompt","expected":[[0,9],[0,1]],"passed":false},{"actual":[[1],[1,1]],"check":"empty prompt","expected":[[1],[1]],"passed":false},{"actual":[[1],[1]],"check":"empty response","expected":[[1],[0]],"passed":false},{"actual":[[],[1]],"check":"both empty","expected":[[],[]],"passed":false},{"actual":[[1,2,3],[1,1,1]],"check":"multiple response","expected":[[1,2,3],[0,1,1]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"one response\", \"actual\": [[1, 2, 3], [0, 1, 1]], \"expected\": [[1, 2, 3], [0, 0, 1]], \"passed\": false}, {\"check\": \"long prompt\", \"actual\": [[0, 9], [1, 1]], \"expected\": [[0, 9], [0, 1]], \"passed\": false}, {\"check\": \"empty prompt\", \"actual\": [[1], [1, 1]], \"expected\": [[1], [1]], \"passed\": false}, {\"check\": \"empty response\", \"actual\": [[1], [1]], \"expected\": [[1], [0]], \"passed\": false}, {\"check\": \"both empty\", \"actual\": [[], [1]], \"expected\": [[], []], \"passed\": false}, {\"check\": \"multiple response\", \"actual\": [[1, 2, 3], [1, 1, 1]], \"expected\": [[1, 2, 3], [0, 1, 1]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":27.881,"exit_code":1,"observations":[{"actual":[[1,2,3],[1,1,1]],"check":"one response","expected":[[1,2,3],[0,0,1]],"passed":false},{"actual":[[0,9],[1,1]],"check":"long prompt","expected":[[0,9],[0,1]],"passed":false},{"actual":[[1],[1]],"check":"empty prompt","expected":[[1],[1]],"passed":true},{"actual":[[1],[1]],"check":"empty response","expected":[[1],[0]],"passed":false},{"actual":[[],[]],"check":"both empty","expected":[[],[]],"passed":true},{"actual":[[1,2,3],[1,1,1]],"check":"multiple response","expected":[[1,2,3],[0,1,1]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"one response\", \"actual\": [[1, 2, 3], [1, 1, 1]], \"expected\": [[1, 2, 3], [0, 0, 1]], \"passed\": false}, {\"check\": \"long prompt\", \"actual\": [[0, 9], [1, 1]], \"expected\": [[0, 9], [0, 1]], \"passed\": false}, {\"check\": \"empty prompt\", \"actual\": [[1], [1]], \"expected\": [[1], [1]], \"passed\": true}, {\"check\": \"empty response\", \"actual\": [[1], [1]], \"expected\": [[1], [0]], \"passed\": false}, {\"check\": \"both empty\", \"actual\": [[], []], \"expected\": [[], []], \"passed\": true}, {\"check\": \"multiple response\", \"actual\": [[1, 2, 3], [1, 1, 1]], \"expected\": [[1, 2, 3], [0, 1, 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."}}