Lesson 221: Multi-Channel Facilitator Amendment Receipt on BUILD_RECEIPT (2026)
Direct answer: When VERSION, channel_label_match, or authorized surfaces change after Lesson 206 sign-off, stop facilitator sessions, file facilitator_amendment_receipt_v1.json with version_pin_ok: true on the new pin, and update BUILD_RECEIPT facilitator_amendment_pass before paying invoices or running Lesson 220 batch Whisper on stale clips.

Why this matters now (October 2026 mid-week hotfix)
October 2026 playtest week ships fest-demo-2026-10-01-rc1 Monday and fest-demo-2026-10-03-hotfix1 Wednesday. Facilitators already ran two GX sessions on rc1; Steam HTML5 logs show hotfix1 while the signed SOW still pins rc1. Finance approves the invoice; ops discovers itch_public URLs in the playtest Discord thread—scope bleed, not malice. Q3 2027 cousin: pair scope amendments with Lesson 239 feedback tag taxonomy so triage labels stay aligned after pin bumps.
Lesson 201 channel_label_match catches label drift on uploads; GameMaker VERSION pin preflight catches sign-time pins—this lesson is the BUILD_RECEIPT amendment milestone when contracts and receipts must move together mid-week.
Planned blog #11 (facilitator contract template) ships the SOW; community playtest resource #12 refreshes README blocks—this lesson owns facilitator_amendment_receipt_v1.json.
Beginner path (amendment in one sitting)
| Step | Action | Success check |
|---|---|---|
| 1 | Diff old vs new VERSION |
Amendment reason documented |
| 2 | Re-run triple-channel compare | channel_label_match GREEN on new pin |
| 3 | Update scope map surfaces | No unauthorized URLs |
| 4 | Facilitator signs amendment PDF | Dated §2 replacement |
| 5 | File facilitator_amendment_receipt_v1.json |
version_pin_ok: true |
| 6 | Thursday row review | facilitator_amendment_pass GREEN |
Time: ~25 min documentation + ~20 min facilitator re-sign—65 minutes first hotfix week.
Developer path (gates M1–M6)
| Gate | Check | Fail when |
|---|---|---|
| M1 | Prior facilitator_contract_receipt archived |
Overwriting without lineage |
| M2 | version_pin_before ≠ version_pin_after |
Amendment with identical pin |
| M3 | Triple-channel logs match after pin | Lesson 201 red on new label |
| M4 | Scope amendment block complete | New surface without map row |
| M5 | VOD clips tagged old pin rejected | Batch Whisper on stale sessions |
| M6 | BUILD_RECEIPT row updated | Invoice paid on pre-amendment pin |
Channel scope amendment block
Append to SOW as Amendment §A (initialed):
| Surface key | Before | After | URL delta |
|---|---|---|---|
playtest |
rc1 invite | hotfix1 invite | Steam branch bump |
gx_public |
internal soak | public promote | visibility only |
itch_public |
subdomain | custom domain deferred | split-hosting per Lesson 208 |
fest_public |
not authorized | still not authorized | no change |
Rule: any new surface key requires playtest isolation map update before M6.
facilitator_amendment_receipt_v1.json
{
"schema": "facilitator_amendment_receipt_v1",
"facilitator_id": "fac-oct-2026-01",
"amendment_id": "amd-2026-10-03-hotfix1",
"version_pin_before": "fest-demo-2026-10-01-rc1",
"version_pin_after": "fest-demo-2026-10-03-hotfix1",
"version_pin_ok": true,
"channel_label_match_after": true,
"scope_amendment": {
"surfaces_added": [],
"surfaces_removed": [],
"surfaces_visibility_changed": ["gx_public"]
},
"prior_contract_receipt": "release-evidence/ops/FACILITATOR_CONTRACT_RECEIPT.json",
"amendment_pdf_sha256": "sha256:REPLACE",
"vod_sessions_invalidated": ["fac-02-2026-10-02-eve"],
"gates": {
"M1_prior_archived": "pass",
"M2_pin_changed": "pass",
"M3_triple_channel": "pass",
"M4_scope_block": "pass",
"M5_vod_invalidation": "pass",
"M6_build_receipt": "pass"
}
}
Pin under release-evidence/ops/FACILITATOR_AMENDMENT_RECEIPT.json. BUILD_RECEIPT columns: facilitator_amendment_pass, version_pin_ok, version_pin (current).
Lineage table (audit)
| Artifact | version_pin | Still valid after amendment? |
|---|---|---|
facilitator_contract_receipt |
rc1 | historical only |
version_pin_receipt (GameMaker) |
rc1 | superseded |
facilitator_vod_batch_receipt |
rc1 | invalid — M5 |
gx_upload_version_receipt |
rc1 | superseded — re-upload |
triple_channel_label_receipt |
hotfix1 | current |
BUILD_RECEIPT row (post-amendment)
| Column | Value |
|---|---|
build_label |
fest-demo-2026-10-03-hotfix1 |
version_pin_ok |
true |
facilitator_amendment_pass |
true |
channel_label_match |
true |
facilitator_contract_pass |
true (original SOW + amendment) |
Run Thursday row review after Wednesday smoke on hotfix1.
Key takeaways
- Amendment ≠ optional email—file JSON or invoices lie.
version_pin_before/aftermust differ or you are not amending—you are hiding drift.- Re-run Lesson 201 compare on the new pin before M6.
- Invalidate VOD batch rows tied to old pin (Lesson 220).
- GameMaker VERSION pin is sign-time; Phaser amendment surface map is engine boot + wrapper parity; this lesson is mid-week change control.
- itch custom domain deferrals stay on Lesson 208 hosting decision—do not sneak CORP work into amendment without 222.
- Facilitator Discord README must show current pin only.
- GX internal→public promote is a visibility amendment, not a free scope expansion.
- Archive prior contract receipt—never delete lineage (M1).
- H2 capstone 223 will require
facilitator_amendment_passor explicitn/awith reason.
Common mistakes
- Paying facilitator before M6 while clips reference rc1.
- Amendment PDF signed but
channel_label_matchstill false on hotfix1 logs. - Adding fest_public to scope without producer approval.
- Skipping GX re-upload after pin change—receipts disagree.
- Treating amendment as substitute for initial Lesson 206 contract.
Troubleshooting
| Symptom | Lane |
|---|---|
| Labels red after hotfix | Triple-channel help |
| GX receipt still rc1 | GX VERSION preflight |
| Facilitator refuses re-sign | Pause spend; legal review |
| Phaser wrapper wrong surface | Phaser amendment surface map preflight |
Mini exercise (55 minutes)
- Archive contract receipt for rc1.
- Bump
VERSIONto hotfix1; fail M2 if pins match. - Re-run triple-channel compare; file amendment JSON.
- Mark one VOD session invalidated in batch receipt.
- Update BUILD_RECEIPT; run Thursday review row.
Continuity — H2 2026 arc (218–223)
| Lesson | Receipt focus |
|---|---|
| 218 | Deck static menu |
| 219 | Addressables fest string tables |
| 220 | VOD concat batch |
| 221 (this) | Facilitator amendment |
| 222 | Construct CORP/COEP fest |
| 223 | H2 capstone |
Previous: Lesson 220 — facilitator VOD concat batch
Next: Lesson 222 — Construct CORP/COEP fest HTML5 receipt.
FAQ
Same as Lesson 206?
206 is initial contract; 221 is mid-week change with version_pin_before/after and VOD invalidation.
Same as Lesson 201?
201 proves labels match on a build; 221 governs legal/ops when that build changes under an active facilitator.
Can we amend without facilitator signature?
No—M4 requires initialed scope block; unpaid work stays paused.
October only?
Hook is October 2026 hotfix week; use whenever VERSION moves during contracted playtests.
A hotfix without facilitator_amendment_receipt_v1.json is not “same facilitator, new build”—it is unapproved scope drift billed as playtesting.