{"about":"The Lunenburg budget analysis database. Read `readFirst` before computing anything.","readFirst":["Never mix a BUDGET with an ACTUAL in one calculation. They differ by up to 59% on some lines, and a growth rate measured from one to the other is partly growth and partly the step between them.","A budget line is NET -- what the town must raise after grants, fees and state aid. It is not what the thing costs. A line can rise because a grant ended and no cost changed at all.","A STAGE (proposed / settled / actual) is not a PERIOD (1-13). `budget_figure` and `ledger_snapshot` do not join, and joining them produces a plausible wrong number.","NO budget line is mapped to a ledger account. The crosswalk table is empty on purpose. Budget-to-actual at line level cannot be answered from this database yet."],"rebuiltFrom":"The CSVs in sources/data/ are the source of truth. This database is a derived read model, dropped and rebuilt from scratch on every run. Nothing is ever edited in it.","download":{"url":"https://lunenburgbudgetproject.org/data/lunenburg.db","sha256":"4e1b39e94af70104658da1ecc5f7336bf42e75bee2f8f18e1454ac9b0d1baa3d","bytes":4878336,"format":"SQLite 3","note":"The whole database. Query it yourself; it is the same file every figure below comes from."},"tables":{"ledger_snapshot":{"rows":983,"grain":"one row per account, fiscal year, PERIOD and document","what":"The town's own books, from the MUNIS year-to-date budget report. Period 13 is the year-end close, after purchase orders are closed in the lapse period.","caveats":["The surplus for a closed year IS the `available` column at period 13.","`transfers` is CUMULATIVE, not incremental. Movement between two periods is the difference of the column, never the later value.","`original`, `transfers` and `revised` are printed rounded to whole dollars while `expended`, `encumbered` and `available` carry cents. A single row therefore does not reconcile to itself by a few pence, and a sum of N rows cannot equal a printed grand total exactly. Allow one dollar per row.","Revenue rows are stored NEGATIVE, exactly as MUNIS prints them. Check `account.account_type` before doing arithmetic across account types."],"columns":["account_id","fy","period","original","transfers","revised","expended","encumbered","available","pct_used","rounded_columns","doc_id"]},"budget_figure":{"rows":8598,"grain":"one row per budget line, fiscal year, STAGE and document","what":"What a budget document said a line would be, or was. Stage is proposed, settled or actual.","caveats":["A STAGE IS NOT A PERIOD. There is no join between this table and `ledger_snapshot` and nothing should invent one.","An \"actual\" here is a RESTATEMENT: a prior year re-presented by the people who spent it, inside the argument for the next budget. It is not a ledger figure.","These lines do NOT sum back to the district totals -- between 0.1% and 1.6% out. Never apportion a total across them.","`documents_disagree` marks a figure two documents state differently. The documents disagree with themselves by up to 1.5%, which is larger than most variances anybody wants to measure.","FY2021 is unusable: 117 of 120 lines print the budget under an \"actual\" heading. Exclude it."],"columns":["line_key","label","fy","stage","value","documents_disagree","doc_id"]},"workbook_figure":{"rows":3261,"grain":"one row per worksheet row, fiscal year and COLUMN, from one workbook","what":"The FY27 projection workbook, unpivoted. The only source holding both halves of FY25.","caveats":["Filter `row_kind = 'line'`. The sheet's own TOTAL rows are loaded too, so that a line sum can be reconciled to the total the source itself prints; summing without the filter double-counts by roughly 4x.","Every file in the archive carrying FY25 actuals is this same workbook saved four times. Two of them agreeing is not corroboration."],"columns":["row","line_key","fy","column_kind","value","row_kind","doc_id"]},"account":{"rows":981,"grain":"one row per ledger account","what":"The conformed dimension. Both revenue and expense, every fund.","caveats":["`level` says what we hold. `department` means the report was a rollup and the whole school district is one row (`0100-300`). `account` means full GL detail.","As of 2 September 2026 the general fund REVENUE report is at account level and the EXPENDITURE report is not. Every dollar coming in is visible per account; the schools' spending is one row."],"columns":["account_id","fund","fund_name","dept","org","object","name","account_type","level","first_seen_fy","last_seen_fy"]},"crosswalk":{"rows":0,"grain":"one row per budget line mapped to a ledger account","what":"EMPTY, and that is the honest state rather than an oversight.","caveats":["District budget lines are NAMED; MUNIS rows are CODED; the workbook's function-group codes appear nowhere in the MUNIS report. Three code spaces, none shared, and no published document maps one to another.","Therefore NO budget line can currently be traced into an actual in the ledger. Any answer claiming otherwise is wrong."],"columns":["line_key","account_id","method","confidence","evidence","doc_id"]},"fund_activity":{"rows":61,"grain":"one row per fund, fiscal year, period and document","what":"What a revolving, grant or gift fund took in, spent and carried.","caveats":["A FUND BALANCE ROLLS FORWARD. A DEPARTMENT APPROPRIATION LAPSES. They are printed in the same units and are not the same quantity. Never union this table with `ledger_snapshot`."],"columns":["fund","fy","period","opening_balance","revenue","salaries","expenditure","encumbered","closing_balance","doc_id"]},"grant_award":{"rows":79,"grain":"one row per grant per fiscal year","what":"What a budget document says was awarded.","caveats":["This is NOT a mapping onto the operating lines a grant paid for. Nobody publishes that. The Town's statement of 1 September 2026 -- that about $287,000 of out-of-district tuition was charged to the FY26 IDEA grant rather than the operating budget -- is the first instance of it being named at all."],"columns":["fy","kind","name","amount","owner","documents_disagree","doc_id","url","sha256"]},"document":{"rows":393,"grain":"one row per source document","what":"Provenance. Where a document came from, what produced its figures, and whether our copy still matches the publisher's.","caveats":["`basis` is what produced the figures: ledger, restatement, forward budget, or narrative. Of the ledger documents, exactly one reaches school budget lines.","`hidden_columns` records what a reader opening the file does NOT see. Two copies of one workbook hide different columns, so \"the workbook contains FY23 actuals\" and \"there is no FY23 column\" were both true at once."],"columns":["doc_id","path","source_type","basis","ledger_at","hidden_columns","url","link_state","copy_state","remote_sha256","local_sha256"]},"fund":{"rows":68,"grain":"one row per fund","what":"Funds and their restrictions.","caveats":["A general fund line is NET of whatever a grant, fee or revolving fund already paid for the thing."],"columns":["fund","name","kind","restriction"]},"budget_line":{"rows":703,"grain":"one row per named budget line","what":"Lines as the district's documents name them.","caveats":["No account code: the documents do not print one."],"columns":["line_key","label","section","function_group","kind"]},"fiscal_period":{"rows":13,"grain":"one row per accounting period","what":"Named periods. 13 is the year-end close.","caveats":[],"columns":["period","label","months_elapsed","is_final"]}},"otherTables":{"athletic_fee_schedule":31,"athletics_by_sport":960,"athletics_by_sport_reconciliation":342,"athletics_history":178,"capital_funding_history":10,"capital_plan_fy27":22,"dese_measure":2982,"free_cash_proof":630,"fund_1301_cash_journal":277,"ood_tuition_history":30,"rate_register":62,"sped_para_history":26,"sped_teacher_history":21,"sped_transport_history":25,"stated_figure":2,"total_expenses_history":28,"total_salaries_history":28,"variance_by_group":57},"views":["v_appropriation_vs_spend","v_burn","v_fund_year","v_interfund","v_line_budget_vs_actual","v_provenance","v_revenue","v_state_aid","v_transfer_history","v_workbook_budget_vs_actual"],"license":"Public documents, republished. Cite the document, not this API."}