Software maintenance is a resource-allocation problem: every sprint, a team splits its finite capacity between shipping new features, refactoring existing code and fixing bugs, and the ratio it picks compounds over time. This simulator models that feedback loop directly — technical debt grows fastest when feature work dominates and debt is already high, team velocity decays as debt accumulates (diminishing returns, not a cliff), and the open-bug backlog is fed by debt-driven bug spawn and drained by dedicated bug-fixing effort. A live 3D "codebase city" of 64 modules renders per-module debt as building height and bug density as colour, so the consequences of an allocation choice are visible in real time rather than just in a number. Drag the three sprint-capacity sliders to any balance, watch a few dozen simulated sprints play out, and see whether the team converges to a sustainable equilibrium or spirals into a maintenance death march.