# NJDOE ESSA Accountability Calculation Workbooks

```toml ergo
[dataset]
ergo = "0.4"
slug = "essa-accountability-workbooks"
title = "NJDOE ESSA Accountability Calculation Workbooks"
publisher = "NJ Department of Education"
subject = "https://www.nj.gov/education/title1/accountability/"
source_url = "https://www.nj.gov/education/title1/accountability/"
pitfall = "Eight editions, seven measured school years. Comparability is per configuration, not per span: only years sharing a weight vector may be compared, and these are policy-defined school calculations, not site grades or current CSI/ATSI status."
status = "live"
confidence = "A"
updated = "2026-08-03"
implementation = "https://github.com/lavallee/njschooldata"

[dataset.coverage]
period = "2016-17 through 2024-25 in eight editions across seven measured school years; 2019-20 and 2020-21 waived and never calculated; 2024-25 indicator detail from the April 2, 2026 workbooks and the May 2026 guide; annual TSI effective 2026-27"
grain = "Comprehensive Summative school x metric (2024-25); school x edition x headline field (all eight editions); edition; absent school year; Targeted Summary school x flag group; Targeted Summary school x exact group list; publisher defect"
entities = "2,356 Comprehensive Summative school rows and 2,358 Targeted Summary school rows in 2024-25; 2,081 schools carry a 2024-25 summative score; 2,446 distinct schools across all eight editions, 2,007 of them in all seven measured years; 558 of 587 rendered budget districts match by exact code"

[dataset.access]
keys = ["school_year", "stage", "edition_id", "county_code", "district_code", "school_code", "student_group_id", "metric_id", "field_id"]
```

## Consumer question and boundary

AQ-063 adds one product-owned question, asked on the district report and — since
2026-07-30 — on every school profile that has a calculation row. It was widened
on 2026-07-31 from one school year to the whole ESSA record:

> What has NJDOE published about each eligible school under ESSA: the summative
> score and within-configuration percentile in every edition from 2016-17 to
> 2024-25, which of those years may be compared with which, the indicator
> results, weights and weighted values behind the 2024-25 score, and any
> 2026-27 annual TSI student-group flag — without turning any of it into
> quality grades or current CSI/ATSI status?

Until 2026-07-31 this repo held 2024-25 alone, and the accountability module
said in as many words that **nothing published covered 2017 through 2023**. That
was false and it was live. New Jersey published an accountability workbook for
every one of those years except the two the federal government waived; the gap
was in this site's custody, not in the record. The correction is the reason the
edition register exists: a year with no determination now has to carry the
publisher's own reason for having none, so an absence can never again read as a
statement about the record when it is a statement about the shelf.

