Test plan: POC acceptance test cases for all milestone issues #19

Closed
opened 2026-09-03 02:36:57 +00:00 by Ty · 1 comment
Owner

Summary

Each POC issue defines acceptance criteria that need test cases to verify once implementation exists. This issue tracks the test case definitions across all POC issues so we can verify the milestone is complete.

Test cases needed

Issue #2 — Portable multi-turn context

  1. Full resend default: Call 2 request body includes full Call 1 context, no previous_response_id
  2. Confirmed/inferred labels: Call 2 template labels match value provenance
  3. Stateful opt-in: test-inference returns stateful, Call 2 uses previous_response_id
  4. Stateless fallback: test-inference returns stateless, Call 2 uses full resend
  5. Fail closed: test-inference returns fail, Call 2 returns 422
  6. Context cleanup: thread ID deleted after publish/abandon/fail
  7. Context isolation: concurrent slabs do not contaminate each other

Issue #3 — Duplicate SKU wording

  1. OPENAPI 409 error envelope uses "exists in WooCommerce, any status" wording
  2. PUT response includes actions: ["edit_sku", "open_existing"] for duplicate SKU
  3. UI never shows raw 409 code to the user

Issue #4 — Browser compatibility

  1. (Deferred to Phase 6 / V1. No POC test case required.)

Issue #5 — Application Passwords

  1. GET settings never returns application password or consumer key
  2. PUT settings stores AES-GCM encrypted credentials only
  3. test-woo uses HTTP Basic Auth with username + application password
  4. Browser never calls Woo REST directly
  5. All consumer-key references removed from docs

Issue #6 — POC instrumentation

  1. GET /api/health returns non-200 when DB or volume unreachable
  2. Every request carries a request ID in structured JSON logs
  3. Inference calls log latency, model, and confidence score
  4. sync_log and inference_log tables are written and queryable

Issue #8 — Call 1 prefill

  1. Call 1 results with confidence >= 0.7 pre-populate review fields
  2. Call 1 pre-populated fields are mutable and overridable
  3. Call 1 with confidence < 0.7 leaves fields empty
  4. Manual entry is authoritative over Call 1 results

Issue #9 — Confidence gating

  1. Below-threshold Call 1 leaves mandatory fields empty
  2. Review screen blocks continue until full ready set is filled
  3. Inline nudges show missing mandatory fields as user works
  4. Duplicate confidence rules consolidated into single canonical owner

Issue #10 — UX design

  1. (Non-blocking for POC. No test case until UX artifact exists.)

Issue #11 — WOO_BASE_URL

  1. Settings GET returns WOO_BASE_URL as read-only
  2. Settings PUT ignores or rejects WOO_BASE_URL
  3. FastAPI rejects http:// WOO_BASE_URL at startup
  4. No SQLite settings row for store URL

Issue #12 — Synced-species-only

  1. Species picker offers only Woo-synced species
  2. Call 1 taxonomy constrained to synced species only
  3. No hardcoded, invented, or fallback species lists
  4. New Woo species selectable only after next sync

Issue #14 — Taxonomy cache manufactured anchor

  1. Anchor bumps on real stored-subset change
  2. No-op sync does not bump anchor
  3. Client re-pulls only when anchor advances
  4. test-woo always resyncs taxonomy
  5. Publish respects 1-hour threshold with reconciliation
  6. Schema-driven scope: adding a cache column automatically includes it

Issue #15 — Inline mask knobs

  1. Four knobs live on capture screen, not in Settings
  2. Changing a knob re-runs background removal live
  3. Mask overlay shows on source photo
  4. POC background removal is client-side only
  5. U2Net fallback documented as deferred, not removed

Issue #17 — Shared validation module

  1. Validation module has version hash
  2. Client caches module, hash checked only at submit
  3. Hash mismatch returns fresh module, client re-validates
  4. SKU charset [A-Z0-9-]{3,24} enforced
  5. Title/description within Woo maxLength
  6. Both UI and Call 2 consume the same module

Issue #18 — 409/422 field recovery

  1. 409 duplicate SKU surfaces inline on SKU field
  2. 422 stale-value error surfaces inline on affected field
  3. No raw HTTP codes or stack traces reach the user
  4. Draft retained locally across error-and-retry cycle

Acceptance criteria

  • All test cases above are defined and reviewed
  • Test cases are mapped to the issues they verify
  • Test cases are documented in a single location (this issue or a dedicated test plan file)
