---
title: Catalog Design Examination — 23 October 2026
examined_at: '2026-10-23'
examiner: codex
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
branch: agent/commerce-catalog-desi-exam-1
evidence:
  - 'rhythm-v2-docs:specs/CONVENTIONS.md#9. Design Artifacts'
  - 'rhythm-v2-docs:briefs/design/commerce-catalog.brief.md'
  - 'services-commerce:modules/{configuration,catalog,merchandise,pricing,promotions,recommendations}/**'
  - 'react-console:components/commerce/**'
  - 'react-console:lib/commerce/**'
verification_field_changes:
  - id: SVC-COM-CAT-catalog
    field: .consistency.2.kind
    before: transactional
    after: eventual
  - id: ADR-COM-CAT-017
    field: .design_intent
    before: confirmed
    after: open
  - id: ADR-COM-CAT-017
    field: .origin
    before: 'COMM-M1 D2 (Commerce knows nothing about events), D6 (price-period rules), walkthrough ruling R5'
    after: >-
      Andrew ruling R5, 2026-10-22 (services-commerce:docs/debt/pricing-schedules-owned-by-event.md);
      FND-COM-CAT-002
  - id: DOM-COM-CAT-001
    field: .invariants.0.enforced_at
    before:
      - api
      - service
      - database
    after:
      - api
      - service
  - id: DOM-COM-CAT-003
    field: .relationships.1.cross_service
    before: true
    after: false
  - id: DOM-COM-CAT-004
    field: .relationships.0.cross_service
    before: true
    after: false
  - id: DOM-COM-CAT-004
    field: .invariants.4.source
    before: >-
      services-commerce:modules/pricing/tests/integration/db/member-pricing-tables.table.integration.spec.js#records
      the first sale once, never cleared or moved, after which the period keeps its name and is never deleted,
      nor its schedule
    after: >-
      services-commerce:modules/pricing/tests/integration/db/member-pricing-tables.table.integration.spec.js#lets
      a sold-in current period end a week later, the next period starting where it ends
  - id: DOM-COM-CAT-006
    field: .invariants.5.enforced_at
    before:
      - service
      - database
    after:
      - service
  - id: SCR-COM-CAT-001
    field: .patterns
    before:
      - Standard layout
      - design-system data table with search and filters
      - PageHeader with actions
      - EmptyState
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - Table
      - ListToolbar
      - EmptyState
      - PermissionHint
  - id: SCR-COM-CAT-002
    field: .actions.1.confirm
    before: true
    after: false
  - id: SCR-COM-CAT-002
    field: .actions.2.operation_id
    before: createOrderingProfile
    after: deleteOrderingProfile
  - id: SCR-COM-CAT-002
    field: .actions.2.permission
    before: commerce.ordering-profiles.create
    after: commerce.ordering-profiles.delete
  - id: SCR-COM-CAT-002
    field: .actions.2.confirm
    before: false
    after: true
  - id: SCR-COM-CAT-002
    field: .actions.3.operation_id
    before: deleteOrderingProfile
    after: replaceOrderingProfileDefaults
  - id: SCR-COM-CAT-002
    field: .actions.3.permission
    before: commerce.ordering-profiles.delete
    after: commerce.ordering-profiles.update
  - id: SCR-COM-CAT-002
    field: .patterns
    before:
      - Standard layout
      - PageHeader with actions
      - design-system detail sections (label and value)
      - confirmation dialog for destructive actions
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - SectionPanel
      - MakeDefaultDialog
      - DeletePolicyDialog
  - id: SCR-COM-CAT-003
    field: .patterns
    before:
      - Standard layout
      - design-system form sections with labels and descriptions
      - inline field validation
      - save and cancel actions
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - SectionPanel
      - EditorActionBar
      - Field
      - FieldSelect
      - ProductPicker
      - RedirectToView
  - id: SCR-COM-CAT-004
    field: .patterns
    before:
      - Standard layout
      - design-system form sections with labels and descriptions
      - inline field validation
      - save and cancel actions
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - SectionPanel
      - IdSelect
      - Table
      - EditorActionBar
  - id: SCR-COM-CAT-005
    field: .actions.1.confirm
    before: true
    after: false
  - id: SCR-COM-CAT-005
    field: .patterns
    before:
      - Standard layout
      - design-system data table with search and filters
      - PageHeader with actions
      - EmptyState
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - Table
      - ListToolbar
      - DropdownMenu
      - DeleteStoreDialog
      - PermissionHint
  - id: SCR-COM-CAT-006
    field: .actions.1.confirm
    before: true
    after: false
  - id: SCR-COM-CAT-006
    field: .patterns
    before:
      - Standard layout
      - PageHeader with actions
      - design-system detail sections (label and value)
      - confirmation dialog for destructive actions
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - SectionPanel
      - ViewRows
  - id: SCR-COM-CAT-007
    field: .patterns
    before:
      - Standard layout
      - design-system form sections with labels and descriptions
      - inline field validation
      - save and cancel actions
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - SectionPanel
      - OptionMultiPicker
      - IdSelect
      - EditorActionBar
      - RedirectToView
  - id: SCR-COM-CAT-008
    field: .patterns
    before:
      - Standard layout
      - configuration manager resource list and form
      - confirmation dialog for destructive actions
      - RequirePermission gate
    after:
      - configuration manager
      - productCategoriesResource
      - CategoryProducts
  - id: SCR-COM-CAT-009
    field: .permission
    before: commerce.product-listings.read
    after: commerce.product-listings.read and accounting.products.read and commerce.merchandise.read
  - id: SCR-COM-CAT-009
    field: .actions.0.permission
    before: commerce.merchandise.create
    after: commerce.merchandise.create and accounting.products.create
  - id: SCR-COM-CAT-009
    field: .patterns
    before:
      - Standard layout
      - design-system data table with search and filters
      - PageHeader with actions
      - EmptyState
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - Table
      - FilterSelect
      - EmptyState
      - RequireMerchandise
  - id: SCR-COM-CAT-010
    field: .permission
    before: commerce.product-listings.read
    after: commerce.product-listings.read and accounting.products.read and commerce.merchandise.read
  - id: SCR-COM-CAT-010
    field: .actions.0.permission
    before: commerce.merchandise.update
    after: commerce.merchandise.update and accounting.products.update
  - id: SCR-COM-CAT-010
    field: .actions.1.operation_id
    before: Accounting updateProduct (status inactive)
    after: updateProduct
  - id: SCR-COM-CAT-010
    field: .actions.1.permission
    before: Accounting product update
    after: accounting.products.update
  - id: SCR-COM-CAT-010
    field: .patterns
    before:
      - Standard layout
      - PageHeader with actions
      - design-system detail sections (label and value)
      - confirmation dialog for destructive actions
      - RequirePermission gate
    after:
      - PageLayout
      - PageHeader
      - Panel
      - Fact
      - ConfirmDialog
      - RequireMerchandise
  - id: SCR-COM-CAT-011
    field: .permission
    before: >-
      commerce.merchandise.create (new) or commerce.merchandise.update (edit); listing create or update for
      the storefront section
    after: >-
      Listing, Accounting product and merchandise reads; Accounting product create and merchandise create
      (new), or both update grants (edit); listing create or update separately gates storefront fields
  - id: SCR-COM-CAT-011
    field: .actions.0.permission
    before: commerce.merchandise.create
    after: commerce.merchandise.create and accounting.products.create
  - id: SCR-COM-CAT-011
    field: .actions.1.permission
    before: commerce.merchandise.update
    after: commerce.merchandise.update and accounting.products.update
  - id: SCR-COM-CAT-011
    field: .patterns
    before:
      - Standard layout
      - design-system form sections with labels and descriptions
      - inline field validation
      - save and cancel actions
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - SectionPanel
      - EditorActionBar
      - RequireMerchandise
      - EditGate
  - id: SCR-COM-CAT-012
    field: .patterns
    before:
      - Standard layout
      - design-system data table with search and filters
      - PageHeader with actions
      - EmptyState
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - Table
      - ListToolbar
      - AudienceRankDialog
      - AudienceWhereUsedDialog
      - DeleteAudienceDialog
  - id: SCR-COM-CAT-013
    field: .patterns
    before:
      - Standard layout
      - PageHeader with actions
      - design-system detail sections (label and value)
      - confirmation dialog for destructive actions
      - RequirePermission gate
    after:
      - Full layout
      - PageHeader
      - SectionPanel
      - WhereUsedList
      - DeleteAudienceDialog
  - id: SCR-COM-CAT-014
    field: .patterns
    before:
      - Standard layout
      - design-system form sections with labels and descriptions
      - inline field validation
      - save and cancel actions
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - SectionPanel
      - AudienceRuleFields
      - EditorActionBar
      - RedirectToView
  - id: SCR-COM-CAT-015
    field: .permission
    before: commerce.product-purchasing-settings.read and Accounting product read
    after: >-
      accounting.products.read (screen entry); Commerce reads may independently require their service
      permissions
  - id: SCR-COM-CAT-015
    field: .actions.0.operation_id
    before: Accounting updateProduct (price grid)
    after: updateProduct
  - id: SCR-COM-CAT-015
    field: .actions.0.permission
    before: Accounting product update
    after: accounting.products.update
  - id: SCR-COM-CAT-015
    field: .patterns
    before:
      - Standard layout
      - price grid with audience columns and currency tabs
      - bulk fill dialog
      - warning panel that does not block saving
      - Preview As bar
      - RequirePermission gate
    after:
      - Full layout
      - PageHeader
      - PricingGridTable
      - PurchasingSettingsPanel
      - PreviewAsBar
      - BulkFillDialog
      - PricingWarnings
      - RequirePermission
  - id: SCR-COM-CAT-016
    field: .actions.1.operation_id
    before: duplicatePromotion
  - id: SCR-COM-CAT-016
    field: .actions.1.permission
    before: commerce.promotions.manage
  - id: SCR-COM-CAT-016
    field: .actions.1.confirm
    before: false
  - id: SCR-COM-CAT-016
    field: .patterns
    before:
      - Standard layout
      - design-system data table with search and filters
      - PageHeader with actions
      - EmptyState
      - RequirePermission gate
    after:
      - Standard layout
      - PageHeader
      - TableCard
      - SearchBox
      - SegmentedControl
      - PagerBar
      - PromotionLifecycleActions
  - id: SCR-COM-CAT-017
    field: .patterns
    before:
      - Standard layout
      - design-system form sections with labels and descriptions
      - inline field validation
      - save and cancel actions
      - RequirePermission gate
      - area criteria form rendered from the area's declared criteria
    after:
      - Standard layout
      - PageHeader
      - PromotionEditor
      - PromotionChangeGate
  - id: SCR-COM-CAT-018
    field: .actions.1.confirm
    before: true
    after: false
  - id: SCR-COM-CAT-018
    field: .actions.2.operation_id
    before: endPromotion
    after: archivePromotion
  - id: SCR-COM-CAT-018
    field: .actions.3.operation_id
    before: archivePromotion
    after: createPromotionCodeIssuance
  - id: SCR-COM-CAT-018
    field: .actions.3.confirm
    before: true
    after: false
  - id: SCR-COM-CAT-018
    field: .actions.4.operation_id
    before: createPromotionCodeIssuance
    after: exportPromotionCodeIssuanceCodes
  - id: SCR-COM-CAT-018
    field: .actions.4.permission
    before: commerce.promotions.manage
    after: commerce.promotions.read
  - id: SCR-COM-CAT-018
    field: .actions.5.operation_id
    before: exportPromotionCodeIssuanceCodes
    after: releasePromotionRedemption
  - id: SCR-COM-CAT-018
    field: .actions.5.permission
    before: commerce.promotions.read
    after: commerce.promotions.override
  - id: SCR-COM-CAT-018
    field: .actions.5.confirm
    before: false
    after: true
  - id: SCR-COM-CAT-018
    field: .actions.6.operation_id
    before: releasePromotionRedemption
    after: previewPromotions
  - id: SCR-COM-CAT-018
    field: .actions.6.permission
    before: commerce.promotions.override
    after: commerce.promotions.read
  - id: SCR-COM-CAT-018
    field: .actions.6.confirm
    before: true
    after: false
  - id: SCR-COM-CAT-018
    field: .actions.7.operation_id
    before: previewPromotions
    after: resumePromotion
  - id: SCR-COM-CAT-018
    field: .actions.7.permission
    before: commerce.promotions.read
    after: commerce.promotions.activate
  - id: SCR-COM-CAT-018
    field: .patterns
    before:
      - Standard layout
      - PageHeader with lifecycle actions
      - 'tabs (Overview, Codes, Issuances, Redemptions, Performance)'
      - Try It test panel
      - generate codes dialog
      - confirmation dialog with reason for release
      - RequirePermission gate
    after:
      - PageLayout
      - PageHeader
      - Tabs
      - PromotionLifecycleActions
      - TestPanel
      - CodesTab
      - IssuancesTab
      - RedemptionsTab
      - PerformanceTab
  - id: SCR-COM-CAT-019
    field: .actions.1.operation_id
    before: duplicatePromotion
  - id: SCR-COM-CAT-019
    field: .actions.1.permission
    before: commerce.promotions.manage
  - id: SCR-COM-CAT-019
    field: .actions.1.confirm
    before: true
  - id: SCR-COM-CAT-019
    field: .patterns
    before:
      - Standard layout
      - design-system form sections with labels and descriptions
      - inline field validation
      - save and cancel actions
      - RequirePermission gate
      - area criteria form rendered from the area's declared criteria
    after:
      - Standard layout
      - PageHeader
      - PromotionPartsEditor
      - AreaCriteriaForm
      - EligibilityCard
      - LockedNote
      - EditorActionBar
      - PromotionChangeGate
  - id: SCR-COM-CAT-020
    field: .patterns
    before:
      - Standard layout
      - design-system form sections with labels and descriptions
      - inline field validation
      - save and cancel actions
      - RequirePermission gate
      - contact selector
      - organization selector
    after:
      - Standard layout
      - PageHeader
      - RecordPicker
      - EligibilityCard
      - EditorActionBar
  - id: SCR-COM-CAT-021
    field: .actions.1.confirm
    before: true
    after: false
  - id: SCR-COM-CAT-021
    field: .actions.3.confirm
    before: true
    after: false
  - id: SCR-COM-CAT-021
    field: .patterns
    before:
      - Standard layout
      - PageHeader with actions
      - design-system detail sections (label and value)
      - confirmation dialog for destructive actions
      - RequirePermission gate
    after:
      - Full layout
      - PageHeader
      - Tabs
      - TableCard
      - UsesPanel
      - RestrictedContactsPanel
      - RestrictedOrganizationsPanel
  - id: SCR-COM-CAT-022
    field: .patterns
    before:
      - Standard layout
      - design-system data table with search and filters
      - PageHeader with actions
      - EmptyState
      - RequirePermission gate
    after:
      - Full layout
      - PageHeader
      - TableCard
      - SearchPicker
      - PagerBar
  - id: SCR-COM-CAT-023
    field: .patterns
    before:
      - configuration manager resource list and form
    after:
      - configuration manager
      - couponResources
  - id: STATE-COM-CAT-002
    field: .transitions.0.provenance
    before: test
    after: observed
  - id: STATE-COM-CAT-002
    field: .transitions.0.source
    before: >-
      services-commerce:modules/catalog/tests/integration/services/storefront/storefront-listings.integration.spec.js#opens
      an unlisted product by its page, and is answered 404 for a draft and for a product another store does
      not sell
    after: 'services-commerce:modules/configuration/services/persistence/stores.ts:updateStore'
  - id: WF-COM-CAT-013
    field: .hops.3.seam
    before: queue
    after: sync
---

# Catalog Design Examination

## Examination and Verdict

The examined design is a faithful, source-bound account of the implemented module, with retained planning conflicts and unproved guarantees explicitly identified. Its weakest areas are fixture-backed pricing and membership behavior, partial console saves and simultaneous recommendation acceptance. Andrew should settle the schedule migration and tax authority, confirm recommendation scope and fixture policy, and choose the required atomicity and concurrency guarantees before implementation preparation starts.

The review covered the approved planning layer, design brief, all draft design artifacts, declared route operations, physical tables, state transitions, asynchronous workers and built console surfaces. Source paths and named anchors were opened against the pinned repositories; relevant implementation branches and existing tests were read to distinguish enforced behavior from recommendations. This was a static design examination: the documentation checks and checker tests do not establish live service behavior or deployment configuration.

## Counts and Coverage

| Kind | Draft examined | Final artifacts | Coverage |
|---|---:|---:|---|
| Domain Objects | 6 | 6 | All 35 physical module tables map to the six concept objects; 63 invariant rows reviewed. |
| State Models | 12 | 12 | Configuration flags, catalog publication and assets, pricing periods and handovers, campaign and code lifecycles, issuance, redemption, recommendation rules and responses. |
| Workflows | 20 | 22 | Every recorded hop reviewed; audience ordering and campaign-with-first-code saves added. |
| Service Contracts | 6 | 6 | All 114 declared HTTP operations and 25 internal functions represented. |
| Screen Contracts | 23 | 23 | All declared component and route bindings reviewed, including the unlisted coupon configuration resource. |
| Decision Records | 21 | 21 | Origins, alternatives and consequences reviewed against recorded product decisions. |
| Inference Operations | 0 | 0 | No runtime model invocation or named model task found in the examined module or console code. |

All 51 Service, Workflow and Screen Contracts carry empty inference lists. No inference artifact is needed; the existing charter omission remains a finding because the charter cannot be edited in this job. Source-anchor auditing checked 351 structured source and anchor values with no missing file, symbol or named test title. Matching a title alone was not treated as proof of its surrounding claim.

| Service facet | HTTP operations with a contract | Internal functions | Physical tables with an object | Object coverage |
|---|---:|---:|---:|---|
| Configuration | 19 / 19 | 3 | 5 / 5 | Checkout Policy and Store |
| Catalog | 17 / 17 | 2 | 6 / 6 | Catalog Product |
| Merchandise | 11 / 11 | 7 | 4 / 4 | Catalog Product |
| Pricing | 17 / 17 | 5 | 5 / 5 | Price |
| Promotions | 29 / 29 | 7 | 9 / 9 | Promotion |
| Recommendations | 21 / 21 | 1 | 6 / 6 | Recommendation |

The object numbering remains the concept numbering. Registration review found no custom-field capability for these objects, and route review found no Submissions publication. Accounting product definitions remain externally owned, while Commerce owns the extensions and presentation records.

The screen inventory covers policies and defaults, stores, categories, merchandise, audiences, product pricing, campaigns and codes. Removed schedule administration, missing recommendation administration and missing tax administration are recorded gaps rather than invented screens. A component contract describes the built entry and controls; it does not imply that every underlying request succeeds with only its entry permission.

