# First deterministic implementation slice

Nonfinal architecture review · 0.4.0. Generated from `assets/fixtures-architecture.js`; edit that source and rerun `node tools/generate-docs.js`.

Pantry & Pour is a fictional fixture source. It establishes deterministic behavior and reproducibility. Choosing an authorized real source for feasibility and cost measurements is a separate open decision.

## status

PROP

## summary

A fictional Pantry & Pour JSON fixture exercises deterministic parsing, packaging identity, tenant-private acceptance, explicit publication, and applied public projections. This slice proves software behavior, not source feasibility or measured cost.

## path

- Collector
- cw_pantrypour_feed on Workers + Cron submits the feed capture (like cap_pp_feed_1011)
- PROP

- Intake
- AW-02: artifact to R2, capture + receipt + job row, enqueue
- PROP

- Parse
- pa_shopfeed_json + np_coffee produce claims for lst_pp_ridge_500 and lst_pp_ridge_2x250
- PROP

- Identity
- R-ID rules map to itm_ridgeline_500g and itm_ridgeline_2x250g; the merge into 500 g stays blocked (rc_0004 behaviour)
- EST

- Accept
- AW-01 with outbox rows (listing_mapping.upserted, inventory_observation.recorded)
- EST

- Relay + consume
- AW-03 → product-ingestion queue → AW-04
- EST

- Serve
- Public item API serves only applied, explicitly published releases; administrative API can inspect accepted private state
- PROP

- Publish
- An authorized operator approves a public release; ingestion applies it before the public API can serve it.
- PROP

## out Of Scope

- Real-source feasibility and pricing measurements
- Live model or IdP integrations
- Production deployment

## acceptance

- Submitting the same capture twice returns one receipt (idempotency)
- Killing the process between commit and enqueue still processes the capture (sweeper)
- Decision, facts and outbox rows appear together or not at all (fault injection)
- Duplicate and reordered events leave the projection unchanged (SPK-02 cases)
- The 2 × 250 g listing never maps to the 500 g item
- A product rebuild from snapshot + tail equals the live projection (SPK-05)
- product_app cannot read or write the resolver schema (grant test)
- Every accepted fact links to decision, capture and locator
- Cross-tenant and same-source/different-instance receipt requests are denied
- Accepted-but-private records never leak through public serialization

## measurements

- Choose a REAL source before gathering feasibility, throughput, artifact-size or cost evidence; Pantry & Pour is fictional
- Round trips per capture (Q6)
- Transaction duration of AW-01 through Hyperdrive
- End-to-end ingestion lag (capture received → projection applied)
- Artifact size per capture
- Rebuild duration for the slice data
- Q1 p95 latency and rows touched

