# M13-04C Status status: done task: server job resource budget gate updated: 2026-08-19 America/New_York enablingTask: false parityStateChange: false ## Scope Server jobs now have fixed CPU, memory, process, file, wall-time and output-byte limits. Budget parsing rejects undeclared fields and out-of-range values. A usage receipt is marked `enforced=true` only when every measured value is within its corresponding limit; each of the six over-limit cases returns `SERVER_JOB_BUDGET_EXCEEDED` and remains `execution=DISABLED`. This is the resource contract and usage gate. OS/container enforcement is proven by the later real process task and is not claimed here. ## Evidence - `node --test web/tests/unit/server-job-resource-budget.test.mjs` passed 2/2. - `npm --prefix web run test:server-job-resource-budget` passed unit 2/2 and the independent checker. - `node tools/web/check-server-job-resource-budget.mjs` passed: `server-job-budget-ok cpu=bounded memory=bounded process=bounded files=bounded wall=bounded output=bounded overages=6 execution=DISABLED next=M13-04D`. - `npm --prefix web run typecheck`, `npm --prefix web run lint` and `git diff --check` passed. ## Artifact Hashes - protocol: `9746f0aef9dd76411320792dee1213c03755a3c03a87bbc4cbf88d4324c728d6` - checker: `5599f4e25fc3ceca18e04be322450a4dc5bb6ce9c72c3abe9f1afc9c81851ff8` - unit: `05212b2aa639f4c37e37e1cac0597d9b367a1280e519240f073762394914dc63` - package: `3df02b6049ac5d7185c23aef7764933ee460fedeb6595b3861272b0d49da5ecd` - report: `76ba684966bf7e680b0ebfc630ae9e080f04dd6daa6dd744bbb22dcff43f8eb1` - manifest: `d00fff709b57909ec418ff0e476dca97281fc39456f674c63b51248377fc6ab2` ## Next Task `M13-04D`: default-deny network policy with explicit declared-origin admission. ## Rollback Remove the resource budget protocol, focused tests/checker, report, manifest, package command and this status entry; restore M13-04B as the queue tail and move `nextTask` back to `M13-04C`.