FAILURE MAP
← Case archive

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.

Verified by executionVariant 1 · 6 checks per implementationDownload source bundle ↓JSON ↗

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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