The corpus › Decisions

Scholarship reports connector

A decision record · scholarship-reports-connector · cited by 2 pages

dew-scholarship-reports, kept apart from dew-payment-reports so that one lifted blocker does not read as two — and the report it retrieves disagrees with itself in two places that are pinned rather than reconciled.

4 claims in this record have been withdrawn or superseded Contents

A decision record is kept as it was written and corrected in place rather than rewritten, so that the reasoning that led somewhere wrong stays legible. What follows is where.

Context Contents

Written after the fact. The connector was declared and wired in 2428ae9, and no decision record named it until “What approves a connector” found four connectors in that state. What follows is reconstructed from that commit and from the registry; the alternatives below are the ones the commit shows were weighed, not a deliberation anyone witnessed.

The scholarship channel was in the corpus only negatively. The FY2027 calculator carries no deduction line — established exhaustively and pinned by a test — which ruled out a reduction without saying what happens instead, and edchoice-expansion recorded direct appropriation as “the natural reading and not established here”.

Reading R.C. 3317.022 settled the mechanism positively. The department computes and distributes state core foundation funding to six funding units: districts, the community and STEM school unit, and one unit each for educational choice, the pilot project, autism and Jon Peterson. Division (E) pays the EdChoice award to the parent “from the funds paid to the educational choice scholarship unit”. The word deduct appears in none of the eight sections wired. It is not an appropriation and not a deduction: it is a parallel unit inside the foundation computation, and cleveland-scholarship had asserted mechanism: deduction flatly and was corrected.

What the statute cannot give is size. That is the department’s 2025 Scholarship Annual Report, which is public, unauthenticated, and had never been committed.

The decision Contents

Declare dew-scholarship-reports as a connector in its own right, Wired with a recorded remainder, feeding program, with the 2025 Scholarship Annual Report as its single source.

Kept apart from dew-payment-reports deliberately. Same department, and folding them together was the obvious economy. One is a statewide aggregate the department publishes to anyone; the other is a per-district file behind an OH|ID login. A single connector would carry one status and one blocker for two access regimes, and wiring the public half would have read as lifting the credentialed half’s blocker — which is the one thing about that blocker a reader must not conclude.

Committed as a rebuilt fixture rather than quoted. Five program totals to the cent is exactly the transcription this repository keeps finding wrong, and a figure reaching the corpus through prose is a figure nothing recomputes.

Consequences Contents

Two internal contradictions in the report, both pinned rather than resolved. Its executive summary claims “more than 175,000” students; its five program counts sum to 166,587. And three of its four published averages are not expenditure over participation — Autism reconciles to the cent, the other three sit 1.5% to 3.4% above. That is a denominator the report does not name, not a slip, and the fixture carries both readings rather than picking one.

The deduction stub stays a stub, with a smaller scope. The current era computes to zero by construction, which is a result rather than a gap. Only the deduct era is left, and it needs credentials, a records request, or a withdrawn route restored.

A remainder that is a withdrawal, not an absence. Per-district participation is a different file: the annual report cites two routes to it and both 404. The breakdown was published, is still referenced by a current departmental document, and has been taken down. still_blocked says that, so a refresh that finds nothing is not read as a failure to look.

CORRECTED by #10, probed 2026-09-15. The two paragraphs above draw a conclusion from a status code that cannot carry one. Every path on reports.education.ohio.gov — the root, both cited routes, an invented path and /robots.txt — returns the byte-identical Angular shell, and the app’s route table is a single client-side report/:reportName, so there were never per-report server routes to withdraw. The reports behind it are Power BI embeds, served through a gateway whose anonymous token authenticates and carries no entitlement, and that probe cannot tell “de-provisioned” from “not entitled”. So the remainder is an absence after all, and a narrower one than “taken down”: the breakdown is cited by a current departmental document and this project has not found it. “A withdrawn route restored” is not an unblock — nothing identified exists to ask for — and still_blocked now says unreached rather than withdrawn. Propagated to every copy by #467.

Amendment Contents

Two more public workbooks, both kept under this connector rather than given their own. Found 2026-09-15 re-probing #10: the Historical Scholarship Data archive (FY1997-FY2013, statewide, by program) and the EdChoice Designated List 2026-2027 (per district, per building). Both are linked from pages this project had already read, both are plain fetches, and neither was held.

The criterion that splits a connector is the access regime, not the grain or the question. That is what the decision above actually turned on, and it is worth stating because the designated list invites the other reading. It is per building where the annual report is statewide; it is eligibility where the report is participation; its criteria columns are Performance Index rankings and Title I shares, which look like dew-report-card and dew-school-improvement material. None of that is a reason to split. All three files are published openly by the same office on the same set of pages, every one is a fetch with no credentials, and one Wired status with one remainder describes all three honestly. Splitting on grain would have produced a connector whose status says exactly what this one’s says, and dew-payment-reports would then be sitting beside two neighbors instead of one, with its own reason for separateness that much harder to read.

The remainder gets larger and more specific, not smaller. Before this the string said per-district participation was withdrawn. It still is. What is added is a shape the earlier string could not express: the archive stops at FY2013 and the annual report starts at 2024-25, so FY2014 through FY2023 has no participation series — a hole in the middle rather than an edge. It is not empty. The greenbooks already committed quote counts inside it, for FY2014 and for FY2018-19, three of the four prefixed “about” and none naming a denominator; they bound the hole and cannot be spliced onto the series. And the designated list is one edition, with the four prior filenames its pattern implies all returning the host’s genuine 404.

CORRECTED by #10. “It still is” repeats the withdrawal reading corrected under consequences, and the string no longer says it. The hole this paragraph describes — FY2014 through FY2023, bounded by the greenbooks and unfilled — stands.

CORRECTED by #472, censused 2026-09-24. “Counts inside it, for FY2014 and for FY2018-19, three of the four prefixed ‘about’ and none naming a denominator” undercounts the quotes and misstates them. Reading all eight committed budget analyses — six greenbooks of enacted acts, and both editions of the FY2026-27 analysis — gives twenty-two quoted quantities inside the hole — FY2014, FY2016, FY2018, FY2019 and FY2023 — and sixty-four across the census as a whole. “None naming a denominator” is wrong in the direction that matters: LSC names three different ones inside the hole (students participating, scholarships awarded, kindergarteners) and the FY2026-27 redbook names two more in one sequence of paragraphs (students for three programs, FTE students for the two EdChoice ones). The hedging is also wider than “three of four” — thirty-seven of sixty-four rows carry the publisher’s own qualifier. None of that weakens the conclusion; it is why the conclusion now has a fixture behind it rather than a count.

CORRECTED by #484. “FY2014 through FY2023” is now FY2014 through FY2022, and “twenty-two quoted quantities inside the hole” is twenty-one. The Jon Peterson program’s own annual report was extracted for FY2023 and FY2024, which shortens the channel’s hole by one year at its far edge. The row that changed buckets is the census’s only FY2023 row — 714 chartered nonpublic schools operating statewide — which is not a quantity the Jon Peterson editions measure, so nothing about it became checkable. Everything else this paragraph and the two blocks above it say stands, and the hole is still a hole for four programs of five.

“They bound the hole; they do not fill it” is a fixture. scholarship-bounds.tsv holds the census, one row per quoted quantity, carrying the program, the fiscal year, the measure, the value, the denominator it is over, the publisher’s own precision, the source document, and the publisher’s words. project::scholarship::bounds reads it through the uniform-width reader; the_points_that_bound_the_participation_hole asserts the claim this record had been making in prose. It is tab-delimited rather than comma-delimited for the reason every TSV here is: the quotes are prose, and LSC’s numerals carry thousands separators.

The guard is a predicate, not a sentence. Bound::spliceable answers which committed series a row could be appended to without a reader noticing — the archive’s own denominator in a year it reaches or is one short of, or an unhedged student count in the report’s year — and the test asserts it is None for all sixty-four rows, with a second test doctoring two rows to show the predicate can say otherwise. A later extraction that adds a genuinely joinable row fails the gate and forces the question rather than answering it by arriving. The archive’s two denominators are in the vocabulary for exactly that reason, though no row uses either.

And the census gives the argument its third leg, which is the strongest one. The two reasons this record already gave — the hedges and the missing denominators — are properties of single rows. The third is a property of pairs: eight of the quotes fall inside the archive’s own span, five of them on a measure the archive publishes, and where both speak they disagree without a rule. Cleveland’s FY2005 count reproduces the payments column exactly; its FY2012 count runs 0.98% above; the traditional program’s FY2012 count runs 2.28% below; and LSC’s FY2012 autism count is 85% below the department’s — 360 students against 2,413, in the same analysis whose other two counts are within two points. A transcription that is exact once and out by a factor of seven elsewhere cannot be extrapolated into years with nothing to check it against. That is the sentence the fixture replaces, and it could not have been written without the overlap rows.

What the FY2014 quotes do bound. For each of the three programs the archive covers with both denominators, LSC’s FY2014 count falls strictly between that program’s FY2013 payments and its FY2013 applications — Cleveland 5,964 < 6,337 < 6,602, traditional EdChoice 16,065 < 16,987 < 17,516, Jon Peterson 1,779 < 2,103 < 2,129. The quoted figure is consistent with either column having grown and inconsistent with being either one, which is the precise sense in which these are bounds. Autism is the warning case: its FY2014 quote is 2,623 against a FY2013 payments figure of 2,622, one student apart and no applications column to bracket it, so it reads as a series continuing. It is the most tempting splice in the census and it is refused on the same terms as the other sixty-three.

