phase=11G4 architecture_lane=Catalog family=catalog status=complete type=architecture_audit_and_freeze depends_on=11G1,11G2,11G4,booking_03 do_not_reopen=11D8,11E,11F,phase_10_kernel new_phase_number_invented=no # --------------------------------------------------------------------------- # 1. Surfaces classified # --------------------------------------------------------------------------- surface.app_block.catalog.product=canonical surface.feature_pack.product-catalog=canonical surface.entity.catalog_item=canonical surface.primitive.data.entity=canonical surface.starter.record.table=canonical surface.starter.record.detail=canonical surface.starter.record.create=canonical surface.starter.record.edit=canonical surface.starter.catalog.grid=not_present surface.pack.payment-checkout.product=provider_specific surface.pack.payment-checkout.price=provider_specific surface.pack.payment-checkout.order=provider_specific surface.alias.payments.checkout=compatibility surface.core.billing.stripe_product_id=provider_specific surface.cloud_credits.stripe_product_id=provider_specific surface.shopify=provider_specific surface.orders.order.app_block=not_present surface.billing.invoice.app_block=not_present surface.inventory.stock.app_block=not_present surface.membership.portal.app_block=not_present surface.specialized_catalog_cloud_store=not_present surface.catalog.item.created_event=not_present surface.vertical.salon-services.pack=not_present # --------------------------------------------------------------------------- # 2. Critical audit answers (repository-grounded) # --------------------------------------------------------------------------- canonical_catalog_subject=staff-managed offering record (product or service via terminology) canonical_product_service_record=yes catalog_item catalog_represented_through_data.entity=yes specialized_catalog_store=no existing_feature_pack=product-catalog existing_app_block=catalog.product catalog_04_expects=catalog.product + frozen CRM/forms/tasks; not checkout contractor_quote_crm_expects=forms.quote_request + CRM + tasks; not catalog.product; not checkout catalog_recipe_requirements_compatible=yes pricing_belongs_on_catalog=display metadata only (price_amount, currency); not a pricing engine variants_required_for_first_admission=no categories_required_for_first_admission=no type_field_required_for_first_admission=no inventory_belongs_outside_catalog=yes stripe_product_is_provider_state=yes catalog_can_exist_without_payment_provider=yes catalog_can_exist_without_orders=yes catalog_can_compose_with_booking_without_commerce=yes # --------------------------------------------------------------------------- # 3. Minimal ontology (do not expand) # --------------------------------------------------------------------------- canonical_product_ontology=catalog_item fields: name, description, sku, price_amount, currency, status(active|inactive) ownership=staff_managed rls_enabled=no owner_managed=no workflow=no events=generic data.entity / record events; no catalog.item.* domain events starter_contracts=record.table,record.detail,record.create,record.edit,state.empty generated_bff=staff /api/records via adapter.records forbidden_generated=private /api/products, stripe client, custom catalog db, vertical product table # --------------------------------------------------------------------------- # 4. Boundaries # --------------------------------------------------------------------------- provider_boundary=P2HS catalog_item != Stripe Product != payment-checkout.product booking_boundary=Booking owns cloud_booking_resources/reservations; Catalog does not store reservations; Booking recipes do not select catalog.product orders_boundary=payment-checkout.order is Stripe checkout order state, not an admitted Orders capability billing_boundary=Core workspace Stripe subscriptions / cloud credits; not application catalog inventory_boundary=not admitted; service_catalog unsupported_assumptions include inventory automation crm_boundary=course/service recipes compose crm.customer by reference/terminology only; no crm_product entity # --------------------------------------------------------------------------- # 5. Freeze checklist # --------------------------------------------------------------------------- catalog_admitted=yes canonical_app_block=catalog.product canonical_feature_pack=product-catalog canonical_entity=catalog_item canonical_store=Cloud records via data.entity canonical_execution=generated adapter.records + staff record BFF catalog_without_stripe=yes catalog_without_orders=yes catalog_without_billing=yes catalog_without_inventory=yes booking_composition_proven=yes crm_composition_proven=yes generated_app_composition_proven=yes installation_proven=yes runtime_crud_proven=yes new_kernel_primitive=no new_general_cloud_store=no new_acl_model=no new_ownership_model=no new_workflow_engine=no phase_10_kernel_changed=no open_p0=0 open_p1=0 family_frozen=yes ready_for_fast_lane_composition=yes quote_recipe_activated=contractor_quote_crm quote_activation_reason=resolves through admitted forms.quote_request + CRM + tasks; quoting engine and online payments remain unsupported gated_catalog_plus_orders_recipes=none_present next_architecture_family=orders production_proven=yes