Lots of memory changes mostly
This commit is contained in:
1 parent
29192320cd
commit
b450004d08
12 files changed
No files matched your search
@@ -0,0 +1,2 @@
|
||||
- [News rewrite status](news-rewrite-status.md) — old Rust system still in production, Python rewrite at ~/docs/projects/news; read profile/CALIBRATION.md before touching scoring constants
|
||||
- [news_triage v0.2 gotchas](news-triage-v02-gotchas.md) — SIGHUP won't reload sources, healthcheck lies, ntfy buttons dead by design
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
name: news-rewrite-status
|
||||
description: State of the news aggregator rewrite - old system still running, new one at ~/docs/projects/news, design rationale lives in profile/CALIBRATION.md
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
|
||||
Two systems exist. **`~/docs/projects/news_triage`** (Rust, v0.2, container
|
||||
`connor_news-backend_1`, config `~/config/news/config.toml`) is **still running in
|
||||
production** and serving Connor's notifications. **`~/docs/projects/news`** is the
|
||||
greenfield Python rewrite, started 2026-09-08. Keep the old one running until cutover;
|
||||
Connor chose **no data import** into the new schema.
|
||||
|
||||
The rewrite exists because signal quality failed, and the root cause was that the old
|
||||
system had no representation of taste — three keywords fed to BM25 plus a two-term
|
||||
substring blocklist. The fix is embeddings: interests, vetoes, and importance categories
|
||||
written as prose in `profile/profile.toml`, embedded on CPU with bge-small-en-v1.5.
|
||||
|
||||
**Before changing any scoring constant, read `profile/CALIBRATION.md` in that repo.** The
|
||||
constants were fitted against 3,885 real items and 40 real feedback labels, and two of the
|
||||
findings are counterintuitive enough to be re-derived wrongly: blocks must be compared by
|
||||
z-score *within block* (raw cosine gave geopolitics 78% of all items), and veto must be a
|
||||
margin over the interest signal rather than a similarity threshold (a plain cutoff killed a
|
||||
Middle East story about a mayor barring an Israeli football club).
|
||||
|
||||
Phases 0 and 1 are done. Phase 2 onward (ingest/embed/cluster, then scoring, delivery, web
|
||||
UI) is not built. Plan file: `~/.claude/plans/alright-so-i-d-like-tranquil-sunset.md`.
|
||||
|
||||
Related: [[news-triage-v02-gotchas]]
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
name: news-triage-v02-gotchas
|
||||
description: Operational traps in the running news_triage v0.2 container - config reload scope, permanently-unhealthy healthcheck, dead ntfy buttons
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
|
||||
Traps in the still-running `connor_news-backend_1` (from `~/docs/projects/news_triage`),
|
||||
each of which costs a debugging cycle to rediscover:
|
||||
|
||||
- **SIGHUP does not reload sources.** `watch_sighup` swaps the config, and per-cycle reads
|
||||
pick up `[topics]`, `[notify]`, `[clustering]` and `[llm]`. But `spawn_source_loop` takes
|
||||
an *owned* `Source` and the source list is enumerated once at startup in `build_runtime`,
|
||||
so adding, removing, or disabling a feed needs `sudo podman restart`, not a HUP.
|
||||
- **The container reports `unhealthy` forever and is fine.** The compose healthcheck is
|
||||
`CMD curl -f localhost:3000/healthz` and the runtime image ships no curl.
|
||||
- **ntfy feedback buttons have never worked.** `NEWS_API_BASE_URL` is unset, so they are
|
||||
dropped at boot with a single WARN. ntfy executes those actions from the phone, so it
|
||||
needs a publicly reachable URL. Deliberately left unfixed — `/api/feedback` has no auth,
|
||||
and with no data import into the rewrite the labels have no carry-over value.
|
||||
- **The bypass lane ignores relevance entirely** (`gate.rs:302`): it fires priority-5 push
|
||||
on `source_count >= 2` OR p99 importance, skipping quiet hours, the token bucket, and the
|
||||
blocklist. `bypass_ceiling_per_day` is the only brake on it.
|
||||
|
||||
Config is bind-mounted, so per the usual rule an edit needs `sudo podman restart` —
|
||||
`podman-compose up -d` does nothing when only the mounted file changed.
|
||||
|
||||
Related: [[news-rewrite-status]]
|
||||
Reference in new issue
Block a user