Demo mode, the paper, and an accessibility pass - #2
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Backend work since the hackathon: a demo you can watch, and the paper
37 commits, 49 files, +5,280/−104. It is a lot at once, and it splits cleanly
into four things. Read whichever you care about — they don't depend on each
other.
Nothing here touches the frontend templates you own except
board.html,which gained one span, and a
<br>in the demo banner on eight pages. Detailsin section 3.
1. The fix that matters most: the mechanism can now be watched
Commits:
0f02a4e,fe6a701,5f42764The thing DiresQ is about is an absence — a deadline passes, nobody hears from
a responder, and fifteen minutes later the server files a report about them.
It is correct and it is impossible to show anybody. You cannot demo the
non-occurrence of an event in ninety seconds.
That is, I think, most of why we lost Katy. A judge with two minutes could not
form the mental model, so nothing else we built got looked at.
So the clock is injectable now:
Open
/board. A responder goes overdue five seconds after the page loads, andat twenty seconds "No contact from n.farrow for 20 minutes" appears in the
feed on its own. Nobody clicks anything.
Nothing is staged. There is one
now()function and every deadline,comparison and query downstream is the production code untouched — only the
rate at which time enters the system changes. Login lockout and the ICS-214
export filename deliberately stay on the real clock, the first because scaling
a security control on a public instance is not a demo feature.
A scaled clock forces the demo banner on and makes it state the multiplier,
which is the same rule the board already follows about showing when the sweep
last ran.
docs/filming.mdhas the arithmetic and a shot list. Never set thisanywhere real — it is the one env var whose misconfiguration is invisible.
2. The paper
Commits:
bb38dd2throughc0f0003, plus7047352There is an eleven-page preprint in
paper/, LaTeX, builds clean withpdfLaTeX + BibTeX. Ten references, all of them read or explicitly marked as
abstract-only in the text.
The short version of what the reading found: our original claim — nobody
tracks the people who go in — is false, and a reviewer would have known.
Convergence has been documented since Fritz & Mathewson in 1957. The field's
answer is credentialing, credentialing presupposes an authority who has
already arrived, and FEMA's own guidance answers the 2am boat owner by
saying they should have affiliated months earlier. The interval before an
authority exists is the actual gap, and that is what the paper is about.
The limitations section says plainly that DiresQ has no users, no deployment
and no evaluation. It also includes the strongest argument against our
design, which comes from the people we claim to serve — the Harvey volunteers
interviewed by Smith et al. wanted more coordination, not less.
Three things still open, and one is yours as much as mine:
Tellioğlu 2017, Kankanamge et al. 2019). Noted in the text where they appear.
before it can be posted there. The research, argument and design are ours;
the sentences are not yet.
be settled by me merging a PR.
paper/README.mdhas the full state.3. Accessibility and a bug that would have broken the video
Commits:
5f42764,58a6c8a,963039eA review of the countdown found three things, one serious:
to
templates/board.htmland not toboard.js, which replaces the list onevery poll. It rendered on load, and the first poll wiped it. No test saw it
because the tests read the template. The demo was broken in exactly the
configuration we would have filmed it in.
aria-live="polite"region, which would bury the announcement that matters(the badge going OVERDUE). It is
aria-hiddennow, and the trade is writtendown in
limits.mdrather than only in a commit message.#45475aand#6c7086were being used for real text at 1.4:1 to 1.9:1across seven stylesheets — the board's coordinates and "no position" states,
the disclaimer footer, the legal links under the login, signup and homepage
forms, the offline timestamp, the triage footnote.
The contrast test that was supposed to prevent that last one checked ten
hand-listed colour pairs and never read a stylesheet. It now reads every
color:declaration in every stylesheet and resolvesvar()against eachfile's palette. There is also a test asserting
board.htmlandboard.jsdraw the same fields, and another asserting every fragment
rowHtmlbuildsactually reaches the output — because field parity alone stays green if the
interpolation is deleted and the local left behind.
The audit count in the README moved from nineteen to twenty-two.
4. Smaller things
787d892— the Render outage. We hardcoded--workers 2on a512 MB instance that announces
WEB_CONCURRENCY=1. The classifier trains atimport, so two workers meant two copies, and the container was killed four
seconds after boot. It now takes the host's number.
166ef47,d40966c,a71b99f— responders drawn the way the legend saysthey are, seeded somewhere visible, and the report page says who has stopped
answering.
a0a212e— WAL mode. The board, map and feed all wrote on read, and SQLite'sdefault journal let one writer lock out every reader. The three pages whose
whole purpose is to be watched continuously were the three that fell over
when watched continuously.
Checks
The doc-freshness suite caught me three separate times while doing this —
twice on test counts I had measured with a sloppy
grep, once on the READMEline total after the paper landed in the repo. It works.
After this merges
The launchers in
scripts/hardcodeSkythe7/DiresQ, which is correct hereand would have been broken had I tagged a release on my fork. So the release
should be cut from this repo, not mine:
1.1.0 rather than 1.0.3 — the clock is a feature, and there are 24 entries
under
[Unreleased]. If the Zenodo integration is on, publishing that releasemints a DOI, which gives the paper a citable artifact to point at instead of
just saying "open-source".