English source · 32 min
Source responsibilities and verification map
Invoice checkout: src/payments/instructions.rs owns the typed recipient
projection and customer/compound merchant rights. PaymentInstructions.tsx and
its adjacent stylesheet render it in the existing native completion checkout.
Provider source creation, recipient persistence and polling stay in the private
Rust payment service. Contract, migration and acceptance.
Provider test modules: Mail fixture reuse, connected app scenarios and the native Rust regression command. The suite registry keeps its existing entries. Shared test servers live separately from test cases; the archived comparison implementation remains confined to tests.
Merchant catalogue setup: CSV upload, URL extraction, described demo products, private image jobs and native staged review.
Saved merchant planning: Native tasks, private checkpoints, worker restart,
current authority and explicit continuation. agent_runs/
extends the existing planner/approval owner; it is not another agent backend.
Agent delegation: Planning-only keys, conservative central model allocations, personal live-shop stop and actual worker fences. The existing identity/task/outbox owners remain authoritative; cognition reuses the pure kernel allowance guard.
Browser authority: Merchant/customer HttpOnly transport, exact origins, cross-tab fences and Studio CSP.
Personal workspace and standard-shop editor: Illustrated workflow, shared models, rights, history, forms and publication.
Guided shop setup: Six review steps, inline native company editing and local acceptance.
frontend/src/admin/setup/ owns the guide and return path, with its scoped
PRODUCT.md brief retaining the existing Studio design. Its provider checks saved
setup changes across tabs while preserving unrelated fresh workspace fields.
SetupBasics.tsx
reuses the existing settings draft, fields and save bar. Optional progress remains
in src/studio/personal/model.rs with workspace revisions, RLS and history.
src/agent_runs/context.rs admits bounded current setup context to the existing
assistant. Domain tools and publication retain their native owners.
Studio setup and access: Channel wizard fixes, reusable roles, current grants, central B2B configuration and guided company creation.
13 October integration audit: shared current rights, configuration versions, selective publication, native POS defaults, B2B history/staging and inherited visitor controls are mapped in the connected feature guide. The testing guide separates current source checks from dated hosted acceptance and real-provider prerequisites.
Visitor behavior intelligence: consent-bound guest/customer observations, native orders and the current semantic product graph now meet in one channel report. Studio charts and private timelines use the same HTTP/MCP permissions. Data flow, native owners, setup and verification.
12 October workbench update: editable app patterns, explicit AI/agent proposal review, native control generation, approved catalogue translation jobs and scoped personalization. How to use it, ownership and verification boundaries.
main.rs contains process setup and the module registry. It delegates migrations
and dependencies to bootstrap.rs and transports to routes.rs. HTTP, MCP and
UCP invoke shared operations, rather than independently reimplementing checkout.
Small modules use a crate-level shared type/import facade; SQL helpers remain
internal. commerce/ and auth/ group their types, validation and operations.
structure.py prevents Rust modules from exceeding 320 lines and keeps main.rs
under 120. Every Rust source starts with a responsibility comment.
The five domain crates (kernel, commerce, apps, cognition, runtime) have
explicit dependency boundaries checked against real Cargo metadata. New helper
packages, external dependencies and build scripts require review; renaming a
dependency does not evade its capability check. Kernel policies and handwritten
Lean claims now share seven domain owners. Module audit and formal guarantees.
The table lists executable behavioral coverage, not percentage line coverage. Pure rules use Rust tests; API/domain/storage modules are exercised against real PostgreSQL, Qdrant and (where enabled) the real local model. Tests include rejected inputs and state effects. A module's presence does not count as a test.
The maintained full inventory, including all newly added Rust files, frontend feature folders, independent services and SDKs, is module-inventory.md. Coverage percentages and explicit remaining gaps are in testing.md. The tables below describe selected behavioral suites and must not be read as 100% coverage.
The public website's shared styles live in nine documented modules under
site/styles/, each at most 320 lines. The ordered
site/style.css entry is bundled once by scripts/build_site.py; marketing and
handbook keep their existing asset URLs and identical CSS. scripts/check_site.py
compares both published assets to that bundle. Extraction evidence.
Marketplace app and generic intake
extensions/apps/marketplaces/ owns provider protocols, mapping, inbox/review, worker,
Studio vocabulary/UI, container packaging and local provider tests. Core only adds the
provider-neutral apps/core_exchange.rs, commerce/external_order_input.rs and
commerce/external_orders.rs host contracts, with its bounded
commerce/external_order_labels.sql name lookup. Existing product/channel configuration,
app consent/jobs/records, currency, stock, customer projection, documents and event
owners remain authoritative. Detailed flow and actual limits.
The registered marketplaces suite exercises native paid order/replay/restart,
isolation, document and stock state effects; frontend tests exercise controls.
Native POS
src/pos/{config,gateway,input,workspace_gateway,customer,discount,schema,settlement}.rs are native channel adapters. Catalog/cart/currencies/promotions, order_checkout.rs, checkout_review.rs, inventory, payments, documents and outbox remain the commerce owners. marketing/coupons.rs retains the existing coupon handler with private-cart admission. customer.rs delegates to shared accounts with current PII admission; discount.rs delegates to native allocation/tax and transactional outbox. operations/receipt_text.rs exposes the same immutable invoice projection to the system printer. frontend/src/admin/pos owns the focus/scanner, customer, discount, printer and read-only advice workspace; app code stays in its own package. Real pos.py/payment_providers.py and UI regressions cover state effects. Architecture, proof scope and limits.
Production foundations
The illustrated architecture guide connects ingress,
tenant scope, stock/money/payment transactions, outbox projections, AI and deployment.
New boundaries live in money.rs, tenant_scope.rs, performance/{row_security,
admission,invalidation}.rs, commerce/inventory.rs, payments/state.rs,
platform/quotas.rs and migrations/schema.rs. Unit tests, the strict
production_foundations suite, payment fixtures and original-Shopware money boundary
comparison cover their effects; asynchronous SQL and provider code remain unproved.
International configuration and language boundaries
commerce/geography.rs owns catalogue/overlay/address admission; tax_rules.rs
owns guarded destination selection and tax_context.rs its private Rule Builder
facts. settings_defaults.rs, method_text.rs, content_text.rs and
product_languages.rs own compatibility defaults, translations and language
registration. international_capabilities.rs shares native HTTP operations with MCP.
translations/{routes,worker,fields,apply}.rs own durable translation lifecycle,
text-only inference and locked revision-checked apply. The real PostgreSQL suites
international_commerce.py and translations.py plus catalog tests cover these
paths. frontend/src/shared/geography owns controls reused in Studio and checkout.
See international commerce for the exact contract.
Rust behavioral test map
| File | Responsibility | Coverage |
|---|---|---|
src/agent.rs |
Persistent grounded conversations and tenant-scoped semantic knowledge HTTP adapters. | intelligence.py + providers.py + live studio.py + users.py + restart.py |
src/auth/credentials.rs |
Argon2 password operations run off the asynchronous request executor. | users.py + Rust credential/role tests; restart.py + extensions.py for replicated policy |
src/auth/invitations.rs |
Single-use, expiring invitations. Acceptance verifies an existing account password. | users.py + Rust credential/role tests; restart.py + extensions.py for replicated policy |
src/auth/members.rs |
Workspace member visibility and immediately effective role/revocation changes. | users.py + Rust credential/role tests; restart.py + extensions.py for replicated policy |
src/auth/middleware.rs |
Resolve sessions from PostgreSQL on every request: role changes/revocation work across replicas. | users.py + Rust credential/role tests; restart.py + extensions.py for replicated policy |
src/auth/mod.rs |
Personal merchant accounts, tenant memberships, scoped sessions and role enforcement. | users.py + Rust credential/role tests; restart.py + extensions.py for replicated policy |
src/auth/registration.rs |
Create an isolated merchant workspace from synthetic template data. | users.py + Rust credential/role tests; restart.py + extensions.py for replicated policy |
src/auth/sessions.rs |
Login/logout and personal workspace discovery. Only hashed opaque tokens persist. | users.py + Rust credential/role tests; restart.py + extensions.py for replicated policy |
src/bin/context.rs |
Bounded ports of original language-chain, rule priority and quantity selection. | context_differential.py + Rust selectors + studio.py |
src/bin/delivery.rs |
Batch proportional-tax fixture transport for the original-PHP comparator. | original-PHP differential scripts |
src/bin/price.rs |
Batch price fixture transport for the original-PHP differential comparator. | original-PHP differential scripts |
src/bootstrap.rs |
Startup, additive migrations, persisted extensions and outbox worker. | integration.py + users.py + extensions.py + restart.py |
src/capabilities.rs |
Shared HTTP/MCP capability dispatch and tool authorization. | protocols.py + integration.py + commerce.py + users.py |
src/cart_model.rs |
Persisted cart, item and customer-context types. | integration.py + commerce.py + protocols.py + users.py + restart.py |
src/cart_mutation.rs |
Optimistic cart mutations and quantity normalization. | integration.py + commerce.py + protocols.py + users.py + restart.py |
src/cart_price.rs |
Authoritative quantity pricing and localized checkout quote assembly. | integration.py + commerce.py + protocols.py + users.py + restart.py |
src/cart_routes.rs |
Store API cart and order route adapters. | integration.py + commerce.py + protocols.py + users.py + restart.py |
src/cart_storage.rs |
Cart creation, loading and input validation. | integration.py + commerce.py + protocols.py + users.py + restart.py |
src/catalog_model.rs |
Tenant product model and database hydration. | server startup/build + integration.py + structure.py |
src/catalog_routes.rs |
Health and localized catalogue HTTP routes. | server startup/build + integration.py + structure.py |
src/commerce/catalog.rs |
SKU loading with parent translation fallback. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/configuration.rs |
Tenant checkout configuration loading. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/context_routes.rs |
Public method discovery and revision-checked checkout context changes. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/delivery.rs |
Shipping costs, proportional taxes and calendar delivery windows. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/detail.rs |
Product family, context prices, gallery, properties and review aggregates. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/fulfillment.rs |
Revision-checked payment and delivery state transitions. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/mod.rs |
Native catalogue and checkout domains; pricing ports remain in the library. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/review_moderation.rs |
Merchant authorization and review publication. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/reviews.rs |
Customer review submission with server-derived purchase verification. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/selection.rs |
Recover a quote after configuration changes without losing items or silently committing new choices. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/settings_mutation.rs |
Optimistic settings persistence and audit event. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/settings_routes.rs |
Tenant configuration and operational read model. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/settings_validation.rs |
Configuration validation and required availability invariants. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/tax.rs |
Destination tax-class resolution and net-preserving price conversion. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/commerce/types.rs |
Checkout selection and configuration data contracts. | commerce.py + Rust settings/recovery tests + delivery_differential.py |
src/concierge.rs |
Read-only storefront shopping advisor. | providers.py + live intelligence.py/studio.py + protocols.py |
src/context.rs |
Bounded behavioral ports of Shopware 6.7.14.2 context and product-cart selection. | context_differential.py + Rust selectors + studio.py |
src/customer.rs |
Customer credential verification and context rotation. | server startup/build + integration.py + structure.py |
src/experience.rs |
Persisted storefront layout policy and observed synthetic rewards. | integration.py + protocols.py + studio.py + restart.py |
src/extensions.rs |
Merchant catalogue and Wasm extension activation/state. | integration.py + users.py + extensions.py + restart.py |
src/foundation.rs |
Application dependencies, error responses and request context helpers. | protocols.py + integration.py + commerce.py + users.py |
crates/cognition/src/inference.rs |
Provider adapters. Credentials stay on the server; domain validation is separate. | Rust parsing/schema tests + providers.py + live intelligence.py/studio.py |
src/knowledge.rs |
Transactional PostgreSQL relations and private Qdrant retrieval with authoritative tenant/model/digest hydration. | intelligence.py + studio.py + users.py + restart.py |
src/lib.rs |
Reusable pricing, context, sandbox, graph and inference modules. | server startup/build + integration.py + structure.py |
src/localization.rs |
Shop locale resolution, translated catalog hydration and non-mutating merchant quote. | studio.py + context_differential.py + commerce.py |
src/main.rs |
Process lifetime only. See docs/source-map.md for domain responsibilities. | server startup/build + integration.py + structure.py |
src/mcp.rs |
Typed MCP schemas and JSON-RPC transport. | protocols.py + integration.py + commerce.py + users.py |
src/order_checkout.rs |
Atomic checkout, stock locks, extension policy and idempotency. | integration.py + commerce.py + protocols.py + users.py + restart.py |
src/order_routes.rs |
Merchant order read adapter. | integration.py + commerce.py + protocols.py + users.py + restart.py |
src/outbox.rs |
Durable outbox and audit projection worker. | integration.py + protocols.py + studio.py + restart.py |
src/planner.rs, planner/{admission,repair}.rs |
Grounded model planning, shared native admission and one checkpointed correction of invalid output. | providers.py + live intelligence.py/studio.py + protocols.py |
crates/commerce/src/pricing.rs |
Behavioral port of Shopware 6.7.14.2 quantity calculators. | differential.py + delivery_differential.py + Rust numeric regressions + commerce.py |
src/proposal_apply.rs |
Transactional application of approved, revision-bound proposals. | providers.py + live intelligence.py/studio.py + protocols.py |
src/proposal_model.rs |
Typed proposals and validation before persistence or execution. | providers.py + live intelligence.py/studio.py + protocols.py |
src/proposal_routes.rs |
HTTP proposal creation, approval and task listing. | providers.py + live intelligence.py/studio.py + protocols.py |
src/routes.rs |
HTTP transport registry; domain behavior lives in dedicated modules. | protocols.py + integration.py + commerce.py + users.py |
crates/apps/src/sandbox.rs |
Pure Wasmtime guest execution with bounded resources and no host imports. | Rust guest boundary tests + protocols.py + extensions.py + restart.py |
src/seed.rs |
Idempotent synthetic template catalogue initialization. | integration.py + users.py + extensions.py + restart.py |
src/studio.rs |
Verified merchant overview facts consumed by the chat and activity views. | studio.py + users.py |
src/ucp/ |
Checkout transport, native projection, profile/version selection and vendor B2B negotiation adapter. | protocols.py + b2b_ucp.py + b2b.py + tenant_isolation.py |
New v0.5 modules
| File | Responsibility | Coverage |
|---|---|---|
src/apps/cart_contributions.rs |
Generic app-to-cart contribution contract, revision binding and order read model. | apps.py + services.py + providers.py + app_inference.py |
src/apps/data.rs |
Shared app records: typed writes, optimistic revisions, bounded reads and local RLS context. | apps.py + services.py + providers.py + app_inference.py |
src/apps/events.rs |
Durable at-least-once app events, retry leases and stable event idempotency keys. | apps.py + services.py + providers.py + app_inference.py |
src/apps/gateway.rs |
One permission-aware action gateway serves HTTP, UI and MCP; service egress is operator configured. | apps.py + services.py + providers.py + app_inference.py |
src/apps/manifest.rs |
Strict package contract; identifiers and limits are checked before logical model registration. | apps.py + services.py + providers.py + app_inference.py |
src/apps/mod.rs |
Versioned app packages: managed data, UI slots, agent tools and isolated service calls. | apps.py + services.py + providers.py + app_inference.py |
src/apps/planning.rs, apps/planning_contracts.rs |
Current authorized field contracts and registered managed app actions join the same preview/approve transaction as core changes. | apps.py + services.py + providers.py + app_inference.py |
src/apps/registry.rs |
Atomic consent-bound installation, explicit tenant schema migrations and immutable version digests. | apps.py + services.py + providers.py + app_inference.py |
src/apps/routes.rs |
Tenant-scoped package lifecycle, generated data endpoints and a shared action adapter. | apps.py + services.py + providers.py + app_inference.py |
src/cognition/context.rs |
Bounded localized catalog retrieval before inference; full catalog size never expands the prompt. | apps.py + live intelligence.py/studio.py + restart.py |
src/cognition/mod.rs |
Evidence-based shop memory: event receipts, observed pairs, reviewable hypotheses and bounded context. | apps.py + live intelligence.py/studio.py + restart.py |
src/cognition/projection.rs |
Exactly-once local observation projection; associations retain order/event evidence and simulation labels. | apps.py + live intelligence.py/studio.py + restart.py |
src/cognition/recommendations.rs |
Merchant-approved associations are consumed by the public shop without exposing order counts or identities. | apps.py + live intelligence.py/studio.py + restart.py |
src/cognition/routes.rs |
Merchant memory endpoints and revision-bound experiment/dismissal decisions. | apps.py + live intelligence.py/studio.py + restart.py |
src/payments/mod.rs |
Provider-independent payment ledger and durable workers; the first adapter is explicitly PayPal Sandbox. | payments.py (local wire fixture) + Rust integer-money tests |
src/payments/operations.rs |
Durable idempotent payment commands, customer context binding and serial refund admission. | payments.py (local wire fixture) + Rust integer-money tests |
extensions/apps/paypal/src/compatibility.rs |
Native PayPal Orders v2 sandbox wire adapter; credentials never enter prompts or browser responses. | payments.py (local wire fixture) + Rust integer-money tests |
src/payments/provider.rs |
Payment provider identity, tenant account configuration and immutable wire context. | payments.py (local wire fixture) + Rust integer-money tests |
src/payments/routes.rs |
Customer payment status/capture and merchant refund operations share the durable command API. | payments.py (local wire fixture) + Rust integer-money tests |
src/payments/storage.rs |
Transactional provider receipts and order state updates; external responses cannot invent amounts or tenants. | payments.py (local wire fixture) + Rust integer-money tests |
extensions/apps/paypal/src/webhooks.rs |
PayPal verifies webhook signatures before inbox insertion; provider reconciliation confirms monetary state. | payments.py (local wire fixture) + Rust integer-money tests |
src/payments/worker.rs |
Leased payment jobs; network runs after claim commit, fenced receipts prevent duplicate local effects. | payments.py (local wire fixture) + Rust integer-money tests |
src/agent_runs.rs |
Existing-task continuation, private checkpoints, lease-fenced completion and original approval. | durable_agents.py + providers.py |
src/agent_runs/flow_proposals.rs, src/marketing/flow_access.rs |
Scheduled proposals join native ready tasks with current Flow authority, original scope ceiling and live-shop stop; personal approval supplies execution authority. | testing/agent_flow_work.py through registered durable_agents |
src/workers.rs |
Independently deployable worker roles; leases and durable receipts coordinate replicas. | services.py + payments.py |
src/http_limits.rs |
Bounded streaming responses for extension services and payment providers. | services.py + payments.py + build |
Frontend
| File/group | Responsibility | Verification |
|---|---|---|
application/ApplicationRouter.tsx |
Application routing and lazy entry recovery | Production typecheck/build; browser navigation |
Storefront.tsx |
Catalog, adaptive display and cart orchestration | Browser collection→detail→cart flow; underlying HTTP suites |
ProductPage.tsx |
Gallery, SKU option matrix, server tiers/properties/reviews | Browser variant/image/quantity/sold-out checks; commerce.py |
storefront/checkout/CheckoutPanel.tsx |
One-page address/delivery/payment, server quote review and explicit order placement | Browser selection, empty/filled cart and simulated order; commerce.py |
shop-api.ts, shop-i18n.ts, shop.css |
Typed shop contracts, four-language text, scoped styles | Typecheck, browser language switching and layout inspection |
Merchant.tsx |
Merchant workspace/session and chat orchestration | Browser personal sign-in/navigation/reload; users.py + real chat HTTP tests |
SettingsDialog.tsx, ProposalCard.tsx, PreviewDialog.tsx, MessageText.tsx |
Focused merchant interactions | Build, browser interactions; proposal execution through HTTP tests |
OverviewView.tsx, KnowledgeView.tsx, AgentsView.tsx, PreviewPanel.tsx |
API-backed activity, graph, protocol setup and server quote | Build, browser views; studio.py/intelligence.py |
admin/catalog/ReviewModeration.tsx + admin/orders/OrderWorkflow.tsx, UsersManager.tsx |
Tax/shipping/payment/reviews/orders and personal/team access | Browser rendering/sign-in; commerce.py + users.py |
i18n.tsx, locales/{en,de,fr,es,shop-*}.ts |
Merchant locale context and separate typed dictionaries | Typechecked equal keys and four localized API views |
Icon.tsx, ProductArt.tsx, scoped CSS |
Reusable authored visuals | Build and screenshots; gallery asset HTTP resolution |
Browser interactions were checked with the actual local app. They are not a committed automated browser regression suite. Accessibility, assistive-device coverage, all mobile breakpoints and exhaustive visual diffs remain additional work; do not infer those from screenshots or typechecking.
App frontend modules: AppsManager/AppEntity manage lifecycle/data;
AppFrame provides the constrained iframe SDK bridge; AppSlot personalizes
products; PaymentSession/PaymentManager display customer/provider state;
admin/intelligence/KnowledgeView and MemoryRecommendations connect
evidence to approved suggestions.
app-i18n supplies four-language host vocabulary; apps.css scopes their layout.
Verification: strict build plus actual browser navigation/data/configuration,
backed by apps.py, services.py, payments.py and providers.py. No automated
visual/iframe-browser regression suite is claimed.
Persistence, fixtures and tooling
Migrations 001–005 retain the earlier core/graph/context model. 006 adds SKU metadata, review storage and commerce settings; 007 initializes synthetic demo commerce once; 008 adds personal users/memberships/invitations/sessions; 009 corrects template variant capacity and the authored example review. Migrations are additive; existing stock/orders/prices are retained. Migration 010 adds managed app model metadata/storage, event deliveries, knowledge evidence and payment attempts/jobs/inbox/reservations; core monetary quotes retain their original shape. No production Shopware store is imported by these migrations.
fixtures/demo-catalog.json and demo-settings.json are fixed public templates
for new workspaces, not exports of current merchant state. frontend/public/media
contains 33 authored SVG illustrations. Four executable WAT policies and their
limitations are documented in extensions/README.md.
The original Shopware reference lives in reference/ (Composer-pinned source
and independent PHP runners). porting/units.json and scripts/port.py select
incremental migration gates. scripts/dev.sh starts the isolated local demo;
mcp_stdio.py bridges explicit client credentials. CI builds/types/lints/tests,
executes original PHP comparisons and the real DB suites. Private state,
credentials and DB backups remain ignored in .run, .env and local work.
See shopware-parity.md for exact equivalence boundaries and security.md for production gaps. No 100% code-coverage or full Shopware compatibility claim is made.
| File | Responsibility | Verification |
|---|---|---|
src/apps/runtime.rs |
Generic cached Wasm ABI execution; no app business rules. | Rust Wasm boundary tests + apps.py |
src/apps/compatibility.rs |
Explicit adapter for pre-1.1 engraving cart records; completed snapshots stay immutable. | Rust compatibility regression |
extensions/apps/engraving/configuration.wat |
App-owned text-length and fee acceptance rules. | Rust guest tests + apps.py |
extensions/apps/gift-message/configuration.wat |
Independent app with its own length/fee limits and input field. | apps.py real taxed checkout |
| src/checkout_handoff.rs | Generic expiring, single-use transfer of an authoritative cart; rotates tokens. | checkout_handoff.py real PostgreSQL concurrency/order checks |
| extensions/apps/storyfront/manifest.json | Storyfront app capabilities, separate service and merchant UI contract. | Installed package + actual connector/browser flow; see storyfront.md |
Workbench and additional commerce domains
| Files | Responsibility | Tests |
|---|---|---|
src/staging/{clone,snapshot,documents,release,mod}.rs |
Private clones, publishable units, document provenance and selected conflict-checked atomic releases | staging.py, marketing_accounts.py |
src/developer/{generation,builds,routes,mod}.rs |
Structured model schema, immutable versions, restricted runtimes, staging/import/MCP tasks | developer_documents.py, staging.py, Rust validation tests |
src/documents/{ingestion,parser,retrieval,questions,mod}.rs |
Bounded PDF/text ingestion, private/public sources, actual graph/chunks/vector retrieval and cited PDP answers | developer_documents.py including real PDF child process |
src/accounts/{mod,profile}.rs, customer.rs, cart_storage.rs |
Separate customer sessions, profile/password/history and trusted identity reuse | marketing_accounts.py, commerce.py |
src/auth/provision.rs, registration.rs |
Shared synthetic template provisioning for first and additional owned shops | marketing_accounts.py, users.py |
src/marketing/{rules,promotions,flows,channels,routes,mod}.rs |
Bounded AST, authoritative campaigns, durable note/proposal jobs and sales-channel scope | Rust rule tests, marketing_accounts.py, developer_documents.py |
src/rule_comparison.rs, src/bin/rules.rs, reference/rules.php |
Original Shopware numeric comparison behavior, independent batch oracle | rule_differential.py: 1,280 comparisons |
crates/commerce/src/discount.rs |
Exact-cent proportional basket discount allocation | Rust conservation/bounds tests, concurrent coupon HTTP checkout |
src/commerce/product_edit.rs |
Revision-bound translations and advanced metadata; own product/reference validation | marketing_accounts.py and selected release |
src/experience.rs |
Persisted layout policy plus owned-session signal ranking/clearing | intelligence.py, marketing_accounts.py |
frontend/src/admin/{developer,environments,storyfronts,automation,catalog}/ |
Dedicated merchant workbench forms and review surfaces | Strict frontend build, actual browser review |
frontend/src/storefront/account/CustomerAccount.tsx, admin/intelligence/KnowledgeSources.tsx, admin/intelligence/SourceEditor.tsx, storefront/catalog/ProductQuestion.tsx |
Customer account editing/history and private upload/cited shopper questions | Native HTTP suites and browser forms |
frontend/src/shared/i18n/{workbench-i18n,errors-i18n}.ts, frontend/tests/locales.mjs |
Four-language typed vocabulary and exact/fallback errors | Locale parity/nonempty/error tests |
deploy/*, scripts/prepare_vercel.py |
Self-hosted image/TLS network and credential-free Vercel API rewrite generation | Container build/start and Compose/static checks |
Migrations 011, 013–015 add source documents/chunks, environment/release/build
records, customer sessions/profiles, rules/promotions/flows/channels/product
metadata and anonymous behavior signals. Migration 012 contains checkout handoff.
The domain file guard remains enforced: Rust modules at most 320 lines, main.rs
at most 120 lines, each module starts with its responsibility comment.
Bounded reads and setup
| File | Responsibility | Behavioral verification |
|---|---|---|
src/catalog_page.rs, src/catalog_search.sql, src/catalog_channel.sql |
Tenant cursor pages, literal localized server search and enforced limits. | scalability.py: complete traversal, later-page search, mixed-field language fallback, wildcards, tenant boundaries; million-product HTTP benchmark |
src/channel_metrics.rs |
Capped best-effort diagnostic buffer and bounded bulk writes. | Rust buffer-bound test + persisted counters in scalability.py |
src/performance/, migrations/037-read-context-cache.sql |
Atomic settings/override/registry version probes, bounded decoded LRU, explicit read memoization, pool budgets and cache policies. | read_performance.py: two real Rust replicas, direct writes, override/delete/recreate/rollback, languages, revocation, restart, overload/recovery; Rust eviction/policy tests |
frontend/src/shared/api/request-json.ts |
Same in-flight read shared by scoped Studio/storefront transports, immutable per-caller result and mutation barriers. | request-json.test.ts: actual transports, tenant/user/locale/channel/cart/customer keys, failures and pre-write-read barriers |
src/migrations.rs |
Serialized checksummed setup and fixed demo seed; no catalog-wide restart scan. | Fresh database full suites; manual serve/migrate/readiness and independent-worker restart checks |
scalability.py also checks a 120-variant family, last-page reviews, deep links,
64 cart edits with 32 clients and competing optimistic revisions. Independent
processes were restarted against the million-product database, with warm database
caches; this is not a machine/database cold-start or failover test.
Customer/merchant operations addition
| Source | Responsibility and behavioral tests |
|---|---|
src/accounts/{contacts,metadata,addresses,address_store,order_snapshot,demo}.rs, profile.rs, customer.rs, cart_storage.rs |
Typed contacts, indexed order metrics, composite-owned address books/CAS/defaults, login context defaults and immutable order copies. customer_accounts.py tests the entire buyer path and negative ownership cases. |
src/operations/{customers,orders,addresses,workflow,receipts,receipt_text,receipt_pdf}.rs |
Bounded CRM/order details, shared MCP address operations, workflow settings, central issuer settings, audited notes and immutable multilingual document issuance. merchant_operations.py + customer_accounts.py. |
src/commerce/{order_machine,order_workflow,order_fields,fulfillment}.rs |
Extensible validated state graph, eligible next actions/business guards, authoritative standard order projection and idempotent committed state transitions/events. Unit tests and actual concurrent workflow/flow/app effects. |
src/commerce/product_fields.rs |
Revision-bound native priced/media/property fields; quantity/tier/media validation in the central product write transaction. Product editor integration tests. |
src/assets/*, src/staging/assets.rs |
Immutable MIME-checked upload bytes, publication digests, paid owning order download entitlement, typed rich blocks and selective asset release. merchant_operations.py. |
src/auth/{permissions,integrations,members,invitations,middleware}.rs |
Current named scopes and persisted workspace roles, hashed keys with bounded expiry or explicit personal-administrator no-expiry, immediate revocation and non-escalating delegation. Permission units and HTTP/MCP negative tests. |
src/payments/{paypal,provider,storage,worker,routes}.rs |
Per-shop Sandbox/Live wallet configuration, pinned official attribution, durable jobs and pending-refund GET recovery. Local wire fixture payments.py; no live PSP proof. |
frontend/src/shared/customer/, storefront/{account,checkout}/, admin/customers/ |
Same four-language contact/address interactions in buyer account, checkout and merchant CRM. Strict frontend build, locale tests and browser review. |
frontend/src/admin/orders/ |
Direct eligible commands, same-job payment polling, immutable address/document views and event activity. |
frontend/src/admin/settings/, frontend/src/admin/apps/ |
Central configuration and issuer, app categories and individual package workspaces; operational layouts use the full available width. |
Migrations 016–021 |
Operations/documents/assets, fine-key storage, state-machine/idempotency storage, explicit schema repair, customer IDs/addresses/default foreign keys and explicitly synthetic demo-address backfill. Applied entries remain immutable/checksummed. |
The file guard verifies every Rust module's responsibility header and maximum
320 lines (main.rs maximum 120). Tests cover the listed actual behaviors;
this does not claim every source line or every original Shopware operation is covered.
Formal policy extraction
| File | Responsibility | Verification |
|---|---|---|
crates/kernel/src/verified_kernel.rs |
Closed facade over seven domains and 63 pure production policies | 149 Lean theorems; compiled Rust/Lean conformance; broken-policy mutations |
proof/Commerce/Claims.lean |
Stable entry to seven independently checked proof domains | Exact registered theorem/import inventory; handwritten domains limited to 320 lines |
src/bin/verified_kernel.rs |
Generated JSON comparison driver calling the real policy module | 156,741 comparison cases; generated drift guard |
src/payments/receipt_guard.rs |
Checked amount conversion and provider receipt policy binding | payments.py; reviewed binding, not a proof of the parser |
The current Rust module status and review inventory are maintained in
proof/manifest.json. The 63 consumer modules are
reviewed bindings, not whole-module proofs. See the
exact formal coverage and remaining gaps.
Connected provider apps and automation
| Files | Responsibility |
|---|---|
extensions/services/connectors/src/{server,oauth,network,store,providers}.rs |
Independent app runtime, provider OAuth/API, encrypted private state and durable jobs |
extensions/apps/{gmail,google-analytics,slack}/manifest.json |
Versioned app API/MCP capabilities and scopes |
src/apps/evidence.rs, src/apps/evidence_routes.rs |
Tenant-private incremental imports, retrieval, polling and purge fences |
src/knowledge.rs |
Private PostgreSQL source and product provenance, separated from public graph |
src/planner.rs |
Actual private-source model context and persisted task evidence |
src/marketing/{rules,rule_match,rule_fields,catalog,app_flows,flows}.rs |
Condition schema, original comparison/facts, upstream import, app-aware durable flow execution |
frontend/src/admin/apps/ConnectorPanel.tsx, admin/automation/{RuleBuilder,FlowBuilder}.tsx, extensions/apps/google-analytics/storefront/ShopAnalytics.tsx |
Multilingual app details, recursive graphical automation, consent and commerce events |
extensions/sdk/analytics.js |
Reusable consent-bound GA4 adapter for headless frontends |
scripts/{connected_apps,connector_store_tests,rule_differential}.py |
Actual provider/model wire path, state fences and original PHP comparison regressions |
The upstream condition-by-condition status is recorded in reference/rule-catalog.json.
Platform control plane
| File | Responsibility | Coverage |
|---|---|---|
src/platform/auth.rs |
Independent platform authorization: live personal sessions, current grants, no integration/bootstrap escalation. | platform.py + platform_setup.py + hosting_container.py; auth conjunction additionally extracted to Lean |
src/platform/bootstrap.rs |
Offline first-operator setup: migration-only process, supplied strong credentials, password proof for existing accounts. | platform.py + platform_setup.py + hosting_container.py; auth conjunction additionally extracted to Lean |
src/platform/metrics.rs |
Aggregate-only control-plane reads: real tenants, bounded pages, explicit currencies and simulated/confirmed amounts. | platform.py + platform_setup.py + hosting_container.py; auth conjunction additionally extracted to Lean |
src/platform/mod.rs |
Global SaaS control plane: operator-only aggregate statistics and audited shop provisioning. | platform.py + platform_setup.py + hosting_container.py; auth conjunction additionally extracted to Lean |
src/platform/provision.rs |
Operator shop creation commits ownership, settings and audit atomically; never issues another user's credentials. | platform.py + platform_setup.py + hosting_container.py; auth conjunction additionally extracted to Lean |
Frontend: PlatformConsole coordinates state; PlatformSignIn owns personal login;
PlatformLanguage selects locales; PlatformDashboard renders factual metrics;
PlatformShops owns directory/provisioning views; platform-api is the typed
transport and platform-i18n contains complete operator UI translations.
The production-mode Docker smoke test checks the packaged server and frontend.
Full-app surfaces and execution admission
| Files | Responsibility | Verification |
|---|---|---|
src/apps/{surfaces,surface_tests}.rs |
UI contract registry, namespaced route/action adapter, scope and mutating GET rejection | app_surfaces.py, Rust contract tests, extracted read admission proof |
src/apps/service_limits.rs, foundation.rs, bootstrap.rs |
Shared non-queuing per-process/per-tenant-app service limits | Slow-service real-cart/second-tenant test and Rust drop/reuse test |
src/apps/{data,registry,planning,gateway}.rs, src/planner.rs |
JSONB, indexed bounded pages, direct revision binding, selected bounded AI context and unified actions | Deep-page approved local-model wire fixture; existing app/service/staging regressions |
frontend/src/shared/apps/{AppSurfaces,AppFrame}.tsx, extensions/sdk/browser.js |
New Studio/shop navigation and context-aware opaque UI bridge | Actual multilingual browser question/module/page and frontend/tests/app-sdk.mjs |
extensions/apps/product-lab/*, scripts/product_lab.py |
Independent app code/storage/UI/container and private optional launcher | app_surfaces.py, actual non-root resource-limited container smoke |
frontend/src/application/ApplicationRouter.tsx + main.tsx |
Separate lazy Studio/storefront/platform loading and root error recovery | Strict production frontend build |
Every host location and limit is listed in the full app contract. External app code, service declarations and frontend behavior remain outside the partial Lean proofs. No new core database migration was required for these optional manifest fields and shared app records.
Source rule and durable flow migration
| Module | Behavior | Evidence / remaining boundary |
|---|---|---|
automation_rules/*, reference/automation-{catalog,rules}.php |
Source-named native comparison, typed custom fields, quantities/containers and calendar conditions | 432 actual original-class cases across 74 classes; full catalog/API parity remains unproved |
marketing/{facts,line_facts,customer_facts,rule_snapshot}.rs |
Private tenant-owned facts, variant metadata inheritance and frozen referenced-rule versions | Real cart preview and event flow tests; source UUID and every original field/scope require further migration |
marketing/{pipeline,pipeline_runtime,flow_actions,flow_mutations,flow_access}.rs |
DAG admission, branches/actions/delays, step receipts, actual domain writes and current rights | scripts/automation.py real HTTP/PostgreSQL checks; all original triggers/configurations and external exactly-once effects remain open |
frontend/src/admin/automation/*, shared/i18n/automation-*.ts |
Connected graph, typed localized rule/action editors and stable graph transformations | Four-language component tests, source payload round-trips, dangling-edge and JSON draft regressions |
See automation for the precise supported/disabled catalog and action mappings.
Reproducible local playground
| Source | Responsibility | Verification |
|---|---|---|
scripts/playground.py, scripts/demo/fixtures.py |
Create a separate personal-owner shop through loopback HTTP; seed translated rules/coupon/channel/flow/app, preserve edits and private resumable state | scripts/automation.py: invoke the actual CLI, repeat after a merchant edit, exercise both order branches and real invoice records; tooling_tests.py: remote-origin and symlink/permission negative tests |
The merchant walkthrough is playground.md. Its sample flow uses no model or external delivery provider. The exact current source inventory is generated separately.
Integrated catalog and category management (2026-10-05)
| File/group | Responsibility | Regression evidence |
|---|---|---|
commerce/product_admin.rs, product_channels.rs, product_edit.rs, product_fields.rs |
Bounded merchant queries, product/variant creation, atomic revision saves, inventory/pricing and category/channel assignments | catalog_management.py, commerce.py, merchant_operations.py, frontend catalog-management tests |
categories/{mod,admin,navigation}.rs, listing.sql, migrations 026/027 |
Tenant-safe translated tree, navigation roots, membership, nested product listings, indexed search | Rust validation tests; real category/cycle/visibility/locale/channel HTTP tests |
assets/rich_document.rs, shared rich-document.tsx, admin RichEditor.tsx |
Safe structured WYSIWYG admission and storefront rendering | Rust unsafe-content negatives, actual React renderer tests, browser save/reload |
admin/catalog/{ProductDataView,ProductEditor,ProductPanels,ProductMediaWorkspace,MediaDropzone,AiImageStudio,ProductVariants,RelatedProducts,CategoriesWorkspace}.tsx |
One list/create/detail workspace, gallery/SKU/category workflows | Strict build, architecture constraints, unit tests and real synthetic browser creation |
staging/categories.rs, snapshot.rs, release.rs |
Dependency-ordered category/product release, preserved live stock and rebound live asset scope | catalog_management.py, staging.py, Rust URL-scope regression |
operations/mod.rs, mcp.rs, marketing/flows.rs |
HTTP/MCP shared operations and product-event durable consumers | Actual MCP creation followed by completed product-created flow |
Original Shopware mapping, supported features and remaining gaps.
Company identity, per-channel inheritance, logos and legal storefront/issuer consumers: company settings module map. Real integration suite: scripts/company_settings.py; UI regressions: frontend/tests/unit/company-settings.test.tsx.
Scoped checkout settings, method dependency guards, selective staging and product media jobs: module map and verification.
Knowledge sources, product graph evidence, observed decisions and retrieval preview: domain ownership and verification. Real suites: knowledge_workspace.py, developer_documents.py, apps.py, connected_apps.py; component regressions: knowledge-workspace.test.tsx.
Managed storage/search integration: managed_search.py verifies ordinary PostgreSQL, real Qdrant, hostname scope, durable deletion/retry and lexical fallback with synthetic embeddings. It does not measure AI quality.
Connected CRM and entity history
history/{mod,routes,capability,restore,product}.rs owns trusted attribution,
scoped paging, MCP parity and restoration through domain handlers. Migrations
034/035 capture transaction-coalesced aggregate snapshots.
accounts/address_restore.rs owns validated address-book restoration;
commerce/{customer_groups,group_usage}.rs owns group definitions, price basis
and dependency admission. shared/history/ is reused by native editors and
admin/shell/useEntityNavigation.ts owns scoped entity/back paths.
scripts/crm_history.py and frontend/tests/unit/crm-history.test.tsx cover these
paths, alongside existing customer, merchant, automation and staging suites.
See history boundaries.
Guided app extension path
App assistants compile the shared Manifest in frontend/src/admin/developer/assistant-model.ts. Product/customer/order mounts reuse the native renderer with explicit object context. src/apps/editor_contract.rs owns field/context and direct-route scopes; src/apps/planning.rs filters merchant grounding and rechecks app proposal access at bind/apply. src/apps/schedules.rs and webhooks.rs persist emitted events/receipts via migration 036. scripts/app_assistants.py and app_surfaces.py exercise actual private stages, public/MCP boundaries, service fixtures, event/Flow writes, restart and scope rejection; frontend assistant tests cover editing and regional language inheritance. See guide and upstream extension requirements.
Platform control plane
| Modules | Responsibility | Verification |
|---|---|---|
src/platform/{ai,lifecycle,shop_detail,infrastructure,resources}.rs |
Encrypted shared inference settings, reversible shop admission, dossiers and actual diagnostics | platform.py → platform_control.py; resources/crypto Rust tests; availability policy extracted to Lean |
crates/cognition/src/inference/{settings,tests}.rs |
Replica cache, authenticated encryption, inherited provider readiness and native protocol contracts | Rust tests + two-shop/fresh-process local provider fixture + provider/document/image/translation suites |
frontend/src/platform/{AdminHub,PlatformAI,PlatformShopDetail,PlatformInfrastructure}.tsx |
Public service directory and independent operator workspaces | platform-control.test.tsx, real browser review, build/architecture/localization |
src/shop_domains.rs, frontend/src/shared/api/shop-scope.ts |
Canonical shop links and actual hostname admission; protected URLs retain origin | HTTP Host regressions + shop-scope.test.ts |
src/channel_metrics.rs, src/studio.rs |
Bounded diagnostic counters and measured HTTP timings | Rust unit tests + actual persisted timing fixture |
Default fashion fixture
src/demo_catalog.rs copies the public Nord Atelier fixture into newly provisioned tenants and seeds an opt-in built-in demo once. src/auth/provision.rs controls whether catalog insertion is requested. src/knowledge/relations.rs chooses catalog-specific curated links. scripts/fashion_demo.py checks signup, localized names/navigation, actual images, all three coat sizes, tenant-separated stock, simulated checkout and a fresh-process restart. See the complete demo contract.
Trusted private experience boundary
src/auth/{broker,broker_inference,handoff}.rs owns route-bound signatures, one-use personal login and inherited inference. src/shop_domains/frontends.rs owns guarded public mounts and credential-stripping proxying. src/commerce/product_create.rs accepts stable import IDs through the normal product save pipeline. scripts/identity_broker.py covers actual HTTP/PostgreSQL ownership, replay, scope, paused-shop and restart behavior. See configuration and trust boundaries.
src/storefront_pages.rs: direct product URL HTML admission using existing tenant/channel policy.frontend/src/storefront/catalog/product-url.ts: localized product URLs, legacy SKU routes and collection navigation.
European operation
src/legal/ owns privacy policy/receipt, guarded checkout snapshots, sector facts and consumer request review. frontend/src/{admin,shared,storefront}/legal/ connects their actual interface and consent consumers. Migration 048 scopes receipts, logs and review audits; the email connector and Flow Builder consume their outbox events. See the complete behavior map and limits.
Hosted frontend transport
src/shop_domains/frontend_transport.rs streams the fixed, authenticated external frontend response with backpressure and an 8 MB cumulative body limit. SSE starts before upstream EOF; a body failure closes the stream. HOSTED_FRONTEND_COOKIE_NAMES defaults empty and optionally permits at most eight opaque anonymous shopper cookies. Login credentials remain stripped. Cookies returned to the browser must be host-only, Secure, HttpOnly and SameSite=Lax; redirects must be relative. This generic adapter contains no private Storyfront implementation. identity_broker exercises routing, foreign-shop denial, cookie filtering, paused shops and streaming through the real HTTP service. The network adapter remains outside the Lean proof boundary.
src/auth/broker_credentials.rs owns explicit trusted-email password enrollment/recovery
and existing-password verification. Migration 052 marks new broker accounts pending;
sessions.rs reports that state and handoff.rs enforces enrollment before Studio
entry. scripts/identity_broker.py checks real login, ownership, replay and revocation.
See merchant password enrollment.
Channel access and frontend bindings
marketing/channel_access.rs is the shared Store API/UCP/MCP/hosted admission boundary; channel_preview.rs owns personal, one-use browser previews. auth/middleware.rs strips forged preview principals and adds the validated request marker consumed by catalog, cart, navigation and legal paths. shop_domains/frontend_bindings.rs owns revisioned tenant/Experience alias CRUD; it reuses hosted_frontends, not another domain registry. The private renderer remains in the private integration repository. See channel management for behavior and limits.
HTTP failure diagnostics
src/channel_metrics.rs owns the bounded interval buffer and single bulk flush;
src/channel_metrics/reads.rs shares exact status aggregation across operator
overview, shop dossiers and infrastructure. src/studio.rs supplies status and
sanitized route-template logs after authentication admission. Migration 056
preserves historical totals and adds only a bounded status-code histogram.
frontend/src/platform/HTTPResponses.tsx presents access refusals, other 4xx,
5xx and unclassified history with the shared translated vocabulary.
channel_metrics unit tests, scripts/platform_control.py and
http-responses.test.tsx cover classification, real persistence, tenant-scoped
reads, historical preservation and display. See the measurement boundary.
Core hardening owners
src/request_context.rs,src/auth/{route_policy,identity,abuse,dto}.rsandidentity.sql: trusted Principal, explicit method rights, one current grant lookup, persistent login admission and typed auth requests.crates/runtime/src/scoped_pool.rs,src/performance/{pool,row_security,cluster_lease}.rs,src/runtime_config.rs: local transaction scope, guarded session borrows, validated startup contracts and shared resource/connection budgets.src/sandbox_cache.rs,src/apps/runtime.rs,src/assets/image_provider.rs: bounded Wasm compilation/execution cache and blocking-pool image processing.src/work_signal.rs,src/outbox.rs,src/outbox/{control,retention}.rs,retention.sqland migration 057: commit hints, isolated retries/quarantine, permission-checked recovery and bounded retention.deploy/sql/provision-runtime.sh,scripts/security/core_hardening.py,scripts/testing/pooler.py,scripts/transaction_pooler.py: least-privilege provisioning and actual two-replica/one-backend PgBouncer regression paths.
All eighteen findings, shared architecture and exact limits.
Request-hotpath consolidation (2026-10-08)
| Owner | Responsibility | Real verification |
|---|---|---|
src/performance/access_snapshot.{rs,sql}; src/auth/identity.{rs,sql} |
One current shop/channel/mount snapshot, joined personal identity/channel lookup; immutable request ownership | read_performance, channel_management, identity_broker, tenant_isolation |
src/performance/delivery.rs; frontend/scripts/precompress.mjs |
Native-only zero-SQL assets, secret-free compression opt-in, deterministic gzip/Brotli variants with correct Vary, MIME and range contracts |
read_performance; frontend precompression unit tests |
src/performance/{settings,mod}.rs |
Immutable Arc<Settings> cache ownership; mutable copies only where necessary |
Two-replica version/delete/recreate/revocation and checkout/currency regressions |
src/commerce/{inventory.rs,inventory_release.sql}; src/order_checkout.rs |
Batched deduction/allocation/release; persisted quantities and sorted product locks | production_foundations with simultaneous opposite-order baskets and cancellation replay |
src/studio/{facts.rs,overview.sql,revenue.rs}; src/studio.rs |
Consolidated bounded facts and three parallel read branches; unchanged currency-separated API | studio, read_performance nonempty mixed-currency before/after response checks |
scripts/testing/{hotpath,inventory_batch}.py |
Helpers in existing integration suites, wire/query measurements and real concurrent checkout effects | Existing verification registry; no separate runtime or benchmark engine |
Raw measurements and exact limits; SQL/async adapters remain unproved despite explicit source-review locks.
App-platform ownership
The connected extension contract and file-level ownership are maintained in
App platform, App Studio and
App security. The generated module inventory
lists every actual Rust/frontend/example source, including modules without measured
coverage. Rich descriptions now share frontend/src/shared/content/editor/; do not
create a separate app editor or catalog-only implementation.
Connected cognition foundation
The cognitive commerce guide maps migrations 071–078, bounded retrieval/model protocols, original registry read tools, native guardrail apply, evidence/signatures, controlled layout trials and private cart preferences. Its audit tracker identifies still-unimplemented recommendations. The generated module inventory includes every new source; no complete-core proof or 100% behavioral coverage is implied.
Forced-RLS lexical candidates
migrations/079-knowledge-lexical-indexes.sql owns transactional word projection
backfill/triggers and composite source containment. src/knowledge/search.sql
and src/documents/search.sql narrow candidates, then hydrate/rank/admit current
native records. src/documents/retrieval.rs remains the public/private retrieval
adapter. scripts/lexical_search.py, registered in the existing integration suite
registry, checks real non-owner plans, native edits, withdrawal, source deletion
and foreign-context rejection. These are rebuildable indexes, not another source
registry. See the performance and migration boundary.
src/apps/ontology.rs: validated namespaced app-node/edge metadata and bounded projections of current authorized native records; no second graph fact store.frontend/src/admin/developer/AppOntology.tsx: shared-language mapping controls over the exact human/agent app manifest.scripts/app_ontology.py: real API/MCP tenant, permission, reference and revision regression.
Checkout continuity source owners
| Source | Responsibility | Regression evidence |
|---|---|---|
src/checkout_products.rs |
Locked localized product/variant order snapshots using the catalog inheritance helper | scripts/checkout_handoff.py German variant and immutable label checks |
src/checkout_page.rs |
Exact registered tenant/channel origin framing admission | Same suite: foreign origin, tenant, channel and invalid origin rejection |
frontend/src/storefront/checkout/embedded-checkout.ts |
Exact-origin shopper completion and close messages | Frontend embedded-checkout unit tests |
| Private original Storyfront bag and runtime client | Verify completed Core cart; remove only purchased quantities once; keep cancellation intact | Original cart-store and rust-commerce tests, live acceptance recorded separately |
App generation edits are adapted by src/developer/generation_edits.rs as bounded JSON Patch into the existing Manifest; generation_contract.rs and builds.rs remain the storage/access and validation owners.
App lifecycle and ERP reference ownership — 12 October 2026
apps/record_lifecycle.rs validates generic Manifest initial states, permitted
edges and immutable fields. apps/data.rs enforces them and the current installed
package digest inside the record/outbox transaction. apps/service_limits.rs
owns shared egress bulkheads and replica-wide tenant/app leases.
The reference business vocabulary lives in extensions/apps/returns-workspace/.
extensions/apps/erp-handoff/service/ owns independent Rust ERP delivery,
configuration and app-private forced-RLS receipts; extensions/sdk/rust-events.rs
is only a shared wire verifier. The registered erp_handoff suite delegates to
that app's tests. app_assistants covers actual transitions and an upgrade/write
race; app_events exercises aggregate admission across two real replicas.
See the runtime and privilege boundary.
Modular B2B and EDI — 12 October 2026
Native company units, current employee rights, private catalogs, currency-bound
budgets, separate approval, RFQ negotiation, quick order and repeat lists reuse
the existing checkout, inventory, order, document and Flow owners. The Studio and
customer account use the same API/MCP contracts. Setup, source owners and precise
B2B comparison. The independent extensions/apps/edi/ package owns
bounded EDIFACT/UBL/cXML parsing, mapped private requisition import and immutable
native document export; no Core codec or second ledger. EDI profiles, deployment
and network/certification limits.
Shared publication and observation owners
marketing/channel_config.rs owns transactional channel admission for native
writes and releases; marketing/flow_policy.rs checks current action rights.
staging/access.rs checks each selected domain and final_config.rs validates the
final aggregate/POS defaults. b2b/staging.rs clones only configuration/catalogs
and delegates publication to the same organization/catalog transactional writers.
legal/model.rs owns inherited visitor settings; behavior capture/report/journey
and consent disclosure consume that same policy. Shared history exposes B2B
configuration over HTTP/MCP without financial rewind. No second settings, audit
or analytics ledger is introduced. Integration map and limits.
Personal account security
auth/{totp,mfa,sessions,handoff,broker_session,broker_recovery,broker_credentials,routes}.rs
own personal factor evidence, verified identity assertions, credential revisions
and session/continuation admission. Migration 091 adds forced system-only identity
state. The merchant/operator UI lives in frontend/src/shared/auth/. Existing
outbox events record secret-free security changes. Registered account_security
and identity_broker suites exercise native effects and restart. The private
Experience owner implements email recovery/forms and rechecks current native proof;
exact setup and boundaries.
Provider-neutral fulfillment additions — 14 October 2026
| Owner | Responsibility and executable checks |
|---|---|
src/commerce/{delivery_split,order_mutation}.rs |
Native quantity-conserving package split, current grants/CAS/replay and one shared order/cart/audit/outbox transaction; shipment_workflows.py exercises real HTTP/MCP and concurrent requests. |
src/operations/{delivery_booking,order_documents}.rs, src/apps/{core_documents,package_fence}.rs, migration 092 |
Native package intent and immutable private PDF admission with the existing receipt/RLS/quota owner; original app/key acknowledgement, unknown-effect fences and customer-only return documents. |
src/apps/jobs.rs, src/marketing/app_flows.rs |
Current actor/action/digest admission for job results, minimized list projections and stable Flow-to-job identity; shipping_contract.py drives a real local service, restart and rights revocation. |
extensions/apps/assistant-examples/shipping.json, admin/developer/assistant-model.ts |
One carrier-neutral job/callback declaration for coding and visual assistants. No carrier protocol or deployable provider is shipped. |
crates/kernel/src/verified_kernel/fulfillment.rs |
Extracted strict-subset and carrier-intent decisions, Lean statements, compiled conformance and negative mutations; surrounding SQL/network effects remain tested rather than proved. |
Shared agentic grids — 14 October 2026
frontend/src/shared/grid/ owns the generic shell, layout-only preferences, stale-read
fences and explicit filter review. The order/catalog/customer directory adapters own
columns and navigation; declarative NativeDataBlock tables reuse only presentation
and retain their existing action/inline-form contracts.
operations/{list_criteria,order_list,grid_schema,grid_plan}.rs and existing catalog/
customer list owners supply native validated queries and central model planning.
MCP shares the field schema and handlers. grid_directory.py runs actual isolated
PostgreSQL/Store API/HTTP/MCP/model wire checks. Guide and ownership boundaries.
Admin customer and reviewed order creation
operations/customer_create.rs commits profile/default addresses through native accounts/history/outbox; manual_orders.rs adapts native carts and checkout; manual_order_admission.rs owns actor-private and locked final admission; creation_schema.rs exports the same MCP contract. Studio uses modular CustomerCreate, OrderCreate, useOrderCreation, OrderProductPicker, OrderReview and the shared native customer picker. Workflow and proof boundaries.
Shared content editing styles belong to frontend/src/shared/i18n/content-editors.css,
imported by the language picker and localized field themselves. Bounded customer
selection owns frontend/src/shared/customer/customer-picker.css; B2B and Admin
orders reuse it. A direct editor entry must not require visiting settings first.
Connected App Studio workbench
Site-builder page shape admission stays in extensions/apps/site-builder/:
server.rs owns page/theme and current-shop validation, block_validation.rs
reports bounded block/property errors, and planning.rs exposes the nested format
to both native merchant planning and the coding-agent handoff. The same native
checks run before review and before managed save; model guidance grants no rights.
See the illustrated workbench guide for multiple placements, compact adjustable panels, the contextual AI drawer, model-backed form editing, shared Flow visuals, installed app settings and scoped integration keys. These extend the existing native Manifest, runtime and release owners.
Fixed app storage
apps/records.rs, data.rs, native schema migration and PostgreSQL migrations 101–102 own logical models, record CAS, fixed index/reference projections and existing-data consolidation. App-specific business code stays package-owned. See storage, maintenance cutover and tests.
Native app lifecycles
apps/native_lifecycle owns bounded declarations, compilation, accepted snapshots and policy facts. commerce/fulfillment and b2b/quote_lifecycle retain native transition admission; quote offer/accept/checkout stay with their existing owners. b2b/contract owns the shared native operation catalogue. The example vocabulary stays in extensions/apps/production-review. See the workflow guide.
Inward agentic commerce
src/ucp/ adapts native carts, single-use handoff and native privacy receipts;
src/legal/buyer_consent.rs protects contact requirements in every checkout.
extensions/apps/catalog-import/ owns provider parsers and read-only Shop MCP
egress; the existing native catalogue intake owns review, private save and release.
frontend/src/admin/channels/AgenticChannels.tsx owns readiness presentation,
and frontend/src/storefront/shell/storefront-actions.ts shares actual UI and
optional browser-agent cart commands. Workflow and boundaries.
External services
Service integrations maps ten user-facing routes to
the existing app, migration and native API owners. App-owned protocols reside in
extensions/apps/{vercel,klaviyo,hubspot,contentful,algolia}/src/;
extensions/services/connectors/src/integrations.rs hosts their generic queue
and credential-revision fences. Shopware 6 extraction/normalization stays in
extensions/apps/migration/; Nexus is an HTTP setup recipe only.
Configurable merchant reports
src/studio/reports.rs owns HTTP/MCP admission and snapshot composition;
src/studio/reports/{config,period,traffic}.rs owns typed preferences, calendar
bounds and reuse of native consent eligibility. Bundled SQL aggregates native
orders/payment attempts without another ledger. frontend/src/admin/reports/
is shared by Shop today and personal workspace areas. Existing private workspace
CAS/history stores presentation choices only. merchant_reports tests real
native checkout/POS, consent, current rights, isolation and historical fixtures.
See merchant reports for metric semantics and bounds.
Native capture and refund allocation
payments/{capture_configuration,capture_admission,settlements,refund_allocation}.rs
reuse native shop settings, attempts, jobs and receipt claims. generic_receipts
admits immutable provider evidence; worker preserves attempt-before-job locking.
The shared Studio admin/payments/PaymentActions is used by orders and payment
management. Merchant workflow and
provider contract define
balance, recovery and current-rights behavior. The generated conformance driver
now dispatches through bounded files matching the existing seven policy domains.
Payment transaction observations
src/payments/{catalog,details,details_model,details_tests}.rs own the provider-neutral
read contract and safe durable history projection. remote.rs omits customer/order
payloads for inspection. Provider protocol and fee extraction remain in the private
Rust payment service. frontend/src/admin/payments/PaymentDetails is shared by
orders and payment management. Usage.