December 2026 BUILD_RECEIPT Defer List - What Micro-Studios Freeze vs Ship Trend Playbook
December 18: the team agrees to a holiday code freeze. December 27: a Discord thread asks for "one small combat tweak" before January playtest. January 3: build_label bumped, Wednesday smoke skipped, and February fest prep starts with a binary nobody trust-tested.
December 2026 concentrates three pressures on micro-studios: holiday availability collapse (contractors offline), Q4 diligence aftermath (telemetry annex folders still open), and February Steam Next Fest scope decisions that should have locked before the break. Teams that treat freeze as a verbal promise get silent scope creep. Teams that file an explicit defer list on BUILD_RECEIPT return in January with the same build_label they smoked—or a documented reason it changed.
This Trend-Jacking / News Commentary playbook is the December freeze economics layer—not the October founder time-box worksheet (daily hour caps during fest week), not the February prep calendar (milestone dates), not Thursday row review (gate column diff ritual). It answers what to freeze, what to ship, and what to defer with receipts so holiday weeks do not erase November close-out discipline.
Non-repetition note: Founder time-box owns fest-week hour lanes + fest_week_capacity_receipt_v1. SteamPipe wall-clock trend owns queue telemetry. Unreal OTLP case study owns diligence-week proxy recovery. This URL owns December BUILD_RECEIPT defer columns + december_defer_receipt_v1.json before January re-entry.
Pair BUILD_RECEIPT beginner pipeline, Course 276 capstone forward, December engineering floor cap, jq November closeout crosswalk, and Friday capstone row review.
Why this matters now (December 2026 / holiday build freeze)
- Contractor blackout — Art, audio, and QA vendors vanish Dec 20–Jan 2; "small tweaks" land on the solo founder.
- Silent scope creep — Features merge without defer rows; BUILD_RECEIPT
build_labeldrifts while store page still shows November demo. - February fest clock — Teams targeting Steam Next Fest February 2027 need pre-freeze locks—not January design panic.
- November close-out receipts — Course cluster 266–275 child receipts expect stable
build_labelthrough capstone jq (#10 forward)—holiday hotfixes without defer receipts break crosswalk. - Diligence hangover — Q4 observability and Unreal OTLP recovery folders tempt "one more telemetry tweak" during freeze.
Direct answer: Before Dec 20, file december-defer-2026.md with Ship / Freeze / Defer rows, gates H1–H6, december_defer_receipt_v1.json, and optional BUILD_RECEIPT holiday_defer_ok: true—no feature merges during freeze unless receipt version bumps with explicit defer exception.
Who should read this
| Audience | Outcome |
|---|---|
| Beginner | Print a three-column freeze table in 20 minutes |
| Solo founder | Stop "maybe tonight" merges without receipts |
| Producer | Block January promote until defer receipt matches smoke |
| Working dev | Wire holiday_defer_ok + jq gate before CI promote |
Time: ~40 minutes read; ~45 minutes first defer receipt sprint.
Format ladder (same cluster, different angles)
| Artifact | Role | |
|---|---|---|
| This trend playbook | December freeze vs ship + december_defer_receipt_v1 |
|
| Founder time-box | October fest-week hour caps | |
| February prep calendar | Date milestones through fest | |
| Engineering floor #11 | December daily | Founder hours |
| Thursday row review | Gate column diff before promote | |
| November capstone jq #10 forward | Child receipt build_label crosswalk |
Order: November close-out receipts GREEN → this defer playbook before Dec 20 → engineering floor worksheet when contractors drop → February calendar for January re-entry.
What changed for micro-studios (qualitative, late 2026)
Patterns from holiday post-mortems and February fest prep threads—no invented crunch statistics:
- Teams verbally froze code but merged store art and bumped
build_labelwithout smoke—January playtest opened on untested binaries. - Defer lists lived in heads—Discord "we'll do banners in January" never hit BUILD_RECEIPT; marketing and engineering disagreed on what shipped.
- Emergency hotfixes during freeze lacked exception rows—partners saw diligence zip v3 with no README diff explaining holiday patch.
- Studios with fest-week defer discipline extended the habit to December with JSON receipts; studios without repeated January scramble.
- February fest teams that locked demo scope before break returned with clear RC targets; others reopened combat design Jan 2.
Industry habit: explicit defer columns on BUILD_RECEIPT became the holiday counterpart to upload_duration_min and demo_smoke_ok—proof you chose scope, not drift.
Beginner path — printable freeze vs ship table
Copy into release-evidence/ops/december-defer-2026.md:
# December 2026 freeze vs ship table
freeze_start: 2026-12-20
freeze_end: 2027-01-02
reentry_smoke_date: 2027-01-03
build_label_frozen: fest-demo-2026-12-rc3
| Item | Lane | Owner | Earliest resume |
|------|------|-------|-----------------|
| P0 crash hotfix only | SHIP (exception) | engineering | any day with smoke |
| Combat rebalance | DEFER | design | 2027-01-06 |
| New FMOD bus | DEFER | audio | 2027-01-08 |
| Store capsule winter pass | FREEZE (done) | marketing | locked 2026-12-18 |
| OTLP proxy pin | SHIP (diligence) | engineering | 2026-12-19 |
| Discord banner refresh | DEFER | marketing | 2027-01-05 |
| February fest new feature | DEFER | producer | post-RC1 |
Success check: Every row is Ship, Freeze, or Defer—no blank cells. Freeze means done and locked; Defer means intentionally not doing during window; Ship means allowed with receipt + smoke rules below.
Three lanes explained (snippet-friendly)
| Lane | Meaning | Example |
|---|---|---|
| SHIP | Allowed during freeze with exception receipt + smoke | P0 crash, diligence patch |
| FREEZE | Complete before freeze; no edits until re-entry | Capsule master, demo scope doc |
| DEFER | Explicitly not doing until earliest_resume |
New biome, trailer re-cut |
Non-deferrable gates during freeze (working dev)
These do not move to January—even if contractors are offline:
| Gate | Ritual | Why |
|---|---|---|
| P0 player crash | Hotfix + smoke + receipt bump | Trust fracture |
| Store demo boot fail | Hotfix same day | Fest SKU broken |
setlive on wrong branch |
Revert + 12 setlive checks | Wrong binary live |
| Diligence zip with false observability row | Fix receipt, not feature scope | Partner credibility |
Everything else defaults DEFER unless listed in SHIP (exception) with exception_reason in JSON.
Developer path — gates H1–H6
| Gate | Check | Pass when |
|---|---|---|
| H1 | freeze_start / freeze_end documented |
Dates in receipt + markdown |
| H2 | build_label_frozen matches last GREEN smoke |
Same label or documented exception |
| H3 | Every backlog item has Ship/Freeze/Defer lane | No blank table rows |
| H4 | SHIP exceptions list smoke_required: true |
Hotfix rows only |
| H5 | december_defer_receipt_v1.json filed |
holiday_defer_ok: true |
| H6 | BUILD_RECEIPT optional column set | holiday_defer_ok matches receipt |
december_defer_receipt_v1.json
Pin at release-evidence/ops/DECEMBER_DEFER_RECEIPT.json:
{
"schema": "december_defer_receipt_v1",
"freeze_window": {
"start": "2026-12-20",
"end": "2027-01-02",
"timezone": "America/Los_Angeles"
},
"build_label_frozen": "fest-demo-2026-12-rc3",
"reentry_smoke_date": "2027-01-03",
"lanes": {
"ship_exceptions": [
{
"item": "P0 crash minidump fix",
"owner": "engineering",
"smoke_required": true,
"exception_reason": "player crash on demo boot"
},
{
"item": "OTLP proxy CA pin",
"owner": "engineering",
"smoke_required": false,
"exception_reason": "Q4 diligence zip v2",
"cousin": "unreal_otlp_diligence_receipt_v1.json"
}
],
"freeze_locked": [
"store_capsule_winter_master",
"demo_scope_one_pager",
"november_closeout_capstone_v1"
],
"defer_until_january": [
{
"item": "combat rebalance pass",
"earliest_resume": "2027-01-06",
"owner": "design"
},
{
"item": "FMOD menu snapshot five-night ladder",
"earliest_resume": "2027-01-08",
"owner": "audio",
"cousin_blog": "5-night-fmod-desktop-menu-snapshot-spot-challenge-december-playtest-2026"
}
]
},
"gates": {
"H1_freeze_dates": "pass",
"H2_build_label": "pass",
"H3_lanes_complete": "pass",
"H4_ship_smoke_rules": "pass",
"H5_receipt": "pass",
"H6_build_receipt_column": "pass"
},
"holiday_defer_ok": true,
"january_promotion_allowed": false
}
Set january_promotion_allowed: true only after re-entry smoke on reentry_smoke_date passes and Thursday row review shows no stale gate columns.
BUILD_RECEIPT column — holiday_defer_ok
Add to BUILD_RECEIPT.json schema vNext (optional column—document in README):
{
"build_label": "fest-demo-2026-12-rc3",
"holiday_defer_ok": true,
"december_defer_receipt_path": "release-evidence/ops/DECEMBER_DEFER_RECEIPT.json",
"freeze_exception_count": 2,
"defer_count": 4
}
Fail-closed: If holiday_defer_ok is true but freeze_exception_count > 0 without matching ship_exceptions[] in receipt, jq gate fails—prevents manual boolean theater.
Freeze exception workflow (hour-by-hour)
When a P0 issue lands during Dec 20–Jan 2:
| Minute block | Action |
|---|---|
| 0–10 | Repro on installed demo build; note build_label |
| 10–20 | Add row to ship_exceptions[] with exception_reason |
| 20–40 | Minimal fix; no scope expansion |
| 40–50 | Wednesday smoke golden path |
| 50–60 | Bump DECEMBER_DEFER_RECEIPT.json version; Thursday row review |
Do not batch three unrelated fixes into one exception—partners and future-you read ship_exceptions[] as an audit trail.
Multi-founder sign-off table
| Role | Signs | Blocks when |
|---|---|---|
| Engineering | SHIP exceptions touching binaries | Smoke not run |
| Producer | DEFER earliest_resume dates |
Marketing wants silent store edits |
| Marketing | FREEZE capsule / trailer masters | Engineering asked for "quick GIF" |
| Audio (contractor) | DEFER FMOD/menu work | Five-night ladder half-done mid-freeze |
Two-founder teams can merge producer + engineering sign-off—still one receipt file.
January re-entry checklist (printable)
- [ ] Re-entry smoke on
build_label_frozenor documented new label - [ ]
january_promotion_allowedflipped only after smoke GREEN - [ ] Thursday row review — check
holiday_defer_ok+ gate columns - [ ] Resume top three DEFER rows by
earliest_resumeorder—not loudest Discord thread - [ ] February prep calendar RC target confirmed
- [ ] November capstone jq (#10 forward) still passes if close-out cluster active
jq gate sketch (optional CI)
jq -e '
.holiday_defer_ok == true
and (.gates.H5_receipt == "pass")
and (.lanes.defer_until_january | length) >= 1
' release-evidence/ops/DECEMBER_DEFER_RECEIPT.json
Promotion job excerpt:
if [ "$(date +%m)" = "12" ]; then
jq -e '.holiday_defer_ok == true' release-evidence/ops/DECEMBER_DEFER_RECEIPT.json \
|| { echo "December promote blocked—file defer receipt"; exit 1; }
fi
Pair GitHub Actions concurrency patterns when holiday hotfixes run on shared CI runners—cancel-in-progress before exception builds.
Proof table (audit vocabulary)
| Evidence | Proves | Fail signal |
|---|---|---|
december-defer-2026.md |
Human-readable freeze table | Verbal freeze only |
DECEMBER_DEFER_RECEIPT.json |
Machine-readable H1–H6 | Missing file Jan 3 |
| Re-entry smoke log | Frozen label still boots | Promote on stale binary |
freeze_exception_count |
Hotfixes documented | Mystery Dec 26 merge |
| Partner README diff | Diligence exceptions explained | Silent zip v3 |
| February calendar checklist | Pre-freeze locks done | January scope meeting |
Scenarios A–H (working dev)
| ID | Situation | Playbook move |
|---|---|---|
| A | Solo founder, no contractors | Shorter defer list; SHIP only P0 |
| B | Two-founder eng + marketing | Marketing FREEZE capsule; eng owns exceptions |
| C | Multi-SKU Unity + Unreal | Separate defer rows per SKU build_label |
| D | Diligence call Dec 22 | SHIP exception for telemetry only—no feature creep |
| E | Discord demands "small tweak" | Add DEFER row with earliest_resume—do not merge |
| F | Hotfix during freeze | Bump receipt ship_exceptions; smoke same day |
| G | January promote without smoke | Block; set january_promotion_allowed: false |
| H | November capstone jq fails | Fix child receipts before expanding defer list |
December week operating calendar
| Date window | Ops action |
|---|---|
| Dec 13–17 | Draft defer table; last GREEN smoke on frozen label |
| Dec 18–19 | File december_defer_receipt_v1; BUILD_RECEIPT holiday_defer_ok |
| Dec 20 | Freeze starts—merge policy exceptions only |
| Dec 20–Jan 2 | Log any SHIP exception in receipt same day |
| Jan 3 | Re-entry smoke + Thursday row review |
| Jan 4–6 | Resume DEFER rows by earliest_resume priority |
| Late Jan | February fest calendar RC targets |
Pair FMOD five-night challenge as DEFER until audio owner returns—do not half-run Nights 3–5 during freeze.
Relationship to founder time-box defer list (not duplicate)
| Document | Window | Unit |
|---|---|---|
| Fest-week capacity | 7–10 day fest spike | Daily hours |
| This playbook | Dec 20–Jan 2 holiday | Scope lanes |
| Engineering floor #11 | December daily | Founder hours |
Use all three: hours (floor worksheet) × scope (this receipt) × dates (February calendar).
Counterarguments (honest limits)
"Freeze kills momentum."
Defer list preserves January momentum—silent merges kill trust-tested build_label.
"We're too small for JSON receipts."
Markdown table suffices solo; JSON when BUILD_RECEIPT culture exists or partners expect folders.
"Emergency fixes don't need paperwork."
One-row ship_exceptions with smoke takes five minutes—cheaper than January debug.
"February fest is optional."
Defer playbook still helps any January launch—fest calendar is the timely hook, not the only use case.
Partner / diligence email row (optional)
Subject: <Game> — holiday freeze scope note
Body:
We entered code freeze Dec 20 with
december_defer_receipt_v1.jsonand frozenbuild_labelfest-demo-2026-12-rc3. Holiday exceptions: P0 crash fix (smoked), OTLP proxy pin for diligence v2. Deferred items resume Jan 6–8 per receiptdefer_until_january[].
Pointer-first—attach README row, not a lecture on holiday policy.
Key takeaways
- Holiday freeze fails when scope lives in Discord, not BUILD_RECEIPT.
- Ship / Freeze / Defer three lanes—no blank rows before Dec 20.
december_defer_receipt_v1.jsongates H1–H6 document freeze window + exceptions.holiday_defer_okoptional BUILD_RECEIPT column pairs with receipt path.- SHIP exceptions require smoke when they touch player binaries.
- Re-entry smoke Jan 3 before
january_promotion_allowed: true. - Founder time-box owns hours; this playbook owns scope.
- February prep calendar pre-freeze locks align with FREEZE lane.
- Thursday row review catches stale gates after holiday hotfixes.
- November jq capstone crosswalk needs stable
build_labelthrough freeze. - Course 276 capstone forward wires holiday defer into close-out cluster.
- Fail-closed: December CI promote without defer receipt when policy enabled.
- Diligence patches are SHIP exceptions—not feature creep licenses.
- Winter HDR capsule art pass locks FREEZE art lane with
winter_capsule_tone_receipt_v1. - December engineering floor cap when contractors go offline.
- Friday capstone row review latches freeze after jq crosswalk.
FAQ
Is this only for Steam Next Fest February 2027?
No—any late-December freeze before a January ship target benefits; fest calendar is the timely anchor.
How is this different from the founder time-box worksheet?
Time-box caps daily hours during fest week; this playbook caps scope lanes during holiday weeks.
Can we defer Wednesday smoke?
No—smoke is non-deferrable when promotion or SHIP exceptions touch binaries (founder time-box T-3 rule).
What if we already merged a feature during freeze?
File exception retroactively, run smoke, bump receipt version—honest README beats silent drift.
Do we need jq CI in December?
Optional; manual H1–H6 checklist works for solo founders.
How does this relate to Unreal OTLP case study?
Diligence telemetry fixes are valid SHIP exceptions—list in ship_exceptions[] with cousin receipt path.
What about marketing-only changes?
Store FREEZE caps and screenshots locked pre-freeze; Discord banners default DEFER.
Will defer receipts guarantee February fest success?
No—they reduce January scramble and receipt drift—outcomes still depend on demo quality.
Single founder—minimum viable defer?
Markdown table + five DEFER rows + one re-entry smoke log—add JSON when BUILD_RECEIPT exists.
Where does consent scope governance fit?
Do not add holiday_defer_ok without schema version note in BUILD_RECEIPT README—cousin to Thursday row review drift rules.
Closing read (December 2026)
Holiday weeks do not create more engineering capacity—they expose whether you document choices when capacity drops.
Micro-studios that file december_defer_receipt_v1.json enter January with the same trust-tested build_label or a numbered exception list partners can open. Teams that rely on verbal freeze rediscover scope creep the first week February fest prep asks for RC dates.
Start with the printable Ship / Freeze / Defer table before Dec 20—not with a January retrospective about what you should have deferred.
Found this useful? Share the freeze table with whoever owns BUILD_RECEIPT and marketing caps before contractors go offline.