Lesson 211: Fab 8K Texture Import and Playtest Surface Isolation Capstone (2026)
Direct answer: Q4 post-shipping closes when Fab fest art passes Godot 8K ORM compress preflight (texture_import_receipt_v1.json) and playtest invite URLs cannot be mistaken for fest_public store links (playtest_surface_isolation_receipt_v1.json). This capstone wires both receipts plus a q4_post_shipping_capstone_v1.json summary on one BUILD_RECEIPT row—after Lessons 206–210.

Why this matters now (Fab velocity + fest visibility)
July 2026 teams merge Fab kits while toggling Steam Playtest visibility toward October fest_public. Two failures stack:
- Godot editor hang on first 8K ORM open—fixed upstream in guide preflight, must appear on BUILD_RECEIPT before fest scene promotion (Lesson 204 metallic gate is separate).
- Playtest invite links pasted into Discord #announcements beside fest store URL—facilitators file bugs against the wrong depot (playtest isolation playbook owns
playtest_isolation_receipt_v1.json; this lesson addsplaytest_surface_isolation_receipt_v1.jsonfor URL/channel leak discipline).
Help #11 (8K ORM hang fix when published) complements guide #6; this lesson is the course capstone for the 206–211 arc.
Beginner path (55-minute capstone)
| Step | Action | Success check |
|---|---|---|
| 1 | Pass Godot I1–I6 compress preflight | texture_import_receipt GREEN |
| 2 | Load fest hero scene on min-spec | No editor hang |
| 3 | Update playtest_scope_map_v1.json |
playtest ≠ fest_public rows |
| 4 | Audit marketing + Discord pins | No playtest URL on fest_public posts |
| 5 | File playtest_surface_isolation_receipt_v1.json |
url_leak_ok: false violations = 0 |
| 6 | File capstone summary JSON | Both child receipts linked |
| 7 | Run Thursday row review | Q4 arc columns populated |
Time: ~55 minutes when preflights exist; 80 minutes first Fab import + scope audit.
Developer path (gates K1–K8)
| Gate | Check | Fail when |
|---|---|---|
| K1 | texture_import_receipt_v1 pass |
8K linked in fest scene |
| K2 | orm_metallic_flat_receipt pass (Lesson 204) |
Plastic hero in fest build |
| K3 | playtest_scope_map current |
Stale branch after merge |
| K4 | Distinct build_label per surface |
Same label on playtest + fest |
| K5 | playtest_isolation_receipt pass |
Blog I1–I6 RED |
| K6 | playtest_surface_isolation_receipt pass |
Invite URL in fest marketing |
| K7 | Prior arc receipts linked (206–210) | Missing facilitator or GIF row |
| K8 | q4_post_shipping_capstone_v1.json |
BUILD_RECEIPT incomplete |
texture_import_receipt_v1.json (inherit from guide)
Do not re-author—copy path from Godot 8K preflight. Capstone adds fest scene path audit:
{
"fest_scene_orm_paths": [
"res://art/fest/hero_sword_orm_2k.png"
],
"source_8k_archived_only": true
}
playtest_surface_isolation_receipt_v1.json
{
"schema": "playtest_surface_isolation_receipt_v1",
"build_label": "fest-portfolio-2026-10-rc3",
"surfaces": {
"playtest_invite": {
"url": "https://store.steampowered.com/playtest/APPID",
"build_label": "playtest-2026-07-rc1",
"marketing_allowed": false
},
"fest_public": {
"url": "https://store.steampowered.com/app/APPID",
"build_label": "fest-demo-2026-10-rc1",
"marketing_allowed": true
}
},
"url_leak_audit": {
"discord_pins_playtest_only_in_playtest_channel": true,
"fest_announcement_contains_playtest_url": false,
"itch_public_not_used_for_playtest_password": true
},
"paired_playtest_isolation_receipt": "release-evidence/playtest/PLAYTEST_ISOLATION_RECEIPT.json",
"gates": {
"K3_scope_map": "pass",
"K4_build_label_separation": "pass",
"K5_isolation_receipt": "pass",
"K6_surface_url_audit": "pass"
},
"promotion_allowed": true
}
Difference from playtest_isolation_receipt: blog receipt proves depot/I1–I6 gates; surface receipt proves URLs and marketing channels do not cross-leak.
q4_post_shipping_capstone_v1.json
{
"schema": "q4_post_shipping_capstone_v1",
"arc_lessons": ["206", "207", "208", "209", "210", "211"],
"receipts": {
"206": "facilitator_contract_receipt_v1.json",
"207": "ffmpeg_concat_decision_receipt_v1.json",
"208": "cors_hosting_decision_receipt_v1.json",
"209": "localization_receipt_matrix_v1.json",
"210": "gif_capsule_marketing_receipt_v1.json",
"211_texture": "texture_import_receipt_v1.json",
"211_surface": "playtest_surface_isolation_receipt_v1.json"
},
"gates": {
"K1_texture_import": "pass",
"K2_orm_metallic": "pass",
"K3_scope_map": "pass",
"K4_build_labels": "pass",
"K5_playtest_isolation": "pass",
"K6_surface_isolation": "pass",
"K7_arc_receipts": "pass",
"K8_capstone": "pass"
},
"fest_promotion_allowed": true
}
Pin under release-evidence/capstone/Q4_POST_SHIPPING_CAPSTONE.json.
BUILD_RECEIPT capstone row
| Column | Source receipt |
|---|---|
texture_import_receipt |
Godot compress preflight |
playtest_surface_isolation_receipt |
This lesson |
playtest_isolation_receipt |
Playbook blog artifact |
q4_post_shipping_capstone |
Summary JSON |
facilitator_contract_receipt |
Lesson 206 |
gif_capsule_marketing_receipt |
Lesson 210 |
Thursday row review — add Capstone section listing 206–211 pass/fail n/a.
Prerequisites
- Lesson 204 — Fab ORM metallic
- Godot 8K ORM compress guide
- Lesson 206 — facilitator contract
- Playtest isolation playbook
- 12-free playtest isolation runbooks
Common mistakes
- Promoting fest scene while fest
.tscnstill references*_orm_8k.png. - Same
build_labelon playtest and fest rows “for simplicity.” - Pasting playtest invite in #fest-marketing channel.
- Skipping Lesson 204 because compress preflight passed—metallic can still be flat.
Troubleshooting
| Symptom | Lane |
|---|---|
| Editor hang on ORM | Godot 8K preflight |
| Wrong build in fest feedback | K5 + Lesson 206 |
| Playtest URL in store post | K6 surface audit |
| Metallic flat | Lesson 204 |
Mini exercise (70 minutes)
- Archive 8K ORM to
art_src/only; link 2K in fest scene. - Pass texture import receipt from guide output.
- Intentionally paste playtest URL in fest draft—confirm K6 fails.
- Fix channels; file surface isolation receipt.
- Assemble
q4_post_shipping_capstone_v1.jsonwith paths 206–210.
Continuity — Q4 arc close (206–211)
| Lesson | Receipt focus |
|---|---|
| 206 | Facilitator SOW + version_pin_ok |
| 207 | Whisper when concat_ok fails |
| 208 | CORS hosting decision |
| 209 | Localization matrix |
| 210 | GIF marketing |
| 211 (this) | Fab texture + surface isolation capstone |
Next: Lesson 212 — save slot label receipt (H1 2026 arc open). July H2 200–205 and Q4 206–211 arcs are complete.
FAQ
Replace playtest_isolation_receipt?
No—file both. Isolation receipt is depot gates; surface receipt is URL/marketing leak audit.
Unity-only studio?
Texture gate n/a; surface isolation still required if Steam playtest + fest_public coexist.
Capstone blocks Lesson 204 ORM work?
K2 requires 204 GREEN before fest art promotion—compress alone is insufficient.
Fab art and fest URLs share one promotion gate—the capstone receipt proves you checked both before October traffic.