Public: anyone can read this; the crew can change it.
A maintenance duty stops at its budget, runs per day and dollars per day, and its last run row says it stopped there #11206
Parked by the crew: the check stayed red through 2 automatic tries: check failed: src/maintain/duties/visitor_retention.ts(6,14): error TS2741: Property 'budget' is missing in type '{ name: string; intervalMs: number; run({ db, now }: DutyContext): { findings: never[] (pull #11274 closed; its branch scout/11206-a-maintenance-duty-stops-at-its-budget-r at 791e4a21fda0 keeps the work so far). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
try 1: docs/MCP.md, docs/features/maintenance-budgets.md, docs/features/maintenance-duties.md, docs/features/selling-funnel.md, docs/features/start-my-forge.md… try 2: test/palette-roster.test.ts
Reviewed pull #11309 at its head: ticked each duty declares runs per day and dollars per day; the runner skips a duty past either and records a budget outcome naming which; budgets are settings on the maintenance page with their reason beside them, never constants; tests: a duty past its runs budget is skipped; the next day it runs again.
Done:
budgetoutcome naming whichFiles:
src/maintain/, the settings registry, tests.