QR Coupon Journeys implementation backlog

Status: design draft, 18 September 2026. The documents and mockup describe proposed implementation. They do not enable a campaign or change production billing. The tracking epic is MeshWeaver.Plugins #2066. Every issue below carries astra and design:qr-coupon-journeys.

Design of record

Implementation sequence

Stage Issue Deliverable Depends on
1a Core #4692 Minimal neutral action contracts and durable activity references Maintainer contract review
1b Core #4693 Provider-neutral setup, wallet capabilities and consented trial semantics Maintainer contract/consent review
2a Plugins #2060 Essentials fluent publisher, GUID resolution, authenticated continuation and prefill Core #4692 released
2b Plugins #2061 Historical Activity Open QR card action Core #4692, Plugins #2060
2c Plugins #2062 Phone card, browser installation, icons and standalone auth Plugins #2060
3a Plugins #2063 Coupon fluent adapter, versioned features, immutable consent/quote and durable claim Core #4692/#4693, Plugins #2060
3b Plugins #2064 Stripe setup, real wallet/card controls, explicit optional renewal and recovery Core #4693, Plugins #2063 domain contract
4 Plugins #2065 Cross-module, identity, billing and actual-device acceptance; reviewed rollout All above

Stages 1a and 1b can proceed independently after architectural review. Phone and historical activity work can proceed in parallel with coupon work after the generic route/descriptor contract is stable. Coupon and Stripe implement against a shared reviewed claim/payment contract; avoid a circular dependency by testing each against contract fakes, then composing the real provider for the acceptance suite. Issues include scoped acceptance criteria, source ownership and prerequisites.

Model and reasoning budget

Recommendation checked against official documentation on 18 September 2026: use Claude Sonnet 5 with adaptive thinking and medium effort as the main implementer when paying metered API rates. Raise it to high for the neutral contracts, authentication/authorization, coupon-claim state transitions, subscription billing, event replay and recovery. For bounded UI, card/PWA, ordinary tests and documentation work, start at medium. These assignments are engineering judgment for this plan, not a measured model benchmark on this repository.

If implementing in Codex with GPT models, use GPT-5.6 Sol at medium, with the same selective move to high. Use GPT-5.6 Terra at medium for isolated, well-specified UI or test tasks when the budget is tighter; review its changes at the same gates. Do not use a low-cost model as an unreviewed owner of financial or authorization invariants just to reduce the per-token price.

For a difficult blocker or the final payment/access review, use GPT-6 Astra at high or Claude Opus 5 at high for a bounded review of the relevant diff and tests. Choose one reviewer; do not routinely run both. Do not default to xhigh, max or app-specific ultra across the project. Escalate only for a concrete unresolved question, then return to the ordinary setting. Reasoning labels are not calibrated to equal computation across vendors.

Standard uncached API prices below are USD per million input/output tokens, not a project-cost estimate. Reasoning consumption, caching, tools, request length and pricing tier affect actual cost; Claude/Codex subscriptions have their own included usage and billing rules.

Model Input / output Proposed role
Claude Sonnet 5 $2 / $10 Main implementer; medium, selectively high
GPT-5.6 Terra $2 / $12 Budget GPT for narrow tasks; medium
GPT-5.6 Sol $4 / $20 Main GPT implementer; medium, selectively high
Claude Opus 5 $5 / $25 Bounded difficult review; high
GPT-6 Astra $10 / $50 Bounded difficult review; high

Sources: Anthropic pricing, Claude effort guidance, GPT-5.6 Terra, GPT-5.6 Sol, GPT-6 Astra. Sonnet 5's provider default is high, so set medium explicitly for the cost-saving starting point. GPT-5.6 Sol's documented default is medium. Re-check prices and account availability when implementation begins.

Start with one bounded issue and inspect its total cost, accepted changes and review rework before extrapolating. Give each implementation task the relevant design node, issue acceptance criteria and source paths instead of repeatedly copying this entire conversation. Keep one implementation owner per issue and bring in a focused reviewer at the risk boundary. Reuse completed investigation evidence, limit unnecessary parallel agents, poll CI once at the prescribed cadence, and rerun tests when changes or failures justify it. Reserve part of the implementation budget for integration and device/payment verification, which no reasoning level replaces.

Fixed decisions from this request

Decisions before campaign activation

Choose the registered destination site, course or catalog, issuer permissions and link-sharing policy. Decide whether to retain the existing cap or authorize a separate offer whose term actually guarantees a full 90 days. Approve authoritative renewal pricing, tax/currency, notices and cancellation terms. Resolve payment-method/consent retention and removal policy, existing-subscriber eligibility, and whether any no-method activation alternative should exist. Review public-route access and minimal core API changes with the maintainer.

Do not invent these values in a seed file or copy a live coupon as repo-owned content. The implementation can ship behind an unavailable/unconfigured state until the campaign has reviewed terms.

Completion evidence

The acceptance owner records an evidence table linked from #2065: exact commits/package versions, core release, test campaign and Stripe mode, device/browser, persona, selected method, renewal choice, accepted quote, expected/observed state and sanitized correlation IDs. Include both a fresh signed-in person with no purchases and anonymous attempts through all alternate read surfaces.

For no renewal, provider evidence must show successful setup and no charge, invoice or recurring subscription. For selected renewal, it must show zero due today, one correctly scheduled trial subscription, explicit accepted terms and cancellation before first charge. Duplicate events and recovery cannot create extra grants, installs or subscriptions. Test the first paid renewal and SCA/failure in controlled test time; test separate non-free item purchases with an explicit new confirmation.

Core changes follow platform CD. Registry consumers follow the supported plugin release pipeline after the compatible core release. Validate node shape, compile affected NodeTypes, execute Tests areas locally, complete required PR checks and review, then perform authorized production verification. Campaign rollback revokes new invitations and cancels pending future billing where required without silently revoking already-earned free or independently purchased access. Reconcile uncertain provider outcomes; never infer success from a redirect.

Review notes conserved with the design

The draft was checked against current source and read-only mesh coupon data. Findings incorporated here include: historical Activity results depend on a live kernel stream; Public differs from Anonymous; Essentials already depends on Store; RedeemFree is unsuitable as a new bounded-plan claim primitive without inspecting its eternal entitlement behavior; trial activation must protect existing paid/manual plans; and saved Apple Pay credentials cannot be treated as a generic reusable on-session card.

These findings are implementation constraints, not claims that the proposed APIs or screens already exist. Provider/browser citations live beside their corresponding design decisions in the payment and phone pages.

Reconnecting…
The connection to the server was interrupted. Trying to restore it…
Trying again…
The connection could not be restored. Reloading the page…
The server was updated. Reloading the page to pick up the latest version.