Skip to content

Publish a page per DINS incident with its three-state field split #67

Description

@ChelseaKR

What

dins.html carries one row per incident and a per-field split for the whole file; the per-incident field split exists in the artifact (incidents_detail) and is rendered nowhere. A county emergency manager or a reporter working one fire wants exactly that: for the Camp Fire, which fields were recorded, which carry Unknown, which are blank, split by assessed and inaccessible structures. This renders site/incidents/<slug>.html for every incident from the existing artifact, with the incident's name and number as published, its record count, its damage-value counts, and the per-field three-state table in the same layout as the file-level page, plus incidents/index.html in name order.

Why it matters

The README's argument for the per-incident table is that "an average across the file describes no incident in particular", and the same holds one level down: a per-incident completeness percentage describes no field in particular. The data is already computed and gated; the gap is rendering. Static pages with no script keep the current posture; the WCAG, reflow, contrast, and prose-number gates run over all of them, which is the cost and the reason to do it with the existing tooling rather than a filter widget. No address, parcel, or coordinate appears; an incident with no assessed records prints "none assessed" in words.

Scope

  • render.py: incident page template and index; slugs derived deterministically from incident number and name with collision handling recorded in the artifact.
  • pages.yml and site-offline build all pages; gates parametrized over the directory.
  • Cross-links: the incident row on dins.html links to its page; each page links back and to the data artifact.
  • Page count stated on the index; the fixture build renders the fixture incidents.

Out of scope

  • Any map, chart, or per-incident rate beyond the counts already in the artifact.
  • Client-side filtering or search.

Done when

  • The fixture build renders one page per fixture incident, each passing every page gate, and the index lists them in name order.
  • Two incidents with the same name and different numbers get distinct slugs and both appear.
  • An incident whose records are all inaccessible shows assessed denominators in words and the inaccessible split.
  • Every number on an incident page traces to incidents_detail.

Pointers

  • src/perimeter/render.py, coverage.py (IncidentCoverage), site/data/dins-coverage.json (incidents_detail)
  • tools/a11y.mjs, tools/a11y_browser/, tests/test_pages_html.py

Proposed with AI assistance.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfeatureMajor new capability proposal

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions