Update issue tracker: backend data-quality bugs + full backlog
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

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>
This commit is contained in:
Robin Kutesa
2026-06-19 01:15:56 +03:00
parent 3fd5b8f1c7
commit 20dd49a53c
2 changed files with 99 additions and 51 deletions

View File

@@ -22,27 +22,40 @@ mk() {
-d "$body" >/dev/null && echo " + $1"
}
mk "Add Sport (F1) and World topic pills" \
"The 47 feeds include heavy F1 + global-news coverage squeezed into finance/tech/politics/africa. Add pills in Topic.filters; backend classifier must emit sport/world slugs to match. [client][backend]"
mk "Wire the Tailscale remote host in Connectivity" \
"Populate the Remote Access card's host so away-from-home auto-selects the Tailscale address. Verify the LAN<->Tailscale switch via /health probing. [client]"
mk "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. [client]"
mk "Optional in-app WireGuard tunnel" \
"NetworkExtension packet-tunnel so Jarvis can bring up a WireGuard tunnel itself (WireGuard/Netmaker configs only). Needs entitlement + real device. Deferred. [client]"
mk "App icon + launch assets" \
"AppIcon is an empty placeholder. [client]"
mk "Flesh out Latest / Saved / Search tabs" \
"Currently minimal reuse of the feed components; add proper empty/loading states and dedicated behavior. [client]"
mk "Verify hero image loading in the reader" \
"AsyncImage against real feed imageUrls (ATS, redirects, grey fallback) in the article reader. [client]"
mk "Validate infinite scroll / pagination at scale" \
"Validate loadMore/cursor round-trips against the live ~850-story dataset; guard against dupes. [client]"
mk "Topic-classifier coverage for the 47 feeds" \
"Ensure science/tech/world/sport map sensibly into the supported topic slugs. [backend]"
mk "Add unit/UI tests + test matrix leg" \
"The build matrix compiles but runs no tests yet; add a test target and a test matrix leg. [ci]"
mk "Offline-first polish" \
"Green cached dot + Saved tab depend on opening an article; consider pre-caching top stories. [client]"
# --- Backend: data quality ---
mk "[backend] F1 stories mis-classified into tech/finance/politics" \
"The topic classifier has no sport category, so F1 (100% F1 sources) scatters across topics. Live evidence: 'Monaco Grand Prix stewards…' -> tech, 'F1 reports 35% CO2 reduction…' -> finance, 'McLaren launch appeal against Gasly penalty' -> politics. Add a sport/f1 topic and route motorsport sources there."
mk "[backend] Over-clustering merges unrelated articles" \
"Stories pair a headline with an unrelated summary: an Ebola/Bunia (DR Congo) headline carried a South-Africa summary; a CRISPR headline carried Drakensberg/SA text. Raise the TF-IDF similarity threshold (~0.22 -> 0.30-0.40) and make canonical headline + summary come from the SAME representative article. Also inflates sourceCount/crossSourceConfirmation/score."
mk "[backend] Add accurate per-story tags (topic + region)" \
"Expose accurate tags (sport, uganda, east-africa, south-africa, ...) so the client reads them instead of keyword-guessing. Unblocks server-side filter pills. Pairs with the F1 and over-clustering fixes."
mk "[backend] Topic-classifier coverage for the 47 feeds" \
"Ensure science/world/tech map sensibly into the supported topic slugs."
# --- Backend: features ---
mk "[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 ---
mk "[client] Move interest filters server-side once backend tags exist" \
"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."
mk "[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."
mk "[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."
mk "[client] App icon + launch assets" \
"AppIcon is an empty placeholder."
mk "[client] Flesh out Latest / Search tabs" \
"Saved is now an explicit bookmarks list. Add proper empty/loading states and dedicated behavior to Latest and Search."
mk "[client] Verify hero image loading in the reader" \
"AsyncImage against real feed imageUrls (ATS, redirects, grey fallback) in the article reader."
mk "[client] Offline-first polish" \
"Pre-cache top stories for true offline-first; today the green cached dot depends on opening an article."
# --- CI ---
mk "[ci] Add unit/UI tests + a test matrix leg" \
"The build matrix compiles but runs no tests yet; add a test target and a test matrix leg."
mk "[ci] Backend CI build matrix" \
"Python 3.11-3.13 + lint + Docker image build/health probe for the backend repo (template in the handoff)."
echo "Done."