builtbykev
|
0996320bd1
|
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>
|
2026-07-11 14:28:18 -04:00 |
|
builtbykev
|
cdedecf55b
|
Session 52: Coming Soon teaser + infrastructure verification (2239 tests)
Phase 1 — Push-to-Book teaser (feature not live; teaser only):
- StatStrip: "BOOK IT ⟶" per graded prop (hover: "Push-to-Book coming soon").
- GradeResultCard: "PUSH-TO-BOOK · COMING SOON" footer.
Phase 2 — infrastructure verification:
- snapshotScheduler logs armed AND disarmed state (incl SNAPSHOT_CRON) so
container logs disambiguate off-vs-crashed.
- NEW GET /api/internal/snapshot/status (internal-key gated): cron_armed,
cron_hours_utc, last_snapshot per sport (gradeCount/deltaCount), redis_keys
existence map, ticker_count. The post-deploy pipeline health probe.
- Finding: Redis AOF/RDB persistence is a server-side (Coolify) config the app
can't set/verify — documented.
Phase 3 — delta pipeline (verified sound, no fix needed):
- runSnapshot already rotates :latest->:previous and diffs locked lines; added
opt-in SNAPSHOT_DEBUG=1 [deltas] log + a trace test asserting :previous is
preserved verbatim and the delta math is correct.
Backend 2234 -> 2239 tests (+5), 192 suites. Web build clean (exit 0).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-19 13:55:39 -04:00 |
|