The school-profile half of that question ("why is this school rated the way it
is") could not be answered from the original two-metric projection, which
carried the summative score and its percentile and nothing that produced them.
The Comprehensive Summative worksheet is therefore projected **entire** — all
47 of its metrics, 110,732 values — rather than as a metric subset. The rule is
"the whole worksheet", so no editorial choice sits between the workbook and the
mart, and the module renders the publisher's arithmetic without recomputing any
of it.

Aquifer owns custody of the standalone Comprehensive and Targeted workbooks,
their exact rows and literals, policy vintage, student-group context,
calculation stages, missingness, locators, defects, immutable releases, and
offline snapshots. This repo owns the narrower school-summary question,
four-table consumer mart, exact-code identity join, school labels, district
report placement, editorial framing, static UAT, and recovery through retained pins.

The standalone calculation workbooks are authoritative for this question.
The School Performance Report accountability tabs are a narrower presentation
projection and are not ingested again or used to repair the producer. Annual
targets, profile data, prior editions, assessment cross-tabs, and awards remain
outside this consumer adoption.

## Policy and time basis

The workbooks measure school year 2024-25 and were published April 2, 2026.
The technical guide is dated May 2026. Annual TSI flags in the Targeted Summary
apply to 2026-27.

This was not a CSI or ATSI identification year, and these workbooks do not
publish current CSI/ATSI status. The guide describes the previous and next
triennial identification points as January 2024 and January 2027; the landing
page says fall 2023 and fall 2026. The product preserves that conflict rather
than inventing a reconciled month and uses the detailed current guide to
interpret the bundle.

The workbook column called `Summative Determination` is the percentile of a
school's summative score among Title I and non-Title I schools in the same
configuration. The product labels it a within-configuration publisher
percentile. It is not a determination of identification status, a site-created
rank, or a school-quality grade. Its three exact zeroes remain zero; 275
structural blanks remain not published.

## Exact offline pin and mart

The committed pin is
`contracts/aquifer/nj-essa-accountability-workbooks.lock.json`:

- release: `aq063-accountability-editions-2`;
- manifest SHA-256:
  `8b4c9d5ac550586684ece5b8b72c1db57187b9d4b525141ac1b7803b40b1d979`;
- SQLite SHA-256:
  `d43c3703b77f7304e370f47cccfa73429b6a3ccdc63b5f0c207036d57a031bee`;
- byte count: `1,138,413,568`.

It replaced `aq063-accountability-refresh-2` on 2026-07-31 and is additive: the
2024-25 detail is unchanged to the last published value, and three tables are
added beside it.

The adapter verifies the entire artifact before building a fresh family file.
It fail-closes on all 33,087 source rows, 1,099,355 typed values, 96
metric definitions, 21 worksheet populations, five value-state populations,
ten Targeted Summary flag groups, 15 any-group Yes flags, two Targeted-only
schools, and all three unrepaired defects. It then projects only the fields
needed by the product question and atomically promotes the candidate:

| Consumer table | Rows | Deterministic row SHA-256 |
| --- | ---: | --- |
| `accountability_school_summative` | 110,732 | `ae84e71018aa4cb4a064c904affa2e7430ecf76af2ee9da75b34daf8f53e81b8` |
| `accountability_school_series` | 107,504 | `4762d93e2321afb41c56184c4750b332da288b71c4a93922c40f333437d9d8aa` |
| `accountability_school_tsi_flag` | 23,580 | `9c5f1ba7dbf6cfb0804983371f716476c0d7f34eef109e26b1309fe25a511763` |
| `accountability_school_tsi_list` | 2,358 | `7067f411a044496fbe28d4b069c7c6c35cc6d7ffff67192d784b85f6e7540631` |
| `accountability_edition` | 8 | `34b5c1c60197c08551e8421e67887deb8e0257106a5c9af8df55bde8870d6dbc` |
| `accountability_absent_year` | 3 | `b1e14f68e019a6e560f05ddf21bf96584c700cfa9b4fd4286e63cfd1fdbb2ad0` |
| `accountability_publisher_defect` | 3 | `623c7e694cd325f1e3388734001a594905dd85b25e5512b4f308d72fa831f26f` |

Three of those digests moved on 2026-07-31 while **no published value did** —
see `capture-ids-move-when-the-contract-does` below. The additivity of the
backfill is proven, not asserted: the adapter recomputes the three 2024-25
tables' digests with `capture_id` excluded and fails the build unless they match
`82f07eb5…`, `3c975cf7…` and `5373b200…`, the values they carried before the
editions release, and separately pins both 2024-25 workbook file hashes.

The edition register is the new load-bearing table. It carries, per edition, the
stage, the methodology label and source, the indicator set, whether that cycle
identified schools, and **the weight vector NJDOE applied to each configuration**
— which is the only thing that says whether two of a school's years may be
compared at all. The absent-year register carries the three school years with no
determination, each with the publisher's own words for why.

Comprehensive retains 60,076 reported values, 861 exact reconciliation zeroes,
44,473 structural absences, 2,334 suppressed cells and 2,988 derived flags
across all 47 worksheet metrics. Targeted retains 23,548 derived blank-to-No
flags and 32 reported Yes flags; the separate publisher-list table retains 15
lists and 2,343 structural absences. Keeping flags and lists separate makes
their three source inconsistencies visible rather than repaired.

Two acceptance rules protect the claims the school module makes out loud, and
both are bounds rather than equalities because the publisher rounds: across the
2,081 scored schools the indicator weights sum to 100% within 0.01 points, and
the weighted values sum to the published summative score within 0.02 points.
A third rule pins HS Persistence at zero non-zero weights. All three fail the
build closed rather than repairing a value.

## Issues

### Comparability is per configuration, not per span

```toml ergo
[issue]
id = "comparability-is-per-configuration"
title = "Whether two of a school's ESSA years may be compared depends on what kind of school it is: the elementary weight vector never moves, the high-school one breaks at 2024-25, and the mixed one breaks twice"
effect = "misleads"
core = true
type = "measurement"
status = "mitigated"
detection = "Walking accountability_edition.weight_regime_json in measurement order gives six weight-vector changes across the three configuration classes: elementary once (the 2016-17 final adds Progress toward ELP), high twice (that, then 2024-25), mixed three times (that, then 2023-24, then 2024-25). Elementary and middle schools carry ELA .175 / Math .175 / ELA Growth .25 / Math Growth .25 / ELP .2 / ChrAbs .15 in all seven measured years from the 2016-17 final on."
misuse = "Drawing one school's 2016-17 to 2024-25 ratings as a single trend for every school, or reading a high school's 2023-24-to-2024-25 movement as improvement or decline. At 2024-25 the high-school composite drops proficiency from 17.5% to 15% per subject, the five-year graduation rate from 25% to 10%, adds a six-year rate at 10%, and drops chronic absenteeism from 15% to 10% — the number moves because the formula moved."

[issue.scope]
tables = ["accountability_edition", "accountability_school_series"]
columns = ["weight_regime_json"]
```

The profile module derives each school's comparable stretches from this register
rather than from a hardcoded rule, so a school NJDOE regrouped mid-record — 30 of
them — gets a break for that reason with its own sentence. The line chart is
drawn in separate segments per stretch and never crosses one; the adapter fails
the build if an edition re-weights a configuration in a year this consumer does
not already know about. The form ruling is **P25** in `CHARTS.md`.

### NJDOE published 2016-17 twice

```toml ergo
[issue]
id = "2016-17-was-published-twice"
title = "There are two 2016-17 editions measuring the same school year, and all 2,105 summative scores differ between them"
effect = "breaks"
core = true
type = "coverage"
status = "mitigated"
detection = "accountability_edition holds eight editions across seven distinct school_year values. essa-2016-17-preliminary carries seven indicators and essa-2016-17-final eight; both cover the same 2,105 schools, and joining their summative_score rows gives zero identical values. The final adds Progress toward ELP, which the January 2018 guide says was not yet available."
misuse = "Counting eight editions as eight years, which invents a school year and doubles 2016-17 in any series; or averaging the two, which mixes a seven-indicator score with an eight-indicator one."

[issue.scope]
tables = ["accountability_edition", "accountability_school_series"]
columns = ["stage", "school_year"]
rows = "edition_id IN ('essa-2016-17-preliminary','essa-2016-17-final')"
```

The preliminary edition never enters a comparable stretch and is never plotted.
It renders below the record, under a row saying in the state's own words what
the final edition added, so a reader can see both numbers without the page
implying they are two years.

### Two years were waived, not missed

```toml ergo
[issue]
id = "two-years-were-waived-not-missing"
title = "2019-20 and 2020-21 have no determination because the federal government waived the requirement, and 2015-16 because it belongs to the previous regime — none of the three is a failure to acquire"
effect = "misleads"
type = "coverage"
status = "mitigated"
detection = "accountability_absent_year holds three rows, all typed structural-absence, each with an evidence_source and an evidence_quote. The 2019-20 and 2020-21 rows quote the 2021-2022 Technical Guide, page 3: the March 2020 and March 2021 waivers removed the 'Calculation of indicator scores and summative scores', the measurement of progress toward long-term goals, and the 'Identification of schools'."
misuse = "Rendering the pandemic years as a gap in this site's holdings, which is what the module did until 2026-07-31 for a seven-year span that was mostly not a gap at all; or interpolating a rating across them because a line has points on both sides."

[issue.scope]
tables = ["accountability_absent_year"]
columns = ["value_state", "evidence_quote"]
```

The two waived years are shaded at their real two-year width on the chart with
nothing plotted in them, printed as their own rows in the table, and quoted
verbatim beneath it. Nothing was calculated, so there is nothing to acquire —
which is the opposite shape from a hole in custody and has to read that way.

### An unexplained blank is not an absence

```toml ergo
[issue]
id = "an-unexplained-blank-is-not-an-absence"
title = "A blank summative rating is one of three different facts, and only value_state separates them"
effect = "corrupts"
type = "suppression"
status = "mitigated"
detection = "In accountability_school_series the summative_score field is 'reported' 16,787 times, 'structural-absence' 1,037 times — rows NJDOE published in a year it scored nobody, marked 'N/A - Not an Identification Year' — and 'unresolved-unknown' once, at 11-3230-060 in 2021-22, where the workbook prints an empty cell the release could classify as neither. A further 17,155 unresolved-unknown cells are status and Title I columns in editions that published no such column."
misuse = "Collapsing the three into one dash, which tells a reader of an unscored row that their school has no data when the state simply did not score anyone that year, and hides the one row where the publisher left a blank nobody can explain."

[issue.scope]
tables = ["accountability_school_series"]
columns = ["value_state", "numeric_value"]
```

The series table prints "Not ranked this year" for a structural absence and
"Published blank" for the unresolved one, and the identification column
distinguishes a school with no status in a cycle that identified schools from a
year in which there was no such column.

### The rounding regime changes mid-record

```toml ergo
[issue]
id = "the-rounding-regime-changes-mid-record"
title = "Three editions publish the summative score and its percentile at full float precision while the others round to two decimals"
effect = "context"
type = "measurement"
status = "mitigated"
detection = "reported_literal in accountability_school_series is two decimals in the 2016-17 preliminary and in every edition from 2021-22, and unrounded in the 2016-17 final, 2017-18 and 2018-19 — for example 53.80281690140845 at Columbia High School in 2018-19."
misuse = "Re-rounding the unrounded editions so the column looks tidy, which overwrites a published literal with a computed one and hides a change the state actually made in what it published."

[issue.scope]
tables = ["accountability_school_series"]
columns = ["reported_literal"]
```

The table prints each edition's literal exactly, gives the long ones their own
smaller treatment rather than a rounded stand-in, and says in a note that the
length is the publisher's doing. Only the chart's single end label is shortened,
and it is a reading aid beside the table that carries the literal.

### The configuration literal changes without the configuration changing

```toml ergo
[issue]
id = "configuration-literal-changes-not-the-configuration"
title = "NJDOE spells the same configuration 'ES/MS' in three editions and 'Elementary' in the other five"
effect = "context"
type = "definitional"
status = "mitigated"
detection = "The configuration field is 'ES/MS' in the 2016-17 final, 2017-18 and 2018-19 and 'Elementary' in the 2016-17 preliminary and from 2021-22 on. The weight vector behind both spellings is identical, and no school changes class at the rename."
misuse = "Keying comparability on the literal, which would break every elementary school's series twice at a spelling change; or conforming the literal, which hides that the publisher's own vocabulary moved."

[issue.scope]
tables = ["accountability_edition", "accountability_school_series"]
columns = ["reported_literal", "weight_regime_json"]
rows = "field_id = 'configuration'"
```

The class does the comparability work and the literal is printed as published,
in its own column, so a reader sees the rename rather than a smooth series.

### Capture ids move when the source contract does

```toml ergo
[issue]
id = "capture-ids-move-when-the-contract-does"
title = "Every 2024-25 capture_id changed between two releases in which no published value changed, because the id carries the source contract's SHA-256"
effect = "context"
type = "identity"
status = "mitigated"
detection = "Between aq063-accountability-refresh-2 and aq063-accountability-editions-2 all 1,099,355 accountability_values rows and all 33,087 source_rows changed capture_id from a '-836cbabc' suffix to '-430ca802', matching the source_contract_sha256 in metadata. Diffing every other column across the two releases gives zero differing rows, and both workbook file hashes are unchanged."
misuse = "Reading a full-column table digest as proof that data changed, or — worse — as proof that it did not, without knowing which columns are lineage and which are values."

[issue.scope]
tables = ["accountability_school_summative", "accountability_school_tsi_flag", "accountability_school_tsi_list", "accountability_school_series"]
columns = ["capture_id"]
```

The adapter's additivity rule therefore excludes `capture_id` and pins the two
2024-25 workbook file hashes separately, so a genuinely different workbook still
fails the build while a contract edit does not.

### The absenteeism column is a non-chronic rate

```toml ergo
[issue]
id = "absenteeism-column-is-the-non-chronic-rate"
title = "The Summative worksheet's absenteeism measure is the NON-chronic rate — 100 minus chronic absenteeism — so higher is better and the metric id reads the other way"
effect = "corrupts"
core = true
type = "definitional"
status = "mitigated"
detection = "The source header is 'Non-Chronic Absenteeism Rate' while the canonical metric id is accountability.chronic-absenteeism.actual-performance; the release metadata carries chronic_absenteeism_actual_polarity = non-chronic-rate-higher-is-better and the metric's polarity is higher-is-better."
misuse = "Plotting the column as a chronic-absenteeism rate. Columbia High School's 87 means 87% of students were NOT chronically absent; read as chronic absenteeism it inverts the school's own absenteeism module, which reports 13%."

[issue.scope]
tables = ["accountability_school_summative"]
columns = ["numeric_value"]
rows = "metric_id = 'accountability.chronic-absenteeism.actual-performance'"
```

The profile module labels the row **Students not chronically absent** and states
the arithmetic in the row's own description. It never calls the number chronic
absenteeism.

### Indicator weights are rescaled per school

```toml ergo
[issue]
id = "weights-are-rescaled-per-school"
title = "Each school's indicator weights are rescaled to fill 100%, so the same indicator is worth different points at different schools"
effect = "misleads"
type = "measurement"
status = "mitigated"
detection = "Among the 2,081 scored schools there are 20 distinct sets of weighted indicators. ELA Proficiency carries 11 distinct weights (17.5% at 1,098 schools, 15% at 914, and nine other values); ELA Growth carries nine; Chronic Absenteeism is 15% at the 1,125 schools with no Progress Toward ELP weight and 10% at the 956 with one."
misuse = "Reading a weight as a statewide policy constant, comparing two schools' weighted values without their weights, or ranking schools on one indicator's points."

[issue.scope]
tables = ["accountability_school_summative"]
rows = "metric_id LIKE '%.weight-percent'"
```

An indicator with no published result carries no weight, and the remainder are
rescaled to 100% without it. The module always shows the weight beside the
points and says in the caption that the weights are specific to that school.

### Weighted values round; they do not reconcile exactly

```toml ergo
[issue]
id = "weighted-values-round-not-reconcile"
title = "Summative score minus the sum of the published weighted values is non-zero for 1,013 of 2,081 scored schools, and five schools' weights sum to 99.99 or 100.01"
effect = "corrupts"
type = "measurement"
status = "open"
detection = "Summing the ten weighted-value metrics per school and subtracting the summative score gives 0.00 for 1,068 schools, ±0.01 for 958 and ±0.02 for 55. Summing the ten weight metrics gives exactly 100 for 2,076 schools, 100.01 for four and 99.99 for one."
misuse = "Renormalising the weights to 100 or back-solving a weighted value from the score. Both silently overwrite a published number with a computed one, and neither residual is an error to repair."

[issue.scope]
tables = ["accountability_school_summative"]
rows = "metric_id LIKE '%.weight-percent' OR metric_id LIKE '%.weighted-value'"
```

The adapter's acceptance rules are tolerances (0.02 on weights, 0.03 on the
score) rather than equalities for exactly this reason, and the profile caption
says the bars add up "within the publisher's own rounding".

