English source · 33 min
Testing, coverage and maintenance contracts
External order batching regression
The registered marketplaces suite calls the installed app's real native order
callback with 1, 20 and 24 lines. Its app-owned
order_localization.py
fixture checks frozen names, exact paid amounts, one native outbox event,
tenant separation, replay, failed-order rollback and concurrent final-stock
admission. Italian, short locale, parent/variant and blank-name cases preserve the
previous result. SQLx statement traces assert one translation query at each size
and zero on replay. A 25-line request remains rejected before persistence.
The regression was run against the preceding binary first: all behavioral checks
passed, and the new query-count assertion correctly rejected [1, 20, 24].
The changed binary passes with [1, 1, 1].
The strict signed_runtime suite repeats the real marketplace callback with
separate restricted system and tenant logins, signed request scope and forced
RLS. It asserts the same names, stock effects and constant query count.
Measurement and delivery scope.
Mail and connected app test ownership
The registered email_tests, rust_connectors and connected_apps suites keep
their existing names and execution order. Their shared fixtures and scenarios now
have separate owners:
| Owner | Responsibility |
|---|---|
| email_tests.py | Compose the same nine unittest cases from the mail fixture, protocol contracts and native journey. |
| mail_contracts/wire.py and fixtures.py | Disposable SMTP/HTTP servers, synthetic TLS certificates and isolated test settings. rust_connectors.py imports these fixtures directly. |
| mail_contracts/contracts.py | Eight archived comparison cases for mail configuration, protocols, secrecy, retries and localized messages. |
| mail_contracts/journey.py | Actual Rust checkout, outbox, Flow Builder, app gateway and mail worker delivery to local SMTP, including HTTP/MCP permissions and sandbox denial. |
| connected_apps.py | Run access, source import, event delivery and disconnect checks in their original order. |
| connected_contracts/runtime.py, wire.py and client.py | Own process/server lifetime, local provider responses and scoped HTTP actions. Restore fixture environment variables after shutdown. |
| connected_contracts/access.py | OAuth/PKCE, encrypted tenant binding, configuration revisions, channel tracking and access denial. |
| connected_contracts/sources.py | Private source import, retrieval/model evidence, token refresh and disconnect cleanup. |
| connected_contracts/flows.py | Native order/app events, durable Slack flows, idempotency, retries and uncertain delivery after restart. |
| reference_connector.py | Explicit test import boundary for the archived connector comparison implementation. |
The extraction preserves every mail test body, all 37 connected app assertions and all nine reported scenarios. Before and after the change, the three registered suites pass against disposable local PostgreSQL databases and provider fixtures. The native connector suite retains its two process, encrypted configuration, queue recovery and restricted database role checks. All provider calls stay local.
Run the affected suites through the existing registry:
python3 scripts/verify_integration.py --only email_tests rust_connectors connected_apps
connected_apps retains the archived connector as a differential fixture beside
the real Rust commerce process. The separate rust_connectors suite and native
mail journey exercise the shipping Rust service. Production ownership remains
documented in Rust services; no runtime moved into Python.
Formal and module-boundary regression — 23 October 2026
The current formal/module audit records
63 extracted production policies and 149 Lean properties, including successive
stock, refund and budget decisions and saved private agent admission. Compiled
Rust/Lean comparison covers 156,741 cases. Four additional Rust tests exercise
actual u64 implementations against independent u128 arithmetic and private
context truth tables, including u64::MAX and lowered limits.
The complete Linux CI run 39934011164 passed with 317 Rust tests, 816 frontend tests in 140 files, native PostgreSQL/HTTP integration, separate restricted runtime connections and transaction pooling. Measured line coverage is 86.62% Rust, 69.92% frontend and 80.72% Python tooling; all reviewed coverage gates passed. The delayed-flow revocation regression now waits for the committed delay cursor before changing access and the timer, so it checks actual continuation denial instead of racing initial queue admission.
The existing mandatory proof and Cargo checks now also enforce seven handwritten proof domains and reviewed dependency ownership, with negative controls for hidden dependencies, aliases, wrong-owner targets and missing/extra claims. They supplement the existing Rust/frontend size and responsibility checks. Recorded measurements below retain their original dates; consult the linked audit for this revision.
The 17 October buyer/POS follow-up records the complete required 100-suite check and 115 frontend files / 648 tests, plus public preserved-cart, simulated checkout and native POS invoice acceptance. Coverage floors remain unchanged. Public provider payments and a fresh original embedded checkout are not inferred from these local/CI results.
The 17 October native app-field receipt records the complete required Linux check, 99 registered local suites, 636 frontend tests, actual hosted product-app publication and the original embedded simulated checkout. Older measurements below retain their own source/date and coverage scope.
Prototype feedback loop
The public handbook renders Markdown Mermaid fences through the shared
site/docs-diagrams.js module. The unmodified Mermaid 11.15.0 browser distribution
and its MIT notice are stored in site/vendor/; its package integrity and bundle
SHA-256 are recorded in mermaid.json. Build and site checks reject a missing or
changed bundle or a disconnected loader. No CDN or network package installation is
needed to build or read diagrams, and pages without diagrams do not load Mermaid.
Strict rendering disables diagram-defined click actions and sanitizes SVG. Readers
can fit wide diagrams to the article, scroll at full size and inspect the original
source. Without JavaScript, or when one diagram fails, its source remains readable.
Diagram controls follow the handbook's EN/DE/FR/ES language selection.
The 18 October browser repeat rendered all 33 actual handbook diagrams as SVG;
two previously invalid sequence labels were repaired without changing their
meaning. This real browser check complements the complete static site check:
python3 scripts/build_site.py && python3 scripts/check_site.py.
Daily full verification and short per-change checks
Since 29 October 2026, the prototype runs its complete test suite once daily at 02:17 UTC on the default branch. Run workflow starts the same complete suite manually, including on a selected branch when a change needs it. A normal push or PR update no longer starts complete frontend coverage, Rust compilation, Lean/mutation tests, PHP differential tests or PostgreSQL/provider integration.
| Trigger | What actually runs |
|---|---|
| Pull request update or main push | Short source structure, ownership, localization, API/source inventory, reviewed-source and prompt/documentation governance checks. No full tests or new coverage. |
| Daily schedule or manual workflow dispatch | Complete frontend tests/coverage, Rust/formal/differential checks, every native integration partition and same-source coverage admission. Existing coverage floors are unchanged. |
| Main publication or manually requested image | Actual image build and its small packaged-runtime smoke checks. These validate the artifact being published; they do not repeat the full suite. |
The required verify name stays in place for branch protection. On pushes/PRs,
it means quick checks passed, as stated in the run summary. It does not claim
that the current commit passed the full suite. Daily/manual runs must select the
full lane; failed, cancelled, missing or unexpectedly skipped jobs still reject
admission. Quick runs never download old coverage or label it as current evidence.
PR branches run through pull_request, without duplicate branch-push runs. A new
PR revision cancels its old quick run. Daily/manual full runs remain independent.
Documentation is built and checked when published from main or requested manually,
not again on every PR revision.
Local development follows the same cadence: run targeted tests for changed behavior while fixing it, but do not repeat the whole suite for every commit or wait on nightly tests to continue ordinary prototype work. Run another complete suite only for an explicit acceptance request, a broad regression or a concrete failure needing that scope. Record whether a result is targeted or complete.
scripts/testing/ci_scope.py still classifies actual Git diffs for image admission
and retains conservative full selection for scheduled/manual verification. Its
rename, missing-history and sensitive-change controls remain in the daily suite.
Image publication scope
The preview and migration image workflows use the same complete Git comparison
with ci_scope.py --images before allocating a Docker runner. Only root
README/AGENTS/CHANGELOG, handbook/site assets and their rendering tools can skip
image work. Package-local Markdown, LICENSE/THIRD_PARTY, frontend, Cargo, fixtures,
runtime scripts, Compose, Dockerfiles, workflow changes and unknown paths still
build and smoke-test. The registered scope tests check the real Docker COPY inputs
against the skipped paths, including rename and multi-commit counterexamples.
Documentation publication and required verification remain independent. A docs-only
commit publishes the handbook without creating a new runtime image or moving its
tag. Missing history, empty changes and manual workflow_dispatch requests build.
If documentation lands while an earlier image is building, that tested image can
still advance the preview tag. Newer runtime changes, divergent history and an
unavailable comparison prevent promotion. The tag retains the actual built SHA.
Use Run workflow to rebuild intentionally; only the main branch can publish.
PRs touching image admission exercise the actual images without registry login or
publication. Existing packaged signup, private sandbox, session restart and non-root
Rust migration health checks still run whenever an image is built.
Complete daily run
After admission, complete frontend verification runs in parallel with the
Rust/formal/native jobs. The existing required verify job waits for all full-run
results, checks immutable coverage artifact IDs and rejects incomplete evidence.
These full jobs are skipped intentionally in the documented quick lane only.
No full daily scope or coverage floor was removed by changing the cadence.
Native integration uses three independent CI partitions with separate PostgreSQL,
Qdrant, files and ports on separate runners. core runs the ordinary registry;
signed runs signed_runtime, including its complete restricted-login HTTP
repetitions; pooler runs signed_pooler and transaction_pooler, including their
real one-backend PgBouncer checks. The single suite registry remains authoritative.
Partition validation rejects duplicates and missing special suites. A newly
registered suite automatically enters core; it cannot disappear between jobs.
The app-generation provider fixture additionally owns a fresh disposable database inside its partition. Earlier suites intentionally leave durable tasks for recovery tests; restarting all workers against that shared state could send unrelated requests to a newly rebound loopback model. Generation keeps real workers and the complete provider-wire assertions, starts with no unrelated model requests and drops only its own uniquely named database after stopping its process.
The native collector waits for every partition. It checks source commit, workflow run, producer attempt, Rust toolchain, absolute workspace paths, registry digest and every raw profile checksum before copying any measurement. It rebuilds the matching instrumented objects without rerunning tests. LLVM combines raw Rust profiles and coverage.py combines Python measurements; no percentages are averaged or manually added. The existing final policy and floors remain unchanged. Corrupt, missing or substituted profiles fail the run. A failed matrix job prevents native admission even if the other partitions succeeded.
Local verification remains sequential by default. --partition core, signed or
pooler selects a complete partition and rejects --only, --existing-database
and --parallel-pooler. The existing optional --parallel-pooler subprocess mode
is still available locally with its own disposable Qdrant endpoint. Its owned
process group, mandatory join and failure behavior are unchanged.
Run the registered test_integration_partitions, test_partition_coverage and
test_parallel_check tooling tests for complete partition admission, rejected
coverage substitutions and actual child-process cleanup. Each integration suite
continues to print its duration. The successful pre-split native job on 29 October
2026 took 37m13s, of which integration consumed 1781.33s. New wall-clock results
must come from a complete successful run, not a projection from isolated suites.
Each job uploads an immutable coverage artifact. The final job downloads the exact IDs returned by those jobs, checks the checkout SHA, workflow run and SHA-256 of each actual report, then runs the existing combined coverage policy and complete source inventory checks. A successful job from an earlier attempt of the same run can be reused when retrying failed jobs. Different commits/runs, future attempts, missing reports and changed contents are rejected. Artifact names include attempts so reruns cannot overwrite earlier evidence. Full HTML reports and integration logs remain available beside the final combined summary; coverage floors are unchanged.
Run python3 scripts/testing/test_ci_gate.py for failed/skipped job and report
transfer controls. It is also registered in the native tooling suite. Workflow
syntax is checked with actionlint .github/workflows/verify.yml.
The 23 October complete run and actual targeted retry
passed: frontend feedback after 3m55s, full required verification after 48m15s,
and frontend-only repetition with reused native reports after 3m41s. The evidence
also records summed runner time and native-test variation; these observations are
separate from the older sequential baselines below.
Frontend-only coverage reuses the same policy and source completeness check; it does not fabricate fresh Rust/Python measurements or change their full-run floors. Full runs retain both native separate-login and pooler/multi-replica regressions. Each integration child logs its start and elapsed time, with unbuffered Python output, so a slow suite is visible instead of hidden inside one long CI block. The exact generated source inventory is checked before compilation or integration tests, as well as in the existing structure gate. Missing inventory updates fail immediately without waiting for the daily database suites. The existing reviewed source/build-input registry is also checked before compiling. The later complete formal proof, conformance and mutation checks remain required.
This optimizes development feedback. A green fast check is not a new whole-system acceptance or evidence of live provider payments. The current prototype can use short, coordinated deployment restarts; no zero-downtime fleet migration is required for an ordinary UI or documentation release. Existing demo data is still retained.
Build and rollout time are separate from verification time. The 16 October
bustling-bulb-1104 hosted release took 9m12s to build and 11m50s through the
complete serialized workflow. Northflank displayed remote cache disabled; its
BuildKit disk-cache option was also disabled. No cache capacity was provisioned
in this acceptance. The existing Dockerfile separates frontend and Rust stages,
so retaining unchanged layers is the next concrete optimization, followed by a
measured cold/warm comparison. Northflank's cache guide
requires persistent cache capacity and an initial successful population build;
enabling a setting alone is not evidence of a faster release.
Measured full-run cost: 21 October
The successful PR #190 full run took approximately 52 minutes. Its timestamped logs show 38.8 minutes in the registered integration step, 4.9 minutes in formal mutation controls, 3.1 minutes in the complete frontend step and 2.1 minutes in the Rust test/build step. Inside the integration step, the signed-runtime repetition took 14.5 minutes and the signed transaction-pooler repetition 3.7 minutes; these are nested timings, not additional time outside the 38.8 minutes.
The succeeding PR #191 full run completed in 45 minutes 29 seconds, including 33 minutes 13 seconds in registered integration tests. All 133 frontend test files / 779 tests passed alongside the Rust workspace, native HTTP/PostgreSQL, formal controls and coverage checks. This run-to-run difference is an observation, not an attributed optimization.
The signed-runtime path intentionally repeats the native HTTP registry using the separate restricted tenant/system logins. The pooler path additionally checks small-pool transactions, current authority and two-replica/key-rotation behavior. Removing these repetitions would remove meaningful production-boundary coverage. The next optimization to measure is concurrent independent database/runner lanes, with separate logs and complete merged coverage. No such speedup is claimed yet; the complete daily/manual run keeps this verification scope unchanged.
Merchant catalogue setup: Current source/upload workflow, native CSV/model/media suites and evidence limits.
Agent authority: Current hosted control, checkout and session acceptance, including separate full/backend and frontend-only source boundaries; older measurements below retain their original dates.
Studio setup and access: Channel wizard fixes, reusable roles, current grants, central B2B configuration and guided company creation.
Fixed shared app storage — 15 October 2026
Storage model, limits and maintenance cutover.
The registered app_shared_storage suite creates eight actual shops and installs
32 indexed packages through HTTP. Physical table/index counts remain unchanged.
It checks typed keyset filters, equal-ID isolation, six competing unique writes
(one success, five HTTP 409 conflicts), protected projections and scoped F5 resets.
app_storage_migration replays the original SQL migrations 001–100 into a separate
database and populates historical physical models. Migrations 101–102 preserve
inactive apps, personal previews, IDs/revisions, large integers, localized NULL/empty
values, cyclic relationships, immutable histories and app-owned document quotas.
Missing targets, an unknown dependent SQL view and an idle configured Core login
must abort atomically; the successful migration drops only the exact verified old
table set without CASCADE and emits no invented business changes.
Existing app, schema, relation, callback, ontology, jobs, assets, native component
checkout, staging and visual page/form suites exercise the same store. The strict
signed_runtime and real one-backend signed_pooler suites additionally exercise
separate non-owner system/tenant logins, signing-key rotation, restart and denied
schema/projection access. These are local verification contracts, not proof of a
completed production migration or unlimited data/throughput capacity.
The existing identity_broker suite now constructs an actual separate pre-055
database from original SQL and ledger checksums. The native migration process must
upgrade it through storage consolidation, install its missing managed Storyfront
package and validate the hosted FK before any HTTP read. Two serving processes
then expose the original managed connection without changing its package revision
or version history. Rewinding only migration 055 on an already post-102 database
was an invalid historical fixture; it is not retained as an alternate runtime path.
Agentic directory grids — 14 October 2026
Guide and actual browser captures. The complete local frontend run passes 493 tests in 88 files. V8 coverage measures 64.63% lines, 63.33% statements, 57.23% branches and 52.27% functions across the declared host and trusted app scope. These are measured figures, not 100% coverage. All 243 Rust unit tests, format/all-target Clippy, source/route inventory and four-language gates pass.
Seven affected real PostgreSQL/HTTP/provider suites pass: workspace_roles,
merchant_operations, catalog_management, customer_accounts, grid_directory,
tenant_isolation and read_performance. Grid counterexamples check whole-directory
filters and sorting, localized product-name order, tuple cursors, SQL-looking text,
current role/PII denial, foreign tenants/cursors, empty operational staging,
invalid model fields and provider failure. HTTP and MCP return the same native rows.
Fixtures create customers/orders through native Store API, use isolated databases
and a loopback model; no live payment, real customer or paid model call is made.
Chrome acceptance verifies reviewed customer filtering, order detail/return with criteria retained, category/customer-group filters, persisted column ordering, explicit/keyboard popup close, dark appearance and a 390 × 844 viewport without page overflow. App table forms preserve existing actions and use the same layout shell. This does not establish arbitrary app full-text/model support or live-model semantic quality. The existing 54-policy / 156,657-case formal gate passes with zero mismatches and 155 rejected mutations; the grid's SQL, async code and UI are reviewed/tested adapters, not new whole-system proofs. The additional strict-provider counterexample initially failed on unused null fields. Real HTTP/MCP OpenAI Responses fixtures now pass after central configuration and a native restart: only recognized optional nulls disappear, false stays a filter, null identity keys fail closed, and empty supported plans are rejected. These checks use a synthetic loopback key, not an external model account. The rendered site checks 211 pages, all 204 Markdown sources and 5,032 local links/assets, including the illustrated guide and capture provenance.
The full PR run exposed a navigation-test cold-import timing assumption: its default one-second wait expired while the real lazy workspace was still loading. A temporary 1.4-second delay on the actual order-module import reproduces that failure. The corrected readiness wait passes the same delayed path, retains its content/request assertions and bounded budgets, and the diagnostic delay is removed from the committed test. This is functional readiness evidence, not a performance claim. Native workflow/group metadata are now explicit navigation fixtures.
System consistency audit — 14 October 2026
The subsequent legacy-ownership case exposed a separate real admission defect: a new account could see an old email-only guest order. The new regression models the historical persisted shape only in the disposable database. The corrected native account/download owners share one immutable customer-ID SQL predicate; existing digital/PDF tests additionally verify denied claimant access, preserved original guest-cart capability and admitted CRM/merchant access. Unbound old records are not silently assigned or financially rewritten. SQL execution remains outside the selected Lean proofs.
The identity-class follow-up also reproduces a forged verified-purchase badge
through typed guest email. The corrected review producer and native numberOfReviews
rule consumer are tested together: guest-email inheritance is excluded, actual
account submission is counted, and the real original cart can still review its
purchase. All nine affected native suites pass. A separate native migration-only
upgrade confirms 093 withdraws the old badge while retaining approval/text/rating.
Second pass and full component matrix:
49 registered native HTTP/PostgreSQL/provider suites pass at b4fb561, followed
by a reproduced history-discovery counterexample and its targeted repair. MCP now
requires the same entity read/write/PII conjunctions as invocation. Rust format,
all-target Clippy and 243 tests pass. Private Experience 6563b2d passes its
complete check with 230 tests, type/structure/localization checks and build.
The private entry-chunk size warning remains visible. This refresh adds no paid
provider calls, fresh dense-Qdrant test, public full-flow acceptance or claim of
100% coverage. The targeted repaired roles/history/isolation rerun passes, including
the new denied-access cases. The regenerated site validates 211 pages, all 204
Markdown sources and 5,036 local links/assets. The previous pass's evidence remains
dated below.
The old empty-registration public probe failed before native policy admission.
hosting_check.py now uses the native DTO shape with deliberately invalid email
and an empty password, so no account/shop can be created even if signup is open.
The refreshed public health/unauthorized-operator/closed-signup checks pass.
Fifteen tooling tests cover expected JSON, non-JSON denials, wrong status/shape
and oversized responses; failures retain bounded diagnostics rather than becoming
successful gateway claims. Typed-body extraction can still produce a plain-text
422. This is not completed public onboarding or authenticated end-to-end acceptance.
Full findings and boundaries. Thirteen selected
isolated HTTP/PostgreSQL/provider suites passed before new counterexamples
exposed knowledge-source stage rights and HTTP/MCP automation admission defects.
The repaired paths passed seven affected suites plus new narrow-role regressions
in testing/consistency_boundaries.py. Existing tests alone had missed those
cross-boundary cases. All 242 Rust tests, format/all-target Clippy, exact
source/route inventory and existing 54-policy / 156,657-case formal gates pass;
the mutation gate rejects 155 broken policies. Private Experience's complete
check passes 230 tests. No new coverage percentage or whole-system guarantee
is inferred; no live provider or paid AI call was made.
The rebuilt documentation passes 208 pages, all 201 Markdown sources and
4,957 local links/assets, including this audit.
Fulfillment, carrier app and identity verification — 14 October 2026
The local fulfillment run passes 483 frontend tests in 87 files and 242 Rust unit tests across the native library/core and independent service binaries. Measured frontend coverage is 64.12% lines, 62.84% statements, 56.89% branches and 51.56% functions. These figures are dated local measurements, not 100% coverage.
Real PostgreSQL/HTTP/MCP suites cover package quantity/price/stock conservation, concurrent replay, current rights, customer projection, one Flow effect, selected package delivery-note PDFs, immutable private carrier documents, quota recount and atomic saturation denial. A carrier-neutral test-only service drives actual native jobs, PDF/tracking, confirmed-no-effect release and unknown-effect allocation/dispatch fences across a native restart. A real split event drives a current-actor idempotent Flow job and attaches one original label. A shipping clerk cannot read another actor's job and loses private results immediately on permission removal. No live carrier, email or paid booking is used. Source ownership, route rights, inventory and localization checks pass; shipping setup and limitations. The rendered documentation checks 207 pages, all 200 Markdown sources and 4,919 local links/assets. Manual Chrome acceptance confirms one click produces two native packages with conserved order value and a package-specific delivery-note selector.
Native merchant/operator MFA, verified-email recovery and scoped handoffs were landed separately; their source/HTTP/browser checks are recorded in account security. The combined local formal check covers 54 extracted policies and 156,657 compiled Rust/Lean cases with no mismatches; SQL, provider effects and the rest of the runtime remain unproved.
Studio setup and access verification — 13 October 2026
The isolated local run passes 477 frontend tests in 85 files, plus 232 Rust unit tests across the library, core and bundled service binaries. The frontend V8 report includes the declared host and trusted app source scope: 64.04% lines, 62.73% statements, 56.93% branches and 51.34% functions. These are measured local values, not 100% coverage or confirmation of public deployment.
Real PostgreSQL/HTTP checks cover channel creation, role changes and concurrent delegation, current key/callback grants, PII denial, tenant isolation, native B2B/UCP setup and feature switches. Browser checks use synthetic accounts and confirm POS/marketplace creation, preserved App Studio drafts, company/customer linking, B2B settings and read-only product navigation. The complete documentation build checks 203 pages, all 196 Markdown sources and 4,983 local links/assets.
Connected feature audit — 12 October 2026
Integration map and repaired boundaries. Real isolated PostgreSQL/HTTP regression runs cover POS, B2B history and policy staging, inherited analytics settings/capture, selective release, settings scopes, customer history, foreign-tenant references, legal consent, currency behavior, native/app automation, EDI and marketplace provider fixtures. Denied writes inspect unchanged live state; B2B staging checks current live spending and preserves employee grants. App Flow publication checks the current installed target, action-specific rights and activation. No real AI, customer email, payment or seller account is used by these fixtures.
The current frontend run passes 470 tests in 84 files. The complete Rust unit run passes 224 tests across the library, Core and bundled service binaries; formatting, all-target lint and production builds pass. The existing 51 extracted policies match compiled Rust/Lean in 155,347 cases, with no mismatch; this adds no whole-server proof. The documentation build checks 200 pages, all 193 Markdown sources and 4,850 local links/assets. Explicit API rights, modular source inventory and four-language gates remain required. Dated coverage numbers below belong to their original source/CI; this audit does not claim 100% coverage or whole-system proof.
MCP stack regression — 13 October 2026
The complete Linux coverage build found a worker stack overflow at MCP pos.cart
after native POS setup succeeded. The server log confirmed stack overflow rather
than a payment/order failure. Small future-state size checks failed to expose the
much larger unoptimized poll frame, so they are not an acceptance test.
The shared dispatcher now chooses a boxed domain future synchronously before its
child is polled. Existing real pos and b2b HTTP/PostgreSQL/MCP suites pass locally
with RUST_MIN_STACK=1572864 (1.5 MiB), including sales, receipts, history and policy
publication. This is a constrained local regression run, not a portable stack-size
guarantee. Production stack limits remain unchanged; full Linux coverage CI must
pass before release.
Behavioral intelligence verification — 12 October 2026
The new registered behavior_intelligence suite runs real PostgreSQL/API/MCP
requests with synthetic guests and customers, native cart changes and a simulated
order. It rejects forged identity/purchases, foreign tenants, conflicting replay
and consentless intake; checks independent withdrawal, self-export/erase, expired
reads, hourly admission and ledger RLS with NOSUPERUSER NOBYPASSRLS. The existing
tenant_isolation suite additionally checks all four new composite foreign keys.
Related legal/account/knowledge suites remain green. Six UI regressions cover
consent, scope reset, links, graph keyboard access, failed reload, search privacy
and stale private-journey responses. Desktop/mobile screenshots use an isolated
synthetic shop, with no paid models, customer mail or real payment calls.
Ownership and functional boundaries.
The prototype has automated behavior checks, actual PostgreSQL/Qdrant integration (plus legacy conversion checks), original Shopware comparisons and partial Lean contracts. It is not fully tested at 100%, and neither coverage nor the Lean subset proves the entire system bug-free.
Current acceptance (9 October 2026)
Complete change and end-to-end record joins the
source owners, all registered suites, actual browser/private purchase checks and
remaining audit work. The completed merged-Core CI at 598bbec measures Rust
90.55% lines / 87.94% functions / 87.24% regions, frontend 63.23% lines /
54.78% branches / 51.14% functions / 61.94% statements and Python tooling/reference
scope 81.34% lines / 57.80% branches. Exact source/CI artifact summary.
Dated measurements below retain their original source. That dated suite had 187 Rust unit tests and 388 frontend tests; the private Experience application and original Storyfront container have separate evidence and no claimed percentage.
Source architecture
- Rust: 414 source modules (merged cognitive release, 9 October 2026), each with a responsibility header, at most 320 lines;
main.rsat most 120. Existing domain folders remain independent of extension app implementations. - Frontend: separate
admin/,storefront/,platform/andshared/ownership. Views/controllers and styles are limited to 400 lines; locale data has a documented 700-line allowance. Runtime cycles, unresolved local imports, crossing application boundaries, missing folder contracts and undocumented source files fail CI. - Bundled Email/GA4/Gmail/Slack implementations are Rust modules under their
extensions/apps/<app>/package; shared service hosting is inextensions/services/connectors/src/; independent app examples and browser SDKs remain underextensions/. Python test tooling lives underscripts/and the previous connector is an archived comparison oracle inreference/. The generated inventory covers runtime/tooling sources and is checked for drift. - Studio workspaces load lazily. Root application routing is isolated in
frontend/src/application/; error boundaries keep workspace failures inside the current view and provide reload recovery for rejected cached module imports. The removedCommerceManagerhad no call site and duplicated old operational UI. Order state management remains inadmin/orders/OrderWorkflow.tsx; product review moderation lives inadmin/catalog/ReviewModeration.tsx.
frontend/tests/architecture.mjs also inserts deliberately broken synthetic imports,
a cycle, an oversized file and absent documentation into temporary directories;
it verifies that the architecture checker actually rejects each defect.
Repeatable checks
From the repository root:
cargo fmt --check
cargo clippy --locked --all-targets -- -D warnings
cargo test --locked
cargo build --locked --bins
npm --prefix frontend ci
npm --prefix frontend run format:check
npm --prefix frontend run build
npm --prefix frontend run architecture
npm --prefix frontend run localization
npm --prefix frontend run test:coverage
python3 scripts/formal.py
python3 scripts/formal/mutations.py
QDRANT_URL=http://127.0.0.1:16333 python3 scripts/verify_integration.py
Local integration creates and removes its own uniquely named synthetic database;
existing shops remain outside that run. The default database container is
veyndo-postgres-1; override it with --container. It uses DATABASE_URL
from the process or the local .env. CI uses the same owned disposable database
path. --existing-database remains an explicit local disposable-fixture override. Failures remain failures, and child processes stop
before database cleanup. SIGINT flushes optional Rust coverage profiles.
scripts/testing/suites.json is the single registry for HTTP suites, local provider and connector suites, browser contracts and verification tools. It records the current suite names and execution order. The local server uses an offline model URL; live model checks are separate, opt-in checks. Credentials, payments, mail and Slack are exercised against loopback protocol fixtures. Passing these does not demonstrate a real provider account.
The currencies suite exercises channel restrictions, Store API/MCP/UCP agreement,
fixed and converted prices, shipping/coupon conversion, stale checkout reviews,
immutable orders and grouped revenue. payment_providers tests create/capture/refund
with EUR/USD, zero-decimal JPY and three-decimal KWD against a local protocol fixture.
production_foundations denies cross-tenant currency-job SQL access using non-owner
roles, then restarts a worker after its first 100-product batch and verifies completion,
exact midpoint rounding and exclusion of products created after the job snapshot.
See multi-currency commerce for the configuration and proof boundaries.
The original-PHP comparisons and reflected automation catalog checks are:
python3 scripts/differential.py
python3 scripts/context_differential.py
python3 scripts/delivery_differential.py
python3 scripts/rule_differential.py
python3 scripts/automation_registry.py
python3 scripts/automation_differential.py
python3 scripts/money_boundary_differential.py
The automation suite also executes scripts/playground.py as documented: a new
owner-owned shop, repeat setup after an edited rule, both checkout branches and
actual invoice records. tooling_tests.py checks refusal of remote credential
destinations and unsafe state file symlinks, alongside runtime ownership and
coverage reporting contracts. See
the manual tour for the corresponding browser steps.
Production boundary regressions
production_foundations runs two non-owner, non-bypass PostgreSQL replicas and
repeats native checkout, CRM and adversarial tenant checks. It rejects unsafe
TRUNCATE grants, omitted/forged tenant predicates, stale operator quotas and
corrupted stock snapshots; it tests commit-only cache eviction and daily AI usage
shared across live/staging. The 32-client scalability fixture explicitly configures
32 tenant permits. Production defaults and saturation policies remain configurable.
The architecture guide explains exactly what these
checks and the Lean subset establish.
Component regressions
frontend/tests/unit/ uses real components/hooks/transports, synthetic domain
fixtures, jsdom and Testing Library. Fetches fail by default unless explicitly
supplied by a test. Cases include:
- merchant authentication, chat failures, language changes, uploads and separate live/staging transports;
- navigation through permission-filtered lazy Studio workspaces and a signed-out login path;
- catalogue filtering, cursor pages, stale responses, customer-session expiry and forbidden operation replay;
- independent default addresses, linked customer/order/product back paths, configured translated groups, lazy history and confirmed revision-bound restoration with retained failed drafts;
- opt-in personalization, ranking, consent withdrawal and failed signals;
- product gallery, variants, normalized purchase quantities, tier prices, SEO, reviews and public source-backed product questions;
- delayed product answers after navigation and product-specific moderation with rejected writes;
- connected flow branches/deletion, frozen execution traces, incomplete JSON drafts and source condition round-trips in four languages;
- SMTP/Resend/SendGrid fields, saved secrets, read-only settings, translated templates and explicit dry-run test calls.
Coverage collection
Frontend coverage includes every frontend/src/**/*.ts and
frontend/src/**/*.tsx, plus TypeScript/React modules owned by
extensions/apps/**, including modules never imported by a test.
HTML, JSON, LCOV and summaries go to
frontend/coverage/. App source globs resolve to absolute package paths and V8 external-file collection is enabled; the report rejects omitted app modules as well as omitted host modules. Styles and independent guest app bundles are outside that
statement metric and explicitly listed as separate scopes.
For Rust install cargo-llvm-cov 0.9.1 and llvm-tools-preview. Use the same
instrumented binaries for units, original-PHP comparisons and the actual HTTP
integration run:
export CARGO_LLVM_COV_TARGET_DIR="$PWD/target"
cargo llvm-cov clean --workspace
eval "$(cargo llvm-cov show-env --sh)"
cargo test --locked
cargo build --locked --bins
# Run the integration and comparison commands above, then:
mkdir -p artifacts/coverage
cargo llvm-cov report --json --output-path artifacts/coverage/rust.json
cargo llvm-cov report --html --output-dir artifacts/coverage/rust
Mutation variants write profiles outside the real-core report directory; deliberately broken code cannot inflate the production coverage metric.
The Rust report measures lines, functions and regions, not branch coverage. The JSON preserves every module in this instrumented scope. Do not call covered regions exhaustive branch coverage.
Python instrumentation is a development dependency, not a production service dependency. It collects subprocesses and includes untouched namespace modules:
python3 -m pip install -r scripts/testing/requirements.txt
COVERAGE_PROCESS_START="$PWD/scripts/testing/.coveragerc" PYTHONPATH="$PWD/scripts/testing" python3 scripts/verify_integration.py
python3 -m coverage combine --rcfile=scripts/testing/.coveragerc
python3 -m coverage json --rcfile=scripts/testing/.coveragerc
python3 -m coverage html --rcfile=scripts/testing/.coveragerc
python3 scripts/testing/coverage_report.py
The report covers Python app/service sources and verification tools, so its
percentage must not be presented as coverage of the Python services alone.
Before a fresh standalone Python measurement, remove only the prior synthetic
artifacts/.coverage* data, to avoid mixing historical executions.
CI uploads complete reports and lists zero-hit modules and unmeasured scopes.
coverage-policy.json locks the measured regression floors; Studio transport, server-health and workspace-boundary
modules require 100% lines, branches, functions and statements.
Adding a source file counts in the denominator. Raising those floors is an
explicit reviewed change; do not silently lower them to obtain a green check.
Explicit 100% audit and open work
npm --prefix frontend run test:coverage:full
python3 scripts/testing/coverage_report.py --require-full
These commands currently fail, as they should. The second also rejects a full system claim while browser SDK/example-app JavaScript and Wasm instruction coverage remain unmeasured. CSS requires visual behavior checks; live OAuth credentials, external inference and production deployment need their own verification.
The initial measured snapshot is in quality-baseline.json. The largest remaining frontend gaps include order-detail edits/documents, customer/address edge cases, full operator workflows, app iframe errors and complex rule/flow interactions. Coverage HTML shows individual missed statements and branches, not only totals. Future changes must add behavior regressions in these owning modules and increase coverage; a passing threshold is not completion of the 100% objective.
Lean source review locks and mutation checks continue in CI unchanged in scope; see formal verification for precisely what is proved.
The account composition regression exercises both login and registration through
CustomerAccount → CustomerSignIn → shopApi. The simulated transport rejects
protected profile/address/order reads unless the form persisted the exact
tenant session key. This reproduces the former React-reserved key prop bug;
backend address/customer isolation is separately exercised over real HTTP.
Studio session regressions reproduce a product 401 after a previously loaded overview, verify that all private controller state is cleared, and reconnect with a renewed token. Shared merchant calls and focus revalidation exercise the same path. Negative cases cover 403/5xx, customer/provider/operator errors, invalid login attempts, old-token replies after reauthentication, coalesced reads, hidden tabs, overlapping checks and timer/listener cleanup. Browser verification uses the existing personal test account; no expiry bypass or new privileges are added.
International configuration regression scope (2026-10-05)
New PostgreSQL suites cover complete bundled geography, custom countries/regions, US destination taxes in actual product/cart/order paths, saved-rule conditions, non-English main-language inheritance and stale/foreign configuration rejection. Translation fixtures cover Ollama/OpenAI/Claude wire formats, durable full-catalogue drafts, cold restart, stale apply, repeated apply and permission/tenant denial. They perform no paid model calls. React tests exercise keyboard/group country selection, missing-field inheritance and a shared settings draft across navigation. UI screenshots supplement these tests; neither replaces whole-source coverage.
Recorded international-commerce verification
CI run 37285967720
verified the international-commerce tree merged as 852f3d1 on 5 October 2026:
67 Rust unit tests, 90 frontend tests and the registered 25 HTTP / 3 provider /
4 browser-contract suites. The complete measured report, including untouched
modules and unmeasured scopes, is checked into quality-baseline.json.
| Scope | Lines | Other measured metrics |
|---|---|---|
| Rust | 81.00% | Functions 78.41%; regions 77.84% |
| Frontend | 42.28% | Branches 36.34%; functions 32.49% |
| Python | 74.11% | Branches 52.78% |
These percentages retain the separate source scopes above and do not establish 100% coverage or whole-system correctness. Regression floors were preserved.
Company profile HTTP/database checks run in the suite registry as company_settings; the scope, decoder/ACL, issuer snapshot, translation and selective release cases are detailed in company settings. They use synthetic tenants and local image bytes, with no external payment/model/OAuth traffic.
Channel settings and media workspaces (2026-10-05)
See the settings/media guide for the current single-language editor, field-level checkout overrides, dependency-safe method removal, gallery and optional private image jobs. These are native prototype extensions; they do not establish additional full Shopware API/DAL parity, current tax law, paid-provider quality or whole-system formal certification.
App library regression scope (2026-10-05)
Eight component regressions exercise translated search, categories/status/discovery, installation followed by the real detail page, cancellation and failed activation, viewer restrictions, registered native interfaces, locale inheritance and independent artwork failure fallbacks. The isolated PostgreSQL app suite checks metadata round trips, tenant separation, immutable same-version digests, unsafe artwork refusal and the actual shop main language. Strict model-schema regression keeps optional presentation compatible with both provider request formats.
The app-library clean frontend run passed 137 tests: 50.16% statements, 43.76% branches, 41.35% functions and 50.98% lines across all included source. These measurements are not whole-system 100% coverage. Actual browser checks supplement component tests with desktop and 375px layouts. The affected apps, app surfaces, App Studio and developer-document HTTP suites pass using local fixtures, without paid calls.
Connected knowledge workspace (2026-10-05)
The current clean frontend run passes 151 tests across 26 test files, including ten knowledge regressions: whole-shop census, a single inherited-language editor, explicit empty values, non-English main language, guarded publication, viewers, retrieval scope, failed edits, actual product navigation and recommendation review. Across all included source the run measures 52.16% statements, 45.88% branches, 43.10% functions and 52.99% lines. This is a measured frontend scope, not a whole-system coverage update or a 100% claim.
84 Rust unit tests, strict lint/format, the extraction/Lean gates and negative
mutations pass. The affected isolated PostgreSQL/AGE suites (knowledge_workspace,
developer_documents, apps, staging, connected_apps, automation) exercise source hashes,
public/private/archive fences, enabled-language retrieval, >50-source pagination,
optimistic revisions, graph reassignment, granular HTTP/MCP access and selective
release. Local provider fixtures prove private document passages reach the actual
merchant model prompt and disappear after archive. No paid provider calls are used.
The knowledge suite also follows source ingestion through a product-scoped event rule into a durable completed flow without an order. Four UI regressions retain the stable trigger IDs while translating their labels EN/DE/FR/ES.
Browser checks cover inherited source creation in App Studio Lab, private customer exclusion versus merchant retrieval, the real product preview, desktop and 375px layouts. See the knowledge guide for source ownership, HTTP/MCP contracts, screenshots and the fixed-model/causality boundaries.
Adversarial tenant isolation
The registered tenant_isolation HTTP suite uses two synthetic workspaces, real
merchant/customer sessions, direct MCP/UCP calls, foreign IDs, forged scope
headers, same-ID app records and revoked one-workspace integration keys. It
re-reads victim state after denied mutations. The database helper tests all 22
new composite foreign keys with own/foreign controls, scans tenant foreign keys
for missing scoped counterparts, and tests forced app RLS under a restricted
role including context reset on the same connection. It runs automatically via
the existing CI integration registry, with zero provider calls.
Exact scope and remaining core-RLS boundary. Grouped checks are behavioral evidence, not 100% endpoint/authorization coverage.
Checkout verification (6 October 2026)
The checkout change passes 226 frontend tests across 34 files (including twelve
checkout regressions) and 96 Rust unit tests. The preceding 75bd24a whole-source
frontend coverage snapshot measured lines 60.78%, statements 59.70%, branches
53.50% and functions 49.32%. These figures are
frontend-only and do not replace the older full-stack baseline report.
Real isolated SQL/HTTP suites verify review admission (five checks), native payment wire behavior (ten checks) and tenant isolation (38 checks). The browser saved a synthetic order after explicit review; 390-pixel emulation had no checkout content overflow. No paid model/PSP calls were used. The public Studio's origin fix was verified separately with allowed-origin 200, foreign-origin 403 and a fresh merchant-owned test shop with products, eight discoverable apps and browser MCP.
Platform control-plane regressions (6 October 2026)
platform.py runs platform_control.py against disposable PostgreSQL shops and
a local synthetic model service. Sixteen combined checks include independent
operator grants, two-shop/fresh-process encrypted provider inheritance, stale
revisions, pause/background deferral, reversible trash, Host-based routing and
persisted measured-call latency. No external model or payment call is made.
shop-scope.test.ts covers public subdomain upgrades and protected/local URL
exceptions. platform-control.test.tsx covers independent entry links, write-only
key editing and typed-ID/reason confirmation before trash. The complete frontend
unit run passed 38 files / 261 tests; Rust passed 100 tests. Affected provider,
transaction/payment, app/flow/staging, translation/image/document/search and
tenant-isolation integration suites also run through their real local paths.
These checks are not live provider capability or a full-system security proof.
managed_search.py allocates its own loopback port, so an open local Studio
fixture cannot accidentally satisfy its readiness check. Qdrant-backed suites
require the actual configured local Qdrant address.
Core hardening regressions (8 October 2026)
The existing strict-runtime suite now checks persistent login backoff across two
processes, poison-event savepoint isolation and recovery, referenced/unsettled
retention, and database-wide admission saturation/expiry. transaction_pooler
repeats real checkout, customer registration/login, CRM, app/staging and RLS paths
through one actual PgBouncer backend; listeners stay on a direct runtime connection.
This exposed and removed nested pooled borrows under checkout/login locks.
CI installs PgBouncer 1.21+ and uses the same suite registry. Native execution may
select TEST_PSQL and TEST_PGBOUNCER; all databases and pooler processes are
isolated fixtures and cleaned up. Unknown route rights and trusted Principal
extraction also have unit/static controls. Implementation and boundaries.
These checks establish those behaviors, not 100% whole-system coverage, public rollout status, a speed-up percentage or protection against a compromised server.
App-platform v2 verification
Registered PostgreSQL suites exercise app_consent, app_callbacks,
app_preview, app_relations, app_schema, app_jobs, app_components,
app_assets, app_secrets, app_events, app_export and app_distribution.
They observe installed versions and actual records/DDL, denied foreign mutations,
lease fences, provider signatures, replay and export bytes. Existing apps,
services, staging, connectors and automation suites verify compatibility.
Frontend tests exercise native code-behind, action allowlists, actor draft restore, revision conflicts, iframe bundle rejection, controls and package consent. These are regression evidence, not a claim of 100% app/host coverage. Full semantic document tests additionally require the real Qdrant service; a missing retrieval service must be reported as an unverified environment dependency, never replaced by a mocked successful semantic result. See the security matrix.
App ownership checks
Architecture, localization, translation export and frontend coverage include trusted app UI under extensions/apps/. The Rust source inventory and verification review ledger include app and service Rust modules. scripts/testing/plugin_ownership.py checks canonical package layout and has rejecting controls for leaked core files and escaping symlinks. Provider and checkout integration suites continue to test existing HTTP/MCP/Flow behavior after relocations. This is source ownership and regression coverage, not a proof that every trusted compatibility adapter executes in a sandbox. See exact boundaries.
EDI export identity — repeated consistency audit, 14 October 2026
A full CI run exposed an intermittent repeated-export sourceHash mismatch.
The deterministic existing EDI suite now adds a native operational order note
between exports. Before repair, only the source hash changes while the document
is identical. After repair, the app fingerprints the actual serialized document
and explicit native source IDs/format/kind; the complete response stays identical.
Real EDI and native B2B suites, seven EDI Rust tests and targeted Clippy pass.
The original failure is retained; no equality assertion was weakened.
A separate read-only hosted check of Core 540e066 found the mandatory RLS switch
unset and no separate runtime credential. This is an open hosting configuration
issue, not evidence that local strict-RLS tests enable production protection.
See the complete status and prepared provisioning boundary.