{"about":"Reference documents published from notes/reference/. Each is self-contained: open it and everything it needs is in the file. The only edit is a bar at the top linking back into the site — see scripts/build_reference_pages.py. Markdown documents are published untouched at `raw` and rendered verbatim, inside a <pre>, at `url`.","caveat":"Written by this project, not by the town or the district. Every figure on these pages is computed from sources/data/lunenburg.db or from the documents in the archive, and a page with no generator listed is hand-written — its figures were true when it was written and nothing checks that they still are.","excluded":[{"reason":"Notes to whoever maintains the folder, including the paths of the scripts that build it. Its content is this docstring’s job now.","source":"notes/reference/data-model/README.md"},{"reason":"A projection of what completeness would look like once that request is filled. It describes a letter that has not been answered.","source":"notes/reference/data-model/after-request.html"},{"reason":"Stale — its headline claim (`account` has no `function` column) was fixed on 3 September 2026 and nothing regenerates the page to notice. It is also a to-do list for our own build rather than a document about the town’s money, and it names the vendor data we deliberately chose not to read.","source":"notes/reference/data-model/follow-the-money.html"},{"reason":"An input to lineage-graph.html, not a document.","source":"notes/reference/data-model/lineage.json"},{"reason":"Superseded. `build_money_flow.py` writes this AND school-money-flow.html from the same database on every run, and gives them the identical <title>. This is the older framing — it adds an appropriation to nine months of fund actuals and calls the sum \"what the school system actually has\", which is rule 1. The v2 page beside it separates the bases and is what ships.","source":"notes/reference/data-model/money-flow.html"},{"reason":"An input to schema.html, not a document.","source":"notes/reference/data-model/schema.mmd"},{"reason":"A records request drafted here, addressed to the Town. Our outbox, not a reference document.","source":"notes/reference/data-model/town-report.html"}],"pages":[{"about":"Every table in the database, what it is for, which years it actually covers — and, first, whether the question you arrived with can be answered at all.","bytes":434004,"door":"the data","format":"html","generators":["scripts/build_schema_page.py"],"name":"schema.html","published":{"schema.html":"4eec90b2ea8dc630c56b01b7987a3315937fd59d52767ffd960041ee1615d7d8"},"raw":null,"sha256":"3bf5f204044444bf701eb8151d8a16b7e017c79a29eef522582209588b9d949a","source":"notes/reference/data-model/schema.html","tier":"primary","title":"The database, table by table — Lunenburg Budget Project","url":"/reference/schema.html"},{"about":"Every route into the school budget and out the other side, level by level, and the level at which each trail goes cold.","bytes":61502,"door":"the money","format":"html","generators":["scripts/build_money_flow.py","scripts/money_in_figures.py"],"name":"money-in.html","published":{"money-in.html":"29cb72de215b16f41a7bcfa9fe1a81f960552cca9b291970190c6509ec797a65"},"raw":null,"sha256":"520e1d71a429b0f5a0483a67cd11f13871a0fba89cf25139317d6773dde56554","source":"notes/reference/data-model/money-in.html","tier":"secondary","title":"Follow The Money","url":"/reference/money-in.html"},{"about":"FY2026 drawn end to end: every source the town budgets, the 258 accounts the school department spends from, and the connection in the middle nobody records.","bytes":38171,"door":"the money","format":"html","generators":["scripts/build_money_flow.py","scripts/build_town_flow.py"],"name":"school-money-flow.html","published":{"school-money-flow.html":"da2f476114ad0861d21525c916cc66bf4bac8572ced90e7b60dd8de80ee5c41d"},"raw":null,"sha256":"9fcccde04bac3b795d545499704147f97232451fc2ddb2cdb58cb44c21bf8bad","source":"notes/reference/data-model/school-money-flow.html","tier":"primary","title":"School Money Flow","url":"/reference/school-money-flow.html"},{"about":"The same model applied to all of Lunenburg — the general fund, the enterprise funds and the special revenue funds, in one picture.","bytes":62757,"door":"the money","format":"html","generators":["scripts/build_town_flow.py"],"name":"town-money-flow.html","published":{"town-money-flow.html":"61b3cd2dcaa9da3c35b886a348dd0b44a015111133e7b15217b30ea93d574c0c"},"raw":null,"sha256":"5254014f0ac4e5dd981b02934ef7a7035c1cee4648cfa55c0b5f94fdf301f090","source":"notes/reference/data-model/town-money-flow.html","tier":"primary","title":"Town Money Flow","url":"/reference/town-money-flow.html"},{"about":"Where each dollar comes to rest and who actually gets to decide how it is spent — the question the budget documents never answer.","bytes":23333,"door":"the money","format":"html","generators":["scripts/build_town_flow.py","scripts/build_who_decides.py"],"name":"who-decides.html","published":{"who-decides.html":"11d12527d35ed5a5339cf146fe3826dca4767127fefb2a9488d69c8a98050448"},"raw":null,"sha256":"72a5c4da31982bd8aacf0d9e403ea995e972c5ed5f25f35230ae9e3ed601cbf4","source":"notes/reference/data-model/who-decides.html","tier":"secondary","title":"Where every dollar lands, and who decides — Lunenburg FY2026","url":"/reference/who-decides.html"},{"about":"How the town’s ledger is built and named: what an account number means, what a fund number means, and why a name in it must never be used to identify anything.","bytes":6527,"door":"the money","format":"markdown","generators":["scripts/build_ledger_structure.py","scripts/build_money_flow.py","scripts/build_money_nodes.py"],"name":"LEDGER-STRUCTURE.md","published":{"LEDGER-STRUCTURE.html":"6338dc5bff54aa3123657a997c86a450affca641498ac756a93a2ee402f5246a","LEDGER-STRUCTURE.md":"b1b7380ea35cc8608cc7db34f7cfd8ae21b0522ee6b4d75f2ac1542f6a6ddde6"},"raw":"/reference/LEDGER-STRUCTURE.md","sha256":"b1b7380ea35cc8608cc7db34f7cfd8ae21b0522ee6b4d75f2ac1542f6a6ddde6","source":"notes/reference/LEDGER-STRUCTURE.md","tier":"secondary","title":"The town’s ledger — structure, naming, and every trap in it","url":"/reference/LEDGER-STRUCTURE.html"},{"about":"Every node in the school money graph as a flat list, inputs and outputs, each marked traced, partial or unknown. The rows with no number are the point.","bytes":36388,"door":"the data","format":"markdown","generators":["scripts/build_money_flow.py","scripts/build_money_nodes.py"],"name":"MONEY-NODES.md","published":{"MONEY-NODES.html":"15f7240bda8160caf8aa8323eb0fa198b5e005b133e37e8ffbe898479e92adfd","MONEY-NODES.md":"03a556b01ae7586deff5c5b9ef12ee89729fcce54a37819608fe189201e3db27"},"raw":"/reference/MONEY-NODES.md","sha256":"03a556b01ae7586deff5c5b9ef12ee89729fcce54a37819608fe189201e3db27","source":"notes/reference/MONEY-NODES.md","tier":"secondary","title":"The school money graph — every node, inputs and outputs","url":"/reference/MONEY-NODES.html"},{"about":"Six levels of detail, the key each one turns on, and which of them the district’s budget and the town’s books can actually be brought together at.","bytes":32158,"door":"the data","format":"html","generators":["scripts/build_traceability_ladder.py"],"name":"join-map.html","published":{"join-map.html":"2c077273bc1537f5d5007154f195625f4b1bb3d3671973cc5dd66ee12427d27b"},"raw":null,"sha256":"3b3d0549e438d63ea33dcbd79e591d213b907ab7566554f10fbf3025dca8baac","source":"notes/reference/data-model/join-map.html","tier":"secondary","title":"The Lunenburg Join Map","url":"/reference/join-map.html"},{"about":"Three levels of the school budget against four things to match them to. Each cell says what is true today and, separately, what would open it.","bytes":55983,"door":"the data","format":"html","generators":["scripts/build_data_model_grids.py"],"name":"match-matrix.html","published":{"match-matrix.html":"2ba0483dea0044b3757928ca8cc04821fcd177337c49fc92bfcde96c6f9459d7"},"raw":null,"sha256":"3a6b3c1b8aef23addd03b4c85be92901721bb91daa3b304bd915da39b83960a6","source":"notes/reference/data-model/match-matrix.html","tier":"secondary","title":"Can I Match It?","url":"/reference/match-matrix.html"},{"about":"Question to key to table to extract to report, as a graph — and the three different ways a connection fails, only one of which a schema can show.","bytes":43598,"door":"the data","format":"html","generators":null,"name":"lineage-graph.html","published":{"lineage-graph.html":"1c6680d92486212ed36b6612c3011e47ff9baf5183f764f262f80565866dd253"},"raw":null,"sha256":"8d57454dfe57a246447cab286e9f4bbbf22179bbf830bf8645ada5ff050f266d","source":"notes/reference/data-model/lineage-graph.html","tier":"secondary","title":"Lineage Graph","url":"/reference/lineage-graph.html"}]}