### A blank indicator cell means two different things

```toml ergo
[issue]
id = "blank-cells-are-suppression-or-scope"
title = "The workbook prints the same empty cell whether an indicator was suppressed for this school or never applied to its configuration"
effect = "breaks"
core = true
type = "suppression"
status = "mitigated"
detection = "In the Summative worksheet 2,334 blank measure cells are typed 'suppressed' and 44,473 'structural-absence'. Both are the same empty spreadsheet cell; only the release's value_state separates them. 2,250 of the suppressed cells are Progress Toward ELP at 1,125 schools."
misuse = "Treating every blank as 'not applicable' and hiding a suppression, or treating every blank as a suppression and telling an elementary-school reader their graduation rate was withheld."

[issue.scope]
tables = ["accountability_school_summative"]
columns = ["value_state", "numeric_value"]
```

Elementary schools are never scored on the three graduation rates or HS
Persistence; High schools are never scored on ELA or Math Growth. The module
derives that scope from the data — an indicator counts for a configuration only
where some school in it carries a weight — and says "not part of the
calculation for a school NJDOE groups as Elementary" there, while a suppressed
cell gets the separate minimum-group-size sentence.

### HS Persistence is calculated and weighted zero

```toml ergo
[issue]
id = "hs-persistence-is-weighted-zero"
title = "HS Persistence is calculated for every high school in this edition and weighted zero at all of them, so it contributes nothing to any summative score"
effect = "misleads"
type = "policy"
status = "mitigated"
detection = "413 schools have an HS Persistence indicator score and 410 carry a weight; every one of those 410 weights is exactly 0, typed exact-reconciliation-zero, and every weighted value is 0. There are no non-zero HS Persistence weights in the file."
misuse = "Counting HS Persistence among the indicators that produced a high school's score, or reading a strong persistence rate as points the school earned."

[issue.scope]
tables = ["accountability_school_summative"]
rows = "metric_id IN ('accountability.hs-persistence.weight-percent','accountability.hs-persistence.weighted-value')"
```

