Lesson 206: Multi-Channel Facilitator Contract and version_pin_ok Receipt (2026)

Direct answer: External facilitators need a written SOW that pins VERSION, lists allowed surfaces (playtest, fest_public, itch_public, gx_public), requires OBS audio gate proof before VOD batching, and commits to facilitator_contract_receipt_v1.json on your BUILD_RECEIPT row—after Lesson 201 channel_label_match and before Lesson 207 Whisper path when concat fails.

Lesson hero for multi-channel facilitator contract and version receipt

Why this matters now (October 2026 facilitator week)

October 2026 micro-studios hire contract facilitators to run GX + Steam + itch playtests in the same calendar week. Labels can match (triple-channel receipt) while behavior still diverges:

  • Facilitators share fest_public URLs in a playtest Discord thread.
  • OBS clips lack 48 kHz audio gates before concat batch.
  • Contractors invoice against build IDs that never appeared in your scope map (playtest isolation).

The upcoming blog Multi-Channel Playtest Facilitator Contract Template (backlog #11) will ship a transactional template; this lesson is the course milestone that makes the contract machine-checkable via receipts. Press keys: Lesson 227 — review_key_demo_scope_receipt proves key batches match demo hour-one scope—contractors must not send press keys. GameMaker HTML5 teams run VERSION pin preflight before facilitators sign so version_pin_ok matches GX/Steam/itch upload logs.

Beginner path (40-minute contract draft)

Step Action Success check
1 Copy repo-root VERSION into SOW §2 Same string as BUILD_RECEIPT
2 List three canonical URLs (Steam playtest, GX, itch) Matches playtest_scope_map_v1.json
3 Add OBS audio gate clause (48 kHz, no music bed) Facilitator initials
4 Require concat_ok before Whisper batch Links Lesson 200 policy
5 Sign SOW + store PDF in legal/facilitators/ Dated signature
6 Generate facilitator_contract_receipt_v1.json version_pin_ok: true
7 Patch BUILD_RECEIPT row facilitator_contract_pass: true

Time: ~40 minutes for first SOW; full lesson 68 minutes with SQL gate + Discord README pin.

Developer path (gates F1–F6)

Gate Check Fail when
F1 SOW version_pin equals VERSION file Drift or typo
F2 All URLs in SOW exist in scope map Mystery storefront
F3 OBS profile documented (sample_rate, tracks) Missing audio spec
F4 channel_label_match true on paired build Lesson 201 red
F5 facilitator_contract_receipt_v1.json validates Schema errors
F6 BUILD_RECEIPT version_pin_ok Any F1–F5 red

facilitator_contract_receipt_v1.json

{
  "schema": "facilitator_contract_receipt_v1",
  "facilitator_id": "fac-oct-2026-01",
  "sow_pdf_sha256": "sha256:REPLACE_WITH_REAL_HASH",
  "version_pin": "fest-demo-2026-10-01-rc1",
  "version_pin_ok": true,
  "surfaces_authorized": ["playtest", "gx_public", "itch_public"],
  "obs_audio_gate": {
    "sample_rate_hz": 48000,
    "tracks_max": 2,
    "music_bed_allowed": false
  },
  "receipts_required": [
    "triple_channel_label_receipt_v1",
    "playtest_vod_triage_receipt_v1"
  ],
  "channel_label_match_at_sign": true
}

Pin under release-evidence/ops/FACILITATOR_CONTRACT_RECEIPT.json.

Discord / README facilitator pin block

## Playtest week — build pin
- **VERSION:** fest-demo-2026-10-01-rc1
- **Surfaces:** playtest (Steam), gx_public, itch_public
- **Do not share:** fest_public store URL in this thread
- **VOD:** OBS 48 kHz → concat_ok before Whisper (see facilitator SOW)
- **Receipts:** facilitator_contract_receipt_v1.json on main branch

SOW sections (copy-ready)

§1 Scope of work

Facilitator runs three sessions (90 minutes each) on authorized surfaces only. No store-page QA, no trailer capture, no press keys.

§2 Version pin

version_pin must equal repository VERSION at session start. If VERSION changes mid-week, facilitator stops until new SOW amendment is signed—file Lesson 221 facilitator_amendment_receipt before resuming sessions or batch Whisper.

§3 Evidence deliverables

Deliverable Format Due
Session notes Markdown in repo +24h
OBS Replay Buffer clips .mkv per session +24h
playtest_vod_triage_receipt_v1.json row JSON +48h
Surface tags on every clip surface column per clip

§4 Audio and VOD policy

Align with 16 OBS ffmpeg tools listicle and OBS normalize preflight: normalize before concat; whisper_batch_allowed false when concat_ok false (Lesson 200).

§5 Multi-channel URLs

Surface URL pattern Receipt
playtest Steam playtest invite playtest_isolation_receipt_v1
gx_public GX.games upload GX tools resource
itch_public *.itch.io subdomain itch MIME help

Publish gate

ALTER TABLE release_publish_gate ADD COLUMN IF NOT EXISTS
  facilitator_contract_blocked BOOLEAN NOT NULL DEFAULT false;

CI verify_facilitator_contract_v1 blocks external playtest spend when version_pin_ok is false or SOW hash mismatches committed receipt.

Wire into BUILD_RECEIPT row

Column Example
build_label fest-demo-2026-10-01-rc1
version_pin_ok true
facilitator_contract_pass true
channel_label_match true
facilitator_id fac-oct-2026-01

Thursday row review must show version_pin_ok beside channel_label_match.

Prerequisites

Common mistakes

  • Signing SOW before channel_label_match passes—facilitators reproduce on wrong builds.
  • Letting facilitators invent fourth URLs (Discord CDN, Google Drive) not in scope map.
  • Paying invoice when version_pin_ok false but clips “look fine.”
  • Omitting OBS audio gate—Whisper triage wastes overnight GPU on silent tracks.

Troubleshooting

Symptom Cause Fix
SOW version ≠ VERSION Hotfix without amendment Re-sign §2
Facilitator shares fest URL Scope bleed Playtest isolation
Receipt validates, labels red Lesson 201 skipped Fix triple-channel first
Contract pass, concat fails Audio/normalize Guide queue #3 OBS preflight

Mini exercise (55 minutes)

  1. Draft SOW from sections above; intentionally break F1 (version_pin typo).
  2. Run validator; confirm version_pin_ok: false.
  3. Fix pin; regenerate facilitator_contract_receipt_v1.json.
  4. Add BUILD_RECEIPT row; link from community playtest resource.
  5. Pin Discord README block; verify facilitator cannot post fest_public link without scope warning.

Continuity

FAQ

Does this replace a lawyer?
No—this is an ops SOW skeleton for indie facilitator weeks; escalate commercial terms locally.

Can one facilitator cover only Steam?
Yes—set surfaces_authorized to ["playtest"] only; do not claim triple-channel pass on BUILD_RECEIPT.

GX-only facilitators?
Require gx_public + channel_label_match for GX lane; omit Steam URLs from SOW §5 table.

Relationship to Lesson 201?
Lesson 201 proves labels; Lesson 206 proves people and process honor those labels under contract.


Labels matching across storefronts is not enough until a signed facilitator contract pins VERSION and receipts prove version_pin_ok before playtest week spend.