The FY2024 redbook sits below the 2024-25 report on every program, which is the check that both documents are right. In dollars for the four that publish a total — $405.3m against $492.9m for the expansion, $272.3m against $283.1m, $136.5m against $160.0m, $53.4m against $55.2m — and in counts for all five, by between 5.7% and 31%. The spread is itself a reminder that these are not five measurements of one year of growth: two of the five counts are FTE and three are students.

What the archive settles that the report could not. The 2025 report’s three unreconciled averages were recorded above as “a denominator the report does not name”. This workbook maintains two denominators for every program-year — applications made against scholarships with at least one payment — and they are far apart. It does not identify the report’s denominator, and it establishes that the department has long counted this channel two ways, which was the part that had been a guess.

It also carries a definitional break nobody annotated. Cleveland’s renewal applications equal the prior year’s payments exactly for twelve consecutive years and then stop doing so at FY2010. Before FY2010 a renewal was an administrative roll-forward of everyone paid last year; after it, renewals are counted and run 10-14% below. The fixture carries the published numbers and the break is pinned in a test, on the same principle as the 175,000 above: the corpus records what does not reconcile rather than choosing a reading.

And the designated list turns out to be checkable against statute. Its designation column is exactly Option A OR Option B, its Title I column tests the three-year average that R.C. 3310.03(A)(1)(b) requires rather than the each-year rule its own name suggests, and the one district of 607 missing from it is Cleveland Municipal — which R.C. 3310.03 excludes by name, because the pilot project scholarship program operates there. That last one is the first place in this corpus where a statutory exclusion is observable as a row count.

The hole has a floor under part of it now, and the criterion above is what put it there. Two more sources joined this connector rather than starting another — jpsn-annual-2023 and jpsn-annual-2024, the Jon Peterson program’s own annual report for two years. The access regime is identical: the same office, the same Annual Reports page, the same getattachment route, no credentials. By the criterion this record already states, that is one connector, and the alternative — a per-program connector for a per-program report — would have produced a Status string indistinguishable from this one’s.

What changed in the status is the remainder, which is now narrower and for a stated reason: still_blocked names FY2014 through FY2022 rather than FY2014 through FY2023, for one program of five. Four programs have nothing in the hole and the sentence has to keep saying so, because a hole one year shorter reads like a hole one program narrower and it is not.

The guard grew a third clause and the vacuity test a third case. Bound::spliceable now also answers for the Jon Peterson series, which reaches two years further back than the consolidated report does — and the census does hold a Jon Peterson student count for FY2024, 7,800, kept out of the joinable set by LSC’s own “about” and nothing else. Doctoring that row’s precision to Exact makes the predicate say so, which is the third doctored case and the reason the all-None assertion is still measuring something. A guard that passes on every row measures nothing, and a newly extracted series is exactly when that bites.

One pair is a contradiction and is deliberately not called a splice. For FY2024 the department publishes 500 approved providers and LSC publishes 454, unhedged, and LSC’s figure falls between the department’s own FY2023 and FY2024 counts. That is not a silent splice: the year is occupied, so appending it would put two values in one year where a reader sees both. What makes a splice dangerous is an empty year, and Denominator::Unstated is the absence of a population rather than one a series shares. Reporting it as joinable would have turned the hard-zero guard into a snapshot with allowed exceptions, so the disagreement lives in a test named for it — the_two_publishers_agree_on_the_money_and_not_on_the_counts — where the money agreeing to LSC’s rounding grain is recorded beside the counts not agreeing at all.

And what would fill the hole rather than shorten it is in bytes this connector already holds. Every JPSN edition and the consolidated report open with a bar chart of total applications by fiscal year; the consolidated one runs FY2014 through FY2025, which is the hole and both its edges, in the applications denominator the archive maintains. None of the bars carries a data label, so cache::pdf_text reaches the axis and not the values. That is a different instrument — chart geometry, not pdftotext — and it is named here so the next reader does not re-derive that the series is missing when what is missing is a way to read it.

Alternatives considered Contents

Fold the annual report into dew-payment-reports as a second source. Rejected, above. The cost of the separate connector is one more row in the registry table; the cost of folding is a status that describes neither half.

Quote the five program totals into the corpus nodes and skip the connector. Rejected: the figures are the whole reason to hold the document, and a number in a node with no fixture behind it is the shape issue #131 exists to catch.

Reconcile the 175,000 against the 166,587 and publish one. Rejected: both are the department’s, in one document, and choosing between them would be this repository asserting something the publisher does not. It is recorded as a defect in the source, which is what the catalog is for.

Cited by Contents