The module keeps the row in the table — the calculation is real and published —
greys it, leaves it out of the chart, and says in prose that it adds nothing.
The adapter fails closed if a non-zero HS Persistence weight ever appears.

### Unscored rows still publish indicator results

```toml ergo
[issue]
id = "unscored-rows-still-publish-results"
title = "The 275 rows marked 'N/A - Not an Identification Year' have no score, percentile or weight, but all 275 still publish a non-chronic absenteeism rate"
effect = "context"
type = "coverage"
status = "mitigated"
detection = "275 of 2,356 Summative rows have a structural-absence summative score and the methodology literal 'N/A - Not an Identification Year' (264 Elementary, 11 High). All 275 carry a reported non-chronic absenteeism rate and 118 a reported ELA proficiency rate; every weight and weighted value on those rows is blank."
misuse = "Reading the methodology literal as 'no data for this school' and dropping its published indicator results, or reading its unweighted indicator results as if they had been scored and ranked."

[issue.scope]
tables = ["accountability_school_summative"]
rows = "methodology = 'N/A - Not an Identification Year'"
```

Those schools render the module with the publisher's methodology literal quoted,
the indicator results that were published, and an explicit statement that none of
them was scored or ranked.

## Static rendering and omissions

The canonical build writes 587 district budget reports. Exactly 558 join the
AQ-063 mart by zero-padded NJDOE district code and render the school table.
These 29 exact-code nonmatches omit it instead of falling back to names:

