Format-rule evidence: paper stock, print format, front datestamps #112

Open
opened 2026-07-28 06:06:04 +00:00 by claude-bot · 0 comments

Severity: MEDIUM

The problem

EvidenceSource.format_rule exists in the enum and nothing produces it. docs/circa-spec.md
§10.1 ranks photo-format windows as High/hard, and #19 lists format rules as an input to
propagation — but no issue builds the knowledge base or the path from AI photo_format_clues to a
format-rule evidence row.

Format windows are among the only genuinely hard bounds available for undated prints, and hard
bounds are what the propagation engine amplifies.

Also in scope: front-of-photo datestamps

#4 covers OCR of the back only. The orange film datestamps printed on the front of late-80s
and 90s prints are ubiquitous and highly reliable; the spec rates front stamps Medium-High. They
need an extraction path too.

Scope

  • A curated table (YAML or DB) mapping physical indicators to date windows: Kodak and Fuji paper
    backprints (documented by photo historians with date ranges), border styles, square versus 3R
    sizes, Polaroid frame types, front datestamp formats.
  • A matcher run inside the OCR (#4) and AI (#3) handlers.
  • Evidence rows with the matched rule recorded as provenance, using source_subtype.
  • Front datestamp detection and parsing.
  • Start with a dozen high-confidence rules; grow as reviewers notice recurring stamps.

Honest assessment

Value depends on this collection's mix. If most prints are borderless 90s 4×6s from one lab, a
handful of rules covers everything; if it is chaotic, curation drags. Build the mechanism thin and
let the collection tell you which rules to add. Some version is needed regardless, since #19
expects format rules as an input.

Done when

  • A rule table exists and is editable without code changes
  • Matches produce format_rule evidence with the rule recorded
  • Front datestamps are extracted and parsed
  • Rules feed constraint propagation as hard bounds

References

  • backend/app/models/models.py (EvidenceSource.format_rule, unused)
  • docs/circa-spec.md §10.1

Depends on: #3, #4. Feeds: #19.

## Severity: MEDIUM ## The problem `EvidenceSource.format_rule` exists in the enum and **nothing produces it**. `docs/circa-spec.md` §10.1 ranks photo-format windows as High/hard, and #19 lists format rules as an *input* to propagation — but no issue builds the knowledge base or the path from AI `photo_format_clues` to a format-rule evidence row. Format windows are among the only genuinely **hard** bounds available for undated prints, and hard bounds are what the propagation engine amplifies. ## Also in scope: front-of-photo datestamps #4 covers OCR of the *back* only. The orange film datestamps printed on the *front* of late-80s and 90s prints are ubiquitous and highly reliable; the spec rates front stamps Medium-High. They need an extraction path too. ## Scope - A curated table (YAML or DB) mapping physical indicators to date windows: Kodak and Fuji paper backprints (documented by photo historians with date ranges), border styles, square versus 3R sizes, Polaroid frame types, front datestamp formats. - A matcher run inside the OCR (#4) and AI (#3) handlers. - Evidence rows with the matched rule recorded as provenance, using `source_subtype`. - Front datestamp detection and parsing. - Start with a dozen high-confidence rules; grow as reviewers notice recurring stamps. ## Honest assessment Value depends on this collection's mix. If most prints are borderless 90s 4×6s from one lab, a handful of rules covers everything; if it is chaotic, curation drags. Build the mechanism thin and let the collection tell you which rules to add. Some version is needed regardless, since #19 expects format rules as an input. ## Done when - [ ] A rule table exists and is editable without code changes - [ ] Matches produce `format_rule` evidence with the rule recorded - [ ] Front datestamps are extracted and parsed - [ ] Rules feed constraint propagation as hard bounds ## References - `backend/app/models/models.py` (`EvidenceSource.format_rule`, unused) - `docs/circa-spec.md` §10.1 Depends on: #3, #4. Feeds: #19.
claude-bot added this to the v0.4.0 milestone 2026-07-28 06:06:04 +00:00
Sign in to join this conversation.
No description provided.