{"abstract":"Single-bar codes are printed although scanners require at least two bars.","category":"Barcode symbology encoding","checks":8,"contract":"Encode an integer 3..131070 as a one-track Pharmacode: repeatedly, an even value adds a wide bar and becomes (n - 2) / 2, an odd value adds a narrow bar and becomes (n - 1) / 2, until zero; bars are read in the reverse order of generation (left to right). Width: narrow 1, wide 3, spaces 2 between bars. Return [pattern, width] or None outside the range.","evaluation_group":"w2-barcode-symbology-encoding-pharmacode-bars","failed_approach":"A lower bound of 2 still allows a single wide bar.","family":"w2-barcode-symbology-encoding-pharmacode-bars-lower-bound","id":"FA-79816","implementations":{"attempt":{"sha256":"8ecbd3ff8359d42aa5642a6d2e7aa1ed05a72b87c21237a32c334ef473df68d8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(n):\n    if not isinstance(n, int) or n < 2 or n > 131070:\n        return None\n    bars = []\n    while n > 0:\n        if n % 2 == 0:\n            bars.append('w')\n            n = (n - 2) // 2\n        else:\n            bars.append('n')\n            n = (n - 1) // 2\n    bars.reverse()\n    width = sum(3 if b == 'w' else 1 for b in bars) + 2 * (len(bars) - 1)\n    return [''.join(bars), width]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[1, None], [2, None], [34, ['nnnww', 17]], [306, ['nnwwnnww', 30]], [371, ['nwwwnwnn', 30]], [120, ['wwwnnw', 24]], [98, ['wnnnww', 22]], [297, ['nnwnwnwn', 28]]], [[2, None], [6, ['ww', 8]], [85, ['nwnwwn', 22]], [155, ['nnwwwnn', 25]], [306, ['nnwwnnww', 30]], [201, ['wnnwnwn', 25]], [146, ['nnwnnww', 25]], [240, ['wwwnnnw', 27]]], [[1, None], [2, None], [142, ['nnnwwww', 27]], [335, ['nwnwnnnn', 26]], [232, ['wwnwnnw', 27]], [397, ['wnnnwwwn', 30]], [147, ['nnwnwnn', 23]], [225, ['wwnnnwn', 25]]], [[2, None], [229, ['wwnnwwn', 27]], [157, ['nnwwwwn', 27]], [19, ['nwnn', 12]], [27, ['wwnn', 14]], [36, ['nnwnw', 17]], [75, ['nnwwnn', 20]], [228, ['wwnnwnw', 27]]], [[1, None], [2, None], [157, ['nnwwwwn', 27]], [228, ['wwnnwnw', 27]], [361, ['nwwnwnwn', 30]], [153, ['nnwwnwn', 25]], [326, ['nwnnnwww', 30]], [188, ['nwwwwnw', 29]]]]\nlabels = [\"regression: minimum encodable value\", \"repair trap\", \"combined fault\", \"control\", \"control\", \"boundary\", \"boundary\", \"control\"]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"%s %d\" % (labels[i % len(labels)], i), solve(args), expected)\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":"7c4d6dbb9dc225d6d12142777641cd230f10fce90f7e5ab85d0d62b5b061bb8a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(n):\n    if not isinstance(n, int) or n < 1 or n > 131070:\n        return None\n    bars = []\n    while n > 0:\n        if n % 2 == 0:\n            bars.append('w')\n            n = (n - 2) // 2\n        else:\n            bars.append('n')\n            n = (n - 1) // 2\n    bars.reverse()\n    width = sum(3 if b == 'w' else 1 for b in bars) + 2 * (len(bars) - 1)\n    return [''.join(bars), width]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[1, None], [2, None], [34, ['nnnww', 17]], [306, ['nnwwnnww', 30]], [371, ['nwwwnwnn', 30]], [120, ['wwwnnw', 24]], [98, ['wnnnww', 22]], [297, ['nnwnwnwn', 28]]], [[2, None], [6, ['ww', 8]], [85, ['nwnwwn', 22]], [155, ['nnwwwnn', 25]], [306, ['nnwwnnww', 30]], [201, ['wnnwnwn', 25]], [146, ['nnwnnww', 25]], [240, ['wwwnnnw', 27]]], [[1, None], [2, None], [142, ['nnnwwww', 27]], [335, ['nwnwnnnn', 26]], [232, ['wwnwnnw', 27]], [397, ['wnnnwwwn', 30]], [147, ['nnwnwnn', 23]], [225, ['wwnnnwn', 25]]], [[2, None], [229, ['wwnnwwn', 27]], [157, ['nnwwwwn', 27]], [19, ['nwnn', 12]], [27, ['wwnn', 14]], [36, ['nnwnw', 17]], [75, ['nnwwnn', 20]], [228, ['wwnnwnw', 27]]], [[1, None], [2, None], [157, ['nnwwwwn', 27]], [228, ['wwnnwnw', 27]], [361, ['nwwnwnwn', 30]], [153, ['nnwwnwn', 25]], [326, ['nwnnnwww', 30]], [188, ['nwwwwnw', 29]]]]\nlabels = [\"regression: minimum encodable value\", \"repair trap\", \"combined fault\", \"control\", \"control\", \"boundary\", \"boundary\", \"control\"]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"%s %d\" % (labels[i % len(labels)], i), solve(args), expected)\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":"062c2a659a6769ff340d49b3e3609b1a803a89a41ad8ffc4f9af8de38f919b66","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(n):\n    if not isinstance(n, int) or n < 3 or n > 131070:\n        return None\n    bars = []\n    while n > 0:\n        if n % 2 == 0:\n            bars.append('w')\n            n = (n - 2) // 2\n        else:\n            bars.append('n')\n            n = (n - 1) // 2\n    bars.reverse()\n    width = sum(3 if b == 'w' else 1 for b in bars) + 2 * (len(bars) - 1)\n    return [''.join(bars), width]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[1, None], [2, None], [34, ['nnnww', 17]], [306, ['nnwwnnww', 30]], [371, ['nwwwnwnn', 30]], [120, ['wwwnnw', 24]], [98, ['wnnnww', 22]], [297, ['nnwnwnwn', 28]]], [[2, None], [6, ['ww', 8]], [85, ['nwnwwn', 22]], [155, ['nnwwwnn', 25]], [306, ['nnwwnnww', 30]], [201, ['wnnwnwn', 25]], [146, ['nnwnnww', 25]], [240, ['wwwnnnw', 27]]], [[1, None], [2, None], [142, ['nnnwwww', 27]], [335, ['nwnwnnnn', 26]], [232, ['wwnwnnw', 27]], [397, ['wnnnwwwn', 30]], [147, ['nnwnwnn', 23]], [225, ['wwnnnwn', 25]]], [[2, None], [229, ['wwnnwwn', 27]], [157, ['nnwwwwn', 27]], [19, ['nwnn', 12]], [27, ['wwnn', 14]], [36, ['nnwnw', 17]], [75, ['nnwwnn', 20]], [228, ['wwnnwnw', 27]]], [[1, None], [2, None], [157, ['nnwwwwn', 27]], [228, ['wwnnwnw', 27]], [361, ['nwwnwnwn', 30]], [153, ['nnwwnwn', 25]], [326, ['nwnnnwww', 30]], [188, ['nwwwwnw', 29]]]]\nlabels = [\"regression: minimum encodable value\", \"repair trap\", \"combined fault\", \"control\", \"control\", \"boundary\", \"boundary\", \"control\"]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"%s %d\" % (labels[i % len(labels)], i), solve(args), expected)\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":"A deterministic bounded teaching model with a stipulated contract; it makes no claim of conformance to any published specification. 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":"w2-barcode-symbology-encoding-pharmacode-bars-lower-bound","generated_at":"2026-09-29T14:49:48.200653+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Retail, logistics, pharmacy and document workflows depend on encoders that produce exactly the module pattern, code-set switches, separators and quiet zones scanners expect; one misplaced module or separator makes a label unreadable or, worse, scan as different data.","repair":"Accept values from 3.","root_cause":"The lower bound is 1 instead of 3.","sha256":"48006931c433fe163e3f1e6ca329fd74edb5ce5cc71aff6855e3905d1a2a1f07","title":"Pharmacode encodes values 1 and 2 · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.688,"exit_code":1,"observations":[{"actual":null,"check":"regression: minimum encodable value 0","expected":null,"passed":true},{"actual":["w",3],"check":"repair trap 1","expected":null,"passed":false},{"actual":["nnnww",17],"check":"combined fault 2","expected":["nnnww",17],"passed":true},{"actual":["nnwwnnww",30],"check":"control 3","expected":["nnwwnnww",30],"passed":true},{"actual":["nwwwnwnn",30],"check":"control 4","expected":["nwwwnwnn",30],"passed":true},{"actual":["wwwnnw",24],"check":"boundary 5","expected":["wwwnnw",24],"passed":true},{"actual":["wnnnww",22],"check":"boundary 6","expected":["wnnnww",22],"passed":true},{"actual":["nnwnwnwn",28],"check":"control 7","expected":["nnwnwnwn",28],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: minimum encodable value 0\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"repair trap 1\", \"actual\": [\"w\", 3], \"expected\": null, \"passed\": false}, {\"check\": \"combined fault 2\", \"actual\": [\"nnnww\", 17], \"expected\": [\"nnnww\", 17], \"passed\": true}, {\"check\": \"control 3\", \"actual\": [\"nnwwnnww\", 30], \"expected\": [\"nnwwnnww\", 30], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [\"nwwwnwnn\", 30], \"expected\": [\"nwwwnwnn\", 30], \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": [\"wwwnnw\", 24], \"expected\": [\"wwwnnw\", 24], \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": [\"wnnnww\", 22], \"expected\": [\"wnnnww\", 22], \"passed\": true}, {\"check\": \"control 7\", \"actual\": [\"nnwnwnwn\", 28], \"expected\": [\"nnwnwnwn\", 28], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.316,"exit_code":1,"observations":[{"actual":["n",1],"check":"regression: minimum encodable value 0","expected":null,"passed":false},{"actual":["w",3],"check":"repair trap 1","expected":null,"passed":false},{"actual":["nnnww",17],"check":"combined fault 2","expected":["nnnww",17],"passed":true},{"actual":["nnwwnnww",30],"check":"control 3","expected":["nnwwnnww",30],"passed":true},{"actual":["nwwwnwnn",30],"check":"control 4","expected":["nwwwnwnn",30],"passed":true},{"actual":["wwwnnw",24],"check":"boundary 5","expected":["wwwnnw",24],"passed":true},{"actual":["wnnnww",22],"check":"boundary 6","expected":["wnnnww",22],"passed":true},{"actual":["nnwnwnwn",28],"check":"control 7","expected":["nnwnwnwn",28],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: minimum encodable value 0\", \"actual\": [\"n\", 1], \"expected\": null, \"passed\": false}, {\"check\": \"repair trap 1\", \"actual\": [\"w\", 3], \"expected\": null, \"passed\": false}, {\"check\": \"combined fault 2\", \"actual\": [\"nnnww\", 17], \"expected\": [\"nnnww\", 17], \"passed\": true}, {\"check\": \"control 3\", \"actual\": [\"nnwwnnww\", 30], \"expected\": [\"nnwwnnww\", 30], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [\"nwwwnwnn\", 30], \"expected\": [\"nwwwnwnn\", 30], \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": [\"wwwnnw\", 24], \"expected\": [\"wwwnnw\", 24], \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": [\"wnnnww\", 22], \"expected\": [\"wnnnww\", 22], \"passed\": true}, {\"check\": \"control 7\", \"actual\": [\"nnwnwnwn\", 28], \"expected\": [\"nnwnwnwn\", 28], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.643,"exit_code":0,"observations":[{"actual":null,"check":"regression: minimum encodable value 0","expected":null,"passed":true},{"actual":null,"check":"repair trap 1","expected":null,"passed":true},{"actual":["nnnww",17],"check":"combined fault 2","expected":["nnnww",17],"passed":true},{"actual":["nnwwnnww",30],"check":"control 3","expected":["nnwwnnww",30],"passed":true},{"actual":["nwwwnwnn",30],"check":"control 4","expected":["nwwwnwnn",30],"passed":true},{"actual":["wwwnnw",24],"check":"boundary 5","expected":["wwwnnw",24],"passed":true},{"actual":["wnnnww",22],"check":"boundary 6","expected":["wnnnww",22],"passed":true},{"actual":["nnwnwnwn",28],"check":"control 7","expected":["nnwnwnwn",28],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: minimum encodable value 0\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"repair trap 1\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"combined fault 2\", \"actual\": [\"nnnww\", 17], \"expected\": [\"nnnww\", 17], \"passed\": true}, {\"check\": \"control 3\", \"actual\": [\"nnwwnnww\", 30], \"expected\": [\"nnwwnnww\", 30], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [\"nwwwnwnn\", 30], \"expected\": [\"nwwwnwnn\", 30], \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": [\"wwwnnw\", 24], \"expected\": [\"wwwnnw\", 24], \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": [\"wnnnww\", 22], \"expected\": [\"wnnnww\", 22], \"passed\": true}, {\"check\": \"control 7\", \"actual\": [\"nnwnwnwn\", 28], \"expected\": [\"nnwnwnwn\", 28], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}