| Code | District route |
| --- | --- |
| `0125` | `atlantic-county-special-services` |
| `0130` | `atlantic-highlands` |
| `0200` | `bass-river` |
| `0225` | `bayshore-jointure-commission` |
| `0285` | `bergen-county-special-services` |
| `0605` | `burlington-county-special-services` |
| `0695` | `camden-co-ed-serv-comm` |
| `0715` | `cape-may-county-special-services` |
| `0810` | `chesilhurst` |
| `1387` | `essex-regional-educational-services-commission` |
| `1774` | `gloucester-county-special-services` |
| `2120` | `henry-hudson-regional-monmouth-2120` |
| `2160` | `highlands` |
| `2305` | `hunterdon-county-educational-services-commission` |
| `3103` | `mercer-county-special-services` |
| `3145` | `educational-services-commission-new-jersey` |
| `3255` | `monmouth-ocean-educational-services-commission-school-distri` |
| `3364` | `educational-services-commission-morris-county` |
| `3395` | `morris-union-jointure-commission` |
| `3975` | `northern-region-educational-services-commission` |
| `4635` | `salem-county-special-services` |
| `4700` | `sea-isle` |
| `4720` | `seaside-park` |
| `4805` | `somerset-county-educational-services-commission` |
| `4845` | `south-bergen-jointure-commission` |
| `5105` | `sussex-county-educational-services-commission` |
| `5245` | `union-county-educational-services-commission` |
| `5450` | `warren-co-special-service` |
| `5490` | `washington-burlington` |

South Orange-Maplewood renders all nine eligible schools. Columbia High School
shows a 55.66 summative score and 57.46 publisher percentile; the other eight
scores/percentiles are 39.58/32.15, 58.68/62.73, 63.69/69.66, 58.34/62.12,
53.26/54.22, 65.6/72.74, 77.64/87.45, and 79.93/89.51 in school-code order.
No any-group flag was published for those nine Targeted Summary rows. Every
school row exposes exact workbook locators.

Trenton, Prospect Park, and Penns Grove-Carneys Point visibly mark the three
publisher inconsistencies. For example, Trenton school `250` retains the
publisher list containing Students with Disabilities, Multilingual Learners,
Hispanic, and Economically Disadvantaged while the adjacent Yes columns retain
only the first three. No value is repaired from SPR.

### School profiles

Every generated school profile whose exact `(district_code, school_code)` pair
appears in the Summative worksheet renders a **How the state scores this
school** module. 2,356 of the 2,358 workbook schools are Comprehensive rows; the
two Targeted-only schools have no calculation row and render nothing.

Columbia High School shows 55.66 points from seven weighted indicators, ranked
above 57.46% of the 363 schools NJDOE grouped as High. Its HS Persistence row is
greyed at a 0% weight; ELA and Math Growth are named as outside the calculation
for a High-configuration school. Brookdale Elementary in Bloomfield shows the
suppression case: Progress Toward ELP has no published result, so it carries no
weight and the other five indicators are rescaled to 100%. Althea Gibson Academy
in East Orange shows the unscored case, quoting the methodology literal.

