immutable.build
Work
immutable.build
Production record

The Build Log.

immutable — the standard doesn’t move

18 titles · 3 franchises + select work · 2006–2024

Every title I’ve shipped, in order: from QA Tester in 2006 through Senior Producer, across Tony Hawk, Guitar Hero, and Call of Duty. Most recently: Senior Producer leading a 20–40-person engineering org (Engine & Graphics, Tools, Systems, Build & Release) behind Warzone at 2M+ peak concurrent players, owning live-service crash rate from 2021–2023 and defending an under-3% per-platform target.

// Continuous studio tenure 2006–2023 through Neversoft’s wind-down and merger into Infinity Ward carried the move from Guitar Hero to Call of Duty. Years above are title release dates; production wraps before a game ships. Since 2023: a deliberate sabbatical. Independent technical work, self-hosted infrastructure, AI-directed tooling (see /projects and the résumé). And now a return to studio work.

// verify — credits on MobyGames ↗

branch: Call of Duty · 8 titles 2013–2024 · Neversoft → Infinity Ward
Call of Duty: Warzone Mobile 2024 · Senior Producer · Tools & Release
7d3674c
Modern Warfare III 2023 · Senior Producer · Tools & Release
275d5ae
Modern Warfare II 2022 · Senior Producer
1b19013
Warzone 2020 · Senior Producer
29a9d5a
Modern Warfare 2019 · Senior Producer
5eddd6b
Infinite Warfare 2016 · Producer
3c442c5
Advanced Warfare 2014 · Producer
343582d
Ghosts 2013 · Producer
35d933b
branch: Guitar Hero · 7 titles 2007–2010 · Neversoft
Warriors of Rock 2010 · Associate Producer
84aad89
Band Hero 2009 · Production Coordinator
a7bf2ee
Guitar Hero 5 2009 · Production Coordinator
ebdde38
Guitar Hero: Metallica 2009 · Production Coordinator
e13e174
World Tour 2008 · QA Lead
95fd139
Aerosmith 2008 · QA Lead
99c9cb6
Guitar Hero III: Legends of Rock 2007 · QA Tester
86ad44b
branch: Tony Hawk · 2 titles 2006–2007 · Neversoft · Neversoft ran both titles in 2007: QA title reflects the project, not a demotion
Tony Hawk's Proving Ground 2007 · QA Lead
65a0199
Tony Hawk's Project 8 2006 · QA Tester
a5ec155
branch: Other · 1 title 2014
Duck Dynasty 2014 · Mo-Cap Producer
567319a
// field report

Fix the cause, not the noise.

How a scattered Warzone live error got diagnosed down to a single root cause, and why understanding the system is what made the fix obvious.

Same day
hotfix shipped
and verified
1
root cause behind
many symptoms
3
durable gates across
content, release & QA
situation — see it

A live error was surfacing all over Warzone, and engineering was too close to it to see the shape. It was being worked as many separate problems: different symptoms across three teams, no shared cause, and it kept coming back. It looked like many problems. It was one.

diagnosis — solve it

I built the repro from first principles, traced the behavior back to a single root cause, and could show exactly where it entered the pipeline and why it kept returning. I didn’t start this one by triaging symptoms, I started by understanding the system well enough to know what was actually broken. Once the cause was understood, the fix was obvious, and so was the team that owned it.

resolution — seal it

The hotfix shipped the same day. The durable fixes took longer (a few days placing each one at the layer that actually owned the gap), so the error class couldn’t return:

Content: stood up a validation gate at the upstream entry point, and briefed the content team on exactly what to watch for
Release: worked with the release team to put a CI check in place that catches the error class before it can land in a build
QA: partnered on a test suite for the error class, plus a log-capture path that hands engineering a head start on diagnosis
// field report

Two years under three percent.

The incident above was one day. This is the standing system behind every day: the crash-rate program that kept the game under its target across three platforms and three modes.

Under 3%
crash rate held
per platform
Daily
triage cadence,
every morning
Handed off
run day to day by a
production coordinator
situation — see it

Call of Duty was live on three platforms and in three modes: Warzone at 2M+ peak concurrent players, plus Multiplayer and Co-op. All on one shared codebase, so most crashes reproduced everywhere. The target: under 3% per platform. Every weekly update went out through QA; the crashes that reached players were the kind that only surfaces at live scale. When I took the program on there were no dashboards, and every team ran its own crash list with its own priorities. The crashes that didn’t reproduce everywhere were exactly the ones those lists buried: an Xbox-only crash was never going to top the PlayStation team’s list.

system — solve it

I stood up the dashboards first, then unified the scattered lists into a single source of truth. The program settled into three parts:

A daily loop: every morning, confirm the top crash classes each have a named owner and a live status, and chase the ones that don’t
A studio-visible wiki: every active crash class with its priority, its owner, and its tracking issue; one page, one priority order, every team reading the same list
Searchable callstacks: I pulled crash dumps off the platform holders’ portals, extracted the callstacks, and pasted them into the tracking issues. A new crash got searched before it got worked; most turned out to be a class we were already tracking

Every issue went out with the QA manager, the team’s producers, and the engineering lead already in the loop, and I did the tedious parts myself first (pulling dumps, writing status) before asking anyone else to. The process stuck because following it cost every team less than ignoring it.

outcome — seal it

The target held: under 3% per platform, 2021 through 2023. That was never a flat line: rates spiked, and the system’s job was to catch a spike early, put an owner on it, and drive it back under. Once the loop had proven its worth, I delegated it deliberately and moved to the next problem that needed a system; the handoff is its own story. The target was still holding when I left.

// the method in full — The dashboard is not the system →

// field report

Six years of Tuesdays.

The first report above was one day. The second is the safety net. This is the day job: the milestone cadence, resource planning, and unblocking that kept the org shipping for six years.

4 titles
shipped on this loop
2019–2023
20–40
person org, staffing flexed
with milestone priorities
Early
slipping targets flagged,
not deadline surprises
situation — see it

A 20–40-person engineering org, multiple Call of Duty titles in flight, and, from 2020, a live service underneath them. Every discipline was pulled toward more than one deadline, staffing had to move as milestone priorities moved, and external vendor scope had to be managed alongside. None of that was a crisis. That was a Tuesday. The job was to keep the org shipping without making engineers absorb the churn.

system — solve it

The loop I ran, over and over, for six years:

Prioritize where the tradeoffs live. Prioritization sessions with the tech director, including the tools program serving a 300-person studio, turned into milestone plans and sprint schedules the teams could actually commit to
Put capacity where the milestone needed it. Concurrent titles meant the staffing plan moved every time priorities did: headcount rebalanced, utilization tracked, vendor scope managed as part of the same plan
Guard focus time. Inbound tool and pipeline requests hit me first, not the engineers; I gathered the full context, triaged, and escalated only what was worth an engineer’s attention

And when a target moved (on a live franchise, it always does), I re-planned scope and trajectory and flagged the change early. Flagged early, a change is a plan. Flagged at the deadline, it’s an apology.

outcome — seal it

Four titles shipped between 2019 and 2023 on that loop, with Warzone live underneath from its 2020 launch. Not every target held still. When one moved, we re-planned and still landed close to what we’d committed. The reports above are what the hard days looked like. This loop is the rest of the calendar.

// next — The record is verifiable. The producer is available.
Get in touch