Stockroom Phase 7 Photo Identification Plan

Part of the Simple Agility stack. Canonical copy: ~/source/stockroom/docs/superpowers/plans/2026-10-09-stockroom-phase-7-photo-identification.md (about 24,900 lines, 238 steps). This page summarises it for retrieval. Status: built and reviewed 2026-10-09; not yet deployed. Acceptance needs the operator's Anthropic and eBay keys (live smoke tests, five real items, the golden set on Haiku 5.5 and Opus 5.5). Design: StockroomPhotoIdentificationDesign. What the build left is in docs/superpowers/notes/2026-10-09-phase-7-review-carryover.md.

Goal

A model proposes what a non-book item is from its photos; the operator confirms, corrects or rejects it on the item page or in a Check identification queue; a keyword eBay search prices the confirmed item, and triage sends any route resting on that keyword quote to Needs a decision with the matching listings shown.

Tasks

  1. Data and identification groundwork — migration V027 (identification_proposal, the ebay_keyword quote source), the proposal entity and repository, GeneralFacts gains product type, era and details, the catalog record's source (ai_identification or manual), route clearing on identification.
  2. The ItemIdentifier port — proposal types, the item-identify-v1 prompt and schema (nullable fields as anyOf), strict parsing, stockroom.genai.identify.* settings (default Claude Haiku 5.5, high effort, 4 photos), label-first photo selection.
  3. Claude adapter — Haiku 5.5 rules (no sampling parameters, no server-side fallback), shared call helpers, the lease guard, a live smoke test.
  4. Ollama adapter — think: false, photos as images.
  5. Proposals and the job — start, confirm, correct, reject, supersede by hand; the identify_item job (model call outside any transaction, one re-ask on an unreadable answer); the drafter's lane becomes the GENAI lane; metrics and events.
  6. Keyword pricing — EbayBrowseClient shared by both eBay sources (now honouring Retry-After), EbayKeywordSource (brand plus model number, model-number title filter, accessory phrases dropped, median of the rest).
  7. The triage rule — while an item's eBay price rests on a keyword search, any routed outcome becomes Needs a decision.
  8. API and end to end — the identification endpoints, the Check identification queue count, the IT fakes and PhotoIdentificationIT.
  9. Frontend — the Identify card (polls while the model works), the non-book identify fields, the Check identification page, keyword matches on the Decide page, failure reasons in item lists.
  10. Hand-over — the golden set for identification (accuracy, tokens and estimated cost per model), docs, environment, CLAUDE.md, coverage, the operator acceptance list.

Notable rulings

How it was built

Ten tasks by subagent-driven development, each reviewed; a final whole-phase review (no Critical, one Important, fixed with the cheap Minors in one verified fix wave). The full backend build, the frontend gate (955 tests), PhotoIdentificationIT (12 scenarios) and conformance were green; a live check on the local stack confirmed the API with identification off.


Cluster Hub: Stockroom Hub (stockroom)