Battle Monument Intermediate in Trenton renders all three framings at once — an
exact zero percentile said as the bottom of the line-up rather than a blank, a
1.42-point score, and the publisher inconsistency between its group list and its
Yes columns, with both source locators exposed.

## Changelog

```toml ergo
[change]
date = "2026-07-31"
note = "Moved the pin from aq063-accountability-refresh-2 to aq063-accountability-editions-2 and widened the consumer question from one school year to the whole ESSA record: eight editions across seven measured school years, 2016-17 to 2024-25, projected as an edition register, an absent-year register and a per-school series. Retired the module's 2017-2023 absence band, which was live and false; the only years with no determination are 2019-20 and 2020-21, and the page now quotes the federal waiver that removed them. Added comparability-per-configuration, preliminary/final, weight-break and additivity acceptance rules, and registered the seven issues a reader-facing series has to get right."
issues = ["comparability-is-per-configuration", "2016-17-was-published-twice", "two-years-were-waived-not-missing", "an-unexplained-blank-is-not-an-absence", "the-rounding-regime-changes-mid-record", "configuration-literal-changes-not-the-configuration", "capture-ids-move-when-the-contract-does"]
```

```toml ergo
[change]
date = "2026-07-30"
note = "Widened the Comprehensive Summative projection from two metrics to the whole worksheet (4,712 to 110,732 rows) so the indicator results, weights and weighted values behind a summative score reach the consumer warehouse; added weight-sum, score-sum and HS-Persistence acceptance rules; shipped the school-profile module and registered the six issues a reader-facing surface has to get right."
issues = ["absenteeism-column-is-the-non-chronic-rate", "weights-are-rescaled-per-school", "weighted-values-round-not-reconcile", "blank-cells-are-suppression-or-scope", "hs-persistence-is-weighted-zero", "unscored-rows-still-publish-results"]
```
