Lesson 252: Spline Playtest Landing LCP Spot Receipt on BUILD_RECEIPT (2026)
Direct answer: Before July playtest signup links hit Discord, file spline_playtest_lcp_spot_receipt_v1.json proving idle baseline LCP ≤ 2.5 s, a documented concurrent load profile (parallel tabs or k6), LCP under load ≤ 3.5 s (team band), CTA click survival, and cousin spline_lcp_fest_receipt path linked—then promote BUILD_RECEIPT spline_playtest_lcp_spot_ok. Distinct from Lesson 233 (spline_lcp_fest fest-week) and LCP impact preflight (steady budget).

Why this matters now (July 2027 concurrent playtest traffic)
July 2026–2027 teams pass fest LCP spike preflight on a quiet laptop, then reuse the same Spline hero on a playtest hub—Tuesday evening brings 50+ facilitators hard-refreshing while CDN edges warm unevenly; mobile LCP jumps from 2.1 s to 4.8 s and the itch demo CTA feels frozen. Lesson 233 owns spline_lcp_fest on BUILD_RECEIPT for marketing fest URLs—252 owns spline_playtest_lcp_spot when concurrency, not cold traffic, is the stressor.
The playtest LCP spot under load preflight is the ninety-second gate—252 is the BUILD_RECEIPT milestone.
Beginner path (baseline → load → receipt)
| Step | Action | Success check |
|---|---|---|
| 1 | Pin playtest URL in matrix | L1 pass |
| 2 | Confirm idle LCP ≤ 2.5 s | L2 pass |
| 3 | Run parallel-tab or k6 load | L3 profile logged |
| 4 | Lighthouse mobile under load | L4 ≤ 3.5 s band |
| 5 | Click primary CTA twice | L5 survival |
| 6 | File receipt + BUILD_RECEIPT | lcp_playtest_spot_ok: true |
Time: ~62 minutes first playtest wave; ~15 minutes when load profile is pinned.
Developer path (gates L1–L6)
| Gate | Check | Fail when |
|---|---|---|
| L1 | playtest-landing-url-matrix.md row |
URL drift vs prod |
| L2 | Idle baseline LCP | > 2.5 s mobile lab |
| L3 | Load profile | Missing concurrent_sessions |
| L4 | LCP under load | > team band (default 3.5 s) |
| L5 | CTA after load | Long task blocks handler |
| L6 | Receipt + BUILD_RECEIPT | Promote before L3 GREEN |
L2 — cousin receipt crosswalk
| Field | Cousin (233) | This lesson (252) |
|---|---|---|
| Schema | spline_lcp_fest_receipt_v1 |
spline_playtest_lcp_spot_receipt_v1 |
| Traffic | Fest marketing spike / cold visitors | Facilitator concurrent hammer |
| Path | release-evidence/03-web/SPLINE_LCP_FEST_RECEIPT.json |
release-evidence/03-web/SPLINE_PLAYTEST_LCP_SPOT_RECEIPT.json |
| BUILD_RECEIPT column | spline_lcp_fest |
spline_playtest_lcp_spot |
Do not merge fest JSON into playtest spot receipt—reference cousin path only.
spline_playtest_lcp_spot_receipt_v1.json
{
"schema": "spline_playtest_lcp_spot_receipt_v1",
"build_label": "playtest-july-2027-rc1",
"landing_url": "https://example.com/playtest-hub",
"spline_scene_id": "SCENE_ID",
"embed_policy": "poster_first_click_to_load",
"load_profile": {
"tool": "parallel_incognito_tabs",
"concurrent_sessions": 10,
"duration_seconds": 30
},
"baseline": {
"cousin_receipt": "release-evidence/03-web/SPLINE_LCP_FEST_RECEIPT.json",
"lab_lcp_seconds_mobile_idle": 2.1
},
"under_load": {
"lab_lcp_seconds_mobile": 3.2,
"long_tasks_gt_50ms_first_5s": 1,
"cta_click_survival": true
},
"gates": {
"L1_url_matrix": "pass",
"L2_idle_baseline": "pass",
"L3_load_profile": "pass",
"L4_lcp_under_load": "pass",
"L5_cta_click": "pass",
"L6_build_receipt": "pass"
},
"lcp_playtest_spot_ok": true,
"playtest_promotion_allowed": true
}
Pin under release-evidence/03-web/SPLINE_PLAYTEST_LCP_SPOT_RECEIPT.json.
BUILD_RECEIPT row (L6)
| Column | Pass when |
|---|---|
spline_playtest_lcp_spot |
lcp_playtest_spot_ok: true |
spline_lcp_fest |
Cousin Lesson 233 independent column |
trailer_handoff |
Lesson 251 independent column |
ALTER TABLE release_publish_gate ADD COLUMN IF NOT EXISTS
spline_playtest_lcp_spot_blocked BOOLEAN NOT NULL DEFAULT false;
Thursday row review — playtest LCP spot line: load profile Y/N.
Key takeaways
- Fest receipt ≠ playtest spot—233 and 252 are separate BUILD_RECEIPT columns.
- Idle green ≠ concurrent green—run load ritual every playtest wave.
- Poster-first policy must survive load test—no autoplay iframe “for realism.”
- Lesson 233 — fest cousin path.
- Phaser wasm heap cap — browser demo cousin, separate WebGL budget.
- Forward: Lesson 253 Q4 capstone BUILD_RECEIPT.
- Community playtest resources — facilitator ops, not LCP measurement.
- Steam in-client browser may be worse than Chrome—re-spot if playtest links target Steam overlay.
playtest_promotion_allowedhere ≠ Q4 capstone 253.- Pair Wednesday demo smoke before sharing hub URLs.
Common mistakes
- Filing 252 while only desktop lab was measured.
- Using
spline_lcp_fest_receiptJSON for playtest week. - Load test enables autoplay iframe—invalidates L2 baseline.
- Skipping L5—LCP OK but CTA handler blocked.
- Different
spline_scene_idin receipt vs live embed.
Troubleshooting
| Symptom | Lane |
|---|---|
| Idle green, load red | Tighten poster; CDN-cache poster; shrink scene |
| CTA frozen under load | L5 long tasks—defer embed mount |
| TTFB spikes | L3 origin/CDN—warm cache |
| Fest GREEN, playtest RED | This lesson—concurrency not in fest receipt |
| Lab OK, Discord complaints | Re-spot mobile + Steam in-client |
Mini exercise (55 minutes)
- Document matrix row—confirm L1.
- Run idle Lighthouse—log L2.
- Ten parallel tabs + 11th Lighthouse—log L4.
- Link cousin
SPLINE_LCP_FEST_RECEIPT.jsonpath. - File receipt; BUILD_RECEIPT GREEN.
Continuity — Q4 2027 July playtest scale (245–253)
| Lesson | Receipt focus |
|---|---|
| 251 | DaVinci trailer handoff → OBS |
| 252 (this) | Spline playtest LCP under load |
| 253 | Q4 capstone |
Previous: Lesson 251 — DaVinci trailer handoff
Next: Lesson 253 — Q4 playtest scale capstone
FAQ
Same as Lesson 233?
233 = fest marketing spline_lcp_fest; 252 = concurrent playtest load spot.
Same as the Spline guide chapter?
Guide = L1–L6 checklist; 252 = BUILD_RECEIPT promotion.
Can I skip load test if fest receipt is GREEN?
No—fest idle does not prove facilitator pile-on behavior.
k6 required?
No—parallel incognito tabs are the indie default; name the tool in load_profile.tool.
Playtest hubs get hammered harder than fest day one—spot LCP under concurrent load, prove CTA survival, then spline_playtest_lcp_spot_ok on BUILD_RECEIPT before Lesson 253 capstone.