## Summary Each POC issue defines acceptance criteria that need test cases to verify once implementation exists. This issue tracks the test case definitions across all POC issues so we can verify the milestone is complete. ## Test cases needed ### Issue #2 — Portable multi-turn context 1. Full resend default: Call 2 request body includes full Call 1 context, no `previous_response_id` 2. Confirmed/inferred labels: Call 2 template labels match value provenance 3. Stateful opt-in: test-inference returns `stateful`, Call 2 uses `previous_response_id` 4. Stateless fallback: test-inference returns `stateless`, Call 2 uses full resend 5. Fail closed: test-inference returns `fail`, Call 2 returns 422 6. Context cleanup: thread ID deleted after publish/abandon/fail 7. Context isolation: concurrent slabs do not contaminate each other ### Issue #3 — Duplicate SKU wording 8. OPENAPI 409 error envelope uses "exists in WooCommerce, any status" wording 9. PUT response includes `actions: ["edit_sku", "open_existing"]` for duplicate SKU 10. UI never shows raw 409 code to the user ### Issue #4 — Browser compatibility 11. (Deferred to Phase 6 / V1. No POC test case required.) ### Issue #5 — Application Passwords 12. GET settings never returns application password or consumer key 13. PUT settings stores AES-GCM encrypted credentials only 14. test-woo uses HTTP Basic Auth with username + application password 15. Browser never calls Woo REST directly 16. All consumer-key references removed from docs ### Issue #6 — POC instrumentation 17. GET /api/health returns non-200 when DB or volume unreachable 18. Every request carries a request ID in structured JSON logs 19. Inference calls log latency, model, and confidence score 20. sync_log and inference_log tables are written and queryable ### Issue #8 — Call 1 prefill 21. Call 1 results with confidence >= 0.7 pre-populate review fields 22. Call 1 pre-populated fields are mutable and overridable 23. Call 1 with confidence < 0.7 leaves fields empty 24. Manual entry is authoritative over Call 1 results ### Issue #9 — Confidence gating 25. Below-threshold Call 1 leaves mandatory fields empty 26. Review screen blocks continue until full ready set is filled 27. Inline nudges show missing mandatory fields as user works 28. Duplicate confidence rules consolidated into single canonical owner ### Issue #10 — UX design 29. (Non-blocking for POC. No test case until UX artifact exists.) ### Issue #11 — WOO_BASE_URL 30. Settings GET returns WOO_BASE_URL as read-only 31. Settings PUT ignores or rejects WOO_BASE_URL 32. FastAPI rejects http:// WOO_BASE_URL at startup 33. No SQLite settings row for store URL ### Issue #12 — Synced-species-only 34. Species picker offers only Woo-synced species 35. Call 1 taxonomy constrained to synced species only 36. No hardcoded, invented, or fallback species lists 37. New Woo species selectable only after next sync ### Issue #14 — Taxonomy cache manufactured anchor 38. Anchor bumps on real stored-subset change 39. No-op sync does not bump anchor 40. Client re-pulls only when anchor advances 41. test-woo always resyncs taxonomy 42. Publish respects 1-hour threshold with reconciliation 43. Schema-driven scope: adding a cache column automatically includes it ### Issue #15 — Inline mask knobs 44. Four knobs live on capture screen, not in Settings 45. Changing a knob re-runs background removal live 46. Mask overlay shows on source photo 47. POC background removal is client-side only 48. U2Net fallback documented as deferred, not removed ### Issue #17 — Shared validation module 49. Validation module has version hash 50. Client caches module, hash checked only at submit 51. Hash mismatch returns fresh module, client re-validates 52. SKU charset `[A-Z0-9-]{3,24}` enforced 53. Title/description within Woo maxLength 54. Both UI and Call 2 consume the same module ### Issue #18 — 409/422 field recovery 55. 409 duplicate SKU surfaces inline on SKU field 56. 422 stale-value error surfaces inline on affected field 57. No raw HTTP codes or stack traces reach the user 58. Draft retained locally across error-and-retry cycle ## Acceptance criteria - [ ] All test cases above are defined and reviewed - [ ] Test cases are mapped to the issues they verify - [ ] Test cases are documented in a single location (this issue or a dedicated test plan file)
Owner

Closed: test cases defined, POC verified through M3.

Closed: test cases defined, POC verified through M3.
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Ty_Tech/SlabUploader#19