# Verification record

## Atelier refinement — September 12

`atelier-update-checks.js` passes at 360px Persian/dark and 390px English/light. Active cards open details as their primary action; expired cards still open renewal plans. Signal's 8px subscription corners and 3px semantic red leading stripe are verified in both directions. The attention summary matches the shared filter, including zero for newcomers. Category identity icons are removed while category/plan selection still works.

Linked wallet deposits and cashback entries open their own exact transaction IDs and amounts, with focus restored to each row. Search and cashback filtering preserve the linked story; pagination renders all 35 normal-account records exactly once and leaves balances unchanged. Partner wallet20 payment corrections remain separate and appear in the payment filter. Signal's original wallet layout is unchanged. No page/dialog horizontal overflow or JavaScript errors. `node --check` passes for Atelier and the shared controller. Screenshots: `atelier-updated-fa-dark-home.png`, `atelier-updated-en-light-home.png`, the matching `shop` and `linked-pair` captures. The shared API was not modified.

All twenty concepts have been rendered and visually reviewed. Each defaults to subscriptions and uses the same API, world and workflow engine. The original five, second exploration and third exploration have their own browser verification records below.

## Automated domain checks

`node --test shared/api.test.mjs`: **29 passed, 0 failed**.

Coverage includes exact seed balances/counts, audience and ownership checks, trial use, all eight renewal strategies, busy locks, financial rollback, partial purchases, commitment credit-only and split payments, grace renewal, deletion retry, UTC parsing, naming, headers, time progression, latency, reset and unchanged-read storage behavior.

## Browser workflow checks

- `flows.js`: genuine QR module output; empty/101-character rename rejection; Persian rename; renewal and matching wallet debit; auto-renew cancellation without a write; first deletion fails and retry succeeds; sanitized single purchase; CSV download; shared state after changing concept.
- `partner-flows.js`: search beyond the first ten subscriptions; usage/time sorting and pagination; wallet 20 balance and CSV; category 5 credit-only purchase; category 6 grace-period commitment renewal; ten-unit partial purchase creates seven and charges exactly seven ledger entries.
- `handoff.js`: Android VPN app handoff reaches its download fallback; Escape dismisses; language switching completes and persists after reload. The actual installed native-app takeover requires a device with that app installed.
- `visual.js`: Signal and Paper in both languages/themes at 360 px; no horizontal overflow; wallet/shop and desktop captures.
- Independent concept-agent visual checks cover Tide, Atelier and Orbit in both languages/themes at 360/390 px, including wallet/shop/detail/plan surfaces. Their `DESIGN.md` files record refinements. Paper was additionally tightened and inspected so copy and QR controls fit above the tab bar at 360 × 800.
- `comparison.js`: all five live apps render together and propagate a rename between frames. Unchanged reads do not cause a storage feedback loop.

## Corrections made during QA

Fixed floating navigation geometry, dark-theme token specificity, low-contrast small labels, native safe-area spacing, and internal IDs appearing as decorative membership numbers. Shared corrections include a language transition stuck on same-document navigation, rapid tab changes suppressed by a common busy key, later confirmations suppressed by an earlier pending operation, stale usage-loading labels, loading usage when searching beyond the first ten items, and repeated storage writes from read-only requests.

## Practical scope

Browser and API behavior are verified locally. Telegram signature validation, real bot delivery, paid provisioning, and real VPN connections require the production backend; the mock intentionally simulates these. Browser fallbacks use the real platform interfaces. Screenshots reflect the live deterministic seed plus normal passage of time, so usage can vary slightly across captures.

## Second exploration: concepts 06–10

