FA-75796 / Text diff and three-way merge / Open access
Hunk function context: long headings are not truncated · case 01
Very long signatures overflow the hunk header.
ROOT CAUSE
The heading is used without applying the length limit.
THE FAILURE
The heading is used without applying the length limit.
Unsuccessful approach: Truncating to one less than the limit cuts every long heading short by a character.
Case contract
For each hunk whose old range starts at 1-based line s, search the old lines strictly before s, nearest first, for a line whose first character is a letter, "_" or "$". The heading is that line with trailing whitespace removed, truncated to limit characters; "" if none.
Why this case matters
The text after the @@ header helps reviewers locate a hunk; choosing the wrong line or including the hunk itself misleads.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(old, starts, limit):
res = []
for s in starts:
found = ''
for k in range(s - 2, -1, -1):
ln = old[k]
if ln[:1].isalpha() or ln[:1] in ('_', '$'):
found = ln.rstrip()
break
res.append(found)
return res
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {
1: [('nearest preceding definition', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [5], 40], ['int main(void)']), ('the hunk start line itself is not searched', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [2, 3], 40], ['', 'int main(void)']), ('indented lines are not headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [6], 40], ['int main(void)']), ('dollar and underscore headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [10, 12], 40], ['$macro', '_private:']), ('nothing before the first line', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [1], 40], ['']), ('long heading is truncated', [['def xxxxxxxxxxxxxxxxxxxxx(): ', ' pass', ' pass'], [3], 11], ['def xxxxxxx']), ('digits do not start a heading', [['label:', '42 items', 'y'], [3], 40], ['label:']), ('trailing whitespace trimmed', [['Section ', 'text', 'more'], [3], 40], ['text'])],
2: [('nearest preceding definition', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [5], 40], ['int main(void)']), ('the hunk start line itself is not searched', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [2, 3], 40], ['', 'int main(void)']), ('indented lines are not headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [6], 40], ['int main(void)']), ('dollar and underscore headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [10, 12], 40], ['$macro', '_private:']), ('nothing before the first line', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [1], 40], ['']), ('long heading is truncated', [['def xxxxxxxxxxxxxxxxxxxxxx(): ', ' pass', ' pass'], [3], 12], ['def xxxxxxxx']), ('digits do not start a heading', [['label:', '42 items', 'y'], [3], 40], ['label:']), ('trailing whitespace trimmed', [['Section ', 'text', 'more'], [3], 40], ['text'])],
3: [('nearest preceding definition', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [5], 40], ['int main(void)']), ('the hunk start line itself is not searched', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [2, 3], 40], ['', 'int main(void)']), ('indented lines are not headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [6], 40], ['int main(void)']), ('dollar and underscore headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [10, 12], 40], ['$macro', '_private:']), ('nothing before the first line', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [1], 40], ['']), ('long heading is truncated', [['def xxxxxxxxxxxxxxxxxxxxxxx(): ', ' pass', ' pass'], [3], 13], ['def xxxxxxxxx']), ('digits do not start a heading', [['label:', '42 items', 'y'], [3], 40], ['label:']), ('trailing whitespace trimmed', [['Section ', 'text', 'more'], [3], 40], ['text'])],
4: [('nearest preceding definition', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [5], 40], ['int main(void)']), ('the hunk start line itself is not searched', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [2, 3], 40], ['', 'int main(void)']), ('indented lines are not headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [6], 40], ['int main(void)']), ('dollar and underscore headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [10, 12], 40], ['$macro', '_private:']), ('nothing before the first line', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [1], 40], ['']), ('long heading is truncated', [['def xxxxxxxxxxxxxxxxxxxxxxxx(): ', ' pass', ' pass'], [3], 14], ['def xxxxxxxxxx']), ('digits do not start a heading', [['label:', '42 items', 'y'], [3], 40], ['label:']), ('trailing whitespace trimmed', [['Section ', 'text', 'more'], [3], 40], ['text'])],
5: [('nearest preceding definition', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [5], 40], ['int main(void)']), ('the hunk start line itself is not searched', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [2, 3], 40], ['', 'int main(void)']), ('indented lines are not headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [6], 40], ['int main(void)']), ('dollar and underscore headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [10, 12], 40], ['$macro', '_private:']), ('nothing before the first line', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [1], 40], ['']), ('long heading is truncated', [['def xxxxxxxxxxxxxxxxxxxxxxxxx(): ', ' pass', ' pass'], [3], 15], ['def xxxxxxxxxxx']), ('digits do not start a heading', [['label:', '42 items', 'y'], [3], 40], ['label:']), ('trailing whitespace trimmed', [['Section ', 'text', 'more'], [3], 40], ['text'])],
}[N]
for label, args, expected in cases:
check(label, solve(*args), expected)
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 |
|---|---|---|---|
| nearest preceding definition | ['int main(void)'] | ['int main(void)'] | Passed |
| the hunk start line itself is not searched | ['', 'int main(void)'] | ['', 'int main(void)'] | Passed |
| indented lines are not headings | ['int main(void)'] | ['int main(void)'] | Passed |
| dollar and underscore headings | ['$macro', '_private:'] | ['$macro', '_private:'] | Passed |
| nothing before the first line | [''] | [''] | Passed |
| long heading is truncated | ['def xxxxxxxxxxxxxxxxxxxxx():'] | ['def xxxxxxx'] | Failed |
| digits do not start a heading | ['label:'] | ['label:'] | Passed |
| trailing whitespace trimmed | ['text'] | ['text'] | Passed |
SHA-256 / 9a971b619b6c6037fc1263d5a559fb1df05d8aec359dc62b8f0aad808249ca1a
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(old, starts, limit):
res = []
for s in starts:
found = ''
for k in range(s - 2, -1, -1):
ln = old[k]
if ln[:1].isalpha() or ln[:1] in ('_', '$'):
found = ln.rstrip()[:limit - 1]
break
res.append(found)
return res
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {
1: [('nearest preceding definition', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [5], 40], ['int main(void)']), ('the hunk start line itself is not searched', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [2, 3], 40], ['', 'int main(void)']), ('indented lines are not headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [6], 40], ['int main(void)']), ('dollar and underscore headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [10, 12], 40], ['$macro', '_private:']), ('nothing before the first line', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [1], 40], ['']), ('long heading is truncated', [['def xxxxxxxxxxxxxxxxxxxxx(): ', ' pass', ' pass'], [3], 11], ['def xxxxxxx']), ('digits do not start a heading', [['label:', '42 items', 'y'], [3], 40], ['label:']), ('trailing whitespace trimmed', [['Section ', 'text', 'more'], [3], 40], ['text'])],
2: [('nearest preceding definition', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [5], 40], ['int main(void)']), ('the hunk start line itself is not searched', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [2, 3], 40], ['', 'int main(void)']), ('indented lines are not headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [6], 40], ['int main(void)']), ('dollar and underscore headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [10, 12], 40], ['$macro', '_private:']), ('nothing before the first line', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [1], 40], ['']), ('long heading is truncated', [['def xxxxxxxxxxxxxxxxxxxxxx(): ', ' pass', ' pass'], [3], 12], ['def xxxxxxxx']), ('digits do not start a heading', [['label:', '42 items', 'y'], [3], 40], ['label:']), ('trailing whitespace trimmed', [['Section ', 'text', 'more'], [3], 40], ['text'])],
3: [('nearest preceding definition', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [5], 40], ['int main(void)']), ('the hunk start line itself is not searched', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [2, 3], 40], ['', 'int main(void)']), ('indented lines are not headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [6], 40], ['int main(void)']), ('dollar and underscore headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [10, 12], 40], ['$macro', '_private:']), ('nothing before the first line', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [1], 40], ['']), ('long heading is truncated', [['def xxxxxxxxxxxxxxxxxxxxxxx(): ', ' pass', ' pass'], [3], 13], ['def xxxxxxxxx']), ('digits do not start a heading', [['label:', '42 items', 'y'], [3], 40], ['label:']), ('trailing whitespace trimmed', [['Section ', 'text', 'more'], [3], 40], ['text'])],
4: [('nearest preceding definition', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [5], 40], ['int main(void)']), ('the hunk start line itself is not searched', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [2, 3], 40], ['', 'int main(void)']), ('indented lines are not headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [6], 40], ['int main(void)']), ('dollar and underscore headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [10, 12], 40], ['$macro', '_private:']), ('nothing before the first line', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [1], 40], ['']), ('long heading is truncated', [['def xxxxxxxxxxxxxxxxxxxxxxxx(): ', ' pass', ' pass'], [3], 14], ['def xxxxxxxxxx']), ('digits do not start a heading', [['label:', '42 items', 'y'], [3], 40], ['label:']), ('trailing whitespace trimmed', [['Section ', 'text', 'more'], [3], 40], ['text'])],
5: [('nearest preceding definition', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [5], 40], ['int main(void)']), ('the hunk start line itself is not searched', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [2, 3], 40], ['', 'int main(void)']), ('indented lines are not headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [6], 40], ['int main(void)']), ('dollar and underscore headings', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [10, 12], 40], ['$macro', '_private:']), ('nothing before the first line', [['#include <x>', 'int main(void)', '{', ' int a;', ' helper();', ' return 0;', '}', '', '$macro', ' body', '_private:', ' x = 1'], [1], 40], ['']), ('long heading is truncated', [['def xxxxxxxxxxxxxxxxxxxxxxxxx(): ', ' pass', ' pass'], [3], 15], ['def xxxxxxxxxxx']), ('digits do not start a heading', [['label:', '42 items', 'y'], [3], 40], ['label:']), ('trailing whitespace trimmed', [['Section ', 'text', 'more'], [3], 40], ['text'])],
}[N]
for label, args, expected in cases:
check(label, solve(*args), expected)
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 |
|---|---|---|---|
| nearest preceding definition | ['int main(void)'] | ['int main(void)'] | Passed |
| the hunk start line itself is not searched | ['', 'int main(void)'] | ['', 'int main(void)'] | Passed |
| indented lines are not headings | ['int main(void)'] | ['int main(void)'] | Passed |
| dollar and underscore headings | ['$macro', '_private:'] | ['$macro', '_private:'] | Passed |
| nothing before the first line | [''] | [''] | Passed |
| long heading is truncated | ['def xxxxxx'] | ['def xxxxxxx'] | Failed |
| digits do not start a heading | ['label:'] | ['label:'] | Passed |
| trailing whitespace trimmed | ['text'] | ['text'] | Passed |
SHA-256 / ea1ff680f070f8347f705dbd3eb06e014fed47132ed3bbd0afd54f87efa5b17b
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗Verification & scope
A deterministic, bounded teaching model of one diff, patch or merge rule with stipulated conventions; it is not a production diff or version-control implementation and makes no claim of conformance to any specific tool. 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:49:10.267505+00:00.
Case digest / 94832932e2ae64f0c772ded174548903bc46c30ac46c8e4ef3589f9a51e23103