Event labeler - #16
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
The third grain, built from the design note in INTERVAL-CORPUS.md. The measurement queue calibrates scoring and the event editor says whether the detector finds things; neither can say how often it shouts when nothing is there, because that is a rate and neither grain has a denominator in it. A cell-week at a time, drawn from the new interval sampler, blinded until commit: Q quiet, E event present, U can't call it, X unusable, plus confidence and a rationale. The verdict is quiet_observed rather than quiet throughout, in the schema and in the UI copy, because the week is judged from the same OONI data the detector reads — an unmeasured block is indistinguishable from calm, and a better candidate that finds subtle real events must not be charged a false alarm for it. Mostly assembled from what the other two labellers already have. The event editor's timeline renders the cell, gaining one optional prop for the changepoint markers the reveal draws; the shell, rails, dialogs and reveal styling come from the measurement labeller's stylesheet; storage, gate and export follow the same copy-paste contract, so there is still no write endpoint and no auth surface. Two things the design note did not anticipate. The chart pads the week on both sides, because a week inside a long-running block contains no change and reads as quiet from its own shape alone — judge the week, look at the fortnight. And the queue takes an imported event corpus and flags cell-weeks a known event overlaps, which is the contamination cross-check the note asked for; flagged rows are meant to be committed as event_present rather than skipped, since dropping one shrinks the denominator with nothing on the record to say why. That corpus is external ground truth rather than detector output, so showing it before commit is not unblinding. The note itself is updated to match, marking the two places the design changed in the building: the strata became a partition, and the near-miss draw became a stratum of its own.
The detector scorecard moved out of the oonipipeline CLI and into docs/detector-evaluation.ipynb, alongside the scoring one. Three places in the labeller copy told analysts to run the command their export fed, so they now name the notebook instead. The event export's caption also stops promising a false-alarm number from that file. Events are curated, so no quiet time is counted in them; the rate comes from the interval corpus, which is the whole reason that grain exists.
Two changes to the interval labeller, plus the alignment they imply. `blocked_throughout` is a fifth verdict. The original four conflated state with change on a common case — a week in the middle of a long-running block. A changepoint detector can only be right or wrong about a transition, and that week has none, so it belongs in the false-alarm denominator alongside genuinely quiet weeks. But it is not quiet, and both available labels were wrong for it: `quiet_observed` asserts "no interference visible" about a blocked week and feeds the pool later mined as clean negatives, while `event_present` credits a detection nobody earned and removes the week from the denominator, so a detector that re-fires through a long block scored clean on both metrics. The overlap check used to steer analysts to exactly that, which turned a six-month event into twenty-six corrupted weeks; it now reads whether the event's span covers the whole window and says which verdict follows. The commit reveal gained analysis panels: blocking probability, per-layer scores, the DNS triple and the outcome strip, on the observation chart's time axis. That is where an analyst sees why the detector did or did not fire on a week they have already judged on the evidence. Per-layer values are drawn as independent lines, never stacked — they are componentwise maxima and routinely sum above one, which is the misreading user-guide §3.5 exists to prevent. The chart geometry constants and the layer palette move out of the event editor's timeline so the two charts share an axis exactly. Aligned with that: the gate and judgment copy now ask whether the state *changed* rather than whether there was interference, and the design note's UI section covers the fifth verdict, the padding's role as evidence for the Q/B distinction, and the new panels.
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.
No description provided.