Files

3.8 KiB
Raw Permalink Blame History

Store Icon Progress Overlay Evidence

Implemented

  • data/fixtures.json describes every one of the 17 committed JPG files exactly once, including clean/tooltip sequence state and reviewed merchant/item/slot expectations.
  • Live capture and the browser harness call the same src/frame-analyzer.js#analyzeFrame; no second OCR pipeline was added.
  • Calibration supports optional independent Sell and Buy 6 × 3 grid regions. The calibration canvas is displayed at 2× while stored coordinates remain source pixels.
  • A clean recognized shop frame records occupied cells as pending; a unique icon match above the absolute threshold and second-best margin changes only that cell to found.
  • Active-shop changes and three consecutive missing sale anchors clear grid/slot progress without deleting parsed historical items.
  • The selected source preview expands to at least 640 CSS px and draws pending slots yellow, found slots green, followed by transient diagnostics and a parsed/total counter.
  • Slot thumbnails and the grid-captured marker are runtime-only and are excluded from clipboard JSON and the market outbox payload.

Verification run (2026-08-11)

  • node --test: 30 passed, 0 failed.
  • vite build: passed. Existing OpenCV browser-externalization and large-chunk warnings remain.
  • git diff --check: passed; only the repository's expected LF-to-CRLF conversion warnings were printed.
  • Playwright screenshot lane: 17/17 cases executed through production OpenCV/Tesseract/parser, but the semantic assertion currently reports 42 mismatches. The lane is intentionally red and must not be represented as acceptance-complete.

Useful browser evidence despite the red aggregate:

  • Clean sell-gnumli detected exactly pending slots [0,1].
  • Clean buy-rakot detected exactly pending slots [0,1,2].
  • In the Gnumli sequence, the Blessed Spiritshot catalog crop uniquely matched slot 1, producing pending=[0], found=[1].
  • A targeted rerun wrote sell-gnumli-clean-overlay.jpg with both occupied cells yellow and sell-gnumli-blessed-spiritshot-overlay.jpg with slot 0 yellow / slot 1 green under the ignored Playwright result directory.
  • The contextual buy-kapayji tooltip-only case produced no reported mismatch, including its pending-to-found slot transition.
  • The remaining failures are dominated by low-resolution Lineage font OCR (for example DomestosDomastos, GnumliEnumli) and lost tooltip quantities/names. Raising the occupancy threshold from 0.15 to 0.18 removed the observed false-positive shotD slot 16 on the final full-corpus rerun.
  • The fixture failure output now contains fixture-report.json, one annotated overlay and per-stage crops for every failing case under ignored test-results/.
  • Desktop and 600 px narrow source-card states were rendered from the production CSS contract and visually inspected during implementation. The preview measured at least 640 px on desktop and collapsed to one column without horizontal overflow at 600 px, but those synthetic-layout screenshots were not retained as durable goal artifacts and do not prove the live renderer/canvas call path.

Unproven / blocked evidence

  • Fixture catalog PNGs are reviewed screenshot crops, not bytes returned by the real /api/l2/items iconUrl. They prove the matching path and ambiguity guard, but not live catalog artwork compatibility.
  • The local host returns no usable real catalog/calibration endpoints, so hosted calibration PUT→GET preservation and a real catalog icon score remain unverified.
  • Manual OS display capture was not exercised; the CSS layout screenshots do not prove the real getDisplayMedia source or the actual drawSourceOverlay canvas call path.

Acceptance remains partial until the 17-case semantic lane is green and one real API icon is paired with an occupied live slot.