Asset cleanup has a scheduled producer, a queue consumer and a dead-letter path covered by the cleanup workflow. Promotion issuance uses direct asynchronous Lambda invocation and worker transactions, covered by the issuance workflow; it has no issuance queue. No deployed Step Functions state machine was found in these six module directories. The twelve models describe stored or derived states and service transition logic, rather than implying twelve deployed orchestration machines.

## Changes by Artifact

Every existing artifact received an OpenAI rewrite in an individual commit after verification. Decision headings also received final wording that describes the verified choice. The rewrite covers its prose sections and human-readable structured claims, including statements, meanings, intents, actions, failures, inconsistent outcomes, purposes, alternatives and consequences. Stable identities, source pins and evidence values were retained except for the verified changes recorded in the report metadata; comparison found no unchanged value in the specifically requested prose fields.

| Artifact | Examination result and final change |
|---|---|
| `ADR-COM-CAT-001` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-002` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-003` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-004` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. Recommendation rules also use PATCH, so the complete-payload exception list was incomplete. |
| `ADR-COM-CAT-005` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-006` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-007` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-008` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-009` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-010` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. Audience combination explicitly stays editable under the cited clarification. |
| `ADR-COM-CAT-011` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. Narrow dependency refusal to the implemented failure policies. |
| `ADR-COM-CAT-012` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-013` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-014` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-015` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-016` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. Separate visitor-facing audience display from actual eligibility. |
| `ADR-COM-CAT-017` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. The later product ruling governs ownership; the ownerless implementation is an unresolved inconsistency, not confirmed intent. |
| `ADR-COM-CAT-018` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-019` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-020` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. No additional factual correction was required. |
| `ADR-COM-CAT-021` | Checked recorded origin and alternatives; rewrote the decision, context, tradeoffs and consequences. Describe conditional runtime adapters without asserting a deployed configuration. |
| `DOM-COM-CAT-001` | Verified attributes, ownership, relationships and enforcement; rewrote identity, notes, invariant claims and explanatory prose. Currency membership is a service query; no database constraint checks the Accounting unit currencies. |
| `DOM-COM-CAT-002` | Verified attributes, ownership, relationships and enforcement; rewrote identity, notes, invariant claims and explanatory prose. No additional factual correction was required. |
| `DOM-COM-CAT-003` | Verified attributes, ownership, relationships and enforcement; rewrote identity, notes, invariant claims and explanatory prose. Catalog and pricing are modules of the same macroservice. |
| `DOM-COM-CAT-004` | Verified attributes, ownership, relationships and enforcement; rewrote identity, notes, invariant claims and explanatory prose. Correct the used-current-period exception and the macroservice boundary. |
| `DOM-COM-CAT-005` | Verified attributes, ownership, relationships and enforcement; rewrote identity, notes, invariant claims and explanatory prose. No additional factual correction was required. |
| `DOM-COM-CAT-006` | Verified attributes, ownership, relationships and enforcement; rewrote identity, notes, invariant claims and explanatory prose. Limit repeat-acceptance proof to completed requests; remove database enforcement of checkout-effect uniqueness. |
| `SCR-COM-CAT-001` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-002` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-003` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-004` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-005` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-006` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-007` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-008` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-009` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-010` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-011` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-012` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-013` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-014` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-015` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-016` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-017` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-018` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-019` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-020` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Identify the live code form, which retains supported hyphens, separately from the older helper. |
| `SCR-COM-CAT-021` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-022` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `SCR-COM-CAT-023` | Verified the built route, component, fields, controls and validation; replaced generic patterns with the actual components and rewrote screen prose. Verify screen components and use concrete built patterns; correct action and permission details where needed. |
| `STATE-COM-CAT-001` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. No additional factual correction was required. |
| `STATE-COM-CAT-002` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. The cited storefront test did not prove store deactivation; cite the write path. |
| `STATE-COM-CAT-003` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. Draft-to-draft replacement is allowed; duplicate creation is not a state transition. |
| `STATE-COM-CAT-004` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. No additional factual correction was required. |
| `STATE-COM-CAT-005` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. No additional factual correction was required. |
| `STATE-COM-CAT-006` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. No additional factual correction was required. |
| `STATE-COM-CAT-007` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. No additional factual correction was required. |
| `STATE-COM-CAT-008` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. No additional factual correction was required. |
| `STATE-COM-CAT-009` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. No additional factual correction was required. |
| `STATE-COM-CAT-010` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. No additional factual correction was required. |
| `STATE-COM-CAT-011` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. No additional factual correction was required. |
| `STATE-COM-CAT-012` | Verified states, guards, effects and refusal behavior; rewrote state meanings, transition explanations and concurrency limits. Distinguish interaction uniqueness from action concurrency. |
| `SVC-COM-CAT-catalog` | Matched declarations and capability links; rewrote operation intents, boundaries, integration descriptions and consistency claims. Describe storefront assembly as separate reads rather than one transaction. |
| `SVC-COM-CAT-configuration` | Matched declarations and capability links; rewrote operation intents, boundaries, integration descriptions and consistency claims. Limit merchant matching to the checks that actually run. |
| `SVC-COM-CAT-merchandise` | Matched declarations and capability links; rewrote operation intents, boundaries, integration descriptions and consistency claims. No additional factual correction was required. |
| `SVC-COM-CAT-pricing` | Matched declarations and capability links; rewrote operation intents, boundaries, integration descriptions and consistency claims. Preserve the current-period end adjustment and distinguish the uncalled handover function from deployed jobs. |
| `SVC-COM-CAT-promotions` | Matched declarations and capability links; rewrote operation intents, boundaries, integration descriptions and consistency claims. No additional factual correction was required. |
| `SVC-COM-CAT-recommendations` | Matched declarations and capability links; rewrote operation intents, boundaries, integration descriptions and consistency claims. Narrow the concurrency guarantee to the evidence. |
| `WF-COM-CAT-001` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-002` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-003` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-004` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. Describe capped cleanup parallelism without claiming isolation from interactive work. |
| `WF-COM-CAT-005` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-006` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-007` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-008` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-009` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-010` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-011` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-012` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-013` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. The directly invoked worker runs chunk transactions without a queue. |
| `WF-COM-CAT-014` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. Distinguish skipping an unavailable automatic selling area from refusing an unavailable code claim. |
| `WF-COM-CAT-015` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-016` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-017` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-018` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. Do not infer once-only action execution from once-only interaction history; the failure is returned to the caller. |
| `WF-COM-CAT-019` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. No additional factual correction was required. |
| `WF-COM-CAT-020` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. Replace the mistaken duplication branch with the first-code withdrawal workflow. |
| `WF-COM-CAT-021` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. Add the two-phase audience-rank save and partial-failure outcomes. |
| `WF-COM-CAT-022` | Verified every hop and failure boundary; rewrote actions, recovery outcomes, idempotency and concurrency explanations. Add campaign and first-code saving, withdrawal compensation and incomplete outcomes. |

