FA-12491 / Biological sequence representation / Open access
Case normalization destroys soft-mask positions · case 01
Case normalization destroys soft-mask positions.
ROOT CAUSE
Uppercasing occurs before masked positions are selected.
VERIFIED REPAIR
Implement the stated sequence contract while preserving its positional and symbol semantics.
Unsuccessful approach: Selecting every lowercase character includes lowercase ambiguity markers.
Case contract
Return zero-based indices of lowercase a,c,g,t only; lowercase n is unknown, not a masked canonical base.
Why this case matters
An offline abstract sequence-data model; useful for testing representation invariants without biological inference.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(s):
return [i for i,c in enumerate(s.upper()) if c in 'acgt']
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('variable prefix', solve('A'*N+'acNnT'), [N,N+1])
check('unknown', solve('nn'), [])
check('uppercase', solve('ACGT'), [])
check('lowercase', solve('acgt'), [0,1,2,3])
check('empty', solve(''), [])
check('interleaved', solve('aNcGt'), [0,2,4])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| variable prefix | [] | [1, 2] | Failed |
| unknown | [] | [] | Passed |
| uppercase | [] | [] | Passed |
| lowercase | [] | [0, 1, 2, 3] | Failed |
| empty | [] | [] | Passed |
| interleaved | [] | [0, 2, 4] | Failed |
SHA-256 / 44fddde550d5a8857f59c73afcf47ce30a24ae06db2d57ef8bcfaf6253e4998f
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(s):
return [i for i,c in enumerate(s) if c.islower()]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('variable prefix', solve('A'*N+'acNnT'), [N,N+1])
check('unknown', solve('nn'), [])
check('uppercase', solve('ACGT'), [])
check('lowercase', solve('acgt'), [0,1,2,3])
check('empty', solve(''), [])
check('interleaved', solve('aNcGt'), [0,2,4])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| variable prefix | [1, 2, 4] | [1, 2] | Failed |
| unknown | [0, 1] | [] | Failed |
| uppercase | [] | [] | Passed |
| lowercase | [0, 1, 2, 3] | [0, 1, 2, 3] | Passed |
| empty | [] | [] | Passed |
| interleaved | [0, 2, 4] | [0, 2, 4] | Passed |
SHA-256 / 9b3c3f3c7b9a18f8c378176bf3739dd458be26034df52b46f10dcbb7202d67f6
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(s):
return [i for i,c in enumerate(s) if c in 'acgt']
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('variable prefix', solve('A'*N+'acNnT'), [N,N+1])
check('unknown', solve('nn'), [])
check('uppercase', solve('ACGT'), [])
check('lowercase', solve('acgt'), [0,1,2,3])
check('empty', solve(''), [])
check('interleaved', solve('aNcGt'), [0,2,4])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| variable prefix | [1, 2] | [1, 2] | Passed |
| unknown | [] | [] | Passed |
| uppercase | [] | [] | Passed |
| lowercase | [0, 1, 2, 3] | [0, 1, 2, 3] | Passed |
| empty | [] | [] | Passed |
| interleaved | [0, 2, 4] | [0, 2, 4] | Passed |
SHA-256 / 7359ad56367c4eb16221c7334abd3ccdaad1296851af272477da823e87bc241f
Verification & scope
Synthetic strings and explicit policies only; no biological interpretation or laboratory workflow. 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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:38:57.477735+00:00.
Case digest / c77d4a10ea4a103ba538245942278b17fcbeff03778adec39f5695cbf027396c