Skip to content

Commit 317d8a9

Browse files
committed
Record open items, rejected approaches, and how to read the numbers
Points the next session at field_audit.py and annotation_audit.py before trusting any average: the corpus mean hid a real title regression this session while the poster overall improved. Records that 42 was the only genuinely wrong annotation and the audit s other flags are benign abbreviation, that 10890106 is extraction rather than annotation, and the two approaches measured and rejected for gasimova s title so nobody re-runs them blind.
1 parent 6bcbdc5 commit 317d8a9

1 file changed

Lines changed: 49 additions & 4 deletions

File tree

calibration/APPROACH_A_HANDOFF.md

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,25 @@ 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.735, suite green (260 passed). Reference
12-
snapshot: `baselines/try_42gen.json`. 13/13 logic-OK means that given ideal
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
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

16+
**Use the two diagnostics before trusting any number.** Corpus averages hid a
17+
real regression in this very session (gasimova's title fell 1.000 -> 0.706
18+
while its rField still ROSE, because another field gained more):
19+
20+
~/myenv/bin/python calibration/diagnostics/field_audit.py \
21+
calibration/baselines/after_track_a.json calibration/baselines/try_final.json
22+
~/myenv/bin/python calibration/diagnostics/annotation_audit.py
23+
24+
`field_audit.py` diffs all 177 fields of all 21 posters between two snapshots
25+
(166 of 177 are byte-identical across every change made today, which is what
26+
"did this touch anything else" should be answered with, not an average).
27+
`annotation_audit.py` asks whether the ground truth claims things the poster
28+
does not say - the check that caught 42.
29+
1630
Read this first if you are comparing to older numbers: **the eval matcher was
1731
too loose and the old scoreboard was inflated.** `_affil_match` accepted any
1832
assigned string that merely CONTAINED the ground-truth tokens, so a poster
@@ -78,8 +92,39 @@ have moved the poster, so nothing pointed at xy_cut. Fixing the annotation made
7892
it winnable, it still failed, and the failure was then diagnosable in minutes.
7993

8094
When a poster fails on IDEAL reading order, check the ground truth against the
81-
PDF before assuming the corrector is at fault. Cheap test: does every GT
82-
affiliation string appear anywhere in `_raw.md`? For 42, three of five did not.
95+
PDF before assuming the corrector is at fault. `annotation_audit.py` now does
96+
this for the whole corpus.
97+
98+
Its verdict, so nobody re-runs the search: **42 was the only genuinely wrong
99+
annotation.** The audit's other flags are benign and should stay that way -
100+
posters print "VTT", "STScI", "Technion", "A. Perdomo" where deposit metadata
101+
spells them out, and expanding an abbreviation is faithful. The one worth
102+
attention is 8228476, whose `.json` and `_sub-json.json` disagree on author
103+
ORDER; the corrector anchors its banner search on the first creator, so that
104+
matters, but the poster is RTL and blocked on approach D anyway.
105+
106+
## Known open items (each measured, none guessed)
107+
108+
- **gasimova title, 1.000 -> 0.706.** The standing cost of `_flatten_top_band`,
109+
which puts the whole banner on common baselines so the byline's markers can
110+
reach their names. gasimova's logo sits in the top-right *between* the
111+
title's two lines, so flattening interleaves it and the title becomes two
112+
blocks. `LINE_MAX_GAP` keeps the logo's words out of the title's text, but
113+
cannot rejoin the halves. Buys the byline (+0.154), Background (+0.396) and
114+
correct affiliations for all seven authors. Fixing it properly means making
115+
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):
117+
classifying large top-zone text as title fragments cost 4519718 0.372 on its
118+
banner and AISec2025 0.401; scaling the block-gap threshold to local line
119+
height instead of the page median cost 10890106 its title (0.757 -> 0.495)
120+
and Acknowledgements (0.954 -> 0.549).
121+
- **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.
83128

84129
## TL;DR
85130

0 commit comments

Comments
 (0)