Commerce Responsibilities now states the actual six-facet boundary and its partial-save and repeat-acceptance limits, with the existing ownership and operation inventories retained. The product-area registry marks this module design examined, without granting approval. The id ledger allocates the two added workflows and six new findings without renumbering prior artifacts.

## Material Corrections

Currency compatibility is checked by the service, without a database constraint against Accounting currencies. Catalog and pricing are facets of the same Commerce service. A used current period may change its end while preserving the adjoining boundary; its start and name remain protected. Draft-to-draft listing replacement is valid and is no longer listed as a refused transition.

Recommendation acceptance checks earlier history before performing its action; a conflict-safe interaction insert does not prove once-only checkout effects under concurrent requests. Campaign audience combination remains editable after first use. Recommendation rule updates are a patch exception to complete-record replacement. The schedule decision now cites the later ownership ruling and has open design intent rather than treating ownerless storage as confirmed product direction.

Screen corrections remove nonexistent duplicate and end controls, add the actual policy default and campaign resume actions, correct immediate actions that have no confirmation prompt, and name the exact Accounting product operation for deactivation and price-grid saving. Merchandise entry and editing require combined grants, while product-pricing entry is gated by Accounting read access and can still encounter separate Commerce permission failures. Full-width and default-layout screens now name the patterns actually used.

The built campaign controls offer Archive in states the service refuses. Code-save failure on a new campaign attempts rename followed by archive; that compensation can itself fail, and edits are not rolled back when their code save fails. Audience reordering uses temporary ranks and separate replacements, so failure can leave parked or partially assigned ranks.

## Findings and Decisions Still Open

Six findings were added: concurrent acceptance proof, ownerless schedule intent, inaccurate screen patterns and controls, pricing permission boundaries, omitted composite saves, and incompatible campaign archive controls. The corresponding design claims are corrected; the runtime and product disagreements remain open. Existing findings and open questions were retained, including missing live browser proof, fixture-backed pricing, unapproved recommendation scope, tax authority, code normalization and cancellation-release defaults, and configuration protection policy.

No approved planning artifact was edited. Existing product rulings were cited rather than re-decided, and observed implementation was not promoted to product approval. The schedule ownership ruling is already settled; its migration and preparation surface remain unresolved.

## Validation

The required install and conformance command completed successfully with zero corpus errors. The repository test command passed all four checker tests. Checks ran before artifact commits and passed again before the report commit; source repositories were read without modification, and no service integration or deployment test was claimed.
