Phase 5: triage feed and the tuning surface

/ is the labelling machine: ranked clusters, one keystroke per judgement
(j/k move, i/n label, o open), advancing automatically so a run of judgements is
a run of single keys. Feedback volume is the whole point -- the old system
collected 32 labels because its buttons did not persist and its UI could only be
clicked.

Browser feedback posts to /ui/feedback/, deliberately NOT under /api/feedback/,
which Caddy routes around Authelia for the ntfy buttons. The browser path stays
behind the identity gateway and so needs no signature.

/tune drives the same route() the live service calls, so what it shows is what
would have been sent. The old replay harness hardcoded its parameters and could
never sweep the thresholds it existed to tune.

Building it corrected a claim I had already made twice. I said the budgets bind
before the thresholds, then wrote that the subject quota binds before the
budget. Measured on this corpus, neither is generally true: at the shipped
budgets (3 interest, 2 importance) the BUDGET binds and the quota is inert --
moving it 1 to 3 changes nothing. Raise budgets to 8 and the QUOTA takes over,
1/2/3 giving 10/11/13 alerts. The page now says exactly that, with the numbers,
rather than a rule of thumb that happened to be wrong.
This commit is contained in:
connor committed 2026-09-08 17:18:13 -04:00
1 parent e99b7c9fb7
commit 42c38d759d
4 files changed
+454 -3

No files matched your search

+14 -3
View File
@@ -84,8 +84,19 @@ Re-run the calibration in `profile/CALIBRATION.md` before trusting them.
`simulate` is the tuning surface. The old system's replay harness hardcoded its
parameters and so could never sweep the thresholds it existed to tune.
## Web
/ triage feed -- ranked, keyboard-driven (j/k move, i/n label, o open)
/tune move the thresholds and budgets, see what would have been sent
/digest the day's briefing, mobile-first
/healthz
Everything except `/api/feedback/*` sits behind the identity gateway. That one
path is exempt because ntfy runs notification buttons from the phone and a
native app cannot complete an interactive login; it is HMAC-signed instead.
## Status
Ingest, embedding, clustering, two-axis scoring and routing are built and
running against live feeds. Delivery (ntfy, the digest page) and the web UI are
not yet written.
Running in production. Ingest, clustering, two-axis scoring, routing, ntfy
delivery with working feedback buttons, the digest page and the triage UI are
all live.