Skip to content

Synthetic typed-scan vision fixtures + integration harness #48

Description

@gavinbee

Goal

Add a committed, deterministic vision-path integration fixture for the typed digital-export workflow (a real input shape per the plan's Context: "a digital form is filled in and exported to PDF"), plus the pytest -m integration harness that scores vision output against its golden — and iterate on fixes/changes to the extraction pipeline until those tests pass.

This is a new tier alongside the three in 0001 §Test data acquisition. It complements — does not replace — Tier 2 (real handwritten scans + REMS goldens, local) and Tier 3 (pseudonymized realistic scans, deferred). It is explicitly easier than handwriting; its job is baseline-quality stabilization and regression-catching for straightforward cases, not handwriting robustness.

Scope

  • docs/design/0002-synthetic-vision-fixtures.md — amends "Test data acquisition" to add the typed-scan tier and records why a clean typed scan is a legitimate production shape rather than the cautioned-against easy fake.
  • Generator: render the Faker-seeded form to a flattened (no-widget) image-only PDF, fill the currently-blank fields (times_worked_position, mentor, level, successful) with a deterministic mix incl. signed-off / crossed-out / blank rows, and emit an exact golden JSON.
  • Harness: pytest -m integration scores vision output on the documented (official, position, successful) tuple contract (modulo position-name normalization), skipped unless Ollama is present; self-manages the daemon via OllamaDaemon; --vision-model / --pull-models CLI options.
  • Iterate until green. The accuracy bar for this easy typed input is 100% (humans clear even the hardest handwritten forms at ~99%, so tolerance here is essentially zero). The harness is expected to fail on first run — that is its job. This issue stays open and tracks the prompt/pipeline/model fixes needed to make it pass honestly. Do not lower the floor to go green. If a fix turns out to need a major design change, spin that out into its own issue + design doc.

Acceptance

pytest -m integration passes at ACCURACY_FLOOR = 1.0 on the committed synthetic scan, with the daemon auto-managed and no manual setup beyond an installed Ollama + pulled vision model.

Relationship to #16

Re-scopes #16's harness onto a committable synthetic golden instead of the rems-sync-dependent real-scan path. #16 stays open for the Tier-2 real-scan path.

Activity

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions