{
  "tool_id": "art-771-automation-payback",
  "note": "19 vectors. 4 live vectors (live_v1..live_v4) reproduce the Apex #180 page (live_v1 is the page-observed worked example installed at open; live_v2..live_v4 are analyst-composed Apex-parity vectors, declared in APEXPORT-180 VECTORS.md); boundary_C1..C7 and boundary_empty_candidate_list carry the 15 boundary fixtures at and just past every comparator (recoverable > 0 break-even definition, net >= 0 BUILD/SKIP, keepers==ranked ALL_CLEAR, keepers > 0 MIXED vs NO_CANDIDATE_CLEARS, net rank sort tie, fastest break-even sort tie, the three clamp floors, horizon half-up rounding, the empty-list guard). All output_payload values are the committed kernel compute() outputs; golden_hash is executionHash(policy_parameters, output_payload) per _hash.mjs (OCG JCS-SHA-256). Ported from Apex #180 page fetched 2026-10-13, 37945 bytes, sha256 4931C9A3713FBA69D6E614CE3BDB0FC8B01A75E7376BA8BF9916553CB2C91D1B (APEXPORT-180 payload, GRADES PASS-PENDING-XV 2026-10-18, Builder-verifies-at-land 19/19). maintenance_haircut_pct 20 and weeks_per_month 4.33 are policy parameters kept for live-vector parity; the 52/12 quotient is UNGROUNDED (payload DIFFERS.md D-01..D-06, CITES.md). human_sign_off: PENDING.",
  "vectors": [
    {
      "name": "live_v1_worked_example_three_candidates",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Invoice processing",
            "hours_saved_per_week": 3,
            "loaded_hourly_rate_usd": 45,
            "error_cost_avoided_usd_month": 150,
            "build_cost_usd": 2000,
            "subscription_usd_month": 60
          },
          {
            "name": "Report generation",
            "hours_saved_per_week": 2,
            "loaded_hourly_rate_usd": 55,
            "error_cost_avoided_usd_month": 75,
            "build_cost_usd": 500,
            "subscription_usd_month": 30
          },
          {
            "name": "Data-entry migration",
            "hours_saved_per_week": 5,
            "loaded_hourly_rate_usd": 28,
            "error_cost_avoided_usd_month": 200,
            "build_cost_usd": 3500,
            "subscription_usd_month": 120
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Invoice processing",
            "hours_saved_wk": 3,
            "loaded_rate": 45,
            "error_cost_mo": 150,
            "build_cost": 2000,
            "subscription_mo": 60
          },
          {
            "name": "Report generation",
            "hours_saved_wk": 2,
            "loaded_rate": 55,
            "error_cost_mo": 75,
            "build_cost": 500,
            "subscription_mo": 30
          },
          {
            "name": "Data-entry migration",
            "hours_saved_wk": 5,
            "loaded_rate": 28,
            "error_cost_mo": 200,
            "build_cost": 3500,
            "subscription_mo": 120
          }
        ],
        "ranked": [
          {
            "name": "Invoice processing",
            "value_mo": 734.55,
            "recurring_with_haircut_mo": 72,
            "build_amortized_mo": 83.33,
            "tco_mo": 155.33,
            "net_mo": 579.22,
            "breakeven_months": 3,
            "breakeven_months_exact": 3.01864,
            "call": "BUILD",
            "horizon_net": 13901.2
          },
          {
            "name": "Data-entry migration",
            "value_mo": 806.2,
            "recurring_with_haircut_mo": 144,
            "build_amortized_mo": 145.83,
            "tco_mo": 289.83,
            "net_mo": 516.37,
            "breakeven_months": 5.3,
            "breakeven_months_exact": 5.285412,
            "call": "BUILD",
            "horizon_net": 12392.8
          },
          {
            "name": "Report generation",
            "value_mo": 551.3,
            "recurring_with_haircut_mo": 36,
            "build_amortized_mo": 20.83,
            "tco_mo": 56.83,
            "net_mo": 494.47,
            "breakeven_months": 1,
            "breakeven_months_exact": 0.970309,
            "call": "BUILD",
            "horizon_net": 11867.2
          }
        ],
        "keepers": [
          "Invoice processing",
          "Data-entry migration",
          "Report generation"
        ],
        "droppers": [],
        "net_keep_mo": 1590.05,
        "net_all_mo": 1590.05,
        "hours_reclaimed_wk": 10,
        "horizon_net_keep": 38161.2,
        "horizon_net_all": 38161.2,
        "best_candidate": "Invoice processing",
        "fastest_breakeven_candidate": "Report generation",
        "fastest_breakeven_months": 1,
        "verdict": "ALL_CLEAR",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "031b3a6d6299a650d67e17e738a7812687bee3fb3d0c52926f25ec8887796126"
    },
    {
      "name": "live_v2_single_candidate_no_recurring_cost",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Solo",
            "hours_saved_per_week": 1,
            "loaded_hourly_rate_usd": 30,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 0,
            "subscription_usd_month": 0
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Solo",
            "hours_saved_wk": 1,
            "loaded_rate": 30,
            "error_cost_mo": 0,
            "build_cost": 0,
            "subscription_mo": 0
          }
        ],
        "ranked": [
          {
            "name": "Solo",
            "value_mo": 129.9,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 0,
            "tco_mo": 0,
            "net_mo": 129.9,
            "breakeven_months": 0,
            "breakeven_months_exact": 0,
            "call": "BUILD",
            "horizon_net": 3117.6
          }
        ],
        "keepers": [
          "Solo"
        ],
        "droppers": [],
        "net_keep_mo": 129.9,
        "net_all_mo": 129.9,
        "hours_reclaimed_wk": 1,
        "horizon_net_keep": 3117.6,
        "horizon_net_all": 3117.6,
        "best_candidate": "Solo",
        "fastest_breakeven_candidate": "Solo",
        "fastest_breakeven_months": 0,
        "verdict": "ALL_CLEAR",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "823cd20be591a6503910a2bd74660dc1d7e27d40b82a3b42278ed2ed76627551"
    },
    {
      "name": "live_v3_mixed_list_one_build_one_skip",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Fast win",
            "hours_saved_per_week": 10,
            "loaded_hourly_rate_usd": 100,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 1200,
            "subscription_usd_month": 0
          },
          {
            "name": "Toy",
            "hours_saved_per_week": 1,
            "loaded_hourly_rate_usd": 20,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 5000,
            "subscription_usd_month": 300
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Fast win",
            "hours_saved_wk": 10,
            "loaded_rate": 100,
            "error_cost_mo": 0,
            "build_cost": 1200,
            "subscription_mo": 0
          },
          {
            "name": "Toy",
            "hours_saved_wk": 1,
            "loaded_rate": 20,
            "error_cost_mo": 0,
            "build_cost": 5000,
            "subscription_mo": 300
          }
        ],
        "ranked": [
          {
            "name": "Fast win",
            "value_mo": 4330,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 50,
            "tco_mo": 50,
            "net_mo": 4280,
            "breakeven_months": 0.3,
            "breakeven_months_exact": 0.277136,
            "call": "BUILD",
            "horizon_net": 102720
          },
          {
            "name": "Toy",
            "value_mo": 86.6,
            "recurring_with_haircut_mo": 360,
            "build_amortized_mo": 208.33,
            "tco_mo": 568.33,
            "net_mo": -481.73,
            "breakeven_months": null,
            "breakeven_months_exact": null,
            "call": "SKIP",
            "horizon_net": -11561.6
          }
        ],
        "keepers": [
          "Fast win"
        ],
        "droppers": [
          "Toy"
        ],
        "net_keep_mo": 4280,
        "net_all_mo": 3798.27,
        "hours_reclaimed_wk": 10,
        "horizon_net_keep": 102720,
        "horizon_net_all": 91158.4,
        "best_candidate": "Fast win",
        "fastest_breakeven_candidate": "Fast win",
        "fastest_breakeven_months": 0.3,
        "verdict": "MIXED_LIST",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "1a9ea30c7a3a13775e1ba2a8b956648e38b283985aa4b83c69aed0efb09ada65"
    },
    {
      "name": "live_v4_no_candidate_clears",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Dead A",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 100,
            "subscription_usd_month": 100
          },
          {
            "name": "Dead B",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 250,
            "subscription_usd_month": 40
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Dead A",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 0,
            "build_cost": 100,
            "subscription_mo": 100
          },
          {
            "name": "Dead B",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 0,
            "build_cost": 250,
            "subscription_mo": 40
          }
        ],
        "ranked": [
          {
            "name": "Dead B",
            "value_mo": 0,
            "recurring_with_haircut_mo": 48,
            "build_amortized_mo": 10.42,
            "tco_mo": 58.42,
            "net_mo": -58.42,
            "breakeven_months": null,
            "breakeven_months_exact": null,
            "call": "SKIP",
            "horizon_net": -1402
          },
          {
            "name": "Dead A",
            "value_mo": 0,
            "recurring_with_haircut_mo": 120,
            "build_amortized_mo": 4.17,
            "tco_mo": 124.17,
            "net_mo": -124.17,
            "breakeven_months": null,
            "breakeven_months_exact": null,
            "call": "SKIP",
            "horizon_net": -2980
          }
        ],
        "keepers": [],
        "droppers": [
          "Dead B",
          "Dead A"
        ],
        "net_keep_mo": 0,
        "net_all_mo": -182.58,
        "hours_reclaimed_wk": 0,
        "horizon_net_keep": 0,
        "horizon_net_all": -4382,
        "best_candidate": "Dead B",
        "fastest_breakeven_candidate": null,
        "fastest_breakeven_months": null,
        "verdict": "NO_CANDIDATE_CLEARS",
        "warning_checks": [
          "NO_CANDIDATE_BREAKS_EVEN"
        ],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "0e11297aa0166d7fd6b04db0abafaf75f76186b2fdb95c42d8e851a4c2aa5dbb"
    },
    {
      "name": "boundary_C1_recoverable_exactly_zero",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 0,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Zero recoverable",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 50,
            "build_cost_usd": 100,
            "subscription_usd_month": 50
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 0,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Zero recoverable",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 50,
            "build_cost": 100,
            "subscription_mo": 50
          }
        ],
        "ranked": [
          {
            "name": "Zero recoverable",
            "value_mo": 50,
            "recurring_with_haircut_mo": 50,
            "build_amortized_mo": 4.17,
            "tco_mo": 54.17,
            "net_mo": -4.17,
            "breakeven_months": null,
            "breakeven_months_exact": null,
            "call": "SKIP",
            "horizon_net": -100
          }
        ],
        "keepers": [],
        "droppers": [
          "Zero recoverable"
        ],
        "net_keep_mo": 0,
        "net_all_mo": -4.17,
        "hours_reclaimed_wk": 0,
        "horizon_net_keep": 0,
        "horizon_net_all": -100,
        "best_candidate": "Zero recoverable",
        "fastest_breakeven_candidate": null,
        "fastest_breakeven_months": null,
        "verdict": "NO_CANDIDATE_CLEARS",
        "warning_checks": [
          "NO_CANDIDATE_BREAKS_EVEN"
        ],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "6a1ba74137cc6c3559094b43ecbe1462a773ab095431ad82d959f0c115095e1b"
    },
    {
      "name": "boundary_C1_recoverable_just_past",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 0,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Recoverable 0.25",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 50.25,
            "build_cost_usd": 100,
            "subscription_usd_month": 50
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 0,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Recoverable 0.25",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 50.25,
            "build_cost": 100,
            "subscription_mo": 50
          }
        ],
        "ranked": [
          {
            "name": "Recoverable 0.25",
            "value_mo": 50.25,
            "recurring_with_haircut_mo": 50,
            "build_amortized_mo": 4.17,
            "tco_mo": 54.17,
            "net_mo": -3.92,
            "breakeven_months": 400,
            "breakeven_months_exact": 400,
            "call": "SKIP",
            "horizon_net": -94
          }
        ],
        "keepers": [],
        "droppers": [
          "Recoverable 0.25"
        ],
        "net_keep_mo": 0,
        "net_all_mo": -3.92,
        "hours_reclaimed_wk": 0,
        "horizon_net_keep": 0,
        "horizon_net_all": -94,
        "best_candidate": "Recoverable 0.25",
        "fastest_breakeven_candidate": "Recoverable 0.25",
        "fastest_breakeven_months": 400,
        "verdict": "NO_CANDIDATE_CLEARS",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "6c17435cb850b2c249e618ffae9c756b66f85888ed1bf30236b9caf123b9e9d2"
    },
    {
      "name": "boundary_C2_net_exactly_zero_is_BUILD",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 0,
        "horizon_months": 1,
        "weeks_per_month": 1,
        "candidates": [
          {
            "name": "Net zero",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 200,
            "build_cost_usd": 100,
            "subscription_usd_month": 100
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 0,
        "horizon_months": 1,
        "weeks_per_month": 1,
        "candidates": [
          {
            "name": "Net zero",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 200,
            "build_cost": 100,
            "subscription_mo": 100
          }
        ],
        "ranked": [
          {
            "name": "Net zero",
            "value_mo": 200,
            "recurring_with_haircut_mo": 100,
            "build_amortized_mo": 100,
            "tco_mo": 200,
            "net_mo": 0,
            "breakeven_months": 1,
            "breakeven_months_exact": 1,
            "call": "BUILD",
            "horizon_net": 0
          }
        ],
        "keepers": [
          "Net zero"
        ],
        "droppers": [],
        "net_keep_mo": 0,
        "net_all_mo": 0,
        "hours_reclaimed_wk": 0,
        "horizon_net_keep": 0,
        "horizon_net_all": 0,
        "best_candidate": "Net zero",
        "fastest_breakeven_candidate": "Net zero",
        "fastest_breakeven_months": 1,
        "verdict": "ALL_CLEAR",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "c2a0253b673c1926b3592b4b13e629143ad7d0df8b824074ee242d3c7bd29717"
    },
    {
      "name": "boundary_C2_net_just_past_is_SKIP",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 0,
        "horizon_months": 1,
        "weeks_per_month": 1,
        "candidates": [
          {
            "name": "Net just negative",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 199.99,
            "build_cost_usd": 100,
            "subscription_usd_month": 100
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 0,
        "horizon_months": 1,
        "weeks_per_month": 1,
        "candidates": [
          {
            "name": "Net just negative",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 199.99,
            "build_cost": 100,
            "subscription_mo": 100
          }
        ],
        "ranked": [
          {
            "name": "Net just negative",
            "value_mo": 199.99,
            "recurring_with_haircut_mo": 100,
            "build_amortized_mo": 100,
            "tco_mo": 200,
            "net_mo": -0.01,
            "breakeven_months": 1,
            "breakeven_months_exact": 1.0001,
            "call": "SKIP",
            "horizon_net": -0.01
          }
        ],
        "keepers": [],
        "droppers": [
          "Net just negative"
        ],
        "net_keep_mo": 0,
        "net_all_mo": -0.01,
        "hours_reclaimed_wk": 0,
        "horizon_net_keep": 0,
        "horizon_net_all": -0.01,
        "best_candidate": "Net just negative",
        "fastest_breakeven_candidate": "Net just negative",
        "fastest_breakeven_months": 1,
        "verdict": "NO_CANDIDATE_CLEARS",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "c593640b15d623fc10c661f3fb67b08751f331fe3ea6ebeff56f871908fb44eb"
    },
    {
      "name": "boundary_C3_all_clearing_is_ALL_CLEAR",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Alpha",
            "hours_saved_per_week": 2,
            "loaded_hourly_rate_usd": 60,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 100,
            "subscription_usd_month": 0
          },
          {
            "name": "Beta",
            "hours_saved_per_week": 1,
            "loaded_hourly_rate_usd": 120,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 100,
            "subscription_usd_month": 0
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Alpha",
            "hours_saved_wk": 2,
            "loaded_rate": 60,
            "error_cost_mo": 0,
            "build_cost": 100,
            "subscription_mo": 0
          },
          {
            "name": "Beta",
            "hours_saved_wk": 1,
            "loaded_rate": 120,
            "error_cost_mo": 0,
            "build_cost": 100,
            "subscription_mo": 0
          }
        ],
        "ranked": [
          {
            "name": "Alpha",
            "value_mo": 519.6,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 4.17,
            "tco_mo": 4.17,
            "net_mo": 515.43,
            "breakeven_months": 0.2,
            "breakeven_months_exact": 0.192456,
            "call": "BUILD",
            "horizon_net": 12370.4
          },
          {
            "name": "Beta",
            "value_mo": 519.6,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 4.17,
            "tco_mo": 4.17,
            "net_mo": 515.43,
            "breakeven_months": 0.2,
            "breakeven_months_exact": 0.192456,
            "call": "BUILD",
            "horizon_net": 12370.4
          }
        ],
        "keepers": [
          "Alpha",
          "Beta"
        ],
        "droppers": [],
        "net_keep_mo": 1030.87,
        "net_all_mo": 1030.87,
        "hours_reclaimed_wk": 3,
        "horizon_net_keep": 24740.8,
        "horizon_net_all": 24740.8,
        "best_candidate": "Alpha",
        "fastest_breakeven_candidate": "Alpha",
        "fastest_breakeven_months": 0.2,
        "verdict": "ALL_CLEAR",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "3c9c2ad1bbb6b832e9bf69b04d416e12bd74fea9da2d764810adf2edbc438ff9"
    },
    {
      "name": "boundary_C3_one_dropper_is_MIXED",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Alpha",
            "hours_saved_per_week": 2,
            "loaded_hourly_rate_usd": 60,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 100,
            "subscription_usd_month": 500
          },
          {
            "name": "Beta",
            "hours_saved_per_week": 1,
            "loaded_hourly_rate_usd": 120,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 100,
            "subscription_usd_month": 0
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Alpha",
            "hours_saved_wk": 2,
            "loaded_rate": 60,
            "error_cost_mo": 0,
            "build_cost": 100,
            "subscription_mo": 500
          },
          {
            "name": "Beta",
            "hours_saved_wk": 1,
            "loaded_rate": 120,
            "error_cost_mo": 0,
            "build_cost": 100,
            "subscription_mo": 0
          }
        ],
        "ranked": [
          {
            "name": "Beta",
            "value_mo": 519.6,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 4.17,
            "tco_mo": 4.17,
            "net_mo": 515.43,
            "breakeven_months": 0.2,
            "breakeven_months_exact": 0.192456,
            "call": "BUILD",
            "horizon_net": 12370.4
          },
          {
            "name": "Alpha",
            "value_mo": 519.6,
            "recurring_with_haircut_mo": 600,
            "build_amortized_mo": 4.17,
            "tco_mo": 604.17,
            "net_mo": -84.57,
            "breakeven_months": null,
            "breakeven_months_exact": null,
            "call": "SKIP",
            "horizon_net": -2029.6
          }
        ],
        "keepers": [
          "Beta"
        ],
        "droppers": [
          "Alpha"
        ],
        "net_keep_mo": 515.43,
        "net_all_mo": 430.87,
        "hours_reclaimed_wk": 1,
        "horizon_net_keep": 12370.4,
        "horizon_net_all": 10340.8,
        "best_candidate": "Beta",
        "fastest_breakeven_candidate": "Beta",
        "fastest_breakeven_months": 0.2,
        "verdict": "MIXED_LIST",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "6ee6b5af8e4f8975bb2a52431311a725bdb54af7a2b73a3f5e969e290f57a8eb"
    },
    {
      "name": "boundary_C4_zero_keepers_is_NO_CANDIDATE_CLEARS",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Dead 1",
            "hours_saved_per_week": 1,
            "loaded_hourly_rate_usd": 40,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 9000,
            "subscription_usd_month": 900
          },
          {
            "name": "Dead 2",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 400,
            "subscription_usd_month": 50
          },
          {
            "name": "Dead 3",
            "hours_saved_per_week": 2,
            "loaded_hourly_rate_usd": 20,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 8000,
            "subscription_usd_month": 40
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Dead 1",
            "hours_saved_wk": 1,
            "loaded_rate": 40,
            "error_cost_mo": 0,
            "build_cost": 9000,
            "subscription_mo": 900
          },
          {
            "name": "Dead 2",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 0,
            "build_cost": 400,
            "subscription_mo": 50
          },
          {
            "name": "Dead 3",
            "hours_saved_wk": 2,
            "loaded_rate": 20,
            "error_cost_mo": 0,
            "build_cost": 8000,
            "subscription_mo": 40
          }
        ],
        "ranked": [
          {
            "name": "Dead 2",
            "value_mo": 0,
            "recurring_with_haircut_mo": 60,
            "build_amortized_mo": 16.67,
            "tco_mo": 76.67,
            "net_mo": -76.67,
            "breakeven_months": null,
            "breakeven_months_exact": null,
            "call": "SKIP",
            "horizon_net": -1840
          },
          {
            "name": "Dead 3",
            "value_mo": 173.2,
            "recurring_with_haircut_mo": 48,
            "build_amortized_mo": 333.33,
            "tco_mo": 381.33,
            "net_mo": -208.13,
            "breakeven_months": 63.9,
            "breakeven_months_exact": 63.897764,
            "call": "SKIP",
            "horizon_net": -4995.2
          },
          {
            "name": "Dead 1",
            "value_mo": 173.2,
            "recurring_with_haircut_mo": 1080,
            "build_amortized_mo": 375,
            "tco_mo": 1455,
            "net_mo": -1281.8,
            "breakeven_months": null,
            "breakeven_months_exact": null,
            "call": "SKIP",
            "horizon_net": -30763.2
          }
        ],
        "keepers": [],
        "droppers": [
          "Dead 2",
          "Dead 3",
          "Dead 1"
        ],
        "net_keep_mo": 0,
        "net_all_mo": -1566.6,
        "hours_reclaimed_wk": 0,
        "horizon_net_keep": 0,
        "horizon_net_all": -37598.4,
        "best_candidate": "Dead 2",
        "fastest_breakeven_candidate": "Dead 3",
        "fastest_breakeven_months": 63.9,
        "verdict": "NO_CANDIDATE_CLEARS",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "6f85c10f169c1d8375a19ca4f7bd8b1cfe0700373b2388974d360e714c16f246"
    },
    {
      "name": "boundary_C4_one_keeper_of_three_is_MIXED",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Dead 1",
            "hours_saved_per_week": 1,
            "loaded_hourly_rate_usd": 40,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 9000,
            "subscription_usd_month": 900
          },
          {
            "name": "Dead 2",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 400,
            "subscription_usd_month": 50
          },
          {
            "name": "Live 3",
            "hours_saved_per_week": 2,
            "loaded_hourly_rate_usd": 20,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 300,
            "subscription_usd_month": 40
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Dead 1",
            "hours_saved_wk": 1,
            "loaded_rate": 40,
            "error_cost_mo": 0,
            "build_cost": 9000,
            "subscription_mo": 900
          },
          {
            "name": "Dead 2",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 0,
            "build_cost": 400,
            "subscription_mo": 50
          },
          {
            "name": "Live 3",
            "hours_saved_wk": 2,
            "loaded_rate": 20,
            "error_cost_mo": 0,
            "build_cost": 300,
            "subscription_mo": 40
          }
        ],
        "ranked": [
          {
            "name": "Live 3",
            "value_mo": 173.2,
            "recurring_with_haircut_mo": 48,
            "build_amortized_mo": 12.5,
            "tco_mo": 60.5,
            "net_mo": 112.7,
            "breakeven_months": 2.4,
            "breakeven_months_exact": 2.396166,
            "call": "BUILD",
            "horizon_net": 2704.8
          },
          {
            "name": "Dead 2",
            "value_mo": 0,
            "recurring_with_haircut_mo": 60,
            "build_amortized_mo": 16.67,
            "tco_mo": 76.67,
            "net_mo": -76.67,
            "breakeven_months": null,
            "breakeven_months_exact": null,
            "call": "SKIP",
            "horizon_net": -1840
          },
          {
            "name": "Dead 1",
            "value_mo": 173.2,
            "recurring_with_haircut_mo": 1080,
            "build_amortized_mo": 375,
            "tco_mo": 1455,
            "net_mo": -1281.8,
            "breakeven_months": null,
            "breakeven_months_exact": null,
            "call": "SKIP",
            "horizon_net": -30763.2
          }
        ],
        "keepers": [
          "Live 3"
        ],
        "droppers": [
          "Dead 2",
          "Dead 1"
        ],
        "net_keep_mo": 112.7,
        "net_all_mo": -1245.77,
        "hours_reclaimed_wk": 2,
        "horizon_net_keep": 2704.8,
        "horizon_net_all": -29898.4,
        "best_candidate": "Live 3",
        "fastest_breakeven_candidate": "Live 3",
        "fastest_breakeven_months": 2.4,
        "verdict": "MIXED_LIST",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "36c6d132d6c3d16fb5282003c6eeadaa49ca4dfef972ca872849485e57c6c983"
    },
    {
      "name": "boundary_C5_net_exactly_tied_preserves_input_order",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Alpha",
            "hours_saved_per_week": 2,
            "loaded_hourly_rate_usd": 60,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 100,
            "subscription_usd_month": 0
          },
          {
            "name": "Beta",
            "hours_saved_per_week": 2,
            "loaded_hourly_rate_usd": 60,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 100,
            "subscription_usd_month": 0
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Alpha",
            "hours_saved_wk": 2,
            "loaded_rate": 60,
            "error_cost_mo": 0,
            "build_cost": 100,
            "subscription_mo": 0
          },
          {
            "name": "Beta",
            "hours_saved_wk": 2,
            "loaded_rate": 60,
            "error_cost_mo": 0,
            "build_cost": 100,
            "subscription_mo": 0
          }
        ],
        "ranked": [
          {
            "name": "Alpha",
            "value_mo": 519.6,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 4.17,
            "tco_mo": 4.17,
            "net_mo": 515.43,
            "breakeven_months": 0.2,
            "breakeven_months_exact": 0.192456,
            "call": "BUILD",
            "horizon_net": 12370.4
          },
          {
            "name": "Beta",
            "value_mo": 519.6,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 4.17,
            "tco_mo": 4.17,
            "net_mo": 515.43,
            "breakeven_months": 0.2,
            "breakeven_months_exact": 0.192456,
            "call": "BUILD",
            "horizon_net": 12370.4
          }
        ],
        "keepers": [
          "Alpha",
          "Beta"
        ],
        "droppers": [],
        "net_keep_mo": 1030.87,
        "net_all_mo": 1030.87,
        "hours_reclaimed_wk": 4,
        "horizon_net_keep": 24740.8,
        "horizon_net_all": 24740.8,
        "best_candidate": "Alpha",
        "fastest_breakeven_candidate": "Alpha",
        "fastest_breakeven_months": 0.2,
        "verdict": "ALL_CLEAR",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "b4b0ffaf4f2d9f061a3e54ce5ae8f2fa7cdd2b4edfa4be79ed9880a250efbb8a"
    },
    {
      "name": "boundary_C5_net_just_past_orders_by_net",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Alpha",
            "hours_saved_per_week": 2,
            "loaded_hourly_rate_usd": 60,
            "error_cost_avoided_usd_month": 0,
            "build_cost_usd": 100,
            "subscription_usd_month": 0
          },
          {
            "name": "Beta",
            "hours_saved_per_week": 2,
            "loaded_hourly_rate_usd": 60,
            "error_cost_avoided_usd_month": 0.01,
            "build_cost_usd": 100,
            "subscription_usd_month": 0
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Alpha",
            "hours_saved_wk": 2,
            "loaded_rate": 60,
            "error_cost_mo": 0,
            "build_cost": 100,
            "subscription_mo": 0
          },
          {
            "name": "Beta",
            "hours_saved_wk": 2,
            "loaded_rate": 60,
            "error_cost_mo": 0.01,
            "build_cost": 100,
            "subscription_mo": 0
          }
        ],
        "ranked": [
          {
            "name": "Beta",
            "value_mo": 519.61,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 4.17,
            "tco_mo": 4.17,
            "net_mo": 515.44,
            "breakeven_months": 0.2,
            "breakeven_months_exact": 0.192452,
            "call": "BUILD",
            "horizon_net": 12370.64
          },
          {
            "name": "Alpha",
            "value_mo": 519.6,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 4.17,
            "tco_mo": 4.17,
            "net_mo": 515.43,
            "breakeven_months": 0.2,
            "breakeven_months_exact": 0.192456,
            "call": "BUILD",
            "horizon_net": 12370.4
          }
        ],
        "keepers": [
          "Beta",
          "Alpha"
        ],
        "droppers": [],
        "net_keep_mo": 1030.88,
        "net_all_mo": 1030.88,
        "hours_reclaimed_wk": 4,
        "horizon_net_keep": 24741.04,
        "horizon_net_all": 24741.04,
        "best_candidate": "Beta",
        "fastest_breakeven_candidate": "Beta",
        "fastest_breakeven_months": 0.2,
        "verdict": "ALL_CLEAR",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "72d5b684b522e09684a33918fc75189a112cf7bdc1ba31c0ba80b1fde8c597b0"
    },
    {
      "name": "boundary_C6_breakeven_exactly_tied_breaks_on_ranked_order",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 0,
        "horizon_months": 1,
        "weeks_per_month": 1,
        "candidates": [
          {
            "name": "Beta",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 100,
            "build_cost_usd": 90,
            "subscription_usd_month": 0
          },
          {
            "name": "Alpha",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 1000,
            "build_cost_usd": 900,
            "subscription_usd_month": 0
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 0,
        "horizon_months": 1,
        "weeks_per_month": 1,
        "candidates": [
          {
            "name": "Beta",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 100,
            "build_cost": 90,
            "subscription_mo": 0
          },
          {
            "name": "Alpha",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 1000,
            "build_cost": 900,
            "subscription_mo": 0
          }
        ],
        "ranked": [
          {
            "name": "Alpha",
            "value_mo": 1000,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 900,
            "tco_mo": 900,
            "net_mo": 100,
            "breakeven_months": 0.9,
            "breakeven_months_exact": 0.9,
            "call": "BUILD",
            "horizon_net": 100
          },
          {
            "name": "Beta",
            "value_mo": 100,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 90,
            "tco_mo": 90,
            "net_mo": 10,
            "breakeven_months": 0.9,
            "breakeven_months_exact": 0.9,
            "call": "BUILD",
            "horizon_net": 10
          }
        ],
        "keepers": [
          "Alpha",
          "Beta"
        ],
        "droppers": [],
        "net_keep_mo": 110,
        "net_all_mo": 110,
        "hours_reclaimed_wk": 0,
        "horizon_net_keep": 110,
        "horizon_net_all": 110,
        "best_candidate": "Alpha",
        "fastest_breakeven_candidate": "Alpha",
        "fastest_breakeven_months": 0.9,
        "verdict": "ALL_CLEAR",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "80fbed60464c4902cccce48bb4483ce7f83d13b57eac99a1ce7b8e94c0913546"
    },
    {
      "name": "boundary_C6_breakeven_just_past_picks_the_faster_one",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 0,
        "horizon_months": 1,
        "weeks_per_month": 1,
        "candidates": [
          {
            "name": "Alpha",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 1000,
            "build_cost_usd": 900,
            "subscription_usd_month": 0
          },
          {
            "name": "Beta",
            "hours_saved_per_week": 0,
            "loaded_hourly_rate_usd": 0,
            "error_cost_avoided_usd_month": 100,
            "build_cost_usd": 10,
            "subscription_usd_month": 0
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 0,
        "horizon_months": 1,
        "weeks_per_month": 1,
        "candidates": [
          {
            "name": "Alpha",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 1000,
            "build_cost": 900,
            "subscription_mo": 0
          },
          {
            "name": "Beta",
            "hours_saved_wk": 0,
            "loaded_rate": 0,
            "error_cost_mo": 100,
            "build_cost": 10,
            "subscription_mo": 0
          }
        ],
        "ranked": [
          {
            "name": "Alpha",
            "value_mo": 1000,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 900,
            "tco_mo": 900,
            "net_mo": 100,
            "breakeven_months": 0.9,
            "breakeven_months_exact": 0.9,
            "call": "BUILD",
            "horizon_net": 100
          },
          {
            "name": "Beta",
            "value_mo": 100,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 10,
            "tco_mo": 10,
            "net_mo": 90,
            "breakeven_months": 0.1,
            "breakeven_months_exact": 0.1,
            "call": "BUILD",
            "horizon_net": 90
          }
        ],
        "keepers": [
          "Alpha",
          "Beta"
        ],
        "droppers": [],
        "net_keep_mo": 190,
        "net_all_mo": 190,
        "hours_reclaimed_wk": 0,
        "horizon_net_keep": 190,
        "horizon_net_all": 190,
        "best_candidate": "Alpha",
        "fastest_breakeven_candidate": "Beta",
        "fastest_breakeven_months": 0.1,
        "verdict": "ALL_CLEAR",
        "warning_checks": [],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "bb854e1c3cb15edeb9e8bef02606a6b4ad2830e37c30d827d2e2532cb2380dca"
    },
    {
      "name": "boundary_C7_all_three_clamps_fire",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": -50,
        "horizon_months": 0,
        "weeks_per_month": 0.5,
        "candidates": [
          {
            "name": "Clamped",
            "hours_saved_per_week": 4,
            "loaded_hourly_rate_usd": -25,
            "error_cost_avoided_usd_month": 30,
            "build_cost_usd": -100,
            "subscription_usd_month": -50
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 0,
        "horizon_months": 1,
        "weeks_per_month": 1,
        "candidates": [
          {
            "name": "Clamped",
            "hours_saved_wk": 4,
            "loaded_rate": 0,
            "error_cost_mo": 30,
            "build_cost": 0,
            "subscription_mo": 0
          }
        ],
        "ranked": [
          {
            "name": "Clamped",
            "value_mo": 30,
            "recurring_with_haircut_mo": 0,
            "build_amortized_mo": 0,
            "tco_mo": 0,
            "net_mo": 30,
            "breakeven_months": 0,
            "breakeven_months_exact": 0,
            "call": "BUILD",
            "horizon_net": 30
          }
        ],
        "keepers": [
          "Clamped"
        ],
        "droppers": [],
        "net_keep_mo": 30,
        "net_all_mo": 30,
        "hours_reclaimed_wk": 4,
        "horizon_net_keep": 30,
        "horizon_net_all": 30,
        "best_candidate": "Clamped",
        "fastest_breakeven_candidate": "Clamped",
        "fastest_breakeven_months": 0,
        "verdict": "ALL_CLEAR",
        "warning_checks": [
          "HAIRCUT_CLAMPED_TO_FLOOR",
          "HORIZON_CLAMPED_TO_FLOOR",
          "WEEKS_PER_MONTH_CLAMPED_TO_FLOOR"
        ],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "2411af4d381ea38510a2274f5d42653e30908627c12db0b470b5265a4ffcc519"
    },
    {
      "name": "boundary_C7_horizon_fraction_rounds_half_up",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24.6,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Rounding",
            "hours_saved_per_week": 3,
            "loaded_hourly_rate_usd": 45,
            "error_cost_avoided_usd_month": 150,
            "build_cost_usd": 2000,
            "subscription_usd_month": 60
          }
        ]
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 25,
        "weeks_per_month": 4.33,
        "candidates": [
          {
            "name": "Rounding",
            "hours_saved_wk": 3,
            "loaded_rate": 45,
            "error_cost_mo": 150,
            "build_cost": 2000,
            "subscription_mo": 60
          }
        ],
        "ranked": [
          {
            "name": "Rounding",
            "value_mo": 734.55,
            "recurring_with_haircut_mo": 72,
            "build_amortized_mo": 80,
            "tco_mo": 152,
            "net_mo": 582.55,
            "breakeven_months": 3,
            "breakeven_months_exact": 3.01864,
            "call": "BUILD",
            "horizon_net": 14563.75
          }
        ],
        "keepers": [
          "Rounding"
        ],
        "droppers": [],
        "net_keep_mo": 582.55,
        "net_all_mo": 582.55,
        "hours_reclaimed_wk": 3,
        "horizon_net_keep": 14563.75,
        "horizon_net_all": 14563.75,
        "best_candidate": "Rounding",
        "fastest_breakeven_candidate": "Rounding",
        "fastest_breakeven_months": 3,
        "verdict": "ALL_CLEAR",
        "warning_checks": [
          "HORIZON_ROUNDED_TO_WHOLE_MONTHS"
        ],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "value_mo = hours_saved_wk*weeks_per_month*loaded_rate + error_cost_mo. tco_mo = subscription_mo*(1+haircut_pct/100) + build_cost/horizon_months. net_mo = value_mo - tco_mo. breakeven_months = build_cost/(value_mo - recurring_with_haircut_mo), null when that denominator is not positive. horizon_net = value_mo*horizon_months - (build_cost + recurring_with_haircut_mo*horizon_months), which equals net_mo*horizon_months. The maintenance haircut applies to the subscription only, never to the amortised build. hours_reclaimed_wk sums hours over BUILD candidates only. Ranking is descending net_mo; ties preserve input order (Array.prototype.sort stability, ES2019)."
      },
      "golden_hash": "b0b56bda34b95a7b9ac8bc4ac25d36b3b0b337bb10d4cc31bcf8d389258c61e0"
    },
    {
      "name": "boundary_empty_candidate_list",
      "policy_parameters": {
        "as_of": "2026-10-13",
        "maintenance_haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": []
      },
      "output_payload": {
        "as_of": "2026-10-13",
        "haircut_pct": 20,
        "horizon_months": 24,
        "weeks_per_month": 4.33,
        "candidates": [],
        "ranked": [],
        "keepers": [],
        "droppers": [],
        "net_keep_mo": 0,
        "net_all_mo": 0,
        "hours_reclaimed_wk": 0,
        "horizon_net_keep": 0,
        "horizon_net_all": 0,
        "best_candidate": null,
        "fastest_breakeven_candidate": null,
        "fastest_breakeven_months": null,
        "verdict": "NO_CANDIDATE_CLEARS",
        "warning_checks": [
          "NO_CANDIDATES"
        ],
        "regulatory_basis": "none — pure gross-dollar payback arithmetic over user estimates; no tax or regulatory premise",
        "note": "No candidates supplied. The Apex page alerts \"Add at least one automation candidate to rank.\" and returns without rendering results."
      },
      "golden_hash": "9d3f85bb3d1a353079761bd2566aa000384685b8983e189a1dc19fd8de2218d9"
    }
  ]
}
