{
  "meta": {
    "schema_version": "1.0",
    "generated_by": "scripts/build_data.py",
    "generated_note": "Generated from src/model/funding_results.json, which src/model/funding_model.py writes. Never edit by hand: change the model, run it, then run scripts/build_data.py.",
    "dataset": "Follow the Gift: who pays for the plan, where the money is kept and what it buys",
    "framework_section": "§7.6",
    "addendum_section": "B.10",
    "years": 21,
    "source_files": [
      {
        "role": "canonical model",
        "path": "src/model/funding_model.py",
        "sha256": "049c8c9584bd06406f717f32779a8978c5ea50c8fb75940e042002af10888fbb"
      },
      {
        "role": "model output this file is built from",
        "path": "src/model/funding_results.json",
        "sha256": "cd7dfad16acb9e0af7e7f88f434d1190370aaddab2a15ed09c296d800a46e79f"
      },
      {
        "role": "browser port for live recompute (import it; never reimplement it)",
        "path": "src/model/sim_src/funding.js",
        "sha256": "d5137f5417ad34344cfdfb41efd707ce0f2d87f73d175183ce2cda7c6ae25982"
      },
      {
        "role": "parity test between the two engines",
        "path": "src/model/funding_parity_test.mjs",
        "sha256": "3f4f171e57f4cbe0e477e4dcfb5b0738316719092c7792c803838a9a9e06ee1a"
      }
    ],
    "funding_results_sha256": "cd7dfad16acb9e0af7e7f88f434d1190370aaddab2a15ed09c296d800a46e79f",
    "units": {
      "money": "SGD, nominal (each year's own money) unless the field name says real or the label says today's dollars",
      "corpus_real_end": "SGD in today's (Year 0) dollars",
      "ratios_and_shares": "plain numbers: 0.035 is 3.5%; *_vs_target fields are a multiple of the $40M target",
      "years": "Year 0 is the launch year; the campaign is Years 0-2; the model runs Years 0-20",
      "rounding": "money to whole dollars; numbers under 1,000 to four decimal places; sankey values are whole dollars as the model prints them"
    },
    "model_estimate_notice": "Figures are model estimates, not measurements.",
    "licence": "CC BY 4.0 (LICENSE-docs)"
  },
  "kinds": [
    {
      "id": "public",
      "label": "Government and public money"
    },
    {
      "id": "market",
      "label": "Investment returns"
    },
    {
      "id": "diner",
      "label": "Diners"
    },
    {
      "id": "business",
      "label": "Businesses"
    },
    {
      "id": "donor",
      "label": "Donors and foundations"
    },
    {
      "id": "vehicle",
      "label": "Where it is kept"
    },
    {
      "id": "use",
      "label": "What it buys"
    },
    {
      "id": "gap",
      "label": "Still to raise"
    }
  ],
  "sankey": {
    "campaign": {
      "label": "The campaign, Years 0–2",
      "years": [
        0,
        1,
        2
      ],
      "columns": [
        "Where it comes from",
        "Where it is kept",
        "The spending account",
        "What it buys"
      ],
      "nodes": [
        {
          "id": "gov_anchor",
          "label": "Government anchor",
          "column": 0,
          "kind": "public"
        },
        {
          "id": "match",
          "label": "Matching fund (CMF first)",
          "column": 0,
          "kind": "public"
        },
        {
          "id": "gov_ops",
          "label": "Government operating match",
          "column": 0,
          "kind": "public"
        },
        {
          "id": "returns",
          "label": "Investment returns",
          "column": 0,
          "kind": "market"
        },
        {
          "id": "diner_direct",
          "label": "Diners' gifts",
          "column": 0,
          "kind": "diner"
        },
        {
          "id": "till",
          "label": "The dollar at the till",
          "column": 0,
          "kind": "diner"
        },
        {
          "id": "partner_cash",
          "label": "Founding Plate Partners (cash)",
          "column": 0,
          "kind": "business"
        },
        {
          "id": "partner_inkind",
          "label": "Founding Plate Partners (rent rebates)",
          "column": 0,
          "kind": "business"
        },
        {
          "id": "other_corporate",
          "label": "Other companies",
          "column": 0,
          "kind": "business"
        },
        {
          "id": "major_gifts",
          "label": "Major donors and family foundations",
          "column": 0,
          "kind": "donor"
        },
        {
          "id": "foundations",
          "label": "Foundations and bridge grants",
          "column": 0,
          "kind": "donor"
        },
        {
          "id": "gifts_for_spending",
          "label": "Gifts for spending",
          "column": 0,
          "kind": "donor"
        },
        {
          "id": "corpus",
          "label": "Endowment corpus",
          "column": 1,
          "kind": "vehicle"
        },
        {
          "id": "ladder",
          "label": "Bond ladder",
          "column": 1,
          "kind": "vehicle"
        },
        {
          "id": "spending",
          "label": "Spending account",
          "column": 2,
          "kind": "vehicle"
        },
        {
          "id": "programme",
          "label": "The programme: Fellows, apprentices, landing, Corps, security, Taste Council",
          "column": 3,
          "kind": "use"
        },
        {
          "id": "heritage_stalls",
          "label": "Heritage stalls (rent rebates)",
          "column": 3,
          "kind": "use"
        },
        {
          "id": "reserve",
          "label": "Kept for the future (corpus growth)",
          "column": 3,
          "kind": "use"
        }
      ],
      "links": [
        {
          "source": "gov_anchor",
          "target": "corpus",
          "value": 15000000
        },
        {
          "source": "match",
          "target": "corpus",
          "value": 10000000
        },
        {
          "source": "gov_ops",
          "target": "spending",
          "value": 700000
        },
        {
          "source": "returns",
          "target": "corpus",
          "value": 1663897
        },
        {
          "source": "diner_direct",
          "target": "corpus",
          "value": 2279211
        },
        {
          "source": "till",
          "target": "corpus",
          "value": 1920000
        },
        {
          "source": "partner_cash",
          "target": "corpus",
          "value": 1061426
        },
        {
          "source": "partner_inkind",
          "target": "heritage_stalls",
          "value": 203546
        },
        {
          "source": "other_corporate",
          "target": "corpus",
          "value": 4000000
        },
        {
          "source": "major_gifts",
          "target": "corpus",
          "value": 5739363
        },
        {
          "source": "foundations",
          "target": "ladder",
          "value": 12930522
        },
        {
          "source": "foundations",
          "target": "spending",
          "value": 713598
        },
        {
          "source": "gifts_for_spending",
          "target": "spending",
          "value": 893000
        },
        {
          "source": "corpus",
          "target": "spending",
          "value": 1471917
        },
        {
          "source": "corpus",
          "target": "reserve",
          "value": 40191980
        },
        {
          "source": "ladder",
          "target": "spending",
          "value": 8465506
        },
        {
          "source": "spending",
          "target": "programme",
          "value": 12242104
        }
      ],
      "side_values": {
        "tax_forgone": 5725160
      },
      "notes": "Values are nominal SGD summed over the years shown. Columns: 0 sources, 1 where money is kept, 2 the spending account (and any amount still to raise), 3 what it buys. The corpus-to-spending flow is the draw net of any surplus returned to the corpus the same year. Tax forgone is the public cost of the 250% deduction: it is not money the Seed Bank receives, so it is shown beside the diagram, not as a flow. Rent rebates go straight from partner operators to the heritage stalls they host and never pass through the Seed Bank. Heritage Plate licence income is split three ways: the family share goes straight to masters' families, the match share to the retirement match, and only the Seed Bank's 20% joins the continuing gifts."
    },
    "steady": {
      "label": "A typical later year (Year 6)",
      "years": [
        6
      ],
      "columns": [
        "Where it comes from",
        "Where it is kept",
        "The spending account",
        "What it buys"
      ],
      "nodes": [
        {
          "id": "gov_ops",
          "label": "Government operating match",
          "column": 0,
          "kind": "public"
        },
        {
          "id": "returns",
          "label": "Investment returns",
          "column": 0,
          "kind": "market"
        },
        {
          "id": "diner_direct",
          "label": "Diners' gifts",
          "column": 0,
          "kind": "diner"
        },
        {
          "id": "till",
          "label": "The dollar at the till",
          "column": 0,
          "kind": "diner"
        },
        {
          "id": "partner_cash",
          "label": "Founding Plate Partners (cash)",
          "column": 0,
          "kind": "business"
        },
        {
          "id": "partner_inkind",
          "label": "Founding Plate Partners (rent rebates)",
          "column": 0,
          "kind": "business"
        },
        {
          "id": "other_corporate",
          "label": "Other companies",
          "column": 0,
          "kind": "business"
        },
        {
          "id": "heritage_plate",
          "label": "Heritage Plate licences",
          "column": 0,
          "kind": "business"
        },
        {
          "id": "corpus",
          "label": "Endowment corpus",
          "column": 1,
          "kind": "vehicle"
        },
        {
          "id": "spending",
          "label": "Spending account",
          "column": 2,
          "kind": "vehicle"
        },
        {
          "id": "programme",
          "label": "The programme: Fellows, apprentices, landing, Corps, security, Taste Council",
          "column": 3,
          "kind": "use"
        },
        {
          "id": "heritage_stalls",
          "label": "Heritage stalls (rent rebates)",
          "column": 3,
          "kind": "use"
        },
        {
          "id": "match_fund",
          "label": "The retirement match (Protection Floor)",
          "column": 3,
          "kind": "use"
        },
        {
          "id": "families",
          "label": "Masters' families (Heritage Plate share)",
          "column": 3,
          "kind": "use"
        },
        {
          "id": "reserve",
          "label": "Kept for the future (corpus growth)",
          "column": 3,
          "kind": "use"
        }
      ],
      "links": [
        {
          "source": "gov_ops",
          "target": "spending",
          "value": 500000
        },
        {
          "source": "returns",
          "target": "corpus",
          "value": 1831265
        },
        {
          "source": "diner_direct",
          "target": "corpus",
          "value": 173032
        },
        {
          "source": "diner_direct",
          "target": "spending",
          "value": 348322
        },
        {
          "source": "till",
          "target": "corpus",
          "value": 531024
        },
        {
          "source": "till",
          "target": "spending",
          "value": 1068976
        },
        {
          "source": "partner_cash",
          "target": "corpus",
          "value": 113003
        },
        {
          "source": "partner_cash",
          "target": "spending",
          "value": 227481
        },
        {
          "source": "partner_inkind",
          "target": "heritage_stalls",
          "value": 65293
        },
        {
          "source": "other_corporate",
          "target": "corpus",
          "value": 181451
        },
        {
          "source": "other_corporate",
          "target": "spending",
          "value": 365270
        },
        {
          "source": "heritage_plate",
          "target": "corpus",
          "value": 119480
        },
        {
          "source": "heritage_plate",
          "target": "spending",
          "value": 240520
        },
        {
          "source": "heritage_plate",
          "target": "match_fund",
          "value": 720000
        },
        {
          "source": "heritage_plate",
          "target": "families",
          "value": 720000
        },
        {
          "source": "corpus",
          "target": "spending",
          "value": 1570058
        },
        {
          "source": "corpus",
          "target": "reserve",
          "value": 1379197
        },
        {
          "source": "spending",
          "target": "programme",
          "value": 4320627
        }
      ],
      "side_values": {
        "tax_forgone": 442904
      },
      "notes": "Values are nominal SGD summed over the years shown. Columns: 0 sources, 1 where money is kept, 2 the spending account (and any amount still to raise), 3 what it buys. The corpus-to-spending flow is the draw net of any surplus returned to the corpus the same year. Tax forgone is the public cost of the 250% deduction: it is not money the Seed Bank receives, so it is shown beside the diagram, not as a flow. Rent rebates go straight from partner operators to the heritage stalls they host and never pass through the Seed Bank. Heritage Plate licence income is split three ways: the family share goes straight to masters' families, the match share to the retirement match, and only the Seed Bank's 20% joins the continuing gifts."
    }
  },
  "yearly": [
    {
      "year": 0,
      "price": 1.0,
      "inflows": {
        "gov_anchor": 7500000,
        "match": 2250000,
        "partner_cash": 0.0,
        "partner_inkind": 0.0,
        "diner_direct": 0.0,
        "till": 0.0,
        "other_corporate": 0.0,
        "major_gifts": 2250000,
        "foundation": 713598,
        "bridge_grants": 12930522,
        "gifts_for_spending": 193000,
        "gov_ops": 0,
        "heritage_plate": 0.0
      },
      "to_corpus": 12000000,
      "gifts_to_spending": 0.0,
      "draw": 0.0,
      "ladder": 0.0,
      "spend": 906598,
      "unfunded": 0.0,
      "investment_return": 0.0,
      "corpus_end": 12000000,
      "corpus_real_end": 11822660,
      "committed": 12000000,
      "close_target": 12000000,
      "public": 11400549,
      "private": 15730321,
      "tax_forgone": 1293750,
      "rebate_per_heritage_stall_month": 0.0
    },
    {
      "year": 1,
      "price": 1.015,
      "inflows": {
        "gov_anchor": 7500000,
        "match": 5250000,
        "partner_cash": 526762,
        "partner_inkind": 101015,
        "diner_direct": 1788000,
        "till": 640000,
        "other_corporate": 2000000,
        "major_gifts": 295238,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 300000,
        "gov_ops": 300000,
        "heritage_plate": 0.0
      },
      "to_corpus": 18000000,
      "gifts_to_spending": 0.0,
      "draw": 420000,
      "ladder": 3609249,
      "spend": 4629249,
      "unfunded": 0.0,
      "investment_return": 474780,
      "corpus_end": 30054780,
      "corpus_real_end": 29173025,
      "committed": 30000000,
      "close_target": 30000000,
      "public": 14498548,
      "private": 5651015,
      "tax_forgone": 1448548,
      "rebate_per_heritage_stall_month": 420.8972
    },
    {
      "year": 2,
      "price": 1.0302,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 2500000,
        "partner_cash": 534664,
        "partner_inkind": 102531,
        "diner_direct": 491211,
        "till": 1280000,
        "other_corporate": 2000000,
        "major_gifts": 3194125,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 400000,
        "gov_ops": 400000,
        "heritage_plate": 0.0
      },
      "to_corpus": 10000000,
      "gifts_to_spending": 0.0,
      "draw": 1051917,
      "ladder": 4856257,
      "spend": 6706257,
      "unfunded": 0.0,
      "investment_return": 1189117,
      "corpus_end": 40191980,
      "corpus_real_end": 38436274,
      "committed": 40000000,
      "close_target": 40000000,
      "public": 5882861,
      "private": 8002531,
      "tax_forgone": 2982861,
      "rebate_per_heritage_stall_month": 427.2107
    },
    {
      "year": 3,
      "price": 1.0457,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 542684,
        "partner_inkind": 104069,
        "diner_direct": 498579,
        "till": 1600000,
        "other_corporate": 500000,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 500000,
        "gov_ops": 500000,
        "heritage_plate": 60000
      },
      "to_corpus": 3153263,
      "gifts_to_spending": 0.0,
      "draw": 1406719,
      "ladder": 5041704,
      "spend": 7441704,
      "unfunded": 0.0,
      "investment_return": 1590196,
      "corpus_end": 43528719,
      "corpus_real_end": 41012073,
      "committed": null,
      "close_target": null,
      "public": 1013183,
      "private": 3757332,
      "tax_forgone": 513183,
      "rebate_per_heritage_stall_month": 433.6189
    },
    {
      "year": 4,
      "price": 1.0614,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 550824,
        "partner_inkind": 105630,
        "diner_direct": 506058,
        "till": 1600000,
        "other_corporate": 530682,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 340000
      },
      "to_corpus": 1085202,
      "gifts_to_spending": 2170362,
      "draw": 1523505,
      "ladder": 0.0,
      "spend": 4193867,
      "unfunded": 0.0,
      "investment_return": 1722214,
      "corpus_end": 44812630,
      "corpus_real_end": 41597786,
      "committed": null,
      "close_target": null,
      "public": 1030733,
      "private": 3361193,
      "tax_forgone": 530733,
      "rebate_per_heritage_stall_month": 440.1231
    },
    {
      "year": 5,
      "price": 1.0773,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 559086,
        "partner_inkind": 107214,
        "diner_direct": 513649,
        "till": 1600000,
        "other_corporate": 538642,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 960000
      },
      "to_corpus": 1146157,
      "gifts_to_spending": 2257220,
      "draw": 1499556,
      "ladder": 0.0,
      "spend": 4256775,
      "unfunded": 0.0,
      "investment_return": 1775836,
      "corpus_end": 46235067,
      "corpus_real_end": 42283920,
      "committed": null,
      "close_target": null,
      "public": 1038694,
      "private": 3510591,
      "tax_forgone": 538694,
      "rebate_per_heritage_stall_month": 446.725
    },
    {
      "year": 6,
      "price": 1.0934,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 340483,
        "partner_inkind": 65293,
        "diner_direct": 521354,
        "till": 1600000,
        "other_corporate": 546722,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 1800000
      },
      "to_corpus": 1117990,
      "gifts_to_spending": 2250569,
      "draw": 1570058,
      "ladder": 0.0,
      "spend": 4320627,
      "unfunded": 0.0,
      "investment_return": 1831265,
      "corpus_end": 47614265,
      "corpus_real_end": 42901728,
      "committed": null,
      "close_target": null,
      "public": 942904,
      "private": 3433852,
      "tax_forgone": 442904,
      "rebate_per_heritage_stall_month": 272.0555
    },
    {
      "year": 7,
      "price": 1.1098,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 345591,
        "partner_inkind": 66273,
        "diner_direct": 529174,
        "till": 1600000,
        "other_corporate": 554922,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 1161974,
      "gifts_to_spending": 2267713,
      "draw": 1617723,
      "ladder": 0.0,
      "spend": 4385436,
      "unfunded": 0.0,
      "investment_return": 1885858,
      "corpus_end": 49044374,
      "corpus_real_end": 43537236,
      "committed": null,
      "close_target": null,
      "public": 949548,
      "private": 3495960,
      "tax_forgone": 449548,
      "rebate_per_heritage_stall_month": 276.1364
    },
    {
      "year": 8,
      "price": 1.1265,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 350775,
        "partner_inkind": 67267,
        "diner_direct": 537112,
        "till": 1600000,
        "other_corporate": 563246,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 1167008,
      "gifts_to_spending": 2284125,
      "draw": 1667093,
      "ladder": 0.0,
      "spend": 4451218,
      "unfunded": 0.0,
      "investment_return": 1942469,
      "corpus_end": 50486757,
      "corpus_real_end": 44155326,
      "committed": null,
      "close_target": null,
      "public": 956291,
      "private": 3518399,
      "tax_forgone": 456291,
      "rebate_per_heritage_stall_month": 280.2784
    },
    {
      "year": 9,
      "price": 1.1434,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 356036,
        "partner_inkind": 68276,
        "diner_direct": 545168,
        "till": 1600000,
        "other_corporate": 571695,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 1171610,
      "gifts_to_spending": 2301290,
      "draw": 1716696,
      "ladder": 0.0,
      "spend": 4517986,
      "unfunded": 0.0,
      "investment_return": 1999572,
      "corpus_end": 51941243,
      "corpus_real_end": 44756067,
      "committed": null,
      "close_target": null,
      "public": 963135,
      "private": 3541175,
      "tax_forgone": 463135,
      "rebate_per_heritage_stall_month": 284.4826
    },
    {
      "year": 10,
      "price": 1.1605,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 361377,
        "partner_inkind": 69300,
        "diner_direct": 553346,
        "till": 1600000,
        "other_corporate": 580270,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 1176415,
      "gifts_to_spending": 2318578,
      "draw": 1767178,
      "ladder": 0.0,
      "spend": 4585756,
      "unfunded": 0.0,
      "investment_return": 2057137,
      "corpus_end": 53407616,
      "corpus_real_end": 45339501,
      "committed": null,
      "close_target": null,
      "public": 970082,
      "private": 3564293,
      "tax_forgone": 470082,
      "rebate_per_heritage_stall_month": 288.7498
    },
    {
      "year": 11,
      "price": 1.1779,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 220078,
        "partner_inkind": 42204,
        "diner_direct": 561646,
        "till": 1600000,
        "other_corporate": 588974,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 1034239,
      "gifts_to_spending": 2336460,
      "draw": 1818082,
      "ladder": 0.0,
      "spend": 4654542,
      "unfunded": 0.0,
      "investment_return": 2115171,
      "corpus_end": 54738944,
      "corpus_real_end": 45782964,
      "committed": null,
      "close_target": null,
      "public": 909995,
      "private": 3412903,
      "tax_forgone": 409995,
      "rebate_per_heritage_stall_month": 175.8486
    },
    {
      "year": 12,
      "price": 1.1956,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 223380,
        "partner_inkind": 42837,
        "diner_direct": 570071,
        "till": 1600000,
        "other_corporate": 597809,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 1034590,
      "gifts_to_spending": 2356669,
      "draw": 1867691,
      "ladder": 0.0,
      "spend": 4724360,
      "unfunded": 0.0,
      "investment_return": 2167721,
      "corpus_end": 56073564,
      "corpus_real_end": 46206132,
      "committed": null,
      "close_target": null,
      "public": 916145,
      "private": 3434096,
      "tax_forgone": 416145,
      "rebate_per_heritage_stall_month": 178.4864
    },
    {
      "year": 13,
      "price": 1.2136,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 226730,
        "partner_inkind": 43479,
        "diner_direct": 578622,
        "till": 1600000,
        "other_corporate": 606776,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 1032804,
      "gifts_to_spending": 2379324,
      "draw": 1915901,
      "ladder": 0.0,
      "spend": 4795226,
      "unfunded": 0.0,
      "investment_return": 2220464,
      "corpus_end": 57410931,
      "corpus_real_end": 46609023,
      "committed": null,
      "close_target": null,
      "public": 922387,
      "private": 3455608,
      "tax_forgone": 422387,
      "rebate_per_heritage_stall_month": 181.1637
    },
    {
      "year": 14,
      "price": 1.2318,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 230131,
        "partner_inkind": 44131,
        "diner_direct": 587301,
        "till": 1600000,
        "other_corporate": 615878,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 1028763,
      "gifts_to_spending": 2404547,
      "draw": 1962607,
      "ladder": 0.0,
      "spend": 4867154,
      "unfunded": 0.0,
      "investment_return": 2273381,
      "corpus_end": 58750468,
      "corpus_real_end": 46991650,
      "committed": null,
      "close_target": null,
      "public": 928723,
      "private": 3477442,
      "tax_forgone": 428723,
      "rebate_per_heritage_stall_month": 183.8811
    },
    {
      "year": 15,
      "price": 1.2502,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 233583,
        "partner_inkind": 44793,
        "diner_direct": 596111,
        "till": 1600000,
        "other_corporate": 625116,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 1024056,
      "gifts_to_spending": 2430754,
      "draw": 2009408,
      "ladder": 0.0,
      "spend": 4940162,
      "unfunded": 0.0,
      "investment_return": 2326383,
      "corpus_end": 60091500,
      "corpus_real_end": 47353967,
      "committed": null,
      "close_target": null,
      "public": 935154,
      "private": 3499603,
      "tax_forgone": 435154,
      "rebate_per_heritage_stall_month": 186.6393
    },
    {
      "year": 16,
      "price": 1.269,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 142252,
        "partner_inkind": 27279,
        "diner_direct": 605052,
        "till": 1600000,
        "other_corporate": 634493,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 923817,
      "gifts_to_spending": 2457980,
      "draw": 2056284,
      "ladder": 0.0,
      "spend": 5014264,
      "unfunded": 0.0,
      "investment_return": 2379444,
      "corpus_end": 61338477,
      "corpus_real_end": 47622290,
      "committed": null,
      "close_target": null,
      "public": 898285,
      "private": 3409076,
      "tax_forgone": 398285,
      "rebate_per_heritage_stall_month": 113.6634
    },
    {
      "year": 17,
      "price": 1.288,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 144386,
        "partner_inkind": 27688,
        "diner_direct": 614128,
        "till": 1600000,
        "other_corporate": 644010,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 915151,
      "gifts_to_spending": 2487373,
      "draw": 2102105,
      "ladder": 0.0,
      "spend": 5089478,
      "unfunded": 0.0,
      "investment_return": 2428691,
      "corpus_end": 62580215,
      "corpus_real_end": 47868331,
      "committed": null,
      "close_target": null,
      "public": 904259,
      "private": 3430213,
      "tax_forgone": 404259,
      "rebate_per_heritage_stall_month": 115.3683
    },
    {
      "year": 18,
      "price": 1.3073,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 146552,
        "partner_inkind": 28104,
        "diner_direct": 623340,
        "till": 1600000,
        "other_corporate": 653670,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 904528,
      "gifts_to_spending": 2519035,
      "draw": 2146786,
      "ladder": 0.0,
      "spend": 5165820,
      "unfunded": 0.0,
      "investment_return": 2477771,
      "corpus_end": 63815727,
      "corpus_real_end": 48092009,
      "committed": null,
      "close_target": null,
      "public": 910323,
      "private": 3451666,
      "tax_forgone": 410323,
      "rebate_per_heritage_stall_month": 117.0988
    },
    {
      "year": 19,
      "price": 1.327,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 148750,
        "partner_inkind": 28525,
        "diner_direct": 632690,
        "till": 1600000,
        "other_corporate": 663475,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 891843,
      "gifts_to_spending": 2553073,
      "draw": 2190235,
      "ladder": 0.0,
      "spend": 5243307,
      "unfunded": 0.0,
      "investment_return": 2526645,
      "corpus_end": 65043981,
      "corpus_real_end": 48293232,
      "committed": null,
      "close_target": null,
      "public": 916478,
      "private": 3473441,
      "tax_forgone": 416478,
      "rebate_per_heritage_stall_month": 118.8553
    },
    {
      "year": 20,
      "price": 1.3469,
      "inflows": {
        "gov_anchor": 0.0,
        "match": 0.0,
        "partner_cash": 150981,
        "partner_inkind": 28953,
        "diner_direct": 642180,
        "till": 1600000,
        "other_corporate": 673428,
        "major_gifts": 0.0,
        "foundation": 0.0,
        "bridge_grants": 0.0,
        "gifts_for_spending": 0.0,
        "gov_ops": 500000,
        "heritage_plate": 2000000
      },
      "to_corpus": 878098,
      "gifts_to_spending": 2588491,
      "draw": 2233466,
      "ladder": 0.0,
      "spend": 5321957,
      "unfunded": 0.0,
      "investment_return": 2575231,
      "corpus_end": 66263844,
      "corpus_real_end": 48471866,
      "committed": null,
      "close_target": null,
      "public": 922725,
      "private": 3495542,
      "tax_forgone": 422725,
      "rebate_per_heritage_stall_month": 120.6381
    }
  ],
  "ladder": {
    "need_years_1_to_3": [
      3609249,
      4856257,
      5041704
    ],
    "cost_year_0": 12930522
  },
  "summary": {
    "major_gifts_needed": 5739363,
    "match_used": 10000000,
    "ladder_cost": 12930522,
    "ladder_need": [
      3609249,
      4856257,
      5041704
    ],
    "campaign_inflows": {
      "gov_anchor": 15000000,
      "match": 10000000,
      "partner_cash": 1061426,
      "partner_inkind": 203546,
      "diner_direct": 2279211,
      "till": 1920000,
      "other_corporate": 4000000,
      "major_gifts": 5739363,
      "foundation": 713598,
      "bridge_grants": 12930522,
      "gifts_for_spending": 893000,
      "gov_ops": 700000,
      "heritage_plate": 0.0
    },
    "campaign_public": 31781959,
    "campaign_private": 29383867,
    "private_per_public_campaign": 0.9245,
    "draw_by_year": [
      0.0,
      420000,
      1051917,
      1406719,
      1523505,
      1499556,
      1570058,
      1617723,
      1667093,
      1716696,
      1767178,
      1818082,
      1867691,
      1915901,
      1962607,
      2009408,
      2056284,
      2102105,
      2146786,
      2190235,
      2233466
    ],
    "corpus_end_by_year": [
      12000000,
      30054780,
      40191980,
      43528719,
      44812630,
      46235067,
      47614265,
      49044374,
      50486757,
      51941243,
      53407616,
      54738944,
      56073564,
      57410931,
      58750468,
      60091500,
      61338477,
      62580215,
      63815727,
      65043981,
      66263844
    ],
    "corpus_real_y20": 48471866,
    "corpus_real_y20_vs_target": 1.2118,
    "unfunded_total_y4_y20": 0.0,
    "unfunded_y4_y10": 0.0,
    "years_unfunded": 0,
    "rebate_per_heritage_stall_month_y2": 427.2107,
    "tax_forgone_campaign": 5725160,
    "heritage_plate_by_year": [
      0.0,
      0.0,
      0.0,
      60000,
      340000,
      960000,
      1800000,
      2000000,
      2000000,
      2000000,
      2000000,
      2000000,
      2000000,
      2000000,
      2000000,
      2000000,
      2000000,
      2000000,
      2000000,
      2000000,
      2000000
    ],
    "earmarked_for_match_total": 0.0,
    "public_per_private_campaign": 1.0816,
    "public_year6": 942904,
    "private_year6": 3433852,
    "private_per_public_year6": 3.6418
  },
  "scenarios": {
    "central": {
      "label": "Central assumptions",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 1.2118,
      "unfunded_total_y4_y20": 0.0,
      "years_unfunded": 0,
      "private_per_public_campaign": 0.9245,
      "unfunded_y4_y10": 0.0,
      "ladder_cost": 12930522,
      "draw_y10": 1767178
    },
    "pledge_1pct_all": {
      "label": "Every F&B partner pledges 1% (not 0.5%)",
      "major_gifts_needed": 5003082,
      "corpus_real_y20_vs_target": 1.3154,
      "unfunded_total_y4_y20": 0.0,
      "years_unfunded": 0,
      "private_per_public_campaign": 0.9278,
      "unfunded_y4_y10": 0.0,
      "ladder_cost": 12930522,
      "draw_y10": 1840506
    },
    "low_takeup": {
      "label": "Only a fifth of the F&B profit pool pledges",
      "major_gifts_needed": 6376218,
      "corpus_real_y20_vs_target": 1.1222,
      "unfunded_total_y4_y20": 0.0,
      "years_unfunded": 0,
      "private_per_public_campaign": 0.9185,
      "unfunded_y4_y10": 0.0,
      "ladder_cost": 12930522,
      "draw_y10": 1703775
    },
    "high_takeup": {
      "label": "Four-fifths of the F&B profit pool pledges",
      "major_gifts_needed": 5102508,
      "corpus_real_y20_vs_target": 1.3014,
      "unfunded_total_y4_y20": 0.0,
      "years_unfunded": 0,
      "private_per_public_campaign": 0.9306,
      "unfunded_y4_y10": 0.0,
      "ladder_cost": 12930522,
      "draw_y10": 1830588
    },
    "no_till_dollar": {
      "label": "No dollar at the till",
      "major_gifts_needed": 7659363,
      "corpus_real_y20_vs_target": 0.8311,
      "unfunded_total_y4_y20": 15381763,
      "years_unfunded": 17,
      "private_per_public_campaign": 0.8935,
      "unfunded_y4_y10": 4174488,
      "ladder_cost": 12930522,
      "draw_y10": 1503023
    },
    "no_gov_ops_after_y3": {
      "label": "Government stops its operating match after Year 3",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 0.9956,
      "unfunded_total_y4_y20": 0.0,
      "years_unfunded": 0,
      "private_per_public_campaign": 0.9245,
      "unfunded_y4_y10": 0.0,
      "ladder_cost": 12930522,
      "draw_y10": 1672102
    },
    "fixed_income": {
      "label": "Bonds and bills only, 3.5% draw",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 0.9004,
      "unfunded_total_y4_y20": 0.0,
      "years_unfunded": 0,
      "private_per_public_campaign": 0.9245,
      "unfunded_y4_y10": 0.0,
      "ladder_cost": 12930522,
      "draw_y10": 1607017
    },
    "draw_4pct": {
      "label": "Fixed-income core, 4% draw",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 1.1921,
      "unfunded_total_y4_y20": 0.0,
      "years_unfunded": 0,
      "private_per_public_campaign": 0.9123,
      "unfunded_y4_y10": 0.0,
      "ladder_cost": 12539952,
      "draw_y10": 1996793
    },
    "draw_3pct": {
      "label": "Fixed-income core, 3% draw",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 1.2317,
      "unfunded_total_y4_y20": 0.0,
      "years_unfunded": 0,
      "private_per_public_campaign": 0.9368,
      "unfunded_y4_y10": 0.0,
      "ladder_cost": 13321092,
      "draw_y10": 1531950
    },
    "giving_stops_y5_draw_35": {
      "label": "Giving stops after Year 5, fixed-income core, 3.5% draw",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 0.9088,
      "unfunded_total_y4_y20": 33668110,
      "years_unfunded": 15,
      "private_per_public_campaign": 0.9245,
      "unfunded_y4_y10": 9720338,
      "ladder_cost": 12930522,
      "draw_y10": 1643408
    },
    "giving_stops_y5_draw_30": {
      "label": "Giving stops after Year 5, fixed-income core, 3% draw",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 0.9939,
      "unfunded_total_y4_y20": 36289424,
      "years_unfunded": 15,
      "private_per_public_campaign": 0.9368,
      "unfunded_y4_y10": 10756217,
      "ladder_cost": 13321092,
      "draw_y10": 1445672
    },
    "giving_stops_y5_draw_40": {
      "label": "Giving stops after Year 5, fixed-income core, 4% draw",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 0.8298,
      "unfunded_total_y4_y20": 31308402,
      "years_unfunded": 15,
      "private_per_public_campaign": 0.9123,
      "unfunded_y4_y10": 8722008,
      "ladder_cost": 12539952,
      "draw_y10": 1829667
    },
    "giving_stops_y5_fixed_income_25": {
      "label": "Giving stops after Year 5, bonds and bills only, 2.5% draw",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 0.836,
      "unfunded_total_y4_y20": 41707586,
      "years_unfunded": 15,
      "private_per_public_campaign": 0.9491,
      "unfunded_y4_y10": 12219685,
      "ladder_cost": 13711662,
      "draw_y10": 1124390
    },
    "four_centres": {
      "label": "Four pilot centres: the plan and Old Airport Road",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 0.8632,
      "unfunded_total_y4_y20": 9431115,
      "years_unfunded": 17,
      "private_per_public_campaign": 1.0913,
      "unfunded_y4_y10": 1070569,
      "ladder_cost": 18230550,
      "draw_y10": 1561064
    },
    "five_centres": {
      "label": "Five pilot centres, with Maxwell: the most before the gate",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 0.8632,
      "unfunded_total_y4_y20": 23338422,
      "years_unfunded": 17,
      "private_per_public_campaign": 1.223,
      "unfunded_y4_y10": 6374524,
      "ladder_cost": 22417545,
      "draw_y10": 1561064
    },
    "lighthouses_only": {
      "label": "The two Lighthouses alone (downside mode)",
      "major_gifts_needed": 5739363,
      "corpus_real_y20_vs_target": 1.5811,
      "unfunded_total_y4_y20": 0.0,
      "years_unfunded": 0,
      "private_per_public_campaign": 0.8211,
      "unfunded_y4_y10": 0.0,
      "ladder_cost": 9643366,
      "draw_y10": 1917351
    }
  },
  "monte_carlo": {
    "balanced_35": {
      "label": "Fixed-income core, draw 3.5% (adopted)",
      "group": "giving_continues",
      "adopted": true,
      "n": 5000,
      "portfolio": "balanced",
      "draw_rate": 0.035,
      "p_close2": 0.9136,
      "p_close3": 0.5946,
      "committed_y2_p10": 36758411,
      "committed_y2_p50": 40000000,
      "committed_y2_p90": 40000000,
      "p_real_preserved_y20": 0.7134,
      "real_y20_vs_target_p10": 0.6984,
      "real_y20_vs_target_p50": 1.3199,
      "real_y20_vs_target_p90": 2.2156,
      "draw_real_y10_p10": 1160511,
      "draw_real_y10_p50": 1551768,
      "draw_real_y10_p90": 2021322,
      "giving_stops_after": null,
      "p_any_unfunded": 0.2038,
      "unfunded_y4_y20_p50": 0.0,
      "unfunded_y4_y20_p90": 2867767,
      "worst_unfunded_year_p90": 581541,
      "p_kept_and_short": 0.0246,
      "p_lost_not_short": 0.1074
    },
    "fixed_income_25": {
      "label": "Bonds and bills only, draw 2.5%",
      "group": "giving_continues",
      "adopted": false,
      "n": 5000,
      "portfolio": "fixed_income",
      "draw_rate": 0.025,
      "p_close2": 0.9136,
      "p_close3": 0.5946,
      "committed_y2_p10": 36758411,
      "committed_y2_p50": 40000000,
      "committed_y2_p90": 40000000,
      "p_real_preserved_y20": 0.5588,
      "real_y20_vs_target_p10": 0.698,
      "real_y20_vs_target_p50": 1.059,
      "real_y20_vs_target_p90": 1.6969,
      "draw_real_y10_p10": 845672,
      "draw_real_y10_p50": 1041503,
      "draw_real_y10_p90": 1279935,
      "giving_stops_after": null,
      "p_any_unfunded": 0.3786,
      "unfunded_y4_y20_p50": 0.0,
      "unfunded_y4_y20_p90": 8615277,
      "worst_unfunded_year_p90": 1032626,
      "p_kept_and_short": 0.033,
      "p_lost_not_short": 0.0956
    },
    "fixed_income_35": {
      "label": "Bonds and bills only, draw 3.5%",
      "group": "giving_continues",
      "adopted": false,
      "n": 5000,
      "portfolio": "fixed_income",
      "draw_rate": 0.035,
      "p_close2": 0.9136,
      "p_close3": 0.5946,
      "committed_y2_p10": 36758411,
      "committed_y2_p50": 40000000,
      "committed_y2_p90": 40000000,
      "p_real_preserved_y20": 0.5202,
      "real_y20_vs_target_p10": 0.6077,
      "real_y20_vs_target_p50": 1.0225,
      "real_y20_vs_target_p90": 1.6619,
      "draw_real_y10_p10": 1141642,
      "draw_real_y10_p50": 1424292,
      "draw_real_y10_p90": 1757856,
      "giving_stops_after": null,
      "p_any_unfunded": 0.274,
      "unfunded_y4_y20_p50": 0.0,
      "unfunded_y4_y20_p90": 4541385,
      "worst_unfunded_year_p90": 818545,
      "p_kept_and_short": 0.0006,
      "p_lost_not_short": 0.2064
    },
    "balanced_40": {
      "label": "Fixed-income core, draw 4%",
      "group": "giving_continues",
      "adopted": false,
      "n": 5000,
      "portfolio": "balanced",
      "draw_rate": 0.04,
      "p_close2": 0.9136,
      "p_close3": 0.5946,
      "committed_y2_p10": 36758411,
      "committed_y2_p50": 40000000,
      "committed_y2_p90": 40000000,
      "p_real_preserved_y20": 0.6976,
      "real_y20_vs_target_p10": 0.6676,
      "real_y20_vs_target_p50": 1.2978,
      "real_y20_vs_target_p90": 2.1811,
      "draw_real_y10_p10": 1307919,
      "draw_real_y10_p50": 1753197,
      "draw_real_y10_p90": 2284669,
      "giving_stops_after": null,
      "p_any_unfunded": 0.1654,
      "unfunded_y4_y20_p50": 0.0,
      "unfunded_y4_y20_p90": 1681896,
      "worst_unfunded_year_p90": 455056,
      "p_kept_and_short": 0.0082,
      "p_lost_not_short": 0.1452
    },
    "growth_35": {
      "label": "Growth, draw 3.5%",
      "group": "giving_continues",
      "adopted": false,
      "n": 5000,
      "portfolio": "growth",
      "draw_rate": 0.035,
      "p_close2": 0.9136,
      "p_close3": 0.5946,
      "committed_y2_p10": 36758411,
      "committed_y2_p50": 40000000,
      "committed_y2_p90": 40000000,
      "p_real_preserved_y20": 0.772,
      "real_y20_vs_target_p10": 0.6981,
      "real_y20_vs_target_p50": 1.5428,
      "real_y20_vs_target_p90": 2.9393,
      "draw_real_y10_p10": 1123045,
      "draw_real_y10_p50": 1647064,
      "draw_real_y10_p90": 2329283,
      "giving_stops_after": null,
      "p_any_unfunded": 0.1824,
      "unfunded_y4_y20_p50": 0.0,
      "unfunded_y4_y20_p90": 2255311,
      "worst_unfunded_year_p90": 496411,
      "p_kept_and_short": 0.043,
      "p_lost_not_short": 0.0886
    },
    "stop5_balanced_35": {
      "label": "Fixed-income core, draw 3.5%",
      "group": "giving_stops_after_year_5",
      "adopted": false,
      "n": 5000,
      "portfolio": "balanced",
      "draw_rate": 0.035,
      "p_close2": 0.9136,
      "p_close3": 0.5946,
      "committed_y2_p10": 36758411,
      "committed_y2_p50": 40000000,
      "committed_y2_p90": 40000000,
      "p_real_preserved_y20": 0.3358,
      "real_y20_vs_target_p10": 0.5726,
      "real_y20_vs_target_p50": 0.8764,
      "real_y20_vs_target_p90": 1.305,
      "draw_real_y10_p10": 1093364,
      "draw_real_y10_p50": 1407423,
      "draw_real_y10_p90": 1786606,
      "giving_stops_after": 5,
      "p_any_unfunded": 1.0,
      "unfunded_y4_y20_p50": 33554657,
      "unfunded_y4_y20_p90": 43733898,
      "worst_unfunded_year_p90": 3531052,
      "p_kept_and_short": 0.3358,
      "p_lost_not_short": 0.0
    },
    "stop5_balanced_30": {
      "label": "Fixed-income core, draw 3%",
      "group": "giving_stops_after_year_5",
      "adopted": false,
      "n": 5000,
      "portfolio": "balanced",
      "draw_rate": 0.03,
      "p_close2": 0.9136,
      "p_close3": 0.5946,
      "committed_y2_p10": 36758411,
      "committed_y2_p50": 40000000,
      "committed_y2_p90": 40000000,
      "p_real_preserved_y20": 0.4462,
      "real_y20_vs_target_p10": 0.628,
      "real_y20_vs_target_p50": 0.9587,
      "real_y20_vs_target_p90": 1.4251,
      "draw_real_y10_p10": 964211,
      "draw_real_y10_p50": 1239162,
      "draw_real_y10_p90": 1570594,
      "giving_stops_after": 5,
      "p_any_unfunded": 1.0,
      "unfunded_y4_y20_p50": 36207963,
      "unfunded_y4_y20_p90": 45972899,
      "worst_unfunded_year_p90": 3623722,
      "p_kept_and_short": 0.4462,
      "p_lost_not_short": 0.0
    },
    "stop5_balanced_40": {
      "label": "Fixed-income core, draw 4%",
      "group": "giving_stops_after_year_5",
      "adopted": false,
      "n": 5000,
      "portfolio": "balanced",
      "draw_rate": 0.04,
      "p_close2": 0.9136,
      "p_close3": 0.5946,
      "committed_y2_p10": 36758411,
      "committed_y2_p50": 40000000,
      "committed_y2_p90": 40000000,
      "p_real_preserved_y20": 0.2368,
      "real_y20_vs_target_p10": 0.5217,
      "real_y20_vs_target_p50": 0.7992,
      "real_y20_vs_target_p90": 1.1926,
      "draw_real_y10_p10": 1214328,
      "draw_real_y10_p50": 1565769,
      "draw_real_y10_p90": 1989890,
      "giving_stops_after": 5,
      "p_any_unfunded": 1.0,
      "unfunded_y4_y20_p50": 31175321,
      "unfunded_y4_y20_p90": 41744763,
      "worst_unfunded_year_p90": 3469171,
      "p_kept_and_short": 0.2368,
      "p_lost_not_short": 0.0
    },
    "stop5_fixed_income_25": {
      "label": "Bonds and bills only, draw 2.5%",
      "group": "giving_stops_after_year_5",
      "adopted": false,
      "n": 5000,
      "portfolio": "fixed_income",
      "draw_rate": 0.025,
      "p_close2": 0.9136,
      "p_close3": 0.5946,
      "committed_y2_p10": 36758411,
      "committed_y2_p50": 40000000,
      "committed_y2_p90": 40000000,
      "p_real_preserved_y20": 0.1626,
      "real_y20_vs_target_p10": 0.6469,
      "real_y20_vs_target_p50": 0.8295,
      "real_y20_vs_target_p90": 1.059,
      "draw_real_y10_p10": 823186,
      "draw_real_y10_p50": 974898,
      "draw_real_y10_p90": 1139381,
      "giving_stops_after": 5,
      "p_any_unfunded": 1.0,
      "unfunded_y4_y20_p50": 41592410,
      "unfunded_y4_y20_p90": 50106291,
      "worst_unfunded_year_p90": 3891391,
      "p_kept_and_short": 0.1626,
      "p_lost_not_short": 0.0
    }
  },
  "drivers": {
    "real_y20_vs_target": {
      "coef_per_sd": {
        "takeup": 0.0574,
        "till_optin": 0.2454,
        "till_share": 0.2379,
        "renewal": 0.0222,
        "major_available": 0.0269,
        "gov_ops_continues": 0.0862,
        "hp_scale": 0.051,
        "centres_vetoed": 0.1387
      },
      "r2": 0.394
    },
    "unfunded_y4_y20": {
      "coef_per_sd": {
        "takeup": -224848,
        "till_optin": -830008,
        "till_share": -892199,
        "renewal": -214492,
        "major_available": -70894,
        "gov_ops_continues": -472382,
        "hp_scale": -333436,
        "centres_vetoed": -401339
      },
      "r2": 0.2408
    },
    "committed_y2": {
      "coef_per_sd": {
        "takeup": 170615,
        "till_optin": 261483,
        "till_share": -7822,
        "renewal": 18720,
        "major_available": 754037,
        "gov_ops_continues": -19190,
        "hp_scale": -22167,
        "centres_vetoed": 783.0925
      },
      "r2": 0.28
    }
  },
  "heritage_stall": {
    "stall": "HDB_COFFEE",
    "rebate_month": 427.2107,
    "net_base": 2472,
    "net_new": 2899,
    "net_per_hour_base": 7.5566,
    "net_per_hour_new": 8.8624
  },
  "params": {
    "operating": [
      476443,
      1482338,
      1631630,
      1839695
    ],
    "programme": [
      430155,
      3146911,
      5074627,
      5602009
    ],
    "lighthouses_only_operating": [
      476443,
      1375385,
      1442650,
      1650715
    ],
    "lighthouses_only_programme": [
      430155,
      3026901,
      3848019,
      3974274
    ],
    "addon_operating": [
      [
        0,
        120516,
        234520,
        234520
      ],
      [
        0,
        103961,
        188980,
        188980
      ]
    ],
    "addon_programme": [
      [
        0,
        154000,
        1792322,
        3050899
      ],
      [
        0,
        109285,
        1447345,
        2374389
      ]
    ],
    "later_centre_operating": [
      0,
      106953,
      188980,
      188980
    ],
    "later_centre_programme": [
      0,
      120010,
      1226608,
      1627735
    ],
    "extra_centres": 0,
    "centres_vetoed": 0,
    "steady_operating": 1839695,
    "steady_programme": 2292194,
    "lighthouses_only_steady_operating": 1650715,
    "lighthouses_only_steady_programme": 1725979,
    "steady_addon_operating": [
      234520,
      188980
    ],
    "steady_addon_programme": [
      905859,
      524604
    ],
    "steady_later_operating": 188980,
    "steady_later_programme": 566215,
    "gov_ops": [
      0,
      300000,
      400000,
      500000
    ],
    "gov_ops_after": 500000,
    "gov_ops_continues": true,
    "gifts_for_spending": [
      193000,
      300000,
      400000,
      500000
    ],
    "foundation_y0": 713598,
    "foundation_y0_public_share": 0.5,
    "anchor": [
      7500000,
      7500000
    ],
    "match_pool": 10000000,
    "match_ratio": 1.0,
    "closes": [
      12000000,
      30000000,
      40000000
    ],
    "draw_rate": 0.035,
    "draw_avg_years": 3,
    "ladder_yield": 0.021,
    "portfolio": "balanced",
    "heritage_pool_pretax": 51700000,
    "regular_pool_pretax": 144000000,
    "pledge_rate_heritage": 0.01,
    "pledge_rate_regular": 0.005,
    "partner_takeup": 0.5,
    "pledge_years": [
      1,
      5
    ],
    "pledge_renewal": 0.6,
    "operator_share_of_heritage": 0.77,
    "inkind_share": 0.5,
    "heritage_stalls_hosted": 20,
    "households": 1490000,
    "diner_participation_launch": 0.02,
    "diner_gift_launch": 60.0,
    "diner_participation_after": 0.008,
    "diner_gift_after": 40.0,
    "diner_receipted_share": 0.6,
    "fnb_sales": 12000000000,
    "till_share": [
      0.0,
      0.02,
      0.04,
      0.05
    ],
    "avg_bill": 30.0,
    "till_optin": 0.08,
    "till_amount": 1.0,
    "other_corporate": [
      0,
      2000000,
      2000000,
      500000
    ],
    "hp_outlets": [
      0,
      0,
      0,
      15,
      80,
      220,
      400
    ],
    "hp_plates_per_outlet_month": 1000,
    "hp_fee": 0.5,
    "hp_packaged_sales": [
      0,
      0,
      0,
      0,
      1000000,
      4000000,
      10000000,
      20000000
    ],
    "hp_royalty": 0.03,
    "hp_scale": 1.0,
    "hp_failure": 0.3333333333333333,
    "hp_split": [
      0.4,
      0.4,
      0.2
    ],
    "match_earmark": 0.0,
    "match_share_under_55": 0.5,
    "rm_base": 8280000,
    "rm_stretch_match": 11928000,
    "rm_stretch_cover": 1953806,
    "rm_lighthouse": 346800,
    "rm_lighthouse_on": false,
    "rm_takeup": [
      0.25,
      0.5,
      0.75,
      1.0
    ],
    "hp_gov_match_years": 3,
    "hp_gov_match_cap": 2000000,
    "hdb_contribution": 1680000,
    "hdb_from_year": 4,
    "hdb_rollout": [
      0.25,
      0.5,
      0.75,
      1.0
    ],
    "rm_stretch_hdb_coffee": 2352000,
    "hdb_on": false,
    "rm_earmark_central": 0.5,
    "major_gifts_available": null,
    "giving_stops_after": null,
    "deduction_multiple": 2.5,
    "tax_rate_corporate": 0.17,
    "tax_rate_major": 0.23,
    "tax_rate_diner": 0.07,
    "inflation": 0.015
  },
  "portfolios": {
    "balanced": {
      "label": "Fixed-income core (60% bonds, 40% equities)",
      "mu": 0.041,
      "sd": 0.073
    },
    "fixed_income": {
      "label": "Bonds and bills only",
      "mu": 0.027,
      "sd": 0.04
    },
    "growth": {
      "label": "Growth (30% bonds, 70% equities)",
      "mu": 0.052,
      "sd": 0.11
    }
  },
  "param_notes": {
    "operating": "The Budget Book, B.2–B.5, part A of each ledger: the operating budget, the institution's own burn. The core team, which carries the first Lighthouse's own roles as before, with one pilot-centre coordinator, shared, at $78,000 a year from Year 1 (assumption); the interim project lead and research assistants in Year 0; office, legal, audit and insurance, communications and events, the independent evaluator; Hawker Council fees and elections; and the shared national platforms (the Taste Council and its feedback platform, the digital repository). Each other pilot centre adds its own staff, the evaluator's fieldwork, Taste Council tastings and community events (each centre's sizing, the Budget Book, B.9.6). Every pilot centre, in the year before it opens, adds the stall baseline (§6.1): a two-week till count at every consenting stall, orders a day, plates an order, dollars an order and the share of orders from the regulars the hawker names, by dish type, gathered by the listening teams through oral interviews and a tally sheet. Costed at every cooked-food stall as a ceiling (assumption): 3 interviewer hours a stall (an opening interview, two check-ins, a closing interview) at the listening sessions' rate, the $150 participant fee for a session taken as three hours ($50 an hour), $20 of tally sheets a stall at print cost, and a data assistant at the research assistants' $4,000 a month, a month for about every 80 stalls: $50,420 at Chinatown Complex and $14,710 at Geylang Serai in Year 0, $28,230 at Tekka in Year 1, before contingency. Its first use is to set plates an order and the Regulars' List's share thresholds by dish type before the first listing; its second, the Plate Ledger's first stall-level numbers. It reaches no hawker as money, so it sits here, in A. The Buying Circles (§2.12) from Year 1, the Seed Bank's small part in them: a part-time partnerships role (assumption: 0.5 FTE at the plan's $78,000 rate for centre staff, $39,000 a year), the open price board on the Plate Ledger's cost data with standard group-order templates (assumption: $10,000 to set up in Year 1, then $4,000 a year), and honoraria for each centre's circle leads, usually hawkers (assumption: four circles a centre at least, for rice, oil, poultry and gas, and a lead for about every 30 stalls, at $100 a lead a month: 8 at Chinatown Complex, 4 at Geylang Serai and 4 at Tekka). The circles are the hawkers' own: the Seed Bank never buys, stocks, sets prices or picks suppliers, and never takes title to goods or money, so there are no supplier rebates and no member fee, and the circles do not pay for themselves at three centres. The Regulars' List (§3.6) from Year 1, national, at all 123 government hawker centres. A 10% contingency on every line.",
    "watchlist": "Assumption: the Regulars' List (§3.6), the light first tier of the Endangered Dish Registry, national from Year 1. A stall is listed when 20 of its regulars ask, or its centre's hawkers' association nominates it, and it leaves only if the hawker chooses to or the stall closes. There is no yearly re-test, so after the listing visit there are no more visits to pay for. Listings ramp to 300, 600 and 800 by the end of Years 1, 2 and 3, about 13% of the more than 6,000 cooked-food stalls in government centres. Each new listing costs $40: the listing visit by a trained volunteer or the centre staff ($10 travel, no stipend), the counter decal at print cost ($5), the stall's Registry page in the regulars' own words ($20 to edit and photograph) and the thank-you notes to the regulars who nominated ($5). The decal carries the stall's tier and its year of listing, so a stall that moves up a tier gets a new one at the same print cost, about one in ten listed stalls a year. Each centre's yearly booklet and map, about 250 copies at $1 ($250), is costed at all 123 centres as a ceiling, on a template that costs $6,000 in Year 1 and $2,000 a year to update. Then one coordinator (1 FTE, $78,000 a year) and the place on the open price board and in the Buying Circles' order book, the increment only ($6,000 in Year 1, then $2,000 a year). Nothing is paid to the stall, and no stall pays for its decal. All of it sits in the operating budget: it is the cost of keeping the list, not money that reaches hawkers. The at-risk count is separate and never names a stall. It counts a listed stall whose hawker says, at listing or at any time after, that no successor is in view and that he intends to stop within three years, and any stall a public fact flags (a closure notice, a lease ending); it is published only as national and per-centre totals, in line with the PDPA. The five-centre sample flagged 8 of 55 heritage-worthy stalls (15%), a floor; assume 15–25% of listed stalls, about 120–200 by Year 3.",
    "programme": "The Budget Book, B.2–B.5, part B of each ledger: the programme budget, the grants and expenses that reach hawkers, shown for each pilot centre and sized by its own shape (the Budget Book, B.9.6). Master Fellowships, apprentice wages, Graduate Landing Packages, documentation and its field equipment, the Relief-Hawker Corps, the second-station grants at Fellows' stalls, partner-kitchen sessions, the group critical-illness pool for stallholders aged 55+, the first-loss reserve and succession escrow, and the listening honoraria, participant fees and co-design sessions at each centre. A 10% contingency on gross, less programme revenue (assumption: Corps co-pays, masterclasses and licensing, $10,000, $14,500 and $25,000 a Fellowship in a centre's first, second and third years, the former Lighthouse rates of $40,000 for 4, $87,500 for 6 and $204,000 for 8, rounded down). Learning at the master's side (§2.6): apprentices learn at the master's own stall as registered stall assistants, the documentation test runs on the Relief Corps' days at his stall, and the Taste Council and retired masters book licensed partner kitchens by the session. Assumption: a one-off second-station grant (a burner, a spare wok, a chiller shelf) of $3,000 at the stall of each new Fellowship; and 24 partner-kitchen sessions a centre a year at about $300 ($7,200), from the year the centre's loop starts. The share of spend reaching hawkers directly is B as a share of A + B. The cost of building and upgrading the centres is not in this budget. NEA and the Town Councils repair and upgrade them: NEA now repairs and redecorates each centre every six to eight years (the Minister said five to seven in November 2018), and the Hawker Centres Upgrading Programme 2.0 will spend up to $1 billion over 20–30 years from March 2025, ventilation included. Keeping a stall's own exhaust duct clean is the stallholder's legal duty (§2.9). The gap the plan does not fill is a stall's own equipment and duct upkeep since the Hawkers' Productivity Grant's current phase ended on 31 March 2026.",
    "addon_programme": "Assumption: every pilot centre is costed from its own shape, at the same rates. Heritage-worthy stalls (the Budget Book, B.9.6, a proxy) set the heritage lines: one Master Fellowship for each stall in the planning count over the centre's first three years, as a ceiling, with unspent money returned to the endowment; phased 30%, 35% and 35% at a centre that opens in Year 1, and 40% and 60% over the two years a centre that opens in Year 2 has in the window; each Fellowship's three years budgeted in the year it starts, as the apprentices' cycles are: a teaching year at $2,500 a month ($30,000), then a 24-month stewardship at $1,000 a month ($24,000), the completion grant ($15,000) and health cover up to $15,000, with employer CPF on the whole $54,000 stipend at the 12.5% rate for a worker above 60 to 65, since Fellows are veteran hawkers over 60 ($6,750 a Fellow, $90,750 in all; a ceiling, since the rate is 9% above 65 and 7.5% above 70; a Fellow under 60 would cost 16–17%, $8,640–9,180; CPF Board, 2026); two apprentices a Fellowship, each paid the Progressive Wage for a food/drink stall assistant for the full 18-month cycle, $2,360 a month from July 2027 and $2,500 from July 2028 (MOM, 16 Mar 2026), plus 17% employer CPF, and the whole cycle budgeted in the year the cohort starts: $50,684 an apprentice who starts in Year 1, $52,650 in Years 2 and 3 (assumption: Year t runs from July 2026 + t, and pay holds at the July 2028 rate once MOM's published path ends); one documented dish a Fellowship at $18,000 (the Year 1 rate, $90,000 for five dishes); landings for about 30% of the centre's apprentices, from its second year, at about $20,000; a second-station grant and $15,000 of first-loss reserve and succession escrow a Fellowship (the former ledgers' $570,000 for 38). The stall count sets the rest: the critical-illness pool covers about 70 in 120 stallholders (those aged 55+) at about $750; the Corps has about 10 relief cooks for every 100 stalls, two-thirds of it in the centre's first year, at $40,000 a bench plus a member's cost of $12,500 at the former $190 day rate, indexed to the PWM rate for a Cook (QS) for a 12-hour day, the Employment Act's limit, with the 4 hours beyond the normal 8 paid at 1.5 times, and 17% employer CPF ($224 a day in Year 1 and $236 from Year 2: $14,753 and $15,539 a member); centre staff are 1.5 FTE for every 120 stalls, rounded down to the nearest half and never fewer than 1.5, at $78,000. In the year before a centre opens: the pool, listening and co-design ($70,000 of honoraria and sessions at a Lighthouse, over Year 0, with $35,000 of pilot documentation; $35,000 at a later centre, over six months; and participant fees of $150 each for about 1.25 participants a cooked-food stall, as for the 150 at the 120-stall centre the ledgers were first drawn for: 283 at Chinatown Complex, 79 at Geylang Serai, 149 at Tekka), a liaison officer for six months ($39,000) and the evaluator's baseline ($30,000); then the evaluator's fieldwork ($25,000), Taste Council tastings ($15,000) and community events ($10,000) a year. Each Lighthouse buys a $30,000 capture kit in Year 1; the kits are portable, and the later centres borrow them. Chinatown Complex's own roles sit in the core team, as the first Lighthouse's did; at 226 stalls it adds one more centre staff. The add-ons, in order: Old Airport Road, then Maxwell, each opening in Year 2.",
    "later_centre_programme": "Tekka Centre, the pilot centre that opens in Year 2, costed like any other pilot centre: what its hawkers' veto at the end of Year 1 would save from Year 2 on.",
    "lighthouses_only_operating": "§7.8: the two Lighthouses and the national institution alone, the downside mode if the campaign stalls at the first close: Chinatown Complex and Geylang Serai keep running, with the core team and the pilot-centre coordinator, and Tekka defers.",
    "extra_centres": "Add-on pilot centres beyond the central three: 0 in the plan, 1 for four (Old Airport Road) or 2 for five (and Maxwell). No more than five open before the independent evaluator certifies the §6.5 gate criteria across all the pilot centres; going beyond five is not costed.",
    "centres_vetoed": "1 if Tekka's own hawkers veto it at the end of Year 1 (§6.2). Its Year 1 deposits are spent, because the Security Package is given, not traded; its Year 2–3 and later costs, operating and programme, are not. The Lighthouses vote in Year 0, and a Lighthouse that declines is replaced by a centre with a similar cuisine strength, so its cost stays in the plan. Assumption in the Monte Carlo: Tekka passes its vote with a chance of 80%.",
    "steady_operating": "Assumption: from Year 4 the costs follow the heritage logic, not the Year 3 envelope. By the end of Year 3 every pilot centre's planning count has been offered, so new Master Fellowships continue at a maintenance rate fed by the at-risk count (§3.6): about 10% of the centre's planning count a year, at least one, until the count gives real numbers (3, 1, 1 a year at Chinatown Complex, Geylang Serai and Tekka; 2, 1 at Old Airport Road and Maxwell). Each carries its two apprentices, its dish, its second-station grant and its reserve, with landings for about 30% of the year's apprentices and revenue at the mature $25,000 a Fellowship. What follows the stall count stays at its Year 3 level: the cover, the full Corps bench, the kitchen sessions, the centre staff, the evaluator, the tastings and the events; so does the national core, the Regulars' List with it. Both parts are indexed to inflation from Year 3 prices. No part of Year 3 is gate-dependent: the gate governs going beyond five centres, from Year 4. The at-risk count comes from what hawkers choose to tell: no successor in view and a plan to stop within three years, plus closure notices and leases ending. It is a stock on a three-year horizon, so about a third of it falls due each year: at 15–25% of listed stalls, 5–8% a year. The 10% rate sits above that, because not every hawker will say, and a closure can come without notice; and it is a ceiling, since a Fellowship is offered only to a hawker who wants to teach, and money not spent returns to the endowment. The 10–40% sensitivity (the Budget Book, B.9.4) shows what a faster flow would cost.",
    "steady_addon_operating": "Assumption: from Year 4 each add-on runs its own maintenance year on the same rule, indexed to inflation.",
    "foundation_y0": "§7.6: research and heritage foundation grants in Year 0, NHB's among them, sized to the Year 0 net requirement less the gifts for spending. Half is counted as public money because NHB is a statutory board (assumption).",
    "anchor": "§7.6: $15M Government anchor. Timing (half at launch, half by the second close) is an assumption.",
    "match_pool": "§7.6: $10M 1:1 matching pool, sought first from MCCY's Cultural Matching Fund (cash gifts only; rent rebates are not matched).",
    "draw_rate": "§7.6: 3.5% of the start-of-year value, then of the three-year average.",
    "ladder_yield": "Treasury bills near 1.9% and the 10-year SGS at 2.30% (27 Aug 2026 auction); a three-year ladder at about 2.1%.",
    "heritage_pool_pretax": "Latest annual profit after tax of listed coffeeshop operators and heritage snack chains (Kimly FY Sep 2025 $33.3M; Old Chang Kee FY Mar 2026 $9.6M), grossed up at 17% tax.",
    "regular_pool_pretax": "Jumbo (FY Sep 2025 $8.7M after tax) plus 20% of Singapore-based regional groups (F&N $210.4M, Food Empire US$68.6M, Super Hi US$36.3M; the 20% Singapore share is an assumption) plus $50M for unlisted profitable firms (assumption), grossed up at 17%.",
    "partner_takeup": "Assumption. Companies that give typically give about 1% of pre-tax profit across all causes (CECP median 0.92%).",
    "households": "SingStat: 1.49 million resident households (1,487,100 in 2025).",
    "fnb_sales": "SingStat retail and F&B services release (July 2025): F&B services sales about $1.0 billion a month.",
    "till_optin": "Assumption: share of bills at participating outlets that add the dollar when asked.",
    "deduction_multiple": "250% tax deduction for gifts to IPCs, extended by Budget 2026 to 31 Dec 2029; assumed renewed thereafter. Tax forgone is counted at 17% for companies and, for major donors, 23%, the middle of the 22–24% top bands of resident income tax (IRAS, YA2024 onwards; the bands in plate_model.py).",
    "portfolio": "Assumption: return and risk of each investment policy after fees; inflation 1.5% a year.",
    "hp_outlets": "Assumption: Heritage Plate licensed outlets (restaurants, hotels, caterers, airlines) of 15, 80, 220 and 400 in Years 3–6, then flat. The mark launches in Year 3, when the first masters are certified (about ten Fellows by then), so it starts small. Low case half, high case double.",
    "hp_plates_per_outlet_month": "Assumption: 1,000 certified plates an outlet a month.",
    "hp_fee": "Assumption: 50 cents a certified plate, priced in and shown on the menu, fixed in nominal terms.",
    "hp_packaged_sales": "Assumption: retail sales of Heritage Plate packaged goods of $1M, $4M, $10M and $20M in Years 4–7, then flat, with a 3% royalty.",
    "hp_failure": "Assumption: in any year a third of the licensed outlets and packaged lines fail, closing or dropping the certified dish, and pay nothing; the mark signs new ones to hold the outlet counts, so income is two-thirds of the licensed figure. Nigel Chua's study of six hawker brands that expanded found that most of the licensed or acquired expansions shrank or closed: Kay Lee's planned central kitchen and ten outlets never happened, and it ended as one shop; First Street's and Puay Heng's outlets closed; and the one licence that paid the founders a share of profit, Lao Chaozhou's, paid nothing before its outlet closed in November 2023 (Nigel Chua, IPS, June 2024, pp. 31–48). The Heritage Plate is a fee on certified plates and a royalty on packaged sales, not a profit share, and its licensees are going restaurants, not new outlets, so the model takes a third, not most. Tested at none and half.",
    "hp_split": "Licence income is split 40% to the master's family, 40% to the retirement match and 20% to the Seed Bank, where it joins the continuing gifts.",
    "match_earmark": "Share of continuing gifts above the programme's needs earmarked for the retirement match from Year 4 instead of joining the corpus: 0 in the adopted plan; 0, 0.5 and 1 in the match scenarios (the Budget Book, B.9.5).",
    "match_share_under_55": "The match applies only to stallholders under 55; from 55 the existing Matched Retirement Savings Scheme already matches cash top-ups $1 for $1, up to $2,000 a year, for those within its means tests, and the plan helps hawkers claim it rather than paying twice. The share of stallholders under 55 is not published; the median hawker is 60 (MSE, Nov 2024), so fewer than half are under 55. The model counts half, an upper bound, so the match's costs are ceilings. It scales the match only, not the hospital-cash cover.",
    "rm_base": "Base retirement match: $1,200 a year for every public-centre stallholder under 55, at most half of 6,900, $4.14M (plate_model.py, Follow the Plate, D.7.5); stretch $7.92M with every stallholder under 55 at 70% enrolment ($5.96M) and hospital-cash cover for every enrolled stallholder ($1.95M). Indexed to inflation after Year 3.",
    "rm_lighthouse": "Off in the plan: the match is costed but not asked for, and starts only if and when it is adopted, with national roll-out from Year 4. Switched on, it would run at the two Lighthouses in Years 1–3 for stallholders under 55: at most half of their 289 stalls at $1,200 a year ($173,400), with no funder named.",
    "rm_takeup": "Assumption: the national match reaches 25%, 50%, 75% and 100% of its full cost in Years 4–7.",
    "hp_gov_match_cap": "Assumption: Government matches Heritage Plate licence income 1:1 for its first three years, up to $2M a year, paid to the retirement match.",
    "hdb_contribution": "HDB's possible contribution: the tender rent it may forgo under the tender lever, up to $1.68M a year at half take-up of 2,800 HDB-rented coffeeshop stalls (plate_model.py), if HDB agrees. Operators pay $1,200 for every stallholder, but only the part for stallholders under 55 can stand in for the match, so the model counts the $1.68M times the share under 55 (half, about $0.84M at full roll-out) towards it; the part for those 55 and over goes into their own retirement savings beside MRSS. It is a way to pay for the stretch's match at HDB-rented coffeeshops, not an extra benefit, so it offsets the stretch only. It bites only as coffeeshops are re-tendered (HDB's six-year rent holds, §2.4): assumption of 25%, 50%, 75% and 100% of the $1.68M in Years 4–7, and never more than that year's match for HDB-rented coffeeshop stallholders under 55 ($1.18M at full roll-out, indexed like the stretch)."
  }
}
