How complete is this list?
The requirements list is the city’s own: the Department of Records and Information Services (DORIS) is required by section 1133 of the City Charter (added by Local Law 29 of 2019) to maintain a list of every report agencies must produce under local law, executive order or mayoral directive. Three honest limits:
- Reports mandated by state or federal law are largely absent. The Charter only asks agencies to file those “where practicable.” Just a handful of the 2,100-plus entries cite state or federal authority, so city reports owed under state law are systematically undercounted here.
- Absence from the portal does not always mean a report doesn’t exist. When the system launched in 2019, Gotham Gazette found that some reports listed as never received were in fact published on agencies’ own websites — they just were never filed with DORIS as the law requires. A red badge means the city’s own recordkeeping system has no copy; the underlying work may or may not exist somewhere else.
- Requirements can be waived. The Report and Advisory Board Review Commission can waive reporting requirements; waivers appear in this data only as free-text notes, which we parse and label. A waived report ceases to be required.
- Some entries are no longer owed by the agency named. The list still carries reports whose requirement was repealed, folded into another report, or moved to a successor agency — Executive Order 3 of 2022 dissolved DOITT, the Mayor’s Office of Data Analytics and the Mayor’s Office of Information Privacy into the Office of Technology and Innovation, but their rows remain. Left alone, those rows accrue “days late” against agencies that no longer exist, and double-count reports their successor is filing on time. Where the city’s own description says so, we label them superseded and withhold them from the overdue count. They remain listed and searchable.
- Some date ranges look ambiguous — so we read the laws. Dozens of entries carry a note like “Required Reports from Jan 2020 to Nov 2020,” which could mean the requirement lapsed at the end of that window, or merely that the agency stopped filing a report it still owes. We went to the authorizing statute for all 59 of them. Fifty-two are still in force, five had been repealed, and two could not be resolved from the text. Every one of those rows now carries the section text and a link to the law, so you can check our reading. Mostly the notes describe what DORIS received rather than what the law requires — but not always, which is why we read them rather than guessed.
- The city repealed a batch of reports in 2023, and the list did not notice. Local Law 69 of 2023 eliminated 21 reporting requirements selected for waiver by the Report and Advisory Board Review Commission. Several still sit in DORIS’s list with no indication they are dead — including what was, until this audit, the most overdue entry in the whole tracker: a Department of Citywide Administrative Services report on clean on-site power generation, shown at 8.5 years late for a requirement the Council repealed in June 2023. We checked every provision that law repealed against this list and marked what we found as superseded.
How this works
Reading the law. Two of the city’s own signals turned out to be unreliable, so for 62 requirements we went past the data to the statute: the 59 entries whose description carried an ambiguous date range, and every requirement matching a provision repealed by Local Law 69 of 2023. Each reading is recorded with the citation, a verbatim quote of the operative language and a link, shown on the row. Fifty-two proved still in force, eight had been repealed or revoked and are now labeled superseded, and two could not be resolved from the text and keep a caveat. The readings live in a separate file from the data, so the weekly refresh cannot overwrite them.
Sources. Two datasets published by DORIS on NYC Open Data, both refreshed monthly: Government Publication – Required Reports (the list of legally mandated reports: agency, report name, frequency, authorizing law, last published date) and the Government Publications Listing (metadata for all 78,000-plus documents filed with DORIS under Charter section 1133).
The join. DORIS tags each filed document with the required report it satisfies, using the same controlled name vocabulary as the requirements list. We join the two on agency plus report name, ignoring case, punctuation and whitespace — the city enters the same requirement inconsistently (“Report on freelance law” and “Report on Freelance Law” are one report; filings from Health and Hospitals arrive under both “H+H” and “HHC”), and matching those strings literally would strand real filings and overstate how late a report is.
Status logic. For each requirement we take the most recent filing date from either dataset (future-dated entries, a known data-quality issue, are ignored), add the report’s stated frequency (“Every 1 Year” = 365 days, “Every 3 Months” = 91 days, and so on) and compare to today. Past due = overdue. No filing ever recorded = never filed. One-time requirements whose description says “Completed” = completed; descriptions noting a waiver = waived; requirements the city’s own description says were repealed, folded into another report or handed to a successor agency = superseded, and not counted as overdue; requirements with no stated frequency and at least one filing = no schedule.
The city’s own late notices. When a report is overdue, the Charter requires DORIS to post a “Delinquent Report Notice” in its place. We flag every requirement whose most recent late notice is newer than its most recent filing. Note the two signals can disagree: DORIS knows the actual statutory due dates (say, an annual report due each January 31), while our math anchors to the last filing date plus the stated interval. Where they disagree, we show both.
Limits. This reflects DORIS’s recordkeeping as of the date shown above. Where the same requirement appears in multiple versions (the underlying law changed), we show the current version and note the count. See the repository for the full methodology and build code.