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.

Lesson hero for Fab texture import and playtest surface isolation capstone

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:

  1. 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).
  2. 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 adds playtest_surface_isolation_receipt_v1.json for 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

Common mistakes

  • Promoting fest scene while fest .tscn still references *_orm_8k.png.
  • Same build_label on 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)

  1. Archive 8K ORM to art_src/ only; link 2K in fest scene.
  2. Pass texture import receipt from guide output.
  3. Intentionally paste playtest URL in fest draft—confirm K6 fails.
  4. Fix channels; file surface isolation receipt.
  5. Assemble q4_post_shipping_capstone_v1.json with 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.