Machine-surfaced candidates, waiting on a human. Nothing here publishes. Rejections matter more than confirmations — each one names a way the detector is wrong.
No account needed. The name you type gets stamped on every call you make and can't be edited afterwards — and nothing checks it's really you, so a name here is a claim, not proof of who decided.
Loading day context…
The taper toward older dates is a collection artefact, not a finding. Each RSS feed returns only its latest 15–200 items, so a day that had already passed when ingestion started — or before a given outlet was added to the config — was captured shallowly or not at all. A smaller count on an older day means the crawler saw less of that day. It does not mean less news happened, and the shape of this strip is not a trend in news volume. The bands are order-of-magnitude only, and no day’s total should be read as a measurement of that day or compared against another’s.
Expect to reject most of them. These are machine guesses; a queue where everything gets confirmed means the bar was set too low. Confirming does not publish anything — it hands the item to someone who writes the callout in their own words, and only that writeup ever reaches the public feed.
Roughly a minute each. Decisions save one at a time, so stopping halfway is fine.
Loading candidates…
Fills in as you reject. Each reason maps to a specific change in the detector — this panel is the bridge between “that’s a bad call” and a code fix. Counts come from the review log, so they include every reviewer, not just this session.
No rejections yet. Reject something and the failure pattern shows up here.
Failure modes found before review even started, kept here so they aren’t rediscovered.
| Failure | Seen | Fix |
|---|---|---|
| Same-owner cross-posting counted as independent amplification | 10 | Exclude shared owner_group pairs from amplification |
| Duplicate candidates from one story | 4 | Dedupe by (story, outlet-pair) before queueing |
| Weekly creators flagged for “going silent” | 3 | follow_through needs a per-outlet cadence baseline |
| Confidence ranks by similarity gap, not editorial severity | all | Separate the two; they are different quantities |
No contradiction type — direct factual conflicts file as follow_through | 1 | Add to the taxonomy |
Decisions are written to D1 and appended to review_log under the name you
typed into this browser. That name is self-declared and unverified — the
log records who claimed to make a call, not who provably did. The log is
append-only: a decision can be superseded by a later one, never erased.
Everything decided here is a recommendation. This console publishes
nothing and writes no callouts; a human does that elsewhere, deliberately.
Every confirm and every reject is appended to the audit trail with what you type here. It is stored with the decision and cannot be edited or removed afterwards.
Kept in this browser only, in localStorage under
mt-review-identity. Clearing it here does not remove it from decisions
already recorded. The server also stores a coarse network bucket (a /24, not your
address) with each decision, so obvious abuse is traceable.