{
 "schema": "cain42.mission_budget_holes.v1",
 "generated": "2026-10-06T22:58:16+00:00",
 "invention": "PP-02 monotonic goal-attenuation lattice (cain/govmission/lineage.py, ledger.py)",
 "defects": [
  {
   "id": "M-B1",
   "what": "a negative resource request passed every check and on commit SUBTRACTED from mission consumption, buying back budget the owner-signed mission never granted"
  },
  {
   "id": "M-B2",
   "what": "goal budgets were checked per request only; a goal allocated N could make unlimited requests up to the mission total, so sibling allocation accounting bounded nothing"
  },
  {
   "id": "M-B3",
   "what": "a negative goal budget passed attenuation and offset the sibling sum, letting further siblings each take the parent's full allocation"
  },
  {
   "id": "M-B4",
   "what": "a None/float/str/bool amount was coerced or crashed authorize() with TypeError instead of a DENY with a reason"
  }
 ],
 "fix": "amounts and budgets must be non-negative ints; committed consumption is charged to the leaf goal and every ancestor and checked cumulatively",
 "tests_failing_before_fix": 8,
 "after": "42/42 test_cain42_e38_mission.py (incl. 40-attack lab, races, invariants, clean-room agreement), 27/27 other mission suites",
 "scope_note": "library + declared-mission stage; single-process ledger. Same-project, self-verified."
}