- `round-two.js`: all five new concepts at 360×800, Persian RTL, subscription details and real QR rendering, wallet, category/plan selection, English switching and reduced motion. No horizontal overflow or JavaScript errors; no running animations with reduced motion enabled.
- Individual designer checks cover 360/390 widths, both languages and themes, and each unique interaction: Fluid swiping/paging, Relay inline selection and contextual dock, Prism account picker, Fold unfolding folios and Tempo chronological expansion. Partner searches reach subscriptions beyond the first ten through the same shared API.
- `motion-audit.js`: instruments actual Web Animations completion and checks that animated elements remain connected to the visible document. Fluid, Relay and Prism complete 900ms data fills; Fold and Tempo complete 850ms fills. Tempo's 950ms axis draw and 580ms entry reveals also finish on connected elements. This caught and fixed an immediate second shared usage render that removed animated elements before their animation was visible to completion.
- Shared rendering now supports optional full-shell composition, custom actions, selected-account usage loading and post-render motion. Focus restoration preserves a concept's deliberate move into an opened search control. The original normal-user workflow regression still passes; all 29 domain tests pass.
- Phone-density refinements ensure Fold's three seeded folio spines remain visible above navigation at 360×800.
- `comparison-new.js`: all five new live previews render together with no horizontal overflow or JavaScript errors. A rename propagates between all five frames, and unchanged reads do not cause repeated world writes. The demo is reset afterward. Final capture: `five-new-concepts.png`.

## Third exploration: concepts 11–20

- Shared `renderDialog` and `afterDialog` hooks preserve native dialog focus/close behavior, forms, errors and business actions while permitting custom content order, grouping, controls and geometry. Confirmation/loading kinds are explicit. The catalog and demo reset cover twenty concepts; the API/world remains single and unchanged.
- After the hook changes, all 29 domain tests and the complete original `flows.js` regression passed (including renewal/ledger matching, cancellation, deletion failure/retry, purchase, rename validation, QR and CSV).
- `round-three.js` checks 360×800 home, detailed dialog bounds/scroll width, close and confirmation visibility, keyboard focus, QR/back, renewal/purchase review, name validation, Escape, wallets, settings catalog, English dark mode and reduced motion. All ten concepts 11–20 pass this integration check. The `test-only` query can run a chosen batch. Support and transaction cases are covered for 15–20; `auxiliary-dialogs.js` covers them separately for 11–14. Ledger's RTL margin numerals were corrected after this check found a 14px overflow.
- `dialog-focus.js` verifies focus returns to the launching control after a background usage render, stays inside the dialog on plan/confirmation transitions, and Escape dismisses the result.
- `dialog-error.js` injects a failed renewal-plan request and verifies loading ends, the error remains visible, retry loads plans, and back/Escape work. Explicit error kinds avoid carrying the previous detail composition into recovery.
- `motion-round3.js` records Web Animations completion on connected, visible elements. All ten concepts 11–20 complete their 750–950ms actual data fills, including Pulse's 880ms waveform reveal; Circuit's ownership branches also draw in 650ms. Motion is disabled under reduced-motion preferences.
- `comparison-round3.js` passes for all ten live frames and all six toolbar modes: subscriptions, detail, renewal plans, checkout review, QR and settings. A rename propagates between all ten previews; unchanged reads do not cause a storage write loop. There are no JavaScript errors or horizontal frame overflow. The demo is reset afterward. Final reviewed captures include `ten-new-concepts.png`, `ten-new-detail.png`, `ten-new-confirmation.png`, `ten-new-renew.png`, `ten-new-qr.png` and `ten-new-settings.png`.
- Every numbered folder contains its own entry page, design code, stylesheet and design rationale. New concept code imports the shared runtime and contains no independent API, persisted world or financial implementation.
- Independent designer checks cover each new collection interaction, partner search/pagination among 140 accounts, empty states, 360/390 phone widths, both languages/themes and reduced motion. Pulse's final refinement brings its queue entry onto the initial screen and aligns waveform clipping with its actual fraction. Stamp, Circuit and Pulse received explicit 44px dialog close/back targets. The final comparison was recaptured after these refinements and passes dialog bounds, content overflow and visible checkout-action checks.
