# View and configure product

**Flow key:** `product-detail-and-configuration`

## Outcome

A shopper understands the exact product, selects a valid configuration, sees truthful price and availability, and produces a purchasable selection.

## Actors

- Shopper
- Catalog
- Pricing
- Inventory/configuration service

## Preconditions and entry points

- A configurable synthetic product exists with valid, invalid, unavailable, and price-changing options.
- Locale and customer segment are fixed.

## Required test data

Use synthetic, isolated, resettable data. Never use real credentials, payment instruments, private customer records, or production notifications.

| Data | Canonical valid seed | Critical variations |
|---|---|---|
| Product | `CARBON-SKU-001` | hidden, discontinued, preorder, digital, subscription |
| Variants | size `M`, color `Black` | out-of-stock pair, disabled option, one option only |
| Quantity | `1` | 0, max, max+1, fractional, inventory boundary |
| Shopper context | anonymous retail `en-US/USD` | member pricing, other locale/currency, tax-exempt |
| Content | images, description, reviews | missing media, Unicode/emoji name, very long text |

## Canonical steps

Treat this as the ordinary successful path inferred from common product behavior. Adapt it to observed labels, business rules, APIs, and implementation evidence; do not invent a requirement.

| Step | User or system action | Expected evidence |
|---:|---|---|
| 1 | Open the canonical product URL. | Identity, media, description, seller, policy, base price, and availability are coherent. |
| 2 | Select each required option. | Invalid combinations are prevented or explained; focus and URL state remain usable. |
| 3 | Choose quantity. | Limits reflect policy and current inventory without silent coercion. |
| 4 | Observe price, delivery, inventory, and subscription consequences. | All derived values update for the exact selection. |
| 5 | Add or continue with the configured item. | The line item preserves product, variant, quantity, price context, and source. |
| 6 | Reload/share/back-forward the configuration. | Supported state restores exactly or resets visibly. |

## Alternate paths

- Simple product
- Variant matrix
- Bundle/configurator
- Preorder/backorder
- Digital or subscription product

## Failure and recovery paths

- Variant becomes unavailable
- Price changes while configuring
- Media/content fails
- Invalid deep-linked combination
- Rapid option changes return out-of-order results

## Completion oracle

- The stated outcome is true in visible UI and authoritative persisted state.
- Exactly one intended business result and no unintended side effect occurred.
- Identity, tenant, authorization, money/data, lifecycle, notifications, integrations, analytics, and audit agree where applicable.
- Refresh, retry, back/forward, and a second authorized read do not reveal a contradictory result.
- Any partial, delayed, canceled, failed, or unknown outcome is labeled truthfully and has a safe recovery path.

## Evidence to capture

- Entry context, actor, tenant, role, feature flags, locale, time zone, and initial identifiers/state.
- Step-level screenshots or DOM state plus request/response, correlation, job, event, and stable business IDs where available.
- Before/after authoritative records, versions, totals, permissions, lifecycle states, and downstream side effects.
- Notifications, audit events, integration deliveries, retries, deduplication, latency, and recovery evidence.
- Untested branches, unsafe-to-run cases, product decisions, and evidence tier.

## Product decisions to resolve

- Exact eligibility, required data, authorization, and validation rules.
- Which steps are synchronous, asynchronous, optional, skippable, reversible, or irreversible.
- Idempotency, concurrency, timeout, retry, cancellation, and compensation semantics.
- Retention, privacy, notification, audit, performance, accessibility, and localization commitments.

## Related CARBON items

- [product service plan price](../../items/records/product-service-plan-price.md)
- [count and quantity](../../items/data/count-and-quantity.md)
- [currency price totals](../../items/data/currency-price-totals.md)
- [select combobox autocomplete multi select](../../items/controls/select-combobox-autocomplete-multi-select.md)

[Back to Commerce and billing flows](index.md)
