Files
jarvis/scripts/create-issues.sh
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

62 lines
4.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Create issues on self-hosted Gitea from docs/BACKLOG.md.
# You supply the token (this script never stores it). Generate one in Gitea:
# Settings → Applications → Generate New Token (scope: write:issue, read/write repo)
#
# Run:
# GITEA_URL=http://10.10.1.21:3002 GITEA_OWNER=kutesir GITEA_REPO=jarvis \
# GITEA_TOKEN=xxxxxxxx bash scripts/create-issues.sh
set -euo pipefail
: "${GITEA_URL:?set GITEA_URL e.g. http://10.10.1.21:3002}"
: "${GITEA_OWNER:?set GITEA_OWNER e.g. kutesir}"
: "${GITEA_REPO:?set GITEA_REPO e.g. jarvis}"
: "${GITEA_TOKEN:?set GITEA_TOKEN (Gitea → Settings → Applications → Generate Token)}"
API="$GITEA_URL/api/v1/repos/$GITEA_OWNER/$GITEA_REPO/issues"
mk() {
local body
body=$(python3 -c 'import json,sys; print(json.dumps({"title":sys.argv[1],"body":sys.argv[2]}))' "$1" "$2")
curl -sf -X POST "$API" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "$body" >/dev/null && echo " + $1"
}
# --- 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."