S3 (a1): affiliate + partner plumbing
Zero out-of-pocket; everything config-flip-ready but DISABLED/organic. - BOOK IT deep links: web/src/lib/bookLinks.js + affiliateConfig.js (all books enabled:false, Impact/Partnerize param shapes documented, empty params skipped). Wired into StatStrip BookItTeaser (real anchor now) + scan hand-off links. Every book anchor renders rel="sponsored noopener noreferrer" (BOOK_LINK_REL). - Best-price marker: slateAdapter.detectBestBook (only when >=2 books post the SAME line and prices differ — absent beats wrong) + subtle signal-green dot in StatStrip. Slate.groupByGame threads the grouped per-book rows (books[]) onto PropRowProp instead of discarding them. - Partner refs: ?ref=CODE -> vyndr_ref cookie (90d, first-touch, PartnerRefCapture in layout) -> signup metadata partner_ref -> internal GET /api/partners/report/:code (requireInternalAuth; honest zeros + note until the TODO migration in docs/PARTNERS.md adds user_profiles.partner_ref — NOT run). Stripe promo-code convention: partner code == promotion code, verbatim. - Tests: +41 (2398 -> 2439, 209 suites); bookItTeaser + vyndrCoreScreens invariants updated to the new (stronger) rel contract. Web build exit 0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+18
-1
@@ -1,7 +1,24 @@
|
||||
# VYNDR — Build State
|
||||
|
||||
## Last Updated
|
||||
2026-07-10
|
||||
2026-07-11
|
||||
|
||||
## Session S3 (a1 board, 2026-07-11) — Affiliate + Partnership Plumbing ✅
|
||||
Zero out-of-pocket; everything config-flip-ready but DISABLED/organic.
|
||||
2398 → **2439 tests** (209 suites), web build exit 0.
|
||||
- **BOOK IT deep links** — `web/src/lib/bookLinks.js` + `affiliateConfig.js`
|
||||
(every book `enabled:false`; Impact/Partnerize param shapes documented).
|
||||
StatStrip BOOK IT is a real anchor now (organic); scan hand-off links moved
|
||||
to the builder. Every book anchor renders `rel="sponsored noopener noreferrer"`.
|
||||
- **Best-price marker** — `slateAdapter.detectBestBook` (≥2 books, SAME line,
|
||||
differing prices, else null) + green dot in StatStrip; `books[]` (the grouped
|
||||
odds rows) now threads Slate → strips instead of being discarded by pickLine.
|
||||
- **Partner refs** — `?ref=CODE` → 90d first-party `vyndr_ref` cookie
|
||||
(first-touch, `PartnerRefCapture` in layout) → signup metadata `partner_ref`
|
||||
→ internal `GET /api/partners/report/:code` (zeros + note until the TODO
|
||||
migration in docs/PARTNERS.md adds `user_profiles.partner_ref`; NOT run).
|
||||
- **docs/PARTNERS.md** — ref link spec, Stripe promo-code mapping convention
|
||||
(partner code == promotion code), TODO migration SQL.
|
||||
|
||||
## Current Phase
|
||||
SHIP BUILD v59.0 — Overnight session: ledger team/opponent addendum,
|
||||
|
||||
Reference in New Issue
Block a user