phase=architecture_lane_billing family=billing status=complete type=architecture_audit_and_freeze production_baseline=66a3b921dc24c73cc3de2c0ea1ae5b0bf44b0e2e orders_freeze_baseline=5469e489b6573bf39463fcc77304c1681d9e60eb historical_catalog_ungate=be8fdc5474c283d6fc7868ac0508ccf7a08c3d59 depends_on=orders_freeze,11H4,catalog_04 do_not_reopen=11D8,11E,11F,11G,11H,phase_10_kernel,core_workspace_billing,payment-checkout-create_write_path new_phase_number_invented=no # --------------------------------------------------------------------------- # 1. Surfaces classified # --------------------------------------------------------------------------- surface.app_block.billing.invoice=canonical surface.feature_pack.billing-management=canonical surface.entity.invoice_record=canonical surface.primitive.data.entity=canonical surface.starter.record.table=canonical surface.core.invoices=Core-only surface.core.stripe_customer=Core-only surface.core.stripe_subscription=Core-only surface.pack.saas-membership=different_capability surface.alias.payments.subscription=compatibility surface.pack.payment-checkout=different_capability surface.alias.payments.checkout=compatibility surface.connector.stripe.create_invoice=provider_specific surface.entity.app_subscription=different_capability surface.forms.quote_request=different_capability surface.accounting.ledger=not_admitted surface.tax.engine=not_admitted surface.public_invoice_payment=not_admitted # --------------------------------------------------------------------------- # 2. Critical audit answers # --------------------------------------------------------------------------- canonical_billing_subject=staff-managed invoice record core_workspace_billing_is_application_billing=no reuse_core_invoices_table=no reuse_stripe_invoice_connector=no reuse_saas-membership=no reuse_payment-checkout=no reuse_order_record=no pricing_engine_required=no tax_engine_required=no accounting_engine_required=no subscription_engine_required=no checkout_required=no generated_app_billing_depends_on_core_stripe=no paid_means_stripe_charge=no paid_is_invoice_status=yes invoice_may_exist_without_order=yes orders_required_to_install_billing=no billing_required_to_install_orders=no # --------------------------------------------------------------------------- # 3. Minimal ontology # --------------------------------------------------------------------------- canonical_product_ontology=invoice_record fields: reference, customer_name, customer_email, notes, amount, currency, due_date, status(draft|issued|paid|void) ownership=staff_managed rls_enabled=no owner_managed=no workflow=no events=generic data.entity / record 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/billing, stripe client, checkout session, Core invoices.read, journal entries # --------------------------------------------------------------------------- # 4. Boundaries # --------------------------------------------------------------------------- provider_boundary=P2HS invoice_record != Stripe Invoice != Core invoices table != PaymentIntent orders_boundary=order_record answers what was ordered; invoice_record answers billed amount and billing state catalog_boundary=Catalog + Billing held; no catalog_item to invoice inference checkout_boundary=payments.checkout remains pack-only subscription_boundary=payments.subscription / saas-membership remains pack-only Core-adjacent membership accounting_boundary=not admitted # --------------------------------------------------------------------------- # 5. Composition # --------------------------------------------------------------------------- billing_crm_composition=candidate_independent_records billing_case_composition=candidate_independent_records billing_documents_composition=candidate_independent_records billing_files_composition=candidate_independent_records billing_orders_composition=pass billing_catalog_composition=held billing_booking_composition=candidate_no_automatic_invoice billing_core_workspace=prohibited billing_checkout=not_admitted billing_inventory=not_implied # --------------------------------------------------------------------------- # 6. Freeze checklist # --------------------------------------------------------------------------- billing_admitted=yes canonical_capability=billing.invoice canonical_app_block=billing.invoice canonical_feature_pack=billing-management canonical_entity=invoice_record canonical_store=Cloud records via data.entity canonical_execution=generated adapter.records + staff /api/records billing_without_stripe=yes billing_without_checkout=yes billing_without_subscriptions=yes billing_without_accounting=yes billing_without_orders=yes orders_composition_proven=yes catalog_composition_proven=held generated_app_composition_proven=yes installation_proven=yes runtime_crud_proven=yes core_workspace_billing_boundary=pass core_stripe_dependency=none 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 checkout_write_path_changed=no architecture_exceptions_required=0 private_backend_substitutes=0 open_p0=0 open_p1=0 family_frozen=yes ready_for_fast_lane_composition=yes on_disk_billing_recipes=none next_architecture_family=inventory