Lesson 227: Steam Review-Key Press Demo Scope Receipt (2026)

Direct answer: Before you send January 2027 Next Fest press or curator key batches, file review_key_demo_scope_receipt_v1.json proving each batch maps to fest_demo branch + build_id, hour-one features match store FAQ, and press URLs differ from playtest invites—then set BUILD_RECEIPT review_key_demo_scope to verified. After Lesson 206 facilitator contract and distinct from playtest isolation alone.

Lesson hero for Steam review-key press demo scope receipt

Why this matters now (January 2027 Next Fest press keys)

January 2027 coverage installs before public fest traffic. Teams finish Wwise packaged rows then blast keys with email copy still saying “full beta” while the depot is fest_demo_2027_01. Outlets quote modes you gated off; players arrive angry because review key checklist promised co-op. Planned blog #11 (facilitator contract template) governs who runs sessions; this lesson governs what build keys unlock.

The playtest isolation playbook owns playtest_isolation_receipt; press keys are a fourth surface on the scope map—same build_label, different email + redemption path proof.

Beginner path (key batch audit)

Step Action Success check
1 Open playtest_scope_map_v1.json press row exists
2 Redeem one test key on clean account Installs fest branch
3 Run hour-one checklist (15 min) Matches store bullets
4 Compare key email text vs FAQ No “full game” drift
5 File review_key_demo_scope_receipt_v1.json key_batch_scope_ok: true
6 Update BUILD_RECEIPT review_key_demo_scope GREEN

Time: ~2 hours first batch + template rewrite—72 minutes when scope map is pinned.

Developer path (gates K1–K6)

Gate Check Fail when
K1 playtest_scope_map_v1.json current Missing press / curator rows
K2 Key activates fest depot Wrong branch or deprecated build
K3 Hour-one feature matrix Press unlocks gated mode
K4 Email + README labels “Beta” / “EA” language mismatch
K5 URL matrix isolated Playtest URL in press email
K6 BUILD_RECEIPT row Keys ship without receipt

Press vs playtest URL matrix (K5)

Surface Allowed URL type Example label Must not appear in
steam_playtest Playtest invite link Playtest — build 2027-01-rc1 Press email body
fest_public Store demo / Next Fest Fest demo — hour-one slice Playtest NDA thread
press Review key redemption Press install — DEMO scope Public Discord
curator Curator key batch Curator — DEMO only Playtest facilitators

Archive release-evidence/steam/review_key_url_matrix.csv with columns: surface, url, build_id, branch, nda_required.

Hour-one proof table (K3)

Feature Store FAQ claims Key install shows Pass?
Max players
Co-op / online
Progression carries
DLC / IAP

Fail closed when any Yes in FAQ is No in first 15 minutes of press install.

review_key_demo_scope_receipt_v1.json

{
  "schema": "review_key_demo_scope_receipt_v1",
  "build_label": "fest-demo-2027-01-14-rc1",
  "build_id": "12345678",
  "steam_branch": "fest_demo_2027_01",
  "key_batch_id": "press-batch-2027-01-12",
  "keys_issued_count": 50,
  "surfaces": {
    "press": {
      "url": "https://store.steampowered.com/app/APPID/",
      "branch": "fest_demo_2027_01",
      "hour_one_pass": true
    },
    "steam_playtest": {
      "url": "https://playtest.steamplaytest.com/INVITE",
      "isolated_from_press": true
    }
  },
  "email_scope_label": "DEMO — hour-one fest slice only",
  "faq_row_1_aligned": true,
  "paired_receipts": {
    "facilitator_contract": "release-evidence/playtest/FACILITATOR_CONTRACT_RECEIPT.json",
    "playtest_isolation": "release-evidence/playtest/PLAYTEST_ISOLATION_RECEIPT.json"
  },
  "gates": {
    "K1_scope_map": "pass",
    "K2_key_depot": "pass",
    "K3_hour_one": "pass",
    "K4_email_labels": "pass",
    "K5_url_matrix": "pass",
    "K6_build_receipt": "pass"
  },
  "key_batch_scope_ok": true,
  "fest_promotion_allowed": true
}

Pin under release-evidence/steam/REVIEW_KEY_DEMO_SCOPE_RECEIPT.json.

BUILD_RECEIPT row (K6)

Column Pass when
review_key_demo_scope Receipt path + key_batch_scope_ok: true
build_id / build_label Matches redeemed test key
playtest_isolation Independent—isolation playbook
facilitator_contract Lesson 206 when contractors send keys
ALTER TABLE release_publish_gate ADD COLUMN IF NOT EXISTS
  review_key_scope_blocked BOOLEAN NOT NULL DEFAULT false;

CI verify_review_key_demo_scope_v1 fails when keys_issued_count > 0 and key_batch_scope_ok is false for that build_label.

Relationship to facilitator ops

Artifact Owner
facilitator_contract_receipt Lesson 206 / blog #11
playtest_isolation_receipt Isolation playbook
review_key_demo_scope_receipt This lesson (press/curator)

Contractors must not email press keys—only producers with K6 sign-off.

Key takeaways

  1. Press keys are store-adjacent truth—not logistics.
  2. Hour-one proof beats email adjectives.
  3. press surface is separate from steam_playtest URLs.
  4. Redeem one key yourself before batch 50.
  5. Review keys checklist blog is the strategy doc; this lesson is BUILD_RECEIPT promotion.
  6. Lesson 221 amendment invalidates keys when VERSION changes—re-issue batch.
  7. Q1 capstone 229 wires 227 with 224–226, 228.
  8. 12-free isolation runbooks list tools; receipt is policy.

Common mistakes

  • Sending keys before hour-one matrix is green.
  • Press email links playtest invite URL.
  • build_id in receipt ≠ redeemed depot.
  • FAQ says solo; press kit still says co-op.
  • Issuing keys on main while fest uses fest_demo branch.

Troubleshooting

Symptom Lane
Key installs wrong game Steamworks app ID audit
Key works, wrong branch K2 depot + branch naming checklist
Press quotes wrong mode K4 email + press kit refresh
Playtest leak in press thread K5 URL matrix + Lesson 206 SOW
VERSION bump mid-batch Lesson 221 amendment — revoke keys

Mini exercise (72 minutes)

  1. Add press + curator rows to playtest_scope_map_v1.json.
  2. Redeem test key; log build_id + branch.
  3. Run hour-one checklist; fail one row deliberately.
  4. Fix FAQ or build; pass K3; file receipt.
  5. Draft press email with DEMO label only; attach receipt path to BUILD_RECEIPT.

Continuity — Q1 2027 post-fest recovery (224–229)

Lesson Receipt focus
224–226 VOD, Ren'Py, Wwise
227 (this) Review-key demo scope
228 FMOD WebGL fest snapshot
229 Q1 capstone (queued)

Previous: Lesson 226 — Wwise DSP packaged Windows
Next: Lesson 228 — FMOD WebGL fest demo snapshot receipt.

FAQ

Same as playtest isolation?
Isolation prevents playtest URLs on fest threads; 227 proves press keys unlock the demo you advertise.

Same as facilitator contract?
206 governs contractor behavior; 227 governs key batch ↔ demo scope proof.

Curator vs press batches?
Separate rows in receipt surfaces—same K-gates per batch.


A press key email that lies about scope is a refund headline waiting to happen—redeem one key, prove hour-one, file review_key_demo_scope_receipt, then send the batch.