Skip to content

Dev App Probe Contract

Chris Michael edited this page Jul 18, 2026 · 1 revision

Effuse

Dev App Probe Contract

The ignored app/ project is Effuse's local ecosystem laboratory. It exercises published package boundaries in realistic browser flows without becoming a second product or adding generated end-to-end test files to the repository.

Stability Rules

  • Every route owns one <domain>-page root target.
  • Observable state uses <domain>-status, <domain>-count, or a specific state name when a page exposes several independent contracts.
  • Commands use verb-based targets such as <domain>-fetch-users or <domain>-increment.
  • Collections and rendered results use <domain>-list, <domain>-items, or <domain>-output.
  • Probe names describe behavior, not layout or styling.
  • Existing targets are treated as stable integration contracts. Renaming one requires updating this matrix and the browser verification notes.

Required Route Matrix

Route Page root Primary state Actions Results
/forms forms-page form-user-count, form-error form-name, form-submit form-user-count
/store store-page store-count, store-stats store-increment, store-add-todo store-todo-list
/query query-page query-status, query-cache-status query-fetch-users, query-fetch-posts query-users-list, query-posts-list
/use use-page use-network-state, use-debounce-state use-draft-preset, use-interval-start use-storage-state, use-interval-state
/layers layers-page theme-metric, event-count-metric toggle-theme, record-event event-list
/server server-page server-output call-route, call-action, call-file-route server-output, file-api-events
/commerce commerce-page commerce-session, commerce-count commerce-login, commerce-add commerce-items, commerce-events
/contracts contracts-page composition-status, reactivity-status, memo-status contract-increment, contract-stop lifecycle-status, capability-status
/docs/routing/groups route-groups-page route-path, route-groups shop-root-link, shop-deep-link route-pattern, route-slug

Additional pages follow the same vocabulary. Their targets remain useful, but the matrix above is the minimum ecosystem gate for framework changes.

Browser Gate

For each affected capability:

  1. Build the workspace packages and the dev app with the supported Node and Bun toolchain.
  2. Open the relevant route in the Effuse in-app browser.
  3. Locate the page root and state anchors directly; do not scrape broad body text.
  4. Execute the primary action and assert the named state or result target.
  5. Inspect warning and error logs before accepting the change.

The browser gate complements unit and package tests. A failure in this app is treated as a framework or integration gap until the owning package proves otherwise.

Ownership

The app remains ignored so experiments, local fixtures, and browser state do not create repository churn. The public contract is this wiki page; the local app is its executable implementation.

See also Production Readiness, Routing, SSR, And Server APIs, and DX Gaps And Roadmap.

Clone this wiki locally