Files
jarvis/docs/BACKLOG.md
Robin Kutesa 20dd49a53c
Some checks failed
CI / Build · macos-14 · Debug (push) Has been cancelled
CI / Build · macos-15 · Debug (push) Has been cancelled
CI / Build · macos-14 · Release (push) Has been cancelled
CI / Build · macos-15 · Release (push) Has been cancelled
Update issue tracker: backend data-quality bugs + full backlog
Capture the proven backend issues (F1 topic mis-classification, over-clustering
with mismatched headline/summary, missing per-story tags) plus open client/CI
work in docs/BACKLOG.md, and expand scripts/create-issues.sh to file all 14 on
the Gitea repo once it exists.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 01:15:56 +03:00

68 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Backlog
Open issues, seeding the Gitea tracker via `scripts/create-issues.sh` (run once the
repo exists). `[client]` = iOS, `[backend]` = the platform service on the Docker host,
`[ci]` = build/test.
## Backend — data quality (highest priority)
1. **[backend] F1 stories are mis-classified into tech/finance/politics.** The topic
classifier has no sport category, so F1 (with 100% F1 sources) scatters across topics.
Evidence from the live feed: "Monaco Grand Prix stewards…" → `tech`, "F1 reports 35%
CO2 reduction…" → `finance`, "McLaren launch appeal against Gasly penalty" → `politics`.
Add a `sport` (or `f1`) topic and route motorsport sources there.
2. **[backend] Over-clustering merges unrelated articles.** Stories pair a headline with a
summary about something else, e.g. an Ebola/Bunia (DR Congo) headline carried a
South-Africa summary, and a CRISPR headline carried Drakensberg/SA text. Raise the
TF-IDF similarity threshold (~0.22 → 0.300.40) and make the canonical `headline` and
`summary` come from the **same** representative article. This also inflates
`sourceCount` / `crossSourceConfirmation` and the signal score.
3. **[backend] Add accurate per-story tags (topic + region).** So the client can *read*
tags (sport, uganda, east-africa, south-africa, …) instead of keyword-guessing. Unblocks
moving the filter pills to server-side. Pairs with #1/#2.
4. **[backend] Topic-classifier coverage for the 47 feeds.** Ensure science/world/tech map
sensibly into the supported topics.
## Backend — features
5. **[backend] Server-side push for breaking alerts (APNs or ntfy).** Needed for
breaking-story notifications while the app is fully closed; the backend already computes
the stories. Client currently does local notifications + background refresh only.
## Client
6. **[client] Move interest filters server-side once tags exist (#3).** Replace the
client-side keyword filters (F1 / Uganda / East Africa / South Africa) — which only see
loaded stories and match the headline — with backend tag filtering for full coverage.
7. **[client] SSID-based trusted networks.** Pin trusted Wi-Fi by name. Needs the Access
WiFi Information entitlement (real device + paid account); no-ops in the simulator.
Currently approximated by LAN reachability.
8. **[client] Optional in-app WireGuard tunnel.** NetworkExtension packet-tunnel so Jarvis
can bring up a WireGuard tunnel itself (WireGuard/Netmaker configs only). Entitlement +
real device. Deferred.
9. **[client] App icon + launch assets.** `AppIcon` is an empty placeholder.
10. **[client] Flesh out Latest / Search tabs.** (Saved is now an explicit bookmarks list.)
Add proper empty/loading states and dedicated behavior.
11. **[client] Verify hero image loading.** `AsyncImage` against real feed `imageUrl`s
(ATS, redirects, grey fallback) in the article reader.
12. **[client] Offline-first polish.** Pre-cache top stories for true offline-first; today
the green "cached" dot depends on opening an article.
## CI
13. **[ci] Add unit/UI tests + a test matrix leg.** The build matrix compiles but runs no
tests yet.
14. **[ci] Backend CI build matrix.** Python 3.113.13 + lint + Docker image build/health
probe, for the backend repo (template lives in chat/handoff).
---
## Recently shipped (this iteration)
Signal feed + detail + reader + feed manager; LAN⇄Tailscale connectivity; notifications
(morning/evening briefings + breaking alerts) with Open-Meteo weather; device code signing;
feed resilience (no blank-on-refresh, ignore cancelled, coalesced WS refresh); clearer
empty states; deterministic feed order; read/unread (drop stripe on open); 6-line summary
preview; pinned mutually-exclusive filters (F1 split out, regions non-overlapping,
Finance/Tech by topic); swipe actions (left = save, right = share + mark read).