WI-026 · Accepted Sprint Plan · sprint-1-spine-poc

Sprint 1: Spine POC - identity/status/QR foundation

in progress P0 high risk   Owner: Codex   0% · 0/4 tasks complete

Gates: B1 B2 B3 B4 B5 Requirements: REQ-SPINE-001 REQ-SPINE-002 REQ-SPINE-007 REQ-SPINE-003 REQ-SPINE-004 REQ-SPINE-005 REQ-SPINE-006 Updated: 2026-06-22
Evidence
closed-codex-2026-06-18-build-order.md; reuse troveInventoryStatus CSV/status primitives

Goals

Prove the identity/status/QR backbone (B1-B3) by reusing existing CSV/status primitives, before any heavier operational features.

Implementation — what to build

B1 — Item identity + status contract

  • Stable item identity = estate_sale_items.id; never expose mutable internal IDs publicly.
  • Status-event contract: prev_status, new_status, source(manual|csv_import|platform_sync|barcode|harness), final_price, ts.
  • Document the lifecycle: draft->reviewed->published->active_sale->pending->sold->picked_up (+ not_sold branches).

B2 — QR resolver (opaque)

  • Opaque public code -> resolver -> buyer-safe item/sale page (no private notes/pricing/PII).
  • Staff binding/checkout views are auth-gated.

B3 — CSV roundtrip

  • src/lib/troveInventoryStatus.ts: parseStatusCsv + suggestCsvMapping (lot_id/sku/title/status/price).
  • Export -> edit -> import: preview rows + conflicts -> apply writes status events.

B4 — Identity tables

  • qr_codes / item_identity_bindings: code, item_id, estate_sale_id, state, bound_at, released_at, binding_history.
  • Code lifecycle: unbound -> bind on first scan -> release -> rebind.

B5 — Status audit

  • inventory_status_events is the single audit trail feeding reconciliation (C4) + recovery (F).

Acceptance

  • An item can be identified, statused, QR-bound, resolved opaquely, audited, and CSV round-tripped.

Checklist

  • Document item identity + status-event contract (B1)
  • Opaque QR resolver + binding demo, no mutable internal IDs (B2)
  • CSV sold/status roundtrip via troveInventoryStatus.parseStatusCsv (B3)
  • Demo fixtures for QR-bound / unbound items

Gates & testing

  • B1 Item identity and status event contract is documented and accepted for the POC.
    CODE TEST
  • B2 QR resolver and item binding demo is proven without exposing mutable internal IDs.
    CODE TEST
  • B3 CSV sold/status roundtrip works using current primitives.
    CODE TEST
  • B4 QR/identity binding tables (qr_codes / item_identity_bindings) model opaque public codes, binding state, and binding history.
    CODE TEST
  • B5 Inventory status-event audit contract records transitions for reconciliation and recovery.
    CODE TEST

Requirements

Verify (done when)

an item keeps a stable identity across status updates, resolves via an opaque QR binding, and round-trips sold/status through CSV.

Cost triggers

No paid API / infra spend triggered by this item.

Status & editing

in progress   Sprint: Sprint 1 - Spine POC

Edit status / sprint on the ★ Live Board → — changes are logged live with who / when / why.

Human-in-the-loop

No human tasks linked.

Findings

None recorded yet.

Concerns

  • Reuse the LIVE CSV/status primitives rather than rebuild; confirm troveInventoryStatus covers the roundtrip.
  • Per D9 (human-ratified), Platform & Contracts (ingestion/data-model) is build-first — Sprint 1 depends on it.

Risks

  • Scope creep into operational-floor UI before the spine gates are proven.

Tech debt

None recorded yet.

Tools used

No tool calls recorded.

Update log

Update · 2026-06-18

Sprint 1 opened as the active build per D6 (POC-first).