The corpus › Decisions

The plan expires and the projection does not

A decision record · the-plan-expires-and-the-projection-does-not · cited by 1 page

Reading the Revised Code for the parameter class found that eight of the nine sections carrying the Fair School Funding Plan’s constants stop at FY2027 — three by their own terms and five clause by clause — while this repository projects current law to FY2036.

Context Contents

#204 asked, before building anything, how many named quantities in the corpus’s function_tex fields ought to be parameter nodes and are not. The answer was 32 of 33 statutory rates, and the issue’s own pre-committed rule fired: the corpus work comes first.

Writing those nodes meant reading R.C. 3317 rather than transcribing from the department’s calculator, which the workspace could do because crates/project/fixtures/revised-code.txt already holds the sections as committed text. The kind field is what forced the reading: “what would have to happen for this value to change” is not answerable from a spreadsheet.

The expected answer for a weight schedule was legislated — digits in a section, moved only by an act. That is what parameter.ont.yml’s own examples assume, and it is what the corpus’s prose had assumed for four years of nodes.

The decision Contents

Record the durability of every parameter, and treat a one-biennium series as a complete reading rather than as an unfilled field.

Measured over the committed extract, across the nine sections that carry the plan’s parameters:

sections
apply only to FY2026 and FY2027, by their own opening sentence3
hand individual values to the General Assembly from FY20285
state their values flatly, with no end1

The three that expire outright are R.C. 3317.011 (base cost), 3317.017 (local capacity, and the minimum state share inside it) and 3317.0217 (targeted assistance). Each opens “This section shall apply only for fiscal years 2026 and 2027.”

The five that expire clause by clause carry forty divisions reading “For fiscal year 2028 and each fiscal year thereafter, an amount calculated in a manner determined by the general assembly” — seventeen of them in R.C. 3317.022 alone, the section that assembles core foundation funding.

The one that does not is R.C. 3317.013, the special education multiples. It is also the only one of the nine not amended by the current budget act: its effective date is 6 April 2023 and its source is H.B. 554 of the 134th General Assembly, where every other section carries H.B. 96 of the 136th and 30 September 2025.

So each new parameter node states its durability in kind: and stops its series: where the section stops, with FY2028 — an amount determined by the general assembly as a real row rather than a gap. The class README says the same, so a reader does not mistake a two-year series for an unfinished node.

Consequences Contents

The distinction the corpus had been drawing is not the one that matters. For four phases the corpus separated codified parameters from uncodified ones, and treated “lapses with the biennium unless re-enacted” as the uncodified ones’ distinguishing weakness — it is written that way in three formula components. On durability the two are the same: R.C. 3317.017 expires exactly as the performance supplement does. What being codified actually buys is retrievability — a citation, a version archive, a text on codes.ohio.gov — and that is worth having for entirely different reasons. The enrolment-supplement-amounts and performance-supplement-rate nodes say so in their kind: fields.

This repository projects current law past the last year it exists. crates/bundle fits forecasts at FY2028, FY2032 and FY2036, and guarantee-phase-out publishes “FY2032 at projected enrollment, current law: $7,125M in a band of $6,889M to $7,379M”. Nothing in that band’s construction is wrong: the enrollment forecast carries its interval, the basis is marked Projected, and the arithmetic reproduces. What was missing is that “current law” at FY2032 is not a law. Three of the sections it runs on will have ceased to apply, and forty divisions will have handed their values to a General Assembly that has not met.

That is not a defect in the projection and it is not fixed by shortening the horizon — a five-year question about a two-year statute is still worth asking, and the answer “if the plan continues unchanged” is the only tractable one. It is a defect in the label. This pass records the fact in the parameter nodes; making the site say it where the band is drawn is left as follow-on work, because it is a rendering change and this pass is a corpus one.

A kind of “legislated” was hiding two different things. R.C. 3317.013’s multiples and R.C. 3317.014’s are both digits in a section, and only one of them survives the biennium. The kind field is text rather than an enum precisely so it could say that — the four-kind decision anticipated a parameter changing kind at a regime boundary and did not anticipate a codified parameter carrying its own expiry. Both are now recorded in the field rather than in a category.

Three things came out of the reading that no calculator would have shown. R.C. 3317.014(E) pays $3 per pupil for career awareness and exploration, and nothing in this repository models it. R.C. 3317.0212 states the transportation rider weights the corpus had recorded as possibly departmental, closing an [open]. And the 180-day multiplier in the per-mile transportation base appears nowhere in that section, which the corpus had not noticed because the calculator carries it.

Alternatives considered Contents

Leave the series at one row and mark the rest [open]. Rejected, and this is the substance of the decision. [open] says a question is live and somebody should answer it. “What is the FY2028 special education weight” is not a live question — it is a question the statute has declined to answer, and recording it as open would put forty of them in the corpus with no investigation that could close any. The FY2028 — row states the fact instead.

Write one parameter node per statutory rate rather than per section. Rejected. Thirty-three nodes, most of them a single number with the same kind, the same statutory_basis and the same expiry as their five siblings. The section is the unit the General Assembly legislates in and the unit a counterfactual binds to: a proposal amends R.C. 3317.014, not its division (A)(3).

Merge the preschool halving into the special education multiples. Rejected, and it is the case that shows why the section is the right unit. R.C. 3317.0213 names each division of 3317.013 and multiplies by 0.50; the multiples do not expire and the halving does. Merging them would give one node two durabilities.

Shorten the projection horizon to FY2027. Rejected. The question the scenario runner exists to answer is what a policy change does over time, and a horizon inside the current biennium cannot show a guarantee phasing out or enrollment decline compounding. The horizon is right and the label needs a caveat.

Fix the label in this pass. Deferred rather than rejected. The band is drawn by web/src/lib/scenario.ts and named in crates/bundle; saying “current law, as it stands for FY2026-27” wherever a projected year is shown is a change to the site and to the crate that feeds it. Doing it here would mean a corpus pass carrying a rendering change nobody reviewed for what it does to the page, which is the shape of change this repository has stopped making.

Cited by Contents