December Engineering Floor Cap Worksheet When Contractors Go Offline for Holidays - 2026
December 16: your audio contractor ships the last FMOD pass. December 17: art contractor replies "back Jan 6." December 18: you promise Discord a combat rebalance and a winter capsule tweak the same week you are also the only person who can run Wednesday smoke, jq capstone verify, and family dinner.
December 2026 micro-studios hit a predictable capacity cliff: contractors go offline while holiday defer scope and February fest prep still demand engineering truth. October fest time-box split engineering vs marketing during a seven-day spike; this Money & Business worksheet caps daily engineering floor hours for the three-week contractor blackout—not scope lanes (defer playbook), not fest marketing cash (contractor vs hire fest week).
Non-repetition note: Defer playbook owns Ship/Freeze/Defer scope. Fest time-box owns T-7…T+3 hour lanes. This URL owns engineering_floor_hours per December day + december_capacity_receipt_v1.json when paid help is zero.
Pair BUILD_RECEIPT beginner, Course 276 capstone forward, Friday capstone row review.
Why this matters now (December 2026 / contractor blackout)
- Contractor holidays are predictable — Art, audio, localization, and trailer editors routinely offline Dec 20–Jan 2; founders become the entire engineering floor.
- Scope defer without hour cap fails — December defer list says DEFER combat rebalance but not how many hours exist for P0 hotfixes.
- November close-out load — jq capstone and child receipts still need smoke and row review hours budgeted.
- Invisible overtime — Partners see slipped promote dates without
founder_hours_plannedon BUILD_RECEIPT. - January re-entry — February calendar assumes honest January capacity—not heroic December debt.
Direct answer: Fill december-engineering-floor-2026.md with daily engineering_floor_cap, subtract ritual hours first, attach contractor_offline_table, file december_capacity_receipt_v1.json, optional BUILD_RECEIPT founder_hours_planned before Dec 20 freeze.
Who this worksheet is for
| Audience | Outcome |
|---|---|
| Solo founder | Printable daily engineering caps Dec 13–Jan 2 |
| Producer + engineer duo | Single engineering floor number per day |
| Working dev | Receipt JSON for BUILD_RECEIPT row review |
Time: ~45 minutes first worksheet; 5 minutes nightly update actual_engineering_h.
Prerequisites: Contractor return dates, defer list draft, sleep floor you will actually defend.
Format ladder (December cluster)
| Artifact | Role |
|---|---|
| This worksheet | Daily engineering floor hours when contractors offline |
| December defer playbook | Scope Ship/Freeze/Defer |
| October fest time-box | Fest-week eng vs marketing |
| jq November capstone | build_label crosswalk |
| Contractor vs hire fest week | Dollars for who you pay |
Order: November jq GREEN → this worksheet Dec 13–19 → defer receipt Dec 18 → freeze Dec 20.
Beginner path — daily engineering floor table
Copy into release-evidence/ops/december-engineering-floor-2026.md:
| Date | Day | Engineering floor cap (h) | Rituals reserved (h) | Feature/hotfix budget (h) | Contractors offline | Notes |
|---|---|---|---|---|---|---|
| Dec 13 | Sat | 4 | 0 | 4 | audio out Dec 16 | Capstone jq run |
| Dec 14 | Sun | 0 | 0 | 0 | — | Rest day pinned |
| Dec 15 | Mon | 5 | 1.5 | 3.5 | art out Dec 17 | Smoke + row review |
| Dec 16 | Tue | 4 | 1 | 3 | audio offline | CSV ingest only |
| Dec 17 | Wed | 5 | 1.5 | 3.5 | art offline | Wednesday smoke |
| Dec 18 | Thu | 4 | 1 | 3 | both offline | File defer receipt |
| Dec 19 | Fri | 4 | 1 | 3 | both offline | Capstone row review |
| Dec 20–Jan 2 | — | 3/day | 1 | 2 | blackout | P0 hotfix only |
| Jan 3 | Fri | 5 | 1.5 | 3.5 | — | Re-entry smoke |
Beginner rule: rituals_reserved + feature_budget ≤ engineering_floor_cap. If smoke needs 1.5h, you do not also schedule a four-hour combat pass the same day unless cap rises (and sleep drops)—honest math.
Success check: One primary engineering outcome per day written in Notes—not twelve parallel goals.
Contractor offline table (pin in receipt)
| Role | Last deliverable | Offline start | Return | Founder absorbs |
|---|---|---|---|---|
| Audio / FMOD | Menu spot Night 5 | Dec 16 | Jan 8 | None—defer ladder |
| Environment art | Winter capsule master | Dec 17 | Jan 6 | Store upload only |
| Trailer editor | — | Dec 20 | Jan 3 | Defer trailer re-cut |
| QA contractor | Playtest report | Dec 18 | Jan 5 | Founder smoke only |
| Localization | CSV handoff | Dec 19 | Jan 10 | Defer string pass |
Developer path — gates E1–E6
| Gate | Check | Pass when |
|---|---|---|
| E1 | december-engineering-floor-2026.md complete Dec 13–Jan 3 |
Every day has numeric cap |
| E2 | Ritual hours ≥ smoke + row review + optional jq verify | Non-negotiable block scheduled |
| E3 | contractor_offline_table in receipt |
Return dates documented |
| E4 | defer_list cross-linked to defer receipt |
Scope matches hours |
| E5 | december_capacity_receipt_v1.json filed |
december_capacity_ok: true |
| E6 | BUILD_RECEIPT founder_hours_planned |
Matches receipt totals |
december_capacity_receipt_v1.json
Pin at release-evidence/ops/DECEMBER_CAPACITY_RECEIPT.json:
{
"schema": "december_capacity_receipt_v1",
"build_label": "fest-demo-2026-12-rc3",
"window": { "start": "2026-12-13", "end": "2027-01-03" },
"engineering_floor_total_planned": 52,
"ritual_hours_total": 14,
"feature_hotfix_budget_total": 38,
"contractor_offline": [
{ "role": "audio", "offline_start": "2026-12-16", "return": "2027-01-08" },
{ "role": "environment_art", "offline_start": "2026-12-17", "return": "2027-01-06" }
],
"cousin_receipts": {
"december_defer": "release-evidence/ops/DECEMBER_DEFER_RECEIPT.json",
"november_closeout": "release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json"
},
"days": [
{
"date": "2026-12-17",
"engineering_floor_cap": 5,
"rituals_reserved": 1.5,
"feature_budget": 3.5,
"primary_outcome": "Wednesday smoke GREEN"
}
],
"gates": {
"E1_floor_table": "pass",
"E2_rituals_first": "pass",
"E3_contractor_table": "pass",
"E4_defer_crosswalk": "pass",
"E5_receipt": "pass",
"E6_build_receipt_hours": "pass"
},
"december_capacity_ok": true,
"holiday_hotfix_allowed": true
}
Set holiday_hotfix_allowed: false on days you intentionally take 0 engineering cap (rest days)—not silent overload.
BUILD_RECEIPT optional column
{
"build_label": "fest-demo-2026-12-rc3",
"founder_hours_planned": 52,
"december_capacity_receipt_path": "release-evidence/ops/DECEMBER_CAPACITY_RECEIPT.json",
"december_capacity_ok": true,
"holiday_defer_ok": true
}
Thursday row review — diff founder_hours_planned when actual promote slips.
Engineering floor — rituals eat first (working dev)
Subtract before feature work:
| Ritual | Typical block (h) | Non-deferrable when |
|---|---|---|
| Wednesday smoke | 0.25–0.5 | Promote planned |
| Thursday row review | 0.25 | Same week as smoke |
| jq capstone verify | 0.25 | Pre-freeze |
| P0 hotfix repro + smoke | 2–4 | Player crash |
| Discord P0 triage | 0.5–1 | Fest traffic |
December rule: When engineering_floor_cap ≤ 3 (Dec 20–Jan 2), only rituals + P0 fit—everything else is defer DEFER.
Defer list integration (scope × hours)
| Defer item | Scope owner | Hour reality |
|---|---|---|
| Combat rebalance | DEFER Jan 6 | 0h in blackout |
| FMOD five-night resume | DEFER Jan 8 | 0h until audio returns |
| Winter capsule upload | FREEZE Dec 18 | 1h founder upload only |
| jq capstone refresh | SHIP Dec 13 | 0.25h in ritual block |
| New biome blockout | DEFER Jan 10 | 0h—needs art contractor |
Mismatch example: defer says DEFER combat but calendar shows 8h engineering Dec 22—receipt culture caught a lie.
Proof table
| Evidence | Proves | Fail signal |
|---|---|---|
december-engineering-floor-2026.md |
Human-readable caps | Verbal "I'll manage" |
DECEMBER_CAPACITY_RECEIPT.json |
Machine-readable E1–E6 | Missing before freeze |
contractor_offline[] |
Blackout honesty | Surprise Jan 3 scope |
actual_engineering_h per day |
Retrospective truth | Planned 52h, actual 80h |
founder_hours_planned on BUILD_RECEIPT |
Partner visibility | Promote slip unexplained |
Scenarios A–G
| ID | Situation | Worksheet move |
|---|---|---|
| A | Solo founder, no contractors | Lower caps; ritual block unchanged |
| B | Spouse covers marketing | Engineering cap unchanged—marketing not this worksheet |
| C | One contractor stays online | Note partial_blackout in table |
| D | P0 crash Dec 24 | Bump actual_engineering_h; SHIP exception in defer receipt |
| E | Family travel Dec 25–26 | Set cap 0; do not pretend 3h |
| F | Two founders | Split days[] with founder_id per row |
| G | Lesson 276 capstone week | Reserve Dec 19 for Friday capstone row review |
Solo founder evening schedule (first worksheet — 45 min)
| Block | Action |
|---|---|
| 0–10 min | List contractors + offline dates |
| 10–25 min | Fill Dec 13–Jan 3 cap table |
| 25–35 min | Subtract ritual hours; verify math |
| 35–40 min | Crosswalk defer list items |
| 40–45 min | File december_capacity_receipt_v1.json |
Two-founder split template
| Founder | December lane | Cap note |
|---|---|---|
| Engineering lead | Smoke, hotfix, jq | 70% of engineering_floor_cap |
| Producer / comms | Discord, store, defer admin | Counts as admin—not engineering floor |
| Shared | Thursday row review | 15 min each |
One receipt file with founder_id on days[] rows—or parallel receipts merged in BUILD_RECEIPT; pick one pattern.
Daily retrospective row (5 minutes, optional)
Add to days[] in receipt JSON each evening:
{
"date": "2026-12-17",
"engineering_floor_cap": 5,
"actual_engineering_h": 4.5,
"primary_outcome": "Wednesday smoke GREEN",
"outcome_met": true,
"defer_items_touched": [],
"notes": "Spent 1h Discord—counted 0.5h admin not engineering"
}
Rule: actual_engineering_h > engineering_floor_cap two days in a row → lower next day's cap or move defer items—do not normalize heroics.
Blackout week hour budget (Dec 20–Jan 2)
Default 3h/day engineering floor breakdown:
| Block | Hours | Owner |
|---|---|---|
| Inbox / Discord P0 scan | 0.5 | Founder |
| Smoke or repro (if SHIP exception) | 1.0 | Founder |
| Receipt / row review touch | 0.25 | Founder |
| Hotfix implementation buffer | 1.25 | Founder |
| Total | 3.0 | — |
Anything beyond this table requires defer SHIP exception in December defer receipt—not "just one more hour."
Team size capacity variants
| Team shape | December engineering floor strategy |
|---|---|
| Solo | Cap 3h/day blackout; 0h rest days |
| Eng + marketing cofounder | Engineering lead owns receipt; marketing not in engineering_floor_cap |
| Eng + part-time contractor (one lane) | Note partial_blackout; only absent lanes DEFER |
| Remote async contractors | Timezone overlap may add 1h/day—document in notes |
jq gate sketch (optional CI)
jq -e '
.december_capacity_ok == true
and (.engineering_floor_total_planned | tonumber) >= 40
and (.contractor_offline | length) >= 1
' release-evidence/ops/DECEMBER_CAPACITY_RECEIPT.json
Block promote when DECEMBER_CAPACITY_STRICT=1 and receipt missing—cousin to November closeout verify.
December capacity calendar (engineering lane)
| Week | Engineering focus |
|---|---|
| Dec 13–15 | Capstone jq + smoke baseline |
| Dec 16–19 | Contractor handoffs + defer filing |
| Dec 20–Jan 2 | P0 + rituals only |
| Jan 3 | Re-entry smoke + Thursday row review |
| Jan 4+ | Resume defer items per contractor return dates |
Pair winter capsule art pass—founder upload hour counts toward Dec 18 cap, not blackout feature budget.
Contractor lane handoff checklist (Dec 16–19)
Before each contractor goes offline, capture in contractor_offline[]:
- Last merged branch name + commit SHA in receipt
notes. - Open PRs — merge, close, or assign founder with hour estimate.
- Asset dependencies — list blockers that become DEFER if contractor absent.
- Return date — conservative calendar date, not "when they feel like it."
- Smoke owner — founder until return; no assumption contractor runs Wednesday ritual remotely.
Beginner mistake: assuming "they'll check Slack on vacation" — treat as 0h unless contract says otherwise.
BUILD_RECEIPT merge pattern (working dev)
{
"receipts": [
"release-evidence/ops/DECEMBER_CAPACITY_RECEIPT.json",
"release-evidence/ops/DECEMBER_DEFER_RECEIPT.json"
],
"founder_hours_planned": 52,
"founder_hours_actual": null,
"gates": ["E1", "E2", "E3", "E4", "E5", "E6"]
}
founder_hours_actual fills nightly from daily retrospective rows—optional for solo studios, valuable when investors ask "why January slipped."
Extended FAQ
Should marketing hours share the engineering floor?
No—this worksheet is engineering lane only. Marketing caps live in October fest timebox. December marketing is mostly freeze per defer list.
What if a contractor works 4h on Dec 24?
Record in contractor_offline[].partial_hours if your schema supports it; otherwise note in days[].notes and do not inflate founder cap.
Can I skip the worksheet if I'm solo with no contractors?
Yes—use solo row in team table; still file receipt so January re-entry has a baseline.
How does this relate to Course 276 capstone?
Course milestone expects named ops receipts; this file satisfies founder capacity evidence for holiday cluster.
Does PTO for the founder zero the cap?
Rest days use 0h engineering floor—distinct from blackout 3h days when you're working but contractors aren't.
January re-entry hour ramp (Jan 3–10)
After blackout, do not jump from 3h/day to October fest 8h/day spikes—ramp engineering floor:
| Date | Suggested cap | Focus |
|---|---|---|
| Jan 3 | 4h | Smoke + row review only |
| Jan 4–5 | 5h | Defer items with contractor return dates |
| Jan 6–7 | 6h | First feature lane if contractor back |
| Jan 8+ | Match February prep calendar weekly targets |
File updated days[] rows in receipt so BUILD_RECEIPT row review shows planned vs actual ramp—not a surprise hero week.
Troubleshooting
| Symptom | Fix |
|---|---|
| Planned 52h, actual 90h | Lower caps; audit Discord as admin not engineering |
| Smoke skipped "just this week" | Non-deferrable—borrow from next day cap, document in receipt |
| Contractor "maybe" Jan 2 | Use conservative return date in table |
| Defer DEFER but calendar shows 6h feature | Crosswalk E4 fail—reconcile |
| Partner asks why promote slipped | Point to founder_hours_planned + actual_engineering_h |
Counterarguments (honest limits)
"Caps are pessimistic."
December without contractors is objectively fewer person-hours—caps document reality.
"JSON is overhead."
Markdown table alone works solo; JSON when BUILD_RECEIPT and partners expect ops folder.
"Same as fest time-box."
Fest time-box is 7–10 days with marketing_burst; this is engineering-only across contractor blackout.
Partner email snippet (optional)
We file
december_capacity_receipt_v1.jsonwith 52 planned founder engineering hours Dec 13–Jan 3, contractor blackout Dec 16–Jan 8 for audio, and P0-only hotfix policy during freeze. Defer scope is indecember_defer_receipt_v1.json.
Key takeaways
- Contractor blackout is predictable—plan engineering floor before Dec 20.
engineering_floor_capis daily—not a December total vibe.- Rituals eat first—smoke and row review before feature hours.
december_capacity_receipt_v1.jsongates E1–E6 pair with defer scope.founder_hours_plannedoptional on BUILD_RECEIPT explains promote slips.- December defer owns what; this worksheet owns how many hours.
- October fest time-box owns fest-week marketing_burst.
- jq capstone verify hours belong in ritual block.
- Dec 20–Jan 2 default 3h/day cap—P0 and rituals only.
- Rest days at 0h are valid—not failure.
- Contractor vs hire fest week owns cash; this owns founder hours.
- Course 276 capstone forward expects capacity receipt before freeze.
- Friday capstone row review before holiday freeze latch.
actual_engineering_hhonest retrospective feeds January caps.- February prep calendar uses January re-entry hours honestly.
FAQ
Is this only for teams with contractors?
Solo founders without contractors still benefit—caps prevent December scope creep when you are the only engineer.
How is this different from the defer playbook?
Defer = Ship/Freeze/Defer scope; this = hours available to execute SHIP exceptions.
Can marketing hours go in this worksheet?
No—use October fest time-box marketing_burst pattern if needed; December worksheet is engineering floor only.
What if contractor returns early?
Update contractor_offline[] and raise caps—bump receipt version.
Do we need this if defer FREEZE is filed?
Yes—FREEZE stops scope; caps stop founder hour bankruptcy.
How does FMOD five-night challenge fit?
Defer until audio returns—zero feature budget during blackout (FMOD challenge).
Will capacity receipt guarantee ship date?
No—it makes slip causes visible—outcomes still vary.
Two founders—one or two receipts?
One receipt with founder_id per days[] row recommended.
Closing read (December 2026)
Contractors going offline is not a surprise plot twist—it is the calendar. Micro-studios that cap daily engineering floor hours, file december_capacity_receipt_v1.json, and crosswalk defer scope enter holiday freeze without pretending one founder is three departments.
Start with contractor return dates and ritual blocks—then assign feature hours. If the math fails on Dec 15, fix the plan before Dec 20, not on Discord at 11 p.m. Christmas Eve.
Found this useful? Pin december-engineering-floor-2026.md beside your defer table before contractors sign off.