Skip to content

meter-closeup: follow-ups from Codex review 5328852981 #103

Open

Description

@SamGu-NRX

These findings from Codex review 5328852981 on #16 were checked and are real. None changes a committed result or puts data at risk, so they wait until after #16 merges, per the manager's rule for this round.

  • Sweep inputs in the cache key (sweep.py). Rows are validated against the label and the code digest, not the image bytes or the clean-read box. Replacing a photo at the same size would reuse old rows. Add an input digest.
  • make q45 on a fresh data directory (locate.py). scan() opens ocr/scan.jsonl without creating ocr/; only make q1 creates it. Create the folder before writing.
  • Joining OCR lines needs a horizontal gap limit (match.py). Any two observations on one row are joined, however far apart. On the committed data, 7 agreed reads use a joined row; each joins to exactly the labelled number, so none is a false read. Limit the gap to a few line heights anyway.
  • Class labels by token, not substring (match.py). CL20 would match inside CL200. The one CL20 photo holds a genuine CL20 token, so the 20/22 result stands. Match a whole token.
  • Stale review verdicts (review.py). Saved verdicts are keyed by photo ID only, so a changed label keeps an old "keep". Store the reviewed number with each verdict and drop mismatches.
  • make q1 crash on a split read with no four-digit line (clean.py). tallest_digit_line can return None when the matched number is joined from short observations. The committed run does not hit it; guard it.

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions