Stall

Contract

What Stall is being built to do

Every clause of the product Stall is building toward, and how much of it the code does today. Judged from the code and tests, not from plans.

6 of 77 clauses done

  • 6 done
  • 34 partial
  • 37 missing

Judged at commit b4fc3b0 ·

How statuses are judged

Published clauses

1 done · 0 partial · 0 missing

of 1

Target and push further

5 done · 34 partial · 37 missing

of 76

Product target

Category
Ecommerce platforms (online storefronts)
Replaces
Shopify, Squarespace Commerce, BigCommerce, WooCommerce, Medusa, Saleor, Fourthwall
First buyer
A US small retailer or maker selling physical goods in USD through an owned branded online store

Progress by area

9 areas

Published · 8 areas

Target and push further · 1 area

All clauses

ClauseTitleStatusEvidence or gap
Runtime and store experience 1 done · 3 partial · 3 missing
HTTP-001publishedReal installed and published HTTP surfacesDonesrc/server.tssrc/base/static-assets.tstests/runtime.mjstests/ui/journey.mjs
DEMO-001targetHosted demo shop that sends nothingPartialsrc/demo.tssrc/stall/demo/providers.tssrc/site/shell/links.tstests/api/demo.test.mjsGap: The demo shop, simulated Stripe/Pier and an outbound-free purchase/approval test exist and the homepage links the hosted demo; no checked-in check follows that link to the hosted demo, and Stall's own tests do not exercise the production refusal of demo mode or an empty fresh installation.
STORE-001targetMerchant themes, page builder and custom domainPartialsrc/stall/ui/shop.tsxsrc/stall/ui/primitives.tsxGap: A fixed branded storefront exists; the theme library, switching, duplication, export/re-import, visual building, storefront password, domain management, revision controls and a measured performance run are absent.
STORE-002targetNavigation, collections and product discoveryMissingGap: No implementation found. Target journey not implemented.
STORE-003targetContent, blog, contact, newsletter and search visibilityMissingGap: No implementation found. Target journey not implemented, including the contact form and newsletter signup.
MOBILE-001targetAccessible mobile shopping and merchant workPartialsrc/stall/ui/shop.tsxsrc/stall/ui/app.tsxtests/ui/journey.mjsGap: The existing narrow shop/desk journey covers both widths; expanded flows and full accessibility conformance are unimplemented or unverified.
MOBILE-002targetNative merchant apps and timely order attentionMissingGap: No implementation found. Target journey not implemented.
Catalogue and stock 0 done · 4 partial · 1 missing
CATALOG-001targetProducts, variants and mediaPartialsrc/stall/products.tssrc/stall/model.tstests/api/commerce.test.mjsGap: SKU/name/description/exact-cent price and reviewed publication exist; variants, media, attributes, custom fields, personalization, cost, shipping and customs fields do not.
CATALOG-002targetBulk catalogue operations and portable filesPartialsrc/stall/imports/service.tssrc/stall/imports/targets.tstests/api/imports.test.mjsGap: Reviewed, journaled, reversible six-column Shopify product CSV import exists; broad schemas, bulk editing, quantity and inventory-CSV updates and product CSV export are absent.
STOCK-001targetLive availability through Pier or another stock systemPartialsrc/stall/pier.tssrc/stall/payments.tstests/api/commerce.test.mjsGap: Pier bin availability and paid-order reservations exist; selling still requires Pier (checkout binds every order to the Pier origin/customer). Configurable location/backorder policy, Stall-originated quantity adjustments and alternate adapters are absent.
STOCK-002targetExpiring checkout holds and stock race resolutionPartialsrc/stall/checkout.tssrc/stall/payments.tssrc/stall/orders.tstests/api/commerce.test.mjsGap: Checks before checkout and post-payment reservation/reconciliation exist; prepayment holds, expiry and shopper shortfall resolution do not.
STOCK-003targetStore-managed quantities and untracked items without a stock systemMissingGap: No implementation found: checkout and dispatch require Pier; untracked variants, store-managed counts and the opening-balance handoff are absent.
Cart, payment and commercial totals 1 done · 3 partial · 4 missing
CART-001targetPersistent cart and guest or account checkoutPartialsrc/stall/ui/shop.tsxsrc/stall/checkout.tssrc/stall/stripe.tstests/api/commerce.test.mjsGap: A transient basket, reviewed product total and email guest handoff exist; persistence/accounts/native address and delivery steps, personalization and merchant checkout fields are absent, and hosted addresses are AU-only.
PAY-001targetUS dollar cards, wallets, PayPal, pay-later and manual paymentsPartialsrc/stall/stripe.tssrc/stall/refunds.tstests/api/commerce.test.mjsGap: Stripe card Checkout/refunds exist in AUD; named wallets, PayPal, pay-later, manual methods and USD/US acceptance are unimplemented or untested.
PAY-002targetAuthorization, capture, cancellation and disputesPartialsrc/stall/stripe.tssrc/stall/payments.tssrc/stall/orders.tsGap: Canonical paid-session retrieval exists; distinct authorization/capture, void, dispute evidence and fee lifecycle handling is absent.
PAY-003targetVerified payment and duplicate-safe paid reservationDonesrc/stall/checkout.tssrc/stall/payments.tssrc/stall/pier.tstests/api/commerce.test.mjs
PROMO-001targetDiscounts, automatic promotions and controlled budgetsMissingGap: No implementation found. Target journey not implemented.
PROMO-002targetGift cards and stored redemption balancesMissingGap: No implementation found. Target journey not implemented.
TAX-001targetUS sales tax and exemptionsMissingGap: No implementation found. Target journey not implemented.
RISK-001targetFraud indicators and human reviewMissingGap: No implementation found. Target journey not implemented.
Fulfilment, orders and returns 0 done · 6 partial · 8 missing
SHIP-001targetShipping zones, live rates, international USD shipping, pickup and deliveryMissingGap: No implementation found. Target journey not implemented.
SHIP-002targetPurchase, print and void carrier labelsMissingGap: No implementation found. Target journey not implemented.
SHIP-003targetSplit fulfilment, tracking and delivery exceptionsPartialsrc/stall/fulfilment.tssrc/stall/pier.tstests/api/commerce.test.mjsGap: One approved whole-order Pier shipment/reference exists; splits, carrier tracking and delivery messaging are absent.
SHIP-004targetShipping profiles for specific productsMissingGap: No implementation found. Target journey not implemented: products carry no shipping profile, weight or rate data.
SHIP-005targetBulk label purchase and batch fulfilmentMissingGap: No implementation found: fulfilment prepares and approves one whole-order Pier shipment at a time; batch selection, labels and combined documents are absent.
SHIP-006targetMerchant shipping apps and 3PLs as fulfilment connectionsMissingGap: No implementation found. Target journey not implemented: no ShipStation or 3PL order export or tracking write-back exists.
SHIP-007targetLocal pickup and local delivery fulfilmentMissingGap: No implementation found: fulfilment has only an approved whole-order Pier shipment; pickup and local-delivery states, notices, lists and uncollected-order handling are absent.
ORDER-001targetComplete retail order deskPartialsrc/stall/model.tssrc/stall/orders.tssrc/stall/ui/orders.tsxsrc/stall/ui/presentation.tsxGap: Payment/reservation/shipment/refund records and a one-page desk exist; broader search, notes, manual orders and US time-zone behavior are absent (draft invoices are ORDER-005); current times use Australia/Perth.
ORDER-002targetExact shipment approval and one dispatchPartialsrc/stall/fulfilment.tssrc/stall/pier.tstests/api/commerce.test.mjsGap: Proven for current whole-order Pier shipments; alternate-connector dispatch and manual fulfilment with typed tracking are absent, and carrier/partial-fulfilment breadth remains SHIP-002/003.
ORDER-003targetReviewed line refunds without duplicate money movementPartialsrc/stall/refunds.tssrc/stall/orders.tstests/api/commerce.test.mjsGap: The AUD shipped-line partial-refund flow is covered; shipping-only and goodwill refunds without returned lines are absent (refund amounts are computed only from purchased lines), and pre-shipment cancellation, tax adjustments and return receipt remain separate target work.
ORDER-004targetVersioned edits, cancellation and claimsPartialsrc/stall/store.tssrc/stall/fulfilment.tssrc/stall/refunds.tsGap: Revision checks exist for current drafts/effects; general edits, cancellation and claims are absent.
ORDER-005targetDraft orders, custom lines and payable invoicesMissingGap: No implementation found: orders start only from storefront checkout; staff drafts, custom lines and invoice links are absent.
RETURN-001targetCustomer self-service returns, cancellations and exchangesMissingGap: No implementation found. Target journey not implemented.
RETURN-002targetPhysical receipt, restocking and reconciled resolutionPartialsrc/stall/refunds.tstests/api/commerce.test.mjsGap: Reconciled line refunds deliberately avoid restocking; return authorization, labels, inspection and restock workflow are absent.
Customers, follow-up and channels 0 done · 2 partial · 9 missing
CUSTOMER-001targetCustomer directory, accounts and order historyPartialsrc/stall/model.tssrc/stall/store.tstests/api/data.test.mjsGap: Orders retain buyer contact/address and commercial history; customer profiles, shopper authentication and self-service history are absent.
CUSTOMER-002targetConsent, preferences and customer privacyPartialsrc/stall/erasure.tssrc/stall/portability-policy.mjstests/api/data.test.mjsGap: Owner-directed contact erasure and later-journal fencing exist; consent/preferences, the storefront privacy banner, account requests and marketing propagation are absent.
CUSTOMER-003targetOne-click reorder from order historyMissingGap: No implementation found: there are no customer accounts or order history (CUSTOMER-001) and no reorder.
MAIL-001targetTransactional confirmations and delivery evidenceMissingGap: No implementation found. Shared sign-in mail infrastructure does not implement order/customer transactional notifications.
RECOVERY-001targetAbandoned-checkout recovery to a valid basketMissingGap: No implementation found. Target journey not implemented.
MARKET-001targetMango and consent-aware lifecycle marketing connectionsMissingGap: No implementation found. Target journey not implemented.
CHANNEL-001targetGoogle Shopping, Meta/Instagram, TikTok Shop and PinterestMissingGap: No implementation found. Target journey not implemented.
CHANNEL-002targetMarketplace adapters without becoming a marketplaceMissingGap: No implementation found. Target journey not implemented.
CHANNEL-003targetAd pixels, conversion APIs and custom storefront eventsMissingGap: No implementation found. Target journey not implemented.
CHANNEL-004targetEmbeddable Buy Button and checkout linksMissingGap: No implementation found. Target journey not implemented.
REVIEWS-001targetVerified reviews, upsells and cross-sellsMissingGap: No implementation found. Target journey not implemented.
Reporting, accounting and migration 0 done · 3 partial · 7 missing
ANALYTICS-001targetSales, conversion and contribution marginMissingGap: No implementation found. Target journey not implemented.
ACCOUNT-001targetReconciled QuickBooks Online and NetSuite postingMissingGap: No implementation found. Target journey not implemented.
MIGRATE-001targetFull reviewed Shopify migrationPartialsrc/stall/imports/csv.tssrc/stall/imports/service.tstests/api/imports.test.mjsGap: Only a bounded six-column product CSV stages simple unpublished products; full Shopify objects, media, variants, customers, orders, content pages, blogs, menus, discounts and redirects are absent.
MIGRATE-002targetSquarespace Commerce migrationMissingGap: No implementation found. Target journey not implemented.
MIGRATE-003targetBigCommerce migrationMissingGap: No implementation found. Target journey not implemented.
MIGRATE-004targetWooCommerce and extension migrationMissingGap: No implementation found. Target journey not implemented.
MIGRATE-005targetOpen-engine and creator-store move-inMissingGap: No implementation found. Target journey not implemented.
MIGRATE-006targetCutover completeness, source limitations and outstanding liabilitiesPartialsrc/stall/imports/service.tssrc/stall/imports/targets.tstests/api/imports.test.mjsGap: Current product import binds reviewed source/native snapshots and protects undo; complete cross-platform cutover, media, redirects, customer activation and outstanding liability handling are absent.
MIGRATE-007targetProduct review and rating migrationMissingGap: No implementation found: the only import target is products; review import, mapping and rendering are absent.
EXPORT-001targetBusiness CSVs and complete merchant exitPartialsrc/stall/tools.tssrc/stall/portability-policy.mjstests/api/data.test.mjsGap: Complete supported commercial archives exist; business CSVs and new target-object exports are absent.
Roles, integrations and dependable operations 4 done · 9 partial · 0 missing
ROLE-001targetStaff and app least privilegePartialsrc/stall/access.tssrc/stall/model.tssrc/stall/api.tstests/api/commerce.test.mjstests/api/data.test.mjsGap: Native owner/admin/member roles and revocation exist; functional staff scopes, refund limits and customer/app roles are absent.
AGENT-001targetHuman approval of exact agent draftsPartialsrc/stall/api.tssrc/stall/products.tssrc/stall/fulfilment.tssrc/stall/refunds.tstests/api/commerce.test.mjstests/api/data.test.mjsGap: All three preparation commands and human-only approval guards exist; checked-in agent journey directly exercises product drafting, not agent shipment/refund preparation end to end.
API-001targetDocumented headless API and signed eventsPartialsrc/stall/api.tssrc/stall/payments.tssrc/stall/tools.tstests/api/commerce.test.mjsGap: Current JSON commerce doors and incoming Stripe signatures exist; versioned customer/cart APIs, external app scopes and outgoing event subscriptions are absent.
FLOW-001targetEvent and scheduled workflows with visible follow-upPartialsrc/stall/payments.tssrc/stall/orders.tsGap: A fixed paid-event reservation transition exists; configurable rules, timers, tasks and notifications are absent.
INTEGRATION-001targetOwned connections and recoverable external workPartialsrc/stall/orders.tssrc/stall/stripe.tssrc/stall/pier.tssrc/stall/portability-policy.mjstests/api/commerce.test.mjsGap: Stripe/Pier deterministic effects and manual reconciliation exist; generalized connection controls, secret custody and durable jobs for all target providers are absent or unverified.
SECURITY-001targetGuarded native commerce doorsDonesrc/stall/access.tssrc/stall/api.tssrc/stall/tools.tstests/api/commerce.test.mjstests/api/imports.test.mjstests/api/data.test.mjs
DATA-001targetValidated archive and inactive receiving authorityDonesrc/stall/tools.tssrc/stall/portability-policy.mjstests/api/data.test.mjs
ERASURE-001targetOwner-directed contact erasure and backup fencingDonesrc/stall/erasure.tssrc/stall/portability-policy.mjstests/api/data.test.mjs
AUDIT-001targetDurable attributable commercial action historyDonesrc/stall/access.tssrc/stall/api.tssrc/stall/store.tstests/api/commerce.test.mjstests/api/data.test.mjs
OPS-001targetOwned installation, recovery and explicit operating limitsPartialSEED-COMMAND-CONTRACT.mdscripts/operations-config.mjstests/clone-journey.mjstests/runtime.mjsGap: The RER command path and local clone/runtime journeys exist; operating costs/capacity and generalized background/provider health are unmeasured or absent.
OPS-002targetRun Stall on the owner's own computer or own serverPartialsrc/site/run.jsonscripts/installer/local.mjsdeploy.jsontests/clone-journey.mjsGap: The one-line local start and own-account Cloudflare deploy exist; there is no own-server production path (rer dev and rer preview are rer-managed servers with a 12-hour idle stop), and the one-line start has no recorded fresh-machine acceptance.
BASE-001targetPreserved Base guarantees with scoped replacementsPartialsrc/stall/imports/description.tssrc/stall/imports/csv.tssrc/stall/portability-policy.mjstests/api/imports.test.mjstests/api/data.test.mjsGap: Current plain-text/import and archive policies are inspectable; future rich content/media safety and a full Base conformance assessment are not established.
OPEN-001targetFree and open source under the MIT licencePartialLICENSEpackage.jsonGap: The repository and package are MIT and nothing in the product charges or gates; no test checks the licence or the absence of paid gates, and provider-cost disclosure before a connection does not exist.
Push further: agents operate the commerce job 0 done · 3 partial · 2 missing
AI-001push furtherOperate order exceptions to shopper-approved closurePartialsrc/stall/payments.tssrc/stall/orders.tstests/api/commerce.test.mjsGap: Paid/shortfall states and manual lost-response recovery exist; detection agent, grounded shopper replies, options and closure workflow are absent.
AI-002push furtherManage returns end to endPartialsrc/stall/refunds.tstests/api/commerce.test.mjsGap: Revision-approved reconciled refunds are a foundation; policy reasoning, labels, return receipt, restock and agent follow-through are absent.
AI-003push furtherImprove profitable conversion with measured experimentsMissingGap: No implementation found. Target journey not implemented.
AI-004push furtherRecover failed integration work without invented successPartialsrc/stall/orders.tssrc/stall/stripe.tssrc/stall/pier.tstests/api/commerce.test.mjsGap: Manual Stripe/Pier reconciliation preserves original identities; agent diagnosis, label/mail/channel/ledger recovery and policy execution are absent.
AI-005push furtherGrounded merchandising and channel preparationMissingGap: No implementation found. Target journey not implemented.
Product separation and specialist extensions 0 done · 1 partial · 3 missing
BOUNDARY-001targetSeparate products with usable commerce connectionsPartialsrc/stall/pier.tssrc/stall/api.tsGap: Pier is a separate product adapter today, but mandatory; Mango and alternative-provider handoffs are absent.
EXTEND-001targetSubscriptions, POS, digital downloads and creator fulfilment partnersMissingGap: No implementation found. Target journey not implemented.
EXPAND-001targetMultiple stores, regions and currenciesMissingGap: No implementation found. Target journey not implemented.
B2B-001targetBusiness buying without absorbing wholesale operationsMissingGap: No implementation found. Target journey not implemented.

How statuses are judged

Done
It ships in the default install, and a cited test or journey exercises it.
Partial
Some of it ships, it ships only behind an opt-in, or there is code with no requirement-level test.
Missing
There is no implementation.

Read CONTRACT.md on GitHub