October Upload Week Engineering Overtime Cap Worksheet - 2026

Monday 9:10 p.m.: weekly depot jq finds the right build_id, but the SteamPipe queue is slow. Tuesday: a contractor offers to stay late and rebuild the depot "just to be safe." Wednesday: the same contractor is asked to smoke the branch before store publish checklist. Thursday: someone needs caption fixes after trailer thumbnail safe-zone feedback. Friday: setlive is still scary because wrong default branch recovery is fresh in memory. Nobody says "budget." Everyone says "one more hour."
October 2026 upload week is a perfect overtime trap for micro-studios. The work is real: depot hash honesty, setlive branch proof, store metadata freeze, captions, QA smoke, and partner evidence zips. The danger is not laziness. The danger is treating every red or yellow receipt as permission for unlimited engineering hours.
This Money & Business worksheet caps upload-week engineering overtime without blocking necessary fixes. It gives beginners a plain weekly hours table, gives producers stop rules they can paste into contractor threads, and gives working devs an october_upload_overtime_receipt_v1.json with O1-O6 gates and BUILD_RECEIPT october_upload_overtime_ok: true.
Non-repetition note: March engineering cash runway owns post-February contractor invoice amortization across March sprint weeks. Founder timebox owns founder attention split between engineering and marketing. Localization contractor burn-down owns LQA/vendor spend before string freeze. This URL owns upload-week emergency engineering overtime caps tied to depot, setlive, caption, smoke, and store-publish receipts.
Pair weekly depot jq #7, depot upload evening #1, SteamCMD validation tools, AI RPG live-ops course lesson 278, and Steam store trailer muted-state help. Forward #9 SETLIVE exception opinion and #10 Wednesday depot smoke row review.
Why this matters now (October 2026 upload week)
- Upload windows compress work - SteamPipe, store review, capsule/video polish, and partner proof all collide in the same week.
- Every receipt can create overtime -
october_upload_weekly_okRED,store_publish_okYELLOW, caption lint RED, or setlive branch confusion can all become contractor hours. - Micro-studios lack a spending brake - A two-person team can approve ten "small" fixes before anyone sees the invoice.
- The best fixes are not always billable fixes - Sometimes the correct action is a waiver, delayed publish, or rollback to a known RC.
- Partners now ask for receipts - A clean BUILD_RECEIPT with a missing overtime cap still hides launch risk.
Direct answer: Before upload week starts, write october_upload_overtime_receipt_v1.json, set daily engineering hour caps, map every overtime request to depot/setlive/store/caption/smoke gates, clear O1-O6, and latch BUILD_RECEIPT october_upload_overtime_ok: true. If a request has no receipt field or stop rule, it does not get emergency hours.
Who this worksheet is for
| Audience | Outcome |
|---|---|
| Solo founder | A printable daily hour cap before panic starts |
| Producer | A yes/no rule for contractor overtime requests |
| Engineer | Receipt fields that connect overtime to actual release gates |
| Contractor lead | Scope notes that prevent surprise invoices |
Time: 50-70 minutes before upload week; 5 minutes per overtime request during the week.
Prerequisites: Localization capstone or equivalent upload-window approval, latest weekly depot jq, active contractor rate card, and a list of receipts that can still go RED.
Beginner path - the 30-minute overtime cap table
Copy this into release-evidence/ops/october-upload-overtime-2026.md:
| Day | Max overtime hours | Allowed reason | Receipt owner | Stop rule |
|---|---|---|---|---|
| Monday | 3 | SteamPipe queue / depot hash mismatch | october_upload_weekly_v1 |
O-DEPOT |
| Tuesday | 2 | Rebuild only if EXCEPTION-DEPOT exists | october_upload_weekly_v1 |
O-REBUILD |
| Wednesday | 4 | Depot smoke before store publish | forward #10 smoke receipt | O-SMOKE |
| Thursday | 2 | Store metadata or caption blocker | store/caption receipts | O-STORE |
| Friday | 3 | Setlive branch proof / capstone closeout | forward #12 capstone | O-SETLIVE |
| Weekend | 0 by default | Only live-breaking rollback | incident waiver | O-WAIVER |
Beginner rule: overtime is not "any work after dinner." It is emergency engineering work that protects a named release gate. If the task cannot name the gate, it goes into normal backlog.
Three questions before approving an hour
- Which receipt is RED or YELLOW? Example:
october_upload_weekly_okfalse. - What exact field will the hour change? Example:
depot_manifest_sha256orsetlive_target_label. - What is the stop rule? Example: max two rebuild attempts before rollback to last known RC.
If nobody can answer all three, the safest answer is "not upload-week overtime."
What counts as upload-week engineering overtime
| Counts | Track elsewhere |
|---|---|
| SteamPipe rebuilds, upload retries, branch label proof | Marketing ad spend |
| Depot smoke fixes needed before Thursday store publish | Capsule art contractor hours |
| Setlive dry-run, label mismatch repair, rollback scripts | Press key outreach |
| Caption pipeline fix when store video slot blocks publish | Localization LQA vendor spend |
| CI verification for BUILD_RECEIPT release gates | Founder planning time |
This distinction matters because creator key press budget and store metadata freeze have their own money lanes. Do not hide press, art, or translation spend under "engineering overtime" because the invoice arrived in the same week.
Developer path - gates O1-O6
| Gate | Check | Fail action |
|---|---|---|
| O1 | Daily overtime cap table covers Monday-Friday plus weekend default | Block emergency hours until table exists |
| O2 | Every overtime category maps to a receipt field or gate | Move unowned tasks to normal backlog |
| O3 | Contractor rate card and approval owner are recorded | No contractor approval by chat alone |
| O4 | Stop rules cap rebuild, smoke, caption, and setlive retries | Roll back or waiver after max attempts |
| O5 | BUILD_RECEIPT has october_upload_overtime_budget_hours and receipt path |
Fix release receipt before partner zip |
| O6 | october_upload_overtime_ok: true only when actual + reserved hours <= cap |
Freeze overtime approvals if exceeded |
These gates are about hours and authority, not technical success. A depot fix can pass weekly jq while failing O6 because the team spent twelve contractor hours on a four-hour cap.
october_upload_overtime_receipt_v1.json
File as release-evidence/ops/october_upload_overtime_receipt_v1.json:
{
"schema": "october_upload_overtime_receipt_v1",
"generated_at": "2026-10-05T09:00:00Z",
"upload_window": "2026-W41",
"currency": "USD",
"contractor_rate_card": [
{"role": "build_engineer", "hourly_usd": 95, "approval_owner": "producer"},
{"role": "qa_engineer", "hourly_usd": 55, "approval_owner": "producer"},
{"role": "tools_engineer", "hourly_usd": 85, "approval_owner": "tech_lead"}
],
"daily_caps": [
{
"day": "monday",
"cap_hours": 3,
"allowed_receipts": ["october_upload_weekly_v1", "steampipe_depot_upload_receipt_v1"],
"stop_rule": "O-DEPOT"
},
{
"day": "wednesday",
"cap_hours": 4,
"allowed_receipts": ["october_depot_smoke_row_diff_receipt_v1"],
"stop_rule": "O-SMOKE"
},
{
"day": "friday",
"cap_hours": 3,
"allowed_receipts": ["october_upload_capstone_receipt_v1", "setlive_exception_list_receipt_v1"],
"stop_rule": "O-SETLIVE"
}
],
"stop_rules": [
{"id": "O-DEPOT", "trigger": "two_upload_retries_without_new_hash", "action": "rollback_to_last_known_rc"},
{"id": "O-REBUILD", "trigger": "build_id_changes_without_EXCEPTION_DEPOT", "action": "block_rebuild"},
{"id": "O-SMOKE", "trigger": "second_smoke_failure_same_field", "action": "open_wednesday_smoke_waiver"},
{"id": "O-STORE", "trigger": "caption_or_metadata_fix_not_blocking_publish", "action": "move_to_post_fest_backlog"},
{"id": "O-SETLIVE", "trigger": "target_label_mismatch_after_dry_run", "action": "block_setlive_and_route_SETLIVE_exception"},
{"id": "O-WAIVER", "trigger": "weekend_overtime_requested", "action": "require_incident_waiver"}
],
"actuals": [
{
"day": "monday",
"role": "build_engineer",
"hours": 1.5,
"receipt": "release-evidence/steam/weekly/2026-W41.json",
"field_changed": "depot_manifest_sha256",
"approval": "producer"
}
],
"gates": {
"O1": "GREEN",
"O2": "GREEN",
"O3": "GREEN",
"O4": "GREEN",
"O5": "GREEN",
"O6": "GREEN"
},
"october_upload_overtime_ok": true
}
BUILD_RECEIPT rows
{
"october_upload_window_allowed": true,
"october_upload_weekly_ok": true,
"october_upload_overtime_budget_hours": 14,
"october_upload_overtime_used_hours": 1.5,
"october_upload_overtime_receipt": "release-evidence/ops/october_upload_overtime_receipt_v1.json",
"october_upload_overtime_ok": true
}
The budget row belongs beside upload-week release fields, not in an accounting spreadsheet only. Partner diligence often asks "who can approve emergency work?" during the same review that asks for depot or branch proof.
Stop rules O-DEPOT through O-WAIVER
O-DEPOT - SteamPipe retries
Allow a first retry when the queue failed, config expired, or steam_build_id is pending. Stop after two upload attempts without a new manifest hash. At that point, roll back to the last known RC and document the reason in weekly depot jq.
O-REBUILD - silent rebuilds
No rebuild receives overtime unless it points to EXCEPTION-DEPOT-### or a failing receipt field. "Just to be safe" is not a field. "Fix crash on title screen, changes build_id, EXCEPTION-DEPOT-004" is a field-backed request.
O-SMOKE - Wednesday smoke
Wednesday smoke is allowed because forward #10 protects Thursday store publish. The stop rule is simple: if the same field fails twice, stop spending hours and write a waiver or rollback decision. Repeating the same manual smoke until midnight is not engineering discipline.
O-STORE - captions and metadata
Caption or metadata fixes count only when they block publish or create legal/store correctness risk. Pair Steam trailer muted-state help for video-slot symptoms and SteamCMD tools for release tooling. Nice-to-have copy polish moves to post-fest backlog.
O-SETLIVE - branch proof
Setlive overtime must prove the target label, not "watch the dashboard." If setlive_target_label != rc_label, stop and route to forward #9 SETLIVE exception opinion. Use AI RPG lesson 278 as the course-side model for depot manifest receipt discipline.
O-WAIVER - weekend hours
Weekend overtime defaults to zero. Require a named incident waiver with a rollback path and owner. If the issue is embarrassing but not live-breaking, do not burn weekend contractor hours.
Approval script for producers
Paste this into #october-upload before approving any emergency invoice:
Request:
Receipt / field:
Expected change:
Role / rate:
Hours requested:
Daily cap remaining:
Stop rule:
Approver:
Decision: approved / denied / move to backlog
Example:
Request: W41 depot rebuild after crash fix
Receipt / field: october_upload_weekly_v1 / build_id + depot_manifest_sha256
Expected change: EXCEPTION-DEPOT-004
Role / rate: build_engineer / $95
Hours requested: 1.5
Daily cap remaining: 3.0
Stop rule: O-REBUILD
Approver: producer
Decision: approved
This is intentionally boring. Boring approval logs beat surprise invoices.
Five common overtime traps
Trap 1 - "We already paid for the contractor this week"
Availability is not a cap. If the retainer includes ten hours, still map those hours to receipt fields. Otherwise the week fills with invisible "quick fixes."
Trap 2 - "SteamPipe is slow, so keep someone online"
Waiting is not always engineering. A queue watch can be producer time. Engineering overtime starts when someone changes config, hashes, labels, scripts, or receipts.
Trap 3 - "Caption polish is technical because Whisper generated it"
Only blocking caption pipeline fixes count. Copy style, phrasing, and nice-to-have subtitle cleanup belong to content/art budget unless they block store video correctness.
Trap 4 - "Founder time is free"
Founder time is not contractor cash, but it still has opportunity cost. Pair founder timebox if founder hours are the real bottleneck.
Trap 5 - "The partner asked for proof, so approve overtime"
Partner proof should mostly be packaging existing receipts. If evidence is missing, decide whether the missing receipt is release-blocking. Do not spend four emergency hours producing a prettier zip when the BUILD_RECEIPT already answers the question.
Scenario matrix
| Scenario | Approve overtime? | Why |
|---|---|---|
depot_manifest_sha256 changed without EXCEPTION-DEPOT |
Yes, short fix | Receipt-blocking; O-REBUILD applies |
| Store capsule alt text feels weak | No | Not engineering; not upload-blocking |
Setlive target shows default after dry-run |
Yes, capped | Branch proof is release-blocking; O-SETLIVE applies |
| Steam queue pending but no one is changing files | No engineering | Producer can monitor queue |
| Caption pipeline exports corrupt SRT for store video | Maybe | Approve if video slot blocks publish |
| Partner asks for a new PDF summary | No by default | Package existing receipts first |
| Friday smoke finds crash on boot | Yes with waiver | Live-blocking, but record cap + rollback |
| Weekend request for better demo menu animation | No | Post-fest backlog |
jq checks for O6
Total actual hours are under budget
jq -e '
([.actuals[].hours] | add // 0) <=
([.daily_caps[].cap_hours] | add // 0)
' release-evidence/ops/october_upload_overtime_receipt_v1.json
Every actual row names a receipt and field
jq -e '
all(.actuals[];
(.receipt | type == "string" and length > 0)
and (.field_changed | type == "string" and length > 0)
and (.approval | type == "string" and length > 0)
)
' release-evidence/ops/october_upload_overtime_receipt_v1.json
Stop rules exist for each daily cap
jq -e '
(.stop_rules | map(.id)) as $ids
| all(.daily_caps[]; (.stop_rule as $s | $ids | index($s)))
' release-evidence/ops/october_upload_overtime_receipt_v1.json
verify_october_upload_overtime.sh
#!/usr/bin/env bash
set -euo pipefail
RECEIPT="${1:-release-evidence/ops/october_upload_overtime_receipt_v1.json}"
jq -e '.schema == "october_upload_overtime_receipt_v1"' "$RECEIPT" >/dev/null
jq -e '.october_upload_overtime_ok == true' "$RECEIPT" >/dev/null
for g in O1 O2 O3 O4 O5 O6; do
test "$(jq -r --arg g "$g" '.gates[$g]' "$RECEIPT")" = "GREEN"
done
jq -e '(.daily_caps | length) >= 5' "$RECEIPT" >/dev/null
jq -e '(.contractor_rate_card | length) > 0' "$RECEIPT" >/dev/null
jq -e '
([.actuals[].hours] | add // 0) <=
([.daily_caps[].cap_hours] | add // 0)
' "$RECEIPT" >/dev/null
jq -e '
(.stop_rules | map(.id)) as $ids
| all(.daily_caps[]; (.stop_rule as $s | $ids | index($s)))
' "$RECEIPT" >/dev/null
echo "october_upload_overtime_ok"
Wire it after technical gates:
- name: Verify October upload overtime cap
run: bash scripts/verify_october_upload_overtime.sh
Put this after depot/caption/store checks, before any job that opens emergency contractor approval.
Proof table
| Artifact | Proves | Does not prove |
|---|---|---|
daily_caps[] |
Team set a spending brake | Technical fix succeeded |
contractor_rate_card[] |
Role/rate/approver are known | Invoice is already paid |
actuals[] |
Hours tie to receipt fields | Contractor quality |
| Stop rules | Retry loops have a hard end | No bugs remain |
| O6 GREEN | Used + reserved hours fit cap | Store publish is approved |
| BUILD_RECEIPT overtime rows | Partner can audit emergency approvals | Legal compliance |
Partner diligence zip
When a publisher or platform partner asks how upload week was controlled, include:
october_upload_overtime_receipt_v1.json- BUILD_RECEIPT excerpt with
october_upload_overtime_ok october_upload_weekly_v1receipt from the same ISO week- Contractor rate card or redacted SOW appendix
- Stop-rule decisions for any denied request
- Links to Wednesday smoke cousin logic and forward #10 when published
Zip name: {studio}_october_upload_overtime_{iso_week}_2026.zip.
Engine and store notes
| Stack | Overtime risk | Control |
|---|---|---|
| Unity + SteamPipe | Addressables rebuild changes depot hash | Require EXCEPTION-DEPOT before rebuild |
| Godot + SteamCMD | Export preset or VDF typo | One fix attempt, then rollback |
| GameMaker | IDE branch label mismatch | Use setlive receipt pattern from course lesson |
| Unreal | Cook/package time hides actual fix time | Separate waiting from engineering hours |
| Whisper captions | Proper nouns misread before video slot | Approve only blocking SRT pipeline fixes |
FAQ
Is this the same as March engineering cash runway?
No. March engineering runway amortizes post-fest invoices and reserves future engineering cash. This worksheet caps emergency hours inside one October upload week.
Is this the same as founder timebox?
No. Founder timebox tracks attention. This tracks contractor or billable engineering hours. Use both when the founder is also doing build engineering.
Should every RED gate receive overtime?
No. Some RED gates should trigger rollback, waiver, or schedule change. Overtime is one tool, not the default answer.
What if the contractor is prepaid?
Still cap hours. Prepaid hours can still crowd out launch work and create renewal pressure.
Can marketing approve engineering overtime?
Only if the receipt says so. O3 requires a named approval owner per role.
Does O6 GREEN mean setlive is safe?
No. It only means overtime is within cap. Setlive safety belongs to setlive receipt gates and forward #9.
How many hours should a tiny team cap?
Start with 10-14 total upload-week overtime hours. If that feels too low, name the receipts that require more before the week begins.
What about live-breaking weekend bugs?
Use O-WAIVER with a named incident, rollback path, owner, and max hours. Weekend overtime should be exceptional and written.
Key takeaways
- October upload week needs an engineering overtime cap, not just technical receipts.
- Overtime must map to a named receipt field, gate, and stop rule.
- Gates O1-O6 cover daily caps, rate cards, stop rules, BUILD_RECEIPT rows, and total hours.
- File
october_upload_overtime_receipt_v1.jsonbefore the first emergency request. - Latch
october_upload_overtime_okonly when actual + reserved hours fit the cap. - Waiting on SteamPipe is not automatically engineering overtime.
- Caption, metadata, and setlive work need separate stop rules.
- Pair weekly depot jq #7 for technical identity and this worksheet for hour authority.
- Pair SETLIVE exception opinion #9 when O-SETLIVE fires; forward #10 Wednesday smoke consumes this cap.
- Use SteamCMD tools, course lesson 278, and Steam trailer help for sibling formats.
- Denied overtime requests should be logged, not forgotten.
- The cheapest upload-week fix is often a rollback or waiver, not another paid hour.
Related reads
- jq Gate Sketch for october_upload Weekly Depot Row Diff
- Stop Running setlive on Default Branch Without a Numbered SETLIVE Exception List — O-SETLIVE routes here for SETLIVE-00N authorization
- Your First SteamPipe Depot Upload Log BUILD_RECEIPT Before October Next Fest
- March Engineering Cash Runway Worksheet After February Fest Contractor Overtime
- October Fest Week Founder Timebox Worksheet
- SteamCMD SteamGuard Depot Owner Validation Tools
- GameMaker Setlive Depot Manifest Receipt Course Lesson
- Steam Store Trailer Autoplay Muted-State Help
- 14 Free Steam Store Publish Checklist Tools October Upload Week
Closing
Upload week makes every engineering request sound urgent. The worksheet makes urgency pay rent: a receipt field, a cap, an approver, and a stop rule.
When someone asks for "just two more hours," the answer is no longer vibes. It is O1-O6, the daily cap, and whether the work changes a release gate that actually protects October launch.