Skip to content

Commit cc970b1

Browse files
committed
Update handoff to 0.741; record the header-classification tangle as the open problem
Names the real obstacle behind gasimova s and 10890106 s titles: three interacting heuristics (col_start, is_title_font, the block-gap threshold) each compensating for the others errors, so patching any one moves the others. Four attempts are recorded with their costs so the next session does not repeat them. Also flags Contact fields as a smaller untouched item.
1 parent 50a5deb commit cc970b1

1 file changed

Lines changed: 27 additions & 11 deletions

File tree

calibration/APPROACH_A_HANDOFF.md

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ runbook for approach A specifically.
88
## STATUS (2026-07-16): approach A done, LOGIC-GAP tail done, 20/21
99

1010
Board: **20/21 acceptable, 12/13 numbered end-to-end, 13/13 logic-OK**, corpus
11-
w=0.976 rGlobal=0.835 rField=0.737, suite green (260 passed). Reference
12-
snapshot: `baselines/try_final.json`. 13/13 logic-OK means that given ideal
11+
w=0.976 rGlobal=0.835 rField=0.741, suite green (260 passed). Reference
12+
snapshot: `baselines/try_wmedian.json`. 13/13 logic-OK means that given ideal
1313
reading order the corrector is now correct on every numbered poster in the
1414
corpus; the single remaining failure (8228476) is reading order, not logic.
1515

@@ -18,7 +18,7 @@ real regression in this very session (gasimova's title fell 1.000 -> 0.706
1818
while its rField still ROSE, because another field gained more):
1919

2020
~/myenv/bin/python calibration/diagnostics/field_audit.py \
21-
calibration/baselines/after_track_a.json calibration/baselines/try_final.json
21+
calibration/baselines/after_track_a.json calibration/baselines/try_wmedian.json
2222
~/myenv/bin/python calibration/diagnostics/annotation_audit.py
2323

2424
`field_audit.py` diffs all 177 fields of all 21 posters between two snapshots
@@ -55,6 +55,11 @@ regressions):
5555
matcher.
5656
- a5e83de size-aware line clustering + baseline-nearest word mapping + curly
5757
apostrophe normalization (42 to PASS; also rField +0.101 on 5128504).
58+
- f43ed24 LINE_MAX_GAP (a line ends at a five-em gap, keeping a corner logo and
59+
a poster-ID badge out of the title) + rejoin a title split across lines
60+
(4446908 title 0.706 -> 1.000).
61+
- 50a5deb page median font measured over text, not blocks (10890106 Study
62+
design 0.595 -> 0.962).
5863

5964
**Poster 42's annotation was fixed in the corpus repo**
6065
(`fairdataihub/posters-science-extraction-api`, commit 21d238d, pushed to
@@ -113,18 +118,29 @@ matters, but the poster is RTL and blocked on approach D anyway.
113118
cannot rejoin the halves. Buys the byline (+0.154), Background (+0.396) and
114119
correct affiliations for all seven authors. Fixing it properly means making
115120
the flatten preserve genuine columns instead of dissolving the whole band.
116-
- **Tried and rejected for it** (both in git history, do not re-run blind):
121+
- **Tried and rejected for it** (all in git history, do not re-run blind):
117122
classifying large top-zone text as title fragments cost 4519718 0.372 on its
118123
banner and AISec2025 0.401; scaling the block-gap threshold to local line
119124
height instead of the page median cost 10890106 its title (0.757 -> 0.495)
120-
and Acknowledgements (0.954 -> 0.549).
125+
and Acknowledgements (0.954 -> 0.549); keeping banner furniture out of
126+
`col_start` dropped the board to 19/21 and made 10890106 WORSE, not better.
127+
That last one diagnosed the real problem (see below), so it was worth the
128+
detour, but do not simply retry it.
121129
- **10890106 is extraction, not annotation** (its annotation is clean; audited).
122-
Its weak fields are fragmentation: no block clears the header cutoff at all
123-
(a narrow "Abstract nr" badge drags `col_start` to 90.6, cutoff 145.0, while
124-
the title starts at 284.4), so its 72pt title stays two blocks, and Study
125-
design / Conclusions scatter across blocks the metric scores one at a time.
126-
The header cutoff being derived from the topmost narrow block is the common
127-
thread with gasimova's title; that is the next thing worth fixing properly.
130+
Its worst fields were fragmentation. Study design is fixed (0.595 -> 0.962)
131+
by 50a5deb, which measured the page's median font over text rather than over
132+
blocks. Its title (0.757) is still two blocks: a narrow "Abstract nr" badge
133+
drags `col_start` to 90.6, cutoff 145.0, while the title starts at 284.4, so
134+
no block on the poster clears the header cutoff and the title merge cannot
135+
fire. Do NOT fix this by widening the cutoff (tried; see above). The honest
136+
read is that header classification is a tangle of three interacting
137+
heuristics - `col_start`, `is_title_font`, and the block-gap threshold - each
138+
compensating for the others' errors. It wants a redesign against the corpus,
139+
not another patch. `field_audit.py` will tell you immediately if you have
140+
moved anything you did not mean to.
141+
- **Contact fields score low across several posters** (10890106 0.282,
142+
gasimova 0.280): contact blocks are not being emitted as their own section.
143+
Untouched, likely tractable, and worth a look before the header redesign.
128144

129145
## TL;DR
130146

0 commit comments

Comments
 (0)