docs(loyalty): record 2026-05-19 Test 2 complete + subtitle fix
All checks were successful
CI / ruff (push) Successful in 18s
CI / pytest (push) Successful in 2h48m35s
CI / validate (push) Successful in 34s
CI / dependency-scanning (push) Successful in 38s
CI / docs (push) Successful in 1m3s
CI / deploy (push) Successful in 1m52s

End-of-day update. Test 2 (cross-store re-enrollment at FASHIONOUTLET
with the email from Test 1) walked cleanly with all behavioral checks
green:
  - exactly 1 loyalty_cards row, no duplicate
  - zero new email_logs rows (no duplicate welcome email)
  - cross-location locations block lists both stores
  - title already-enrolled branch renders correctly

One copy bug surfaced and was fixed in dee2eab2: the title at
enroll-success.html:21 was already x-text-conditional on
already_enrolled, but the subtitle below was a static
{{ _('success.message') }} so two contradicting messages stacked
("You're already a member!" + "You're now a member..."). Made the
subtitle conditional the same way and added a new
already_enrolled_message i18n key in en/fr/de/lb.

Test 2 marked done. Carries forward Test 3 plus the existing follow-ups
(Hetzner doc check, B1-F unit tests, prospecting tasks/__init__ fix,
other-module email audit).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-19 22:27:16 +02:00
parent dee2eab266
commit 4b64233b5f

View File

@@ -181,6 +181,47 @@ From the 2026-05-17 list, items #2 (Test 2), #3 (Hetzner doc check),
missing import), and #6 (other-module email audit) are still queued.
Items #1 (Test 1 nits) are now closed by this session's commits.
## 2026-05-19 update — Test 2 complete
Cross-store re-enrollment at FASHIONOUTLET (same email as Test 1's
successful `+17mayf@gmail.com`) walked cleanly. Behavioral checks all
green, one copy bug fixed.
### Test 2 verification
| Check | Result |
|---|---|
| Exactly 1 `loyalty_cards` row for customer / merchant — no duplicate | ✅ |
| Zero new `email_logs` rows — no duplicate welcome email | ✅ |
| Cross-location locations block lists both Fashion Hub + Fashion Outlet | ✅ |
| Title renders "Vous êtes déjà membre !" (already conditional from prior fix) | ✅ |
### Bug fixed: contradicting subtitle on success page (`dee2eab2`)
The title at `enroll-success.html:21` was already `x-text`-conditional
on `enrollContext.already_enrolled` — so it correctly switched between
"Welcome!" and "You're already a member!". But the subtitle just below
at line 24 was a static `{{ _('success.message') }}`, always rendering
"Vous êtes maintenant membre..." even on the already-enrolled branch.
Two contradicting messages stacked.
Added an `already_enrolled_message` i18n key in en/fr/de/lb and made the
subtitle conditional the same way as the title:
- EN: "Welcome back — your card is ready whenever you are."
- FR: "Heureux de vous revoir — votre carte est prête à l'emploi."
- DE: "Willkommen zurück — Ihre Karte ist einsatzbereit."
- LB: "Wëllkomm zréck — Är Kaart ass prett wann Dir et sidd."
### Status board delta
- Step 6 (web user-journey E2E tests) — Tests 1 ✅ and 2 ✅ done. Tests 38 still ahead.
### Carry over for next session
- **Test 3** — Staff stamps/points at the terminal (`/store/FASHIONHUB/loyalty/terminal`)
- Items #3 (Hetzner doc check), #4 (unit tests for the B1-F chain), #5 (prospecting `tasks/__init__.py` missing import), #6 (other-module email audit) still queued from the 2026-05-17 follow-up list.
## Status board
| # | Pre-launch step | State | Notes |