FA-11341 / Spreadsheet calculation semantics / Open access
Copying a mixed reference moves an anchored coordinate · case 01
An anchored row or column changes when a formula is copied.
ROOT CAUSE
One anchor flag is applied to both coordinates.
VERIFIED REPAIR
Apply row and column anchoring independently.
Unsuccessful approach: Freezing both coordinates whenever either is anchored loses the movable coordinate.
Case contract
Given positive row and column coordinates, independent anchor booleans and copy deltas, return translated [row,column]; resulting coordinates are positive.
Why this case matters
This isolated spreadsheet model makes cell semantics explicit; it does not claim compatibility with every workbook engine.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(row, col, row_abs, col_abs, dr, dc):
return [row + dr, col + dc]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixed row movable column', solve(10, 10, True, False, N, N), [10, 10+N])
check('movable row fixed column', solve(10, 10, False, True, -N, N), [10-N, 10])
check('fully relative', solve(10, 10, False, False, N, -N), [10+N, 10-N])
check('fully anchored', solve(10, 10, True, True, N, N), [10, 10])
check('identity copy', solve(1, 1, False, True, 0, 0), [1, 1])
check('first coordinate boundary', solve(N+1, 1, False, False, -N, 0), [1, 1])
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 |
|---|---|---|---|
| fixed row movable column | [11, 11] | [10, 11] | Failed |
| movable row fixed column | [9, 11] | [9, 10] | Failed |
| fully relative | [11, 9] | [11, 9] | Passed |
| fully anchored | [11, 11] | [10, 10] | Failed |
| identity copy | [1, 1] | [1, 1] | Passed |
| first coordinate boundary | [1, 1] | [1, 1] | Passed |
SHA-256 / bda0e5f2e5c0862cb9bce44910d1dee5f1315de51e56c439a0112839816b59fd
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(row, col, row_abs, col_abs, dr, dc):
return [row, col] if row_abs or col_abs else [row + dr, col + dc]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixed row movable column', solve(10, 10, True, False, N, N), [10, 10+N])
check('movable row fixed column', solve(10, 10, False, True, -N, N), [10-N, 10])
check('fully relative', solve(10, 10, False, False, N, -N), [10+N, 10-N])
check('fully anchored', solve(10, 10, True, True, N, N), [10, 10])
check('identity copy', solve(1, 1, False, True, 0, 0), [1, 1])
check('first coordinate boundary', solve(N+1, 1, False, False, -N, 0), [1, 1])
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 |
|---|---|---|---|
| fixed row movable column | [10, 10] | [10, 11] | Failed |
| movable row fixed column | [10, 10] | [9, 10] | Failed |
| fully relative | [11, 9] | [11, 9] | Passed |
| fully anchored | [10, 10] | [10, 10] | Passed |
| identity copy | [1, 1] | [1, 1] | Passed |
| first coordinate boundary | [1, 1] | [1, 1] | Passed |
SHA-256 / 913d321f0a2c967cf23c7cf229f1913e18fef50e6a149e65fae4597c6e7e2237
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(row, col, row_abs, col_abs, dr, dc):
return [row if row_abs else row + dr, col if col_abs else col + dc]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixed row movable column', solve(10, 10, True, False, N, N), [10, 10+N])
check('movable row fixed column', solve(10, 10, False, True, -N, N), [10-N, 10])
check('fully relative', solve(10, 10, False, False, N, -N), [10+N, 10-N])
check('fully anchored', solve(10, 10, True, True, N, N), [10, 10])
check('identity copy', solve(1, 1, False, True, 0, 0), [1, 1])
check('first coordinate boundary', solve(N+1, 1, False, False, -N, 0), [1, 1])
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 |
|---|---|---|---|
| fixed row movable column | [10, 11] | [10, 11] | Passed |
| movable row fixed column | [9, 10] | [9, 10] | Passed |
| fully relative | [11, 9] | [11, 9] | Passed |
| fully anchored | [10, 10] | [10, 10] | Passed |
| identity copy | [1, 1] | [1, 1] | Passed |
| first coordinate boundary | [1, 1] | [1, 1] | Passed |
SHA-256 / cee40fddfc86ea2e40d6e81814356a57f9d93f22370f6cdb21b5d1e381af8b1c
Verification & scope
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:47.072227+00:00.
Case digest / ba612fc79981c8d249c219135e0ee9f7237fda9702fac87ba50b7c8e18d725d1