Add a 4th paste column and use it to assign tracking numbers reliably. The old
auto-matcher keyed on "the tracking number appears in the filename" — backwards
for unorganized files that don't yet carry their number. The pasted current name
is an authoritative join key the user already has.
- parsePastedRows: FIXED schema by position — tracking_number · rev (status) ·
title · current name. Dropped the variant guessing (status-column merge,
single-filename split); a header row is still skipped, trailing columns may be
omitted. Rows carry currentName.
- proposeMatches: PRIMARY signal is now the current name (nameScore: exact on the
normalized, extension-dropped key = conf 1; token-coverage 0.6–0.95; clean
substring 0.7), FALLBACK is the old tracking-in-filename heuristic for rows
without a current name. Each proposal carries `auto` — true only for an exact
1:1 match (unique conf-1 for both its file and its row), the only kind safe to
assign unprompted. Duplicate names → not auto.
- Paste dialog: 4th preview column; on Add, exact 1:1 matches are auto-assigned
and a summary toast points to Match names for the rest. Match dialog pre-checks
only the exact matches, shows confidence + name/tracking#, flags the review-only
ones. New read-only "Current name" column in the worklist table.
Tests: fixed-schema parse, current-name exact(auto)+token match, ambiguous
duplicate (not auto), and the tracking fallback still holds. Suite 342 green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>