Implements, verifies, and archives the three remaining Wave 2 changes from
openspec/MIGRATION-PLAN.md.
- add-wallet-settlement (P3): demo recharge, guarded withdrawal freeze and
one-time admin review, paginated own fund entries, idempotent per-shop
weekly/monthly settlement statements with commission rate and one-time
payout confirmation.
- add-merchant-onboarding (P5): personal/enterprise applications with one live
application per user, guarded review with mandatory rejection reason, and
transactional shop + owner provisioning returning one-time credentials;
mall onboarding/status pages and an admin review console.
- add-membership-messaging (P7): platform member levels, append-only growth
accrual on order completion with guarded one-way leveling, order/shipment/
refund system messages with unread/read state and soft deletion, plus the
mall header unread badge.
Backend: migrations 0019-0023, new wallet, settlement, merchant_onboarding,
membership and messaging modules, event hooks in order/fulfillment/aftersale,
and integration suites for each. Shared contract extended and all three
frontends updated; code indexes, domain docs, backend guidelines and the
migration tracker synced.
Verification: cargo test -p vmall-api green twice consecutively; mall, admin
and shop-admin builds pass; browser smoke on every new surface; openspec
validate --all --strict green (33 passed).
The three changes share the @vmall/shared contract, the mall mock adapter and
per-app locale/nav files, so they are committed together to keep every commit
buildable.
Replace mall fixture favorites with customer-scoped endpoints, and send signed-out shoppers back to the page they left after sign-in.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist the modular-monolith decision (ADR 0001 handler/service/repo,
ADR 0002 keep REST) with the companion tech spec and the api-architecture
OpenSpec capability. Replace the finished mock-migration tracker with
docs/TBD-marketing.md listing the backend-less marketing domains still on
fixtures (coupons, favorites, account stats, seckill, collective, integral,
reviews). README and AGENTS.md point at the new docs.
The merge creates the brand capability (two requirements) and extends the
catalog browse requirement with the brand filter, the sales sort and a real
sold count. openspec validate --all --strict stays green at 14 specs.
With every box now checked, docs/TBD-migrate-wave.md is deleted, as its own
instructions require. Its two durable notes move to the README instead of
disappearing with it:
- `nuxt build` does not typecheck, so a green build is not the type gate the
verification section claimed. AGENTS.md told me to treat it as one, which is
why waves 1-5 over-reported "builds pass" as evidence.
- the list of what stays deliberately mock: addresses, coupons, favourites,
account stats, the seckill/collective/integral pages, reviews, and the
fixed-data adapter itself, which the adapter spec requires for rollback.
The README's verification block also gains the real test count (29, not 16).