From ea02a73435855f29e5558d42736bc91d3e33ceef Mon Sep 17 00:00:00 2001 From: Connor Johnstone Date: Tue, 1 Sep 2026 21:23:13 -0400 Subject: [PATCH] Some OMO stuff and a release workflow --- .gitea/workflows/release.yml | 41 +++ .omo/boulder.json | 67 +++-- .omo/evidence/f2-news-triage.txt | 42 ++-- .omo/evidence/f3-news-triage.txt | 214 +++++++--------- .omo/evidence/ui-f3-final.png | Bin 0 -> 169152 bytes .omo/plans/news-triage.md | 8 +- .../ses_fa0c5b480ffefuEgw30UYjrGiU.json | 10 + .../ses_fa0c60672ffe6eRDOgX6y2S7rA.json | 10 + .../ses_fa68cd6a7ffey9dPiMrqx8nxlG.json | 4 +- .omo/start-work/ledger.jsonl | 11 + .../console-2026-09-01T23-13-50-940Z.log | 1 + .../page-2026-09-01T23-13-51-462Z.yml | 13 + .../page-2026-09-01T23-14-06-006Z.yml | 234 ++++++++++++++++++ .playwright-mcp/ui-snapshot.yml | 233 +++++++++++++++++ 14 files changed, 726 insertions(+), 162 deletions(-) create mode 100644 .gitea/workflows/release.yml create mode 100644 .omo/evidence/ui-f3-final.png create mode 100644 .omo/run-continuation/ses_fa0c5b480ffefuEgw30UYjrGiU.json create mode 100644 .omo/run-continuation/ses_fa0c60672ffe6eRDOgX6y2S7rA.json create mode 100644 .playwright-mcp/console-2026-09-01T23-13-50-940Z.log create mode 100644 .playwright-mcp/page-2026-09-01T23-13-51-462Z.yml create mode 100644 .playwright-mcp/page-2026-09-01T23-14-06-006Z.yml create mode 100644 .playwright-mcp/ui-snapshot.yml diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..9d56df7 --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,41 @@ +# Builds the image and pushes it. It does not deploy. +# +# What picks it up is a timer on the server (see `deploy/`), so nothing here +# holds a credential for the machine it runs on and a bad build cannot take the +# service down by itself. The trade is that a deploy happens a few minutes +# after the push rather than at the moment of it. + +name: Image + +on: + push: + branches: + - main + +jobs: + image: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: docker/setup-buildx-action@v3 + + - uses: docker/login-action@v3 + with: + registry: ${{ vars.REGISTRY }} + username: ${{ vars.USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + # Tagged with the commit as well as `latest`, so that "what is actually + # running" has an answer, and so a rollback is a tag rather than a revert + # and a rebuild. + - uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: true + tags: | + ${{ vars.REGISTRY }}/connor/news:latest + ${{ vars.REGISTRY }}/connor/news:${{ github.sha }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.omo/boulder.json b/.omo/boulder.json index a4956a6..0d3138f 100644 --- a/.omo/boulder.json +++ b/.omo/boulder.json @@ -6,9 +6,9 @@ "work_id": "news-triage-ba2b546d", "active_plan": "/home/connor/docs/projects/news/.omo/plans/news-triage.md", "plan_name": "news-triage", - "status": "active", + "status": "completed", "started_at": "2026-08-31T22:07:39.562Z", - "updated_at": "2026-08-31T23:08:47.954Z", + "updated_at": "2026-09-01T23:10:33.551Z", "session_ids": [ "opencode:ses_fa68cd6a7ffey9dPiMrqx8nxlG" ], @@ -22,6 +22,21 @@ "3": "ses_fa6148485ffeMfOcdTvXaX0NcD", "4": "ses_fa6142db0ffeonLNswU6Pf5JZ4", "5": "ses_fa60d8537ffeb0ixaMfK8Gbf4j", + "6": "ses_fa600712fffeT3812Kuh4GbY5X", + "7": "ses_fa5ffd7fdffeHDq2g7gCOeFmOX", + "8": "ses_fa2423a00ffeKtuEIs903E34fD", + "9": "ses_fa239d2f9ffetXGdnoQPJIslFe", + "10": "ses_fa2264a47ffeaUYaHGLcrFiSx7", + "11": "ses_fa214daefffebte5jP4JO25mWV", + "12": "ses_fa20911d8ffe0v6hC7RsQKnnDE", + "13": "ses_fa2003acfffeltYpWlKdEn7GDp", + "14": "ses_fa1ef2bf1ffeFKyIblMEgoTnxa", + "15": "ses_fa1e438ccffetxuuygC4Vpiaqa", + "16": "ses_fa1d8953effeCQ8VaistSCa4yC", + "17": "ses_fa1c4b569ffeY4FUvm3RgKtBAi", + "18": "ses_fa1a1d2c7ffekWd8w2psQ2e7pa", + "20": "ses_fa1353850ffefFoVW4C2ZnlDaI", + "21": "ses_fa126fcffffeYJpjQhdFoxlwVY", "todo:1": { "task_key": "todo:1", "task_label": "1", @@ -86,30 +101,17 @@ "ended_at": "2026-08-31T23:08:47.954Z", "elapsed_ms": 1175298 }, - "6": "ses_fa600712fffeT3812Kuh4GbY5X", - "7": "ses_fa5ffd7fdffeHDq2g7gCOeFmOX", - "8": "ses_fa2423a00ffeKtuEIs903E34fD", - "9": "ses_fa239d2f9ffetXGdnoQPJIslFe", - "10": "ses_fa2264a47ffeaUYaHGLcrFiSx7", - "11": "ses_fa214daefffebte5jP4JO25mWV", - "12": "ses_fa20911d8ffe0v6hC7RsQKnnDE", - "13": "ses_fa2003acfffeltYpWlKdEn7GDp", - "14": "ses_fa1ef2bf1ffeFKyIblMEgoTnxa", - "15": "ses_fa1e438ccffetxuuygC4Vpiaqa", - "16": "ses_fa1d8953effeCQ8VaistSCa4yC", - "17": "ses_fa1c4b569ffeY4FUvm3RgKtBAi", - "18": "ses_fa1a1d2c7ffekWd8w2psQ2e7pa", "19a": "ses_fa1734076ffeTsS6Ice8fIrJZs", - "19b": "ses_fa15bdb2fffeH06NS8ddqULaf0", - "20": "ses_fa1353850ffefFoVW4C2ZnlDaI", - "21": "ses_fa126fcffffeYJpjQhdFoxlwVY" - } + "19b": "ses_fa15bdb2fffeH06NS8ddqULaf0" + }, + "ended_at": "2026-09-01T23:10:33.551Z", + "elapsed_ms": 90173989 } }, "active_plan": "/home/connor/docs/projects/news/.omo/plans/news-triage.md", "started_at": "2026-08-31T22:07:39.562Z", - "status": "active", - "updated_at": "2026-08-31T23:08:47.954Z", + "status": "completed", + "updated_at": "2026-09-01T23:10:33.551Z", "session_ids": [ "opencode:ses_fa68cd6a7ffey9dPiMrqx8nxlG" ], @@ -123,6 +125,21 @@ "3": "ses_fa6148485ffeMfOcdTvXaX0NcD", "4": "ses_fa6142db0ffeonLNswU6Pf5JZ4", "5": "ses_fa60d8537ffeb0ixaMfK8Gbf4j", + "6": "ses_fa600712fffeT3812Kuh4GbY5X", + "7": "ses_fa5ffd7fdffeHDq2g7gCOeFmOX", + "8": "ses_fa2423a00ffeKtuEIs903E34fD", + "9": "ses_fa239d2f9ffetXGdnoQPJIslFe", + "10": "ses_fa2264a47ffeaUYaHGLcrFiSx7", + "11": "ses_fa214daefffebte5jP4JO25mWV", + "12": "ses_fa20911d8ffe0v6hC7RsQKnnDE", + "13": "ses_fa2003acfffeltYpWlKdEn7GDp", + "14": "ses_fa1ef2bf1ffeFKyIblMEgoTnxa", + "15": "ses_fa1e438ccffetxuuygC4Vpiaqa", + "16": "ses_fa1d8953effeCQ8VaistSCa4yC", + "17": "ses_fa1c4b569ffeY4FUvm3RgKtBAi", + "18": "ses_fa1a1d2c7ffekWd8w2psQ2e7pa", + "20": "ses_fa1353850ffefFoVW4C2ZnlDaI", + "21": "ses_fa126fcffffeYJpjQhdFoxlwVY", "todo:1": { "task_key": "todo:1", "task_label": "1", @@ -186,7 +203,11 @@ "status": "completed", "ended_at": "2026-08-31T23:08:47.954Z", "elapsed_ms": 1175298 - } + }, + "19a": "ses_fa1734076ffeTsS6Ice8fIrJZs", + "19b": "ses_fa15bdb2fffeH06NS8ddqULaf0" }, - "agent": "atlas" + "agent": "atlas", + "ended_at": "2026-09-01T23:10:33.551Z", + "elapsed_ms": 90173989 } \ No newline at end of file diff --git a/.omo/evidence/f2-news-triage.txt b/.omo/evidence/f2-news-triage.txt index 5a268e6..2fe195f 100644 --- a/.omo/evidence/f2-news-triage.txt +++ b/.omo/evidence/f2-news-triage.txt @@ -1,22 +1,34 @@ F2 final-verification code-quality review: news-triage Scope: crates/*/src/**/*.rs, Cargo.toml workspace lint table, Dockerfile, .gitea/workflows/ci.yml, deploy/*. -REJECT +APPROVE -Blocking finding: -- crates/news-server/src/scheduler/cycle.rs computes relevance_percentile and importance_percentile from the current poll batch only (lines 141-146), using a local percentile_rank helper (lines 207-215). The implementation plan and draft spec require these percentiles to come from the trailing-7-day PercentileTracker distribution (crates/news-store/src/percentile.rs PercentileTracker::percentile). This is a core-algorithm deviation that changes notification gating decisions, so the F2 verdict is REJECT. +Blocking finding from prior review: RESOLVED +- The prior REJECT was based on crates/news-server/src/scheduler/cycle.rs computing relevance_percentile and importance_percentile from the current poll batch only, using a local percentile_rank helper. That local helper is gone. -Non-blocking findings (correct but noted): -- percentile_rank helper is duplicated in crates/news-server/src/api/stories.rs:268, crates/news-server/src/scheduler/cycle.rs:207, and crates/news-cli/src/replay.rs:232. -- Deterministic source UUID generation uses Uuid::from_u128(hash) in crates/news-server/src/bin_support.rs:162 and crates/news-cli/src/replay.rs:202. Functionally round-trips; non-standard but acceptable for stable fixtures/default sources. -- Stub sweep passed: no todo!/unimplemented! in production code; panic! and unwrap/expect are only in tests. -- Workspace lints inherited by all six crates via [lints] workspace = true. -- cargo clippy --workspace --all-targets -- -D warnings passes. -- Math formulas match the draft spec: importance = 1/(1+prominence_rank) + source_trust_weight + (1 - 1/(1+corroboration_count)); relevance = bm25 + bayes_score (Bayes term omitted until ≥20 samples). -- Deployment units (deploy/news-update, deploy/news-update.service, deploy/news-update.timer, deploy/ntfy-access-snippet.md) are present and consistent with CI/Dockerfile paths. +Verification of the fix: +- crates/news-store/src/percentile.rs:108-137 implements PercentileTracker::percentile_rank(metric_kind, value, window_days). It queries percentile_stats for rows WHERE metric_kind = ?1 AND computed_at >= ?2 over the trailing window, returns StoreError::InsufficientData when the window is empty, and computes rank as (strictly below + half of equal values) / count * 100. +- crates/news-store/src/percentile.rs:232-276 contains unit tests asserting empty-window -> InsufficientData, exact rank semantics (rank of 5 in 1..10 == 45.0), and out-of-window exclusion. +- crates/news-server/src/scheduler/cycle.rs:142-154 now calls tracker.percentile_rank(MetricKind::Relevance, relevance, 7) and tracker.percentile_rank(MetricKind::Importance, importance, 7), mapping errors (including InsufficientData) to 0.0. +- crates/news-server/src/api/stories.rs:269-280 provides percentile_rank_option, which maps InsufficientData to None and is then unwrapped to 0.0 at lines 132-133. +- crates/news-cli/src/replay.rs:114-119 calls tracker.percentile_rank(..., 7) for both relevance and importance. +- No local percentile_rank helpers remain in cycle.rs, stories.rs, or replay.rs. -Required fix: -- In scheduler/cycle.rs, call PercentileTracker::percentile(MetricKind::Relevance, ...) and PercentileTracker::percentile(MetricKind::Importance, ...) for each cluster, then map the returned Option or StoreError::InsufficientData to the appropriate percentile value, instead of computing batch-local percentiles. +F2 checklist re-execution: +- Stub/suppression grep: `grep -rn "todo!\|unimplemented!\|#\[allow(clippy::unwrap_used)\]\|#\[allow(clippy::expect_used)\]" crates` returned zero matches. +- Workspace lint table (Cargo.toml:17-24) denies dead_code, unused_must_use, unsafe_code, unwrap_used, and expect_used; no crate overrides or suppressions were found. +- cargo clippy --workspace --all-targets -- -D warnings: exit 0. +- cargo test --workspace: all tests pass. +- Gate math matches .omo/drafts/news-triage.md: + - Bypass lane: crates/news-server/src/gate.rs:248-258 checks importance_percentile >= bypass_importance_percentile (default 99.0 at gate.rs:66) OR cluster.source_count >= 2, with an independent bypass_daily_ceiling (default 4 at gate.rs:67). + - Notify threshold: gate.rs:263 uses relevance_percentile < notify_percentile (default 90.0 at gate.rs:64). + - Digest band: gate.rs:266 uses digest_floor_percentile <= relevance_percentile < notify_percentile (defaults 75.0 and 90.0 at gate.rs:65/64). + - Quiet hours: gate.rs:262 uses hour >= 22 || hour < 7 in America/Louisville. + - Normal token bucket is independent of bypass lane (bypass never touches budget.tokens; normal lane decrements it at gate.rs:221). -Next step: -- After the fix is merged, re-run this F2 review to verify the scheduler uses the trailing-7-day distribution and update this evidence file to APPROVE. +Non-blocking findings (not affecting F2 verdict): +- crates/news-store/src/percentile.rs:28-37 contains kind_from_str, currently unused but #[allow(dead_code)]; it is not a stub and does not affect runtime behavior. +- crates/news-server/src/notify/ntfy.rs:49 has #[allow(dead_code)] on NtfyPublisher; the struct is used in production (cycle.rs:84), and clippy is clean. +- Deterministic source UUID generation via Uuid::from_u128(hash) remains in crates/news-cli/src/replay.rs:203-212 and crates/news-server/src/bin_support.rs:162; functionally round-trips and acceptable for stable fixtures. + +Final verdict: APPROVE. The percentile-rank fix is correctly landed, the F2 checklist is clean, and the gate math matches the draft spec. diff --git a/.omo/evidence/f3-news-triage.txt b/.omo/evidence/f3-news-triage.txt index 6f07ebe..7c1daf3 100644 --- a/.omo/evidence/f3-news-triage.txt +++ b/.omo/evidence/f3-news-triage.txt @@ -1,181 +1,159 @@ F3 Final Verification - news-triage ==================================== -Reviewer: F3 manual end-to-end QA +Reviewer: F3 manual end-to-end QA (re-run after NaN/null relevance fix) Date: 2026-09-01 Workspace: /home/connor/docs/projects/news -Scratch environment: /tmp/opencode/news-triage-scratch Target evidence file: /home/connor/docs/projects/news/.omo/evidence/f3-news-triage.txt -Verdict: REJECT +Verdict: APPROVE -Reason for rejection: A real functional bug was discovered during end-to-end -verification. When a blocklisted source is present in the configuration, the -backend serializes NaN relevance values as JSON null in /api/stories. The -frontend expects `relevance: f64` and fails to deserialize the response, -rendering the entire story list unusable. This breaks the core user journey. - -The bug was worked around for testing by removing the blocklisted source from -the scratch configuration, but the underlying defect remains in the codebase -and must be fixed before release. +The previously rejecting defect (blocklist-vetoed stories serializing +"relevance":null and crashing the frontend decode) has been fixed and +verified live. Environment ----------- -- Container image reused: news-triage:test (built previously; `podman image exists news-triage:test` returned true). -- Host binary rebuilt during F3: `cargo build -p news-server --locked` succeeded. -- Mock ntfy server: http://127.0.0.1:31337 (Python http.server logging POSTs to /news-triage). -- Fixture server: http://127.0.0.1:31338 (Python http.server serving /tmp/opencode/news-triage-scratch/fixtures). -- UI proxy server: http://127.0.0.1:8080 (serves crates/news-web/dist and proxies /api to backend). -- Backend container: http://127.0.0.1:3001 (network_mode: host). -- Database: sqlite::memory: for dry-run tests; container uses mounted news.db. - -Test fixtures -------------- -- /tmp/opencode/news-triage-scratch/fixtures/source-a-rss.xml (RSS, recent-dated stories) -- /tmp/opencode/news-triage-scratch/fixtures/source-d-rss.xml (RSS) -- /tmp/opencode/news-triage-scratch/fixtures/source-b-sitemap.xml (news-sitemap) -- source-c-rss.xml (celebrity gossip) was created but removed from active configs - after the relevance/NaN bug was discovered. +- Fresh scratch directory: /tmp/opencode/news-triage-f3-final (removed after run) +- Host binaries rebuilt: `cargo build -p news-server -p news-cli --locked` +- Web dist rebuilt: `trunk build --release` in crates/news-web/ +- Backend port: 32100 +- Mock ntfy server: http://127.0.0.1:32101 (Python http.server logging POSTs) +- Fixture server: http://127.0.0.1:32102 (python3 -m http.server) +- UI proxy server: http://127.0.0.1:32103 (serves crates/news-web/dist and proxies /api) +- Database: /tmp/opencode/news-triage-f3-final/db/news.db (scratch, seeded) Configurations used ------------------- -1. /tmp/opencode/news-triage-scratch/config/config.toml - - Enabled sources: source-a, source-b, source-d (source-c removed). +1. /tmp/opencode/news-triage-f3-final/config/config.toml + - Enabled sources: source-a, source-b, source-c, source-d (source-c contains + blocklisted "celebrity"/"gossip" content). + - Default real sources explicitly disabled. - Used for containerized backend + UI verification. -2. /tmp/opencode/news-triage-scratch/config/config-dryrun.toml - - Default sources (Al Jazeera, BBC, AP) explicitly disabled. - - Only source-a enabled (http://127.0.0.1:31338/source-a-rss.xml). +2. /tmp/opencode/news-triage-f3-final/config/config-dryrun.toml + - Default sources disabled. + - Only source-a enabled (http://127.0.0.1:32102/source-a-rss.xml). - Used for `news-server --dry-run --once` verification. +Null-relevance fix verification +------------------------------- +Seeded the scratch DB with: +- A blocklisted raw item: "Celebrity gossip roundup for the week" (matches + topics.blocklist = ["celebrity", "gossip"]) +- A sibling raw item: "Major trade deal signed at summit" +- Corresponding story_clusters and cluster_members rows. + +Backend /api/stories response included the vetoed row with: + + "relevance": null + +and sibling rows still decoded correctly with finite relevance values. + +No frontend decode errors were observed in the browser console. + +UI browser verification +----------------------- +- Loaded http://localhost:32103/ in Chromium via Playwright. +- Full story list rendered (11 rows), including the vetoed blocklisted row. +- The vetoed row displayed "—" as the relevance placeholder. +- Screenshot saved: .omo/evidence/ui-f3-final.png +- Clicked the "Interested" feedback button on "Major trade deal signed at summit". +- Browser dev tools confirmed POST /api/feedback returned HTTP 200. + Backend API verification ------------------------ -All checks passed against the running container: +All checks passed against the running backend: -$ curl -s http://127.0.0.1:3001/healthz -ok +$ curl -i http://localhost:32100/healthz +HTTP/1.1 200 OK +{"db":"ok","status":"ok"} -$ curl -s http://127.0.0.1:3001/metrics | head -3 -# HELP news_uptime_seconds Process uptime -# TYPE news_uptime_seconds gauge -news_uptime_seconds 123 +$ curl -i http://localhost:32100/metrics +HTTP/1.1 200 OK +# HELP news_notify_total Total stories the gate decided to notify +... -$ curl -s http://127.0.0.1:3001/api/config -{"sources":[{"name":"Source A","url":"http://127.0.0.1:31338/source-a-rss.xml",...},...]} +$ curl -i http://localhost:32100/api/config +HTTP/1.1 200 OK +{"sources":[{"name":"Source A",... -$ curl -s http://127.0.0.1:3001/api/stories -[{"id":"...","title":"Major trade deal signed at summit",...},...] +$ curl -i http://localhost:32100/api/stories +HTTP/1.1 200 OK +{"stories":[{"cluster_id":"...","title":"Celebrity gossip roundup for the week","relevance":null,...},...]} -$ curl -s -X POST http://127.0.0.1:3001/api/feedback \ +$ curl -i -X POST http://localhost:32100/api/feedback \ -H 'Content-Type: application/json' \ - -d '{"story_id":"test-123","verdict":"interested"}' + -d '{"story_cluster_id":"","kind":"interested"}' +HTTP/1.1 200 OK {"status":"recorded"} Ntfy notification verification ------------------------------ -Mock ntfy log captured 3 bypass-lane POSTs when stories exceeded the bypass -importance threshold. Each request included: +Mock ntfy log captured 4 bypass-lane POSTs to /news-triage when stories +exceeded the bypass importance threshold. Each request included: - Title matching the story headline - Priority: 5 - Tags: newspaper - Authorization: Basic -Sample captured request (verbatim from mock-ntfy.log): +Sample captured request: -POST /news-triage HTTP/1.1 -Host: 127.0.0.1:31337 -Authorization: Basic bmV3cy10cmlhZ2U6bXktc2VjcmV0LWFwaS1rZXk= -Content-Type: application/json -Content-Length: ... - -{"title":"Major trade deal signed at summit","message":"...","priority":5,"tags":["newspaper"]} +POST /news-triage Title=Election officials certify final results Priority=5 Tags=newspaper Markdown=yes Click=... Actions=... Authorization=Basic bmV3cy10cmlhZ2U6bXktc2VjcmV0LWFwaS1rZXk= +BODY: The final vote count confirms the winner of the national election. This confirms the notification publisher correctly authenticates and formats -bypass notifications. - -UI browser verification ------------------------ -- Story list rendered at least one row. -- Clicked the "Interested" button on a story. -- Browser dev tools confirmed POST /api/feedback returned 200 with - {"status":"recorded"}. -- Screenshot saved: /home/connor/docs/projects/news/.omo/evidence/ui-interested.png -- After stopping the backend container and reloading the page, the UI showed - "Could not load stories" with an HTTP 502 from the proxy. -- Screenshot saved: /home/connor/docs/projects/news/.omo/evidence/ui-error.png +bypass notifications against the mock endpoint; no traffic reached production +ntfy.rcjohnstone.com. Dry-run verification -------------------- Command: -$ : > /tmp/opencode/news-triage-scratch/mock-ntfy.log -$ RUST_LOG=info \ - NEWS_DATABASE_URL=sqlite::memory: \ - NEWS_CONFIG_PATH=/tmp/opencode/news-triage-scratch/config/config-dryrun.toml \ - NTFY_URL=http://127.0.0.1:31337 \ +$ : > /tmp/opencode/news-triage-f3-final/logs/mock-ntfy-dryrun.log +$ NEWS_DATABASE_URL=sqlite::memory: \ + NEWS_CONFIG_PATH=/tmp/opencode/news-triage-f3-final/config/config-dryrun.toml \ + NTFY_URL=http://127.0.0.1:32101 \ timeout 30 ./target/debug/news-server --dry-run --once Result: - exit=0 -- /tmp/opencode/news-triage-scratch/mock-ntfy.log contained 0 entries. -- Only the fixture stories were processed (default real sources were disabled - in config): +- /tmp/opencode/news-triage-f3-final/logs/mock-ntfy-dryrun.log contained 0 entries. +- Only fixture stories were processed: -Major trade deal signed at summit 2.400 1.187 83.333 Digest Coastal storm forces evacuations 2.400 0.730 50.000 Suppress:BelowThreshold +Major trade deal signed at summit 2.400 1.187 83.333 Digest Election officials certify final results 2.400 0.689 16.667 Suppress:BelowThreshold -This confirms `--dry-run` does not emit ntfy notifications. +This confirms --dry-run makes no ntfy calls. Replay determinism verification ------------------------------- Command: -$ ./target/debug/news-cli replay crates/news-cli/tests/fixtures/sample-week > replay1b.out -$ ./target/debug/news-cli replay crates/news-cli/tests/fixtures/sample-week > replay2b.out -$ cmp replay1b.out replay2b.out && echo identical +$ ./target/debug/news-cli replay crates/news-cli/tests/fixtures/sample-week > replay1.out +$ ./target/debug/news-cli replay crates/news-cli/tests/fixtures/sample-week > replay2.out +$ cmp replay1.out replay2.out && echo identical identical -Result: byte-identical output across two replay runs. +Result: byte-identical output across two replay runs. The blocklisted fixture +item is shown with REL=-inf and decision Suppress:BelowThreshold, matching the +backend behavior exercised above. -Bug discovered: NaN relevance for blocklisted items ---------------------------------------------------- -When source-c (celebrity gossip) was enabled, the backend produced a story -whose title contained blocklist keywords. The relevance scorer returned -`f64::NEG_INFINITY` or `NaN` for the relevance field. The `/api/stories` -endpoint serialized this as JSON `null`. - -Frontend error (from browser console): - -could not decode response: invalid type: null, expected f64 - -This comes from: -- Frontend: crates/news-web/src/api.rs defines `StoryRow { relevance: f64 }`. -- Backend: crates/news-server/src/api/stories.rs returns the raw f64 value - without replacing NaN/Infinity. - -Impact: any configuration that includes a blocklisted source renders the -entire /api/stories response undecodable by the frontend. The UI shows a -blank or error state and the user cannot interact with stories at all. - -Workaround used for remaining tests: removed source-c from the scratch -config. This is NOT a fix; the code still has the defect. - -Additional observations +Code-level confirmation ----------------------- -- Default sources are always seeded as enabled by `SourceRepo::seed_default_sources()` - (crates/news-store/src/sources.rs). To run an offline test, the operator must - explicitly disable Al Jazeera, BBC, and AP in config. This is surprising but - documented behavior. -- Initial F3 dry-run attempts with an outdated host binary hung silently at - startup when configured with localhost fixture URLs. Rebuilding with - `cargo build -p news-server --locked` resolved the hang. +- crates/news-server/src/api/stories.rs line 151: + `relevance: relevance.is_finite().then_some(relevance)` +- crates/news-web/src/api.rs line 36: + `pub relevance: Option` +- crates/news-web/src/api.rs lines 211-231: + unit test `story_row_with_null_relevance_decodes` passes. Conclusion ---------- -The notification path, API surface, container health, and dry-run mode all -function as intended. UI interaction works under the workaround config. -However, the NaN/null relevance bug is a showstopper for the end-to-end user -experience whenever a blocklisted source is present. F3 therefore rejects the -release until the bug is fixed and re-verified. +The null-relevance bug that caused the frontend to blank the entire story list +is fixed end-to-end. All API endpoints respond correctly, the UI renders the +full list including vetoed rows with a placeholder, the feedback flow completes, +ntfy publishes reach the mock server with correct formatting and auth, replay +output is deterministic, and dry-run emits no notifications. -F3 Verdict: REJECT +F3 Verdict: APPROVE diff --git a/.omo/evidence/ui-f3-final.png b/.omo/evidence/ui-f3-final.png new file mode 100644 index 0000000000000000000000000000000000000000..9418872e8d293fac98d8d6d85d9ad3c4393c32ce GIT binary patch literal 169152 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͐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 E00Rp1jQ{`u literal 0 HcmV?d00001 diff --git a/.omo/plans/news-triage.md b/.omo/plans/news-triage.md index 0b14f4f..e0bb507 100644 --- a/.omo/plans/news-triage.md +++ b/.omo/plans/news-triage.md @@ -262,19 +262,19 @@ Your next move: run `$start-work news-triage` to begin execution, or ask for a h ## Final verification wave > Runs in parallel after ALL todos. ALL must APPROVE. Surface results and wait for the user's explicit okay before declaring complete. -- [ ] F1. Plan compliance audit +- [x] F1. Plan compliance audit What to verify: every todo 1-21 is checked, every "Must NOT do" clause was honored (grep the diff/repo for violations: no LLM/LiteLLM/llama.cpp references, no edits to `~/compose.yml`/`~/Caddyfile`/`~/data/ntfy/etc/server.yml`/`~/config/prometheus/prometheus.yml`, no article-body scraping code, no backend code serving `dist`), and every Scope-IN item from the plan's `## Scope` section has a corresponding implemented component. Tool + invocation: `grep -riE "liteLLM|llama.cpp|gpt-oss|gemma3" /home/connor/docs/projects/news/crates` expect zero matches; diff-style check that the 4 protected files' mtimes are unchanged from before implementation started; read `.omo/plans/news-triage.md` and count `- [x]` vs `- [ ]` across todos 1-21. Verdict: APPROVE only if all 21 todos checked, zero forbidden-string matches, zero protected-file mtime changes. -- [ ] F2. Code quality review +- [x] F2. Code quality review What to verify: read every file under `crates/*/src/`, `Dockerfile`, `.gitea/workflows/ci.yml`, `deploy/` line by line; confirm no stubs/TODOs/`unimplemented!()`/`todo!()` remain, no `unwrap()`/`expect()` outside test modules (workspace lint should already deny this — confirm the lint is not suppressed anywhere via `#[allow(clippy::unwrap_used)]`), and that the importance/relevance/gate math matches the formulas documented in the draft. Tool + invocation: `grep -rn "todo!\|unimplemented!\|#\[allow(clippy::unwrap_used)\]\|#\[allow(clippy::expect_used)\]" /home/connor/docs/projects/news/crates` expect zero matches; `cargo clippy --workspace --all-targets -- -D warnings` exit 0. Verdict: APPROVE only if zero stub/suppression matches and clippy is clean. -- [ ] F3. Real manual QA +- [x] F3. Real manual QA What to verify: the full stack actually runs end-to-end. Build the image, run it via `podman-compose` against a scratch compose file in `/tmp/opencode`, hit `/healthz`, `/metrics`, `/api/stories`, `/api/config`, `POST /api/feedback`, and load the web UI in a real browser via `/playwright`, exercising the feedback-button flow and confirming a real ntfy publish attempt is made (point `NTFY_*` env at a scratch/test ntfy topic or a mock, not the production `ntfy.rcjohnstone.com` topic). Tool + invocation: `curl -i http://localhost:3000/healthz`, `curl -i http://localhost:3000/metrics`, `/playwright` browser session against the served UI, `cargo run -p news-cli -- replay ` for a deterministic end-to-end check. Verdict: APPROVE only if every endpoint responds correctly, the UI renders and the feedback flow completes, and the replay harness produces sane, deterministic output. -- [ ] F4. Scope fidelity +- [x] F4. Scope fidelity What to verify: nothing beyond the plan's Scope IN was added (no extra dependencies not named in any todo, no extra API endpoints, no extra config keys), and nothing in Scope OUT was violated (re-check the 8 Scope-OUT bullets one by one against the actual code). Tool + invocation: `cargo tree --workspace -e normal` diffed against the dependency names actually referenced by todos 1-21 (flag any unexplained addition); manual read of `Cargo.toml` per crate. Verdict: APPROVE only if every dependency and endpoint traces back to a specific todo, and every Scope-OUT bullet is confirmed unviolated. diff --git a/.omo/run-continuation/ses_fa0c5b480ffefuEgw30UYjrGiU.json b/.omo/run-continuation/ses_fa0c5b480ffefuEgw30UYjrGiU.json new file mode 100644 index 0000000..38b0e20 --- /dev/null +++ b/.omo/run-continuation/ses_fa0c5b480ffefuEgw30UYjrGiU.json @@ -0,0 +1,10 @@ +{ + "sessionID": "ses_fa0c5b480ffefuEgw30UYjrGiU", + "updatedAt": "2026-09-01T23:15:40.191Z", + "sources": { + "background-task": { + "state": "idle", + "updatedAt": "2026-09-01T23:15:40.191Z" + } + } +} \ No newline at end of file diff --git a/.omo/run-continuation/ses_fa0c60672ffe6eRDOgX6y2S7rA.json b/.omo/run-continuation/ses_fa0c60672ffe6eRDOgX6y2S7rA.json new file mode 100644 index 0000000..1e6763d --- /dev/null +++ b/.omo/run-continuation/ses_fa0c60672ffe6eRDOgX6y2S7rA.json @@ -0,0 +1,10 @@ +{ + "sessionID": "ses_fa0c60672ffe6eRDOgX6y2S7rA", + "updatedAt": "2026-09-01T23:09:03.016Z", + "sources": { + "background-task": { + "state": "idle", + "updatedAt": "2026-09-01T23:09:03.016Z" + } + } +} \ No newline at end of file diff --git a/.omo/run-continuation/ses_fa68cd6a7ffey9dPiMrqx8nxlG.json b/.omo/run-continuation/ses_fa68cd6a7ffey9dPiMrqx8nxlG.json index 9d9a5eb..a17981d 100644 --- a/.omo/run-continuation/ses_fa68cd6a7ffey9dPiMrqx8nxlG.json +++ b/.omo/run-continuation/ses_fa68cd6a7ffey9dPiMrqx8nxlG.json @@ -1,10 +1,10 @@ { "sessionID": "ses_fa68cd6a7ffey9dPiMrqx8nxlG", - "updatedAt": "2026-09-01T22:52:34.671Z", + "updatedAt": "2026-09-02T01:22:03.249Z", "sources": { "background-task": { "state": "idle", - "updatedAt": "2026-09-01T22:52:34.671Z" + "updatedAt": "2026-09-02T01:22:03.249Z" } } } \ No newline at end of file diff --git a/.omo/start-work/ledger.jsonl b/.omo/start-work/ledger.jsonl index fc0f99a..eb74c54 100644 --- a/.omo/start-work/ledger.jsonl +++ b/.omo/start-work/ledger.jsonl @@ -21,3 +21,14 @@ {"event":"task-completed","plan":".omo/plans/news-triage.md","task":"19b","session_id":"ses_fa15bdb2fffeH06NS8ddqULaf0","commands":["cd crates/news-web && trunk build --release","cargo fmt --all --check","cargo clippy --workspace --all-targets -- -D warnings","cargo test --workspace --no-fail-fast","grep for absolute API URLs in news-web/src (none found)"],"artifact":".omo/evidence/task-19-news-triage.txt + task-19-news-triage.png + task-19-news-triage-failure.png","adversarial_classes":{"probed":["misleading_success_output: independently re-ran trunk build (exit 0, 537081-byte wasm, under 1.8MB budget), fmt, clippy, and the full workspace suite (87 green); verified evidence screenshots exist on disk and no absolute URLs in frontend source","runnable_surface: playwright QA evidence covers story render, feedback 200 round-trip, and backend-down error state"],"not_applicable":["malformed_input: UI consumes only typed JSON from our own endpoints"]},"cleanup":"none required","note":"root package.json added mirroring runway layout (Tailwind v4 + playwright dev deps)"} {"event":"task-completed","plan":".omo/plans/news-triage.md","task":"20","session_id":"ses_fa1353850ffefFoVW4C2ZnlDaI","commands":["podman run --rm news-triage:test news-server --version","podman run --rm news-triage:test ls /srv/dist","cargo fmt --all --check","cargo clippy --workspace --all-targets -- -D warnings","cargo test --workspace --no-fail-fast"],"artifact":".omo/evidence/task-20-news-triage.txt","adversarial_classes":{"probed":["misleading_success_output: independently re-ran podman smoke (news-server 0.1.0, exit 0), container ls /srv/dist (index.html+wasm+js+css), fmt, clippy, full workspace suite (89 green, +2 NEWS_DATABASE_URL parsing tests)","side_effects: runtime stage purity mirrored from runway (only ca-certificates+tzdata; no Node/npm/Trunk/Rust in final image)"],"not_applicable":["malformed_input: NEWS_DATABASE_URL parsing covered by unit tests incl. bare-path passthrough"]},"cleanup":"temp 2MB wasm inflation fully reverted; wasm back to 537081 bytes","followup":"NEWS_DATABASE_URL is now the primary env source (sqlite:///abs/path form), NEWS_DB_PATH fallback kept for dev"} {"event":"task-completed","plan":".omo/plans/news-triage.md","task":"21","session_id":"ses_fa126fcffffeYJpjQhdFoxlwVY","commands":["test -f deploy/README.md + greps (ntfy access/internal/prometheus.yml)","podman-compose -f /tmp/opencode/compose.yml config","stat protected files before/after"],"artifact":".omo/evidence/task-21-news-triage.txt","adversarial_classes":{"probed":["misleading_success_output: independently re-ran acceptance greps (PASS) and podman-compose config on scratch copy (exit 0); protected-file mtimes all predate work window","side_effects: caddy validate required sudo only for /var/log/caddy perms, not syntax; subagent used sudo validate + non-root adapt as parse proof"],"not_applicable":["malformed_input: docs-only todo"]},"cleanup":"scratch copies remain in /tmp/opencode (ephemeral dir)","followup":"README has 8 setup steps vs runway's 6 (no signing key; adds config creation, ntfy ACL, prometheus); config example referenced from config.rs since no standalone example ships"} +{"event": "review-verdict", "plan": ".omo/plans/news-triage.md", "task": "F1", "session_id": "ses_fa11f377effeEvI7EW84KPdlnq", "verdict": "APPROVE", "artifact": ".omo/evidence/f1-news-triage.txt", "note": "plan compliance audit; verdict stands per plan rule (subsequent fixes did not touch the audited surface)", "adversarial_classes": {"probed": ["misleading_success_output: verdict evidence read and cross-checked by orchestrator before acceptance"]}, "cleanup": "none"} +{"event": "review-verdict", "plan": ".omo/plans/news-triage.md", "task": "F2", "session_id": "ses_fa11ed7fbffeaJBe8ZaZpPm7Yb", "verdict": "REJECT", "artifact": ".omo/evidence/f2-news-triage.txt", "note": "batch-local percentile_rank in cycle.rs ranked against current poll batch only; required fix: PercentileTracker::percentile_rank (trailing 7d) used by cycle/stories/replay; reviewer timed out after delivering partial evidence containing full verdict", "adversarial_classes": {"probed": ["misleading_success_output: orchestrator independently read cycle.rs:141-146/207-215 confirming the batch-local helper before accepting verdict"]}, "cleanup": "none"} +{"event": "review-verdict", "plan": ".omo/plans/news-triage.md", "task": "F3", "session_id": "ses_fa11e5f84ffe9yfwJq2szYJcYj", "verdict": "REJECT", "artifact": ".omo/evidence/f3-news-triage.txt", "note": "blocklist veto NEG_INFINITY serialized as JSON null; news-web relevance:f64 decode failure blanked entire story list; all other QA passed (endpoints, mock-ntfy publish proof, feedback 200, replay determinism, dry-run isolation)", "adversarial_classes": {"probed": ["runnable_surface: reviewer exercised real server + browser + mock ntfy, not just code reads"]}, "cleanup": "none"} +{"event": "review-verdict", "plan": ".omo/plans/news-triage.md", "task": "F4", "session_id": "ses_fa11e06ebffejux5OpskmbyLUF", "verdict": "APPROVE", "artifact": ".omo/evidence/f4-news-triage.txt", "note": "scope fidelity; verdict stands", "adversarial_classes": {"probed": ["misleading_success_output: evidence read and cross-checked by orchestrator"]}, "cleanup": "none"} +{"event": "task-completed", "plan": ".omo/plans/news-triage.md", "task": "fix-f2f3", "session_id": "ses_fa0f22fcaffelGhy6E2TAbA6IS", "commands": ["grep percentile_rank in cycle.rs/percentile.rs/stories.rs/replay.rs", "grep Option in stories.rs + news-web/api.rs", "git log + git show 676a0b7 --stat", "cargo clippy --workspace --all-targets -- -D warnings", "cargo test --workspace --no-fail-fast"], "artifact": ".omo/evidence/fix-f2f3-news-triage.txt", "note": "fixes verified in tree: trailing-7d percentile_rank in news-store used by cycle/stories/replay (cold start 0.0); relevance Option at API boundary via is_finite().then_some(); frontend Option + decode regression test; 97/97 orchestrator-verified. Subagent's 'already present in initial commit' claim was false - fixes were committed mid-run by user auto-commit (676a0b7 'Updating', 4242373); orchestrator confirmed actual code state directly.", "adversarial_classes": {"probed": ["misleading_success_output: rejected subagent self-report, verified via git history + direct greps + independent test run"], "not_applicable": ["malformed_input"]}, "cleanup": "none"} +{"event": "task-completed", "plan": ".omo/plans/news-triage.md", "task": "ci-fix", "session_id": "orchestrator-direct", "commands": ["cargo machete", "cargo deny check", "cargo clippy --workspace --all-targets -- -D warnings", "cargo test --workspace --no-fail-fast"], "artifact": "deny.toml + crates/{news-core,news-ingest,news-store,news-cli}/Cargo.toml + workspace Cargo.toml", "note": "removed 6 unused deps flagged by machete (thiserror/news-core, serde/news-ingest, serde/news-store, chrono-tz+sqlx+thiserror/news-cli); prometheus 0.13->0.14 fixes RUSTSEC-2024-0437 (protobuf); deny.toml allow-list +CC0-1.0/CDLA-Permissive-2.0/BSL-1.0 (non-substitutable transitive deps: base16/leptos, webpki-roots/reqwest, xxhash-rust/leptos); advisories ignore RUSTSEC-2024-0436 paste + RUSTSEC-2026-0173 proc-macro-error2 (leptos-pinned compile-time proc-macros, no upgrade path). Verified: machete clean, deny all-ok exit 0, clippy exit 0, 97/97 tests. Uncommitted - user commits.", "adversarial_classes": {"probed": ["misleading_success_output: full test suite green proves removed deps genuinely unused; deny re-run after edits shows all-ok not just locally cached pass"]}, "cleanup": "none"} +{"event": "plan-completed", "plan": ".omo/plans/news-triage.md", "note": "user explicitly authorized marking complete while F2/F3 re-run reviewers were still in flight (F2 bg_4cba0920/ses_fa0c60672ffe6eRDOgX6y2S7rA, F3 bg_cefbb615/ses_fa0c5b480ffefuEgw30UYjrGiU); F2/F3 checkboxes marked per that instruction and final verdicts will be appended when reviewers land. State at completion: F1/F4 APPROVE; both REJECT fixes verified in tree by orchestrator; 97/97 tests, clippy exit 0, cargo machete clean, cargo deny all-ok; CI fixes (unused deps, prometheus 0.14, deny policy) uncommitted - user commits.", "sessions": {"F1": "ses_fa11f377effeEvI7EW84KPdlnq", "F2": "ses_fa11ed7fbffeaJBe8ZaZpPm7Yb", "F3": "ses_fa11e5f84ffe9yfwJq2szYJcYj", "F4": "ses_fa11e06ebffejux5OpskmbyLUF", "fix": "ses_fa0f22fcaffelGhy6E2TAbA6IS"}, "adversarial_classes": {"probed": ["misleading_success_output: every subagent claim independently re-verified by orchestrator across all 21 todos + fix + CI (gates re-run, live surfaces exercised, git history inspected)"]}, "cleanup": "F2/F3 re-run verdicts pending append on arrival"} +{"event": "review-verdict", "plan": ".omo/plans/news-triage.md", "task": "F2-rerun", "session_id": "ses_fa0c60672ffe6eRDOgX6y2S7rA", "verdict": "APPROVE", "artifact": ".omo/evidence/f2-news-triage.txt", "note": "percentile fix verified: PercentileTracker::percentile_rank (percentile.rs:108-137, trailing window, InsufficientData on empty) called from cycle.rs:142-154, stories.rs:269-280, replay.rs:114-119; no local helpers remain; stub/suppression grep zero matches; clippy exit 0; tests pass; gate math matches draft (bypass p99 OR source_count>=2, notify p90, digest [75,90), quiet 22-07)", "adversarial_classes": {"probed": ["misleading_success_output: reviewer independently re-ran grep/clippy/tests and read fix sites line-by-line"]}, "cleanup": "none"} +{"event": "review-verdict", "plan": ".omo/plans/news-triage.md", "task": "F3-rerun", "session_id": "ses_fa0c5b480ffefuEgw30UYjrGiU", "verdict": "APPROVE", "artifact": ".omo/evidence/f3-news-triage.txt + ui-f3-final.png", "note": "null-relevance fix verified LIVE: seeded blocklisted item returns relevance:null while siblings decode; UI renders full list with em-dash placeholder, no console errors; feedback POST 200; all endpoints correct; mock ntfy captured 4 bypass POSTs (Priority 5, newspaper tag, Basic auth), zero production traffic; replay byte-identical x2; dry-run made no ntfy call", "adversarial_classes": {"probed": ["runnable_surface: real server + real browser + mock ntfy + CLI replay, not code reads"]}, "cleanup": "reviewer killed all spawned processes and removed scratch dir /tmp/opencode/news-triage-f3-final"} +{"event": "plan-verified", "plan": ".omo/plans/news-triage.md", "note": "all four final-wave reviewers now APPROVE (F1 compliance, F2 code quality, F3 live QA, F4 scope fidelity); the completion the user authorized while re-runs were in flight is retroactively fully verified. Remaining handoff: CI fixes (4 crate manifests, workspace Cargo.toml, Cargo.lock, deny.toml) uncommitted - user commits."} +{"event": "task-completed", "plan": ".omo/plans/news-triage.md", "task": "ci-image", "session_id": "orchestrator-direct", "commands": ["read runway/.gitea/workflows/release.yml (mirror reference)", "python yaml.safe_load .gitea/workflows/release.yml", "grep NEWS_IMAGE deploy/news-update"], "artifact": ".gitea/workflows/release.yml", "note": "user noticed CI never builds an image; deploy/news-update pulls git.rcjohnstone.com/connor/news:latest ('the image is whatever CI pushed') but no workflow built or pushed it - broken chain. Added release.yml mirroring runway's exactly: on push to main, buildx + login (vars.REGISTRY/vars.USERNAME/secrets.DOCKER_PASSWORD) + build-push ./Dockerfile, tags latest+github.sha, gha cache. Requires REGISTRY/USERNAME vars and DOCKER_PASSWORD secret to exist for the news repo (inherited if org-scoped like runway's). Uncommitted - user commits.", "adversarial_classes": {"probed": ["misleading_success_output: yaml parsed, trigger/steps/tags asserted, Dockerfile context path verified present, tag matched against news-update default IMAGE"], "not_applicable": ["runnable_surface: workflow runs only on push to main; local podman build already proven in todo 20 verification"]}, "cleanup": "none"} diff --git a/.playwright-mcp/console-2026-09-01T23-13-50-940Z.log b/.playwright-mcp/console-2026-09-01T23-13-50-940Z.log new file mode 100644 index 0000000..615a1d4 --- /dev/null +++ b/.playwright-mcp/console-2026-09-01T23-13-50-940Z.log @@ -0,0 +1 @@ +[ 236ms] [WARNING] The `integrity` attribute is currently ignored for preload destinations that do not support subresource integrity. See https://crbug.com/981419 for more information @ http://localhost:32103/:19 diff --git a/.playwright-mcp/page-2026-09-01T23-13-51-462Z.yml b/.playwright-mcp/page-2026-09-01T23-13-51-462Z.yml new file mode 100644 index 0000000..10fa1cf --- /dev/null +++ b/.playwright-mcp/page-2026-09-01T23-13-51-462Z.yml @@ -0,0 +1,13 @@ +- generic [ref=e2]: + - navigation [ref=e3]: + - generic [ref=e4]: + - generic [ref=e5]: News Triage + - generic [ref=e6]: + - button "Stories" [ref=e7] + - button "Config" [ref=e8] + - main [ref=e9]: + - generic [ref=e10]: + - generic [ref=e11]: + - heading "Stories" [level=1] [ref=e12] + - paragraph [ref=e13]: Recent story clusters with server-side scores and notification decisions. + - generic [ref=e14]: Loading stories... \ No newline at end of file diff --git a/.playwright-mcp/page-2026-09-01T23-14-06-006Z.yml b/.playwright-mcp/page-2026-09-01T23-14-06-006Z.yml new file mode 100644 index 0000000..9605b89 --- /dev/null +++ b/.playwright-mcp/page-2026-09-01T23-14-06-006Z.yml @@ -0,0 +1,234 @@ +- generic [ref=e2]: + - navigation [ref=e3]: + - generic [ref=e4]: + - generic [ref=e5]: News Triage + - generic [ref=e6]: + - button "Stories" [ref=e7] + - button "Config" [ref=e8] + - main [ref=e9]: + - generic [ref=e10]: + - generic [ref=e11]: + - heading "Stories" [level=1] [ref=e12] + - paragraph [ref=e13]: Recent story clusters with server-side scores and notification decisions. + - table [ref=e17]: + - rowgroup [ref=e18]: + - row [ref=e19]: + - columnheader "Story" [ref=e20] + - columnheader "Sources" [ref=e21] + - columnheader "Importance" [ref=e22] + - columnheader "Relevance" [ref=e23] + - columnheader "Decision" [ref=e24] + - columnheader "Feedback" [ref=e25] + - rowgroup [ref=e26]: + - row [ref=e27]: + - cell "Celebrity gossip roundup for the week 2026-09-01 23:13:18.783161" [ref=e28]: + - link "Celebrity gossip roundup for the week" [ref=e29] [cursor=pointer]: + - /url: https://example.test/source-c/gossip + - generic [ref=e30]: 2026-09-01 23:13:18.783161 + - cell "1" [ref=e31] + - cell "2.40(26.47)" [ref=e33]: + - text: "2.40" + - generic [ref=e34]: (26.47) + - cell "—(2.94)" [ref=e35]: + - text: — + - generic [ref=e36]: (2.94) + - cell "Suppress BelowThreshold" [ref=e37]: + - generic [ref=e38]: Suppress + - generic [ref=e39]: BelowThreshold + - cell [ref=e40]: + - generic [ref=e41]: + - button "Interested" [ref=e42] + - button "Not interested" [ref=e43] + - row [ref=e215]: + - cell "Major trade deal signed at summit 2026-09-01 23:13:18.783161" [ref=e45]: + - link "Major trade deal signed at summit" [ref=e46] [cursor=pointer]: + - /url: https://example.test/source-a/trade + - generic [ref=e47]: 2026-09-01 23:13:18.783161 + - cell "1" [ref=e48] + - cell "2.40(26.47)" [ref=e50]: + - text: "2.40" + - generic [ref=e51]: (26.47) + - cell "2.34(100.00)" [ref=e52]: + - text: "2.34" + - generic [ref=e53]: (100.00) + - cell "Notify" [ref=e54] + - cell "Interested Not interested Saved" [ref=e216]: + - generic [ref=e57]: + - button "Interested" [ref=e58] + - button "Not interested" [ref=e59] + - generic [ref=e217]: Saved + - row [ref=e60]: + - cell "Election winners confirmed by officials 2026-09-01 17:35:00" [ref=e61]: + - link "Election winners confirmed by officials" [ref=e62] [cursor=pointer]: + - /url: https://example.test/source-b/election-certified + - generic [ref=e63]: 2026-09-01 17:35:00 + - cell "1" [ref=e64] + - cell "2.40(26.47)" [ref=e66]: + - text: "2.40" + - generic [ref=e67]: (26.47) + - cell "1.67(100.00)" [ref=e68]: + - text: "1.67" + - generic [ref=e69]: (100.00) + - cell "Notify" [ref=e70] + - cell [ref=e72]: + - generic [ref=e73]: + - button "Interested" [ref=e74] + - button "Not interested" [ref=e75] + - row [ref=e76]: + - cell "Election officials certify final results 2026-09-01 17:30:00· bypass" [ref=e77]: + - link "Election officials certify final results" [ref=e78] [cursor=pointer]: + - /url: https://example.test/source-a/election + - generic [ref=e79]: + - text: 2026-09-01 17:30:00 + - generic [ref=e80]: · bypass + - cell "3" [ref=e81] + - cell "2.65(91.18)" [ref=e83]: + - text: "2.65" + - generic [ref=e84]: (91.18) + - cell "1.62(100.00)" [ref=e85]: + - text: "1.62" + - generic [ref=e86]: (100.00) + - cell "Suppress AlreadyNotified" [ref=e87]: + - generic [ref=e88]: Suppress + - generic [ref=e89]: AlreadyNotified + - cell [ref=e90]: + - generic [ref=e91]: + - button "Interested" [ref=e92] + - button "Not interested" [ref=e93] + - row [ref=e94]: + - cell "Storm shutters coast ahead of landfall 2026-09-01 17:25:00" [ref=e95]: + - link "Storm shutters coast ahead of landfall" [ref=e96] [cursor=pointer]: + - /url: https://example.test/source-b/coastal-storm + - generic [ref=e97]: 2026-09-01 17:25:00 + - cell "1" [ref=e98] + - cell "2.40(26.47)" [ref=e100]: + - text: "2.40" + - generic [ref=e101]: (26.47) + - cell "0.95(23.53)" [ref=e102]: + - text: "0.95" + - generic [ref=e103]: (23.53) + - cell "Suppress BelowThreshold" [ref=e104]: + - generic [ref=e105]: Suppress + - generic [ref=e106]: BelowThreshold + - cell [ref=e107]: + - generic [ref=e108]: + - button "Interested" [ref=e109] + - button "Not interested" [ref=e110] + - row [ref=e111]: + - cell "Coastal storm forces evacuations 2026-09-01 17:20:00· bypass" [ref=e112]: + - link "Coastal storm forces evacuations" [ref=e113] [cursor=pointer]: + - /url: https://example.test/source-a/storm + - generic [ref=e114]: + - text: 2026-09-01 17:20:00 + - generic [ref=e115]: · bypass + - cell "3" [ref=e116] + - cell "2.65(91.18)" [ref=e118]: + - text: "2.65" + - generic [ref=e119]: (91.18) + - cell "1.02(29.41)" [ref=e120]: + - text: "1.02" + - generic [ref=e121]: (29.41) + - cell "Suppress AlreadyNotified" [ref=e122]: + - generic [ref=e123]: Suppress + - generic [ref=e124]: AlreadyNotified + - cell [ref=e125]: + - generic [ref=e126]: + - button "Interested" [ref=e127] + - button "Not interested" [ref=e128] + - row [ref=e129]: + - cell "Storm watch issued for mountain region 2026-09-01 17:18:00· bypass" [ref=e130]: + - link "Storm watch issued for mountain region" [ref=e131] [cursor=pointer]: + - /url: https://example.test/source-c/mountain-storm + - generic [ref=e132]: + - text: 2026-09-01 17:18:00 + - generic [ref=e133]: · bypass + - cell "2" [ref=e134] + - cell "2.57(67.65)" [ref=e136]: + - text: "2.57" + - generic [ref=e137]: (67.65) + - cell "0.96(26.47)" [ref=e138]: + - text: "0.96" + - generic [ref=e139]: (26.47) + - cell "Suppress AlreadyNotified" [ref=e140]: + - generic [ref=e141]: Suppress + - generic [ref=e142]: AlreadyNotified + - cell [ref=e143]: + - generic [ref=e144]: + - button "Interested" [ref=e145] + - button "Not interested" [ref=e146] + - row [ref=e147]: + - cell "Celebrity gossip roundup for the week 2026-09-01 17:12:00" [ref=e148]: + - link "Celebrity gossip roundup for the week" [ref=e149] [cursor=pointer]: + - /url: https://example.test/source-c/gossip + - generic [ref=e150]: 2026-09-01 17:12:00 + - cell "1" [ref=e151] + - cell "2.40(26.47)" [ref=e153]: + - text: "2.40" + - generic [ref=e154]: (26.47) + - cell "—(2.94)" [ref=e155]: + - text: — + - generic [ref=e156]: (2.94) + - cell "Suppress BelowThreshold" [ref=e157]: + - generic [ref=e158]: Suppress + - generic [ref=e159]: BelowThreshold + - cell [ref=e160]: + - generic [ref=e161]: + - button "Interested" [ref=e162] + - button "Not interested" [ref=e163] + - row [ref=e164]: + - cell "Local bakery wins pie contest 2026-09-01 17:10:00" [ref=e165]: + - link "Local bakery wins pie contest" [ref=e166] [cursor=pointer]: + - /url: https://example.test/source-c/bakery + - generic [ref=e167]: 2026-09-01 17:10:00 + - cell "2" [ref=e168] + - cell "2.57(67.65)" [ref=e170]: + - text: "2.57" + - generic [ref=e171]: (67.65) + - cell "0.00(11.76)" [ref=e172]: + - text: "0.00" + - generic [ref=e173]: (11.76) + - cell "Suppress BelowThreshold" [ref=e174]: + - generic [ref=e175]: Suppress + - generic [ref=e176]: BelowThreshold + - cell [ref=e177]: + - generic [ref=e178]: + - button "Interested" [ref=e179] + - button "Not interested" [ref=e180] + - row [ref=e181]: + - cell "Global summit yields historic trade pact 2026-09-01 17:05:00" [ref=e182]: + - link "Global summit yields historic trade pact" [ref=e183] [cursor=pointer]: + - /url: https://example.test/source-b/summit-trade + - generic [ref=e184]: 2026-09-01 17:05:00 + - cell "1" [ref=e185] + - cell "2.40(26.47)" [ref=e187]: + - text: "2.40" + - generic [ref=e188]: (26.47) + - cell "2.52(100.00)" [ref=e189]: + - text: "2.52" + - generic [ref=e190]: (100.00) + - cell "Notify" [ref=e191] + - cell [ref=e193]: + - generic [ref=e194]: + - button "Interested" [ref=e195] + - button "Not interested" [ref=e196] + - row [ref=e197]: + - cell "Major trade deal signed at summit 2026-09-01 17:00:00· bypass" [ref=e198]: + - link "Major trade deal signed at summit" [ref=e199] [cursor=pointer]: + - /url: https://example.test/source-a/trade-deal + - generic [ref=e200]: + - text: 2026-09-01 17:00:00 + - generic [ref=e201]: · bypass + - cell "3" [ref=e202] + - cell "2.65(91.18)" [ref=e204]: + - text: "2.65" + - generic [ref=e205]: (91.18) + - cell "2.18(100.00)" [ref=e206]: + - text: "2.18" + - generic [ref=e207]: (100.00) + - cell "Suppress AlreadyNotified" [ref=e208]: + - generic [ref=e209]: Suppress + - generic [ref=e210]: AlreadyNotified + - cell [ref=e211]: + - generic [ref=e212]: + - button "Interested" [ref=e213] + - button "Not interested" [ref=e214] \ No newline at end of file diff --git a/.playwright-mcp/ui-snapshot.yml b/.playwright-mcp/ui-snapshot.yml new file mode 100644 index 0000000..34d13ec --- /dev/null +++ b/.playwright-mcp/ui-snapshot.yml @@ -0,0 +1,233 @@ +- generic [ref=e2]: + - navigation [ref=e3]: + - generic [ref=e4]: + - generic [ref=e5]: News Triage + - generic [ref=e6]: + - button "Stories" [ref=e7] + - button "Config" [ref=e8] + - main [ref=e9]: + - generic [ref=e10]: + - generic [ref=e11]: + - heading "Stories" [level=1] [ref=e12] + - paragraph [ref=e13]: Recent story clusters with server-side scores and notification decisions. + - table [ref=e17]: + - rowgroup [ref=e18]: + - row [ref=e19]: + - columnheader "Story" [ref=e20] + - columnheader "Sources" [ref=e21] + - columnheader "Importance" [ref=e22] + - columnheader "Relevance" [ref=e23] + - columnheader "Decision" [ref=e24] + - columnheader "Feedback" [ref=e25] + - rowgroup [ref=e26]: + - row [ref=e27]: + - cell "Celebrity gossip roundup for the week 2026-09-01 23:13:18.783161" [ref=e28]: + - link "Celebrity gossip roundup for the week" [ref=e29] [cursor=pointer]: + - /url: https://example.test/source-c/gossip + - generic [ref=e30]: 2026-09-01 23:13:18.783161 + - cell "1" [ref=e31] + - cell "2.40(26.47)" [ref=e33]: + - text: "2.40" + - generic [ref=e34]: (26.47) + - cell "—(2.94)" [ref=e35]: + - text: — + - generic [ref=e36]: (2.94) + - cell "Suppress BelowThreshold" [ref=e37]: + - generic [ref=e38]: Suppress + - generic [ref=e39]: BelowThreshold + - cell [ref=e40]: + - generic [ref=e41]: + - button "Interested" [ref=e42] + - button "Not interested" [ref=e43] + - row [ref=e44]: + - cell "Major trade deal signed at summit 2026-09-01 23:13:18.783161" [ref=e45]: + - link "Major trade deal signed at summit" [ref=e46] [cursor=pointer]: + - /url: https://example.test/source-a/trade + - generic [ref=e47]: 2026-09-01 23:13:18.783161 + - cell "1" [ref=e48] + - cell "2.40(26.47)" [ref=e50]: + - text: "2.40" + - generic [ref=e51]: (26.47) + - cell "2.34(100.00)" [ref=e52]: + - text: "2.34" + - generic [ref=e53]: (100.00) + - cell "Notify" [ref=e54] + - cell [ref=e56]: + - generic [ref=e57]: + - button "Interested" [ref=e58] + - button "Not interested" [ref=e59] + - row [ref=e60]: + - cell "Election winners confirmed by officials 2026-09-01 17:35:00" [ref=e61]: + - link "Election winners confirmed by officials" [ref=e62] [cursor=pointer]: + - /url: https://example.test/source-b/election-certified + - generic [ref=e63]: 2026-09-01 17:35:00 + - cell "1" [ref=e64] + - cell "2.40(26.47)" [ref=e66]: + - text: "2.40" + - generic [ref=e67]: (26.47) + - cell "1.67(100.00)" [ref=e68]: + - text: "1.67" + - generic [ref=e69]: (100.00) + - cell "Notify" [ref=e70] + - cell [ref=e72]: + - generic [ref=e73]: + - button "Interested" [ref=e74] + - button "Not interested" [ref=e75] + - row [ref=e76]: + - cell "Election officials certify final results 2026-09-01 17:30:00· bypass" [ref=e77]: + - link "Election officials certify final results" [ref=e78] [cursor=pointer]: + - /url: https://example.test/source-a/election + - generic [ref=e79]: + - text: 2026-09-01 17:30:00 + - generic [ref=e80]: · bypass + - cell "3" [ref=e81] + - cell "2.65(91.18)" [ref=e83]: + - text: "2.65" + - generic [ref=e84]: (91.18) + - cell "1.62(100.00)" [ref=e85]: + - text: "1.62" + - generic [ref=e86]: (100.00) + - cell "Suppress AlreadyNotified" [ref=e87]: + - generic [ref=e88]: Suppress + - generic [ref=e89]: AlreadyNotified + - cell [ref=e90]: + - generic [ref=e91]: + - button "Interested" [ref=e92] + - button "Not interested" [ref=e93] + - row [ref=e94]: + - cell "Storm shutters coast ahead of landfall 2026-09-01 17:25:00" [ref=e95]: + - link "Storm shutters coast ahead of landfall" [ref=e96] [cursor=pointer]: + - /url: https://example.test/source-b/coastal-storm + - generic [ref=e97]: 2026-09-01 17:25:00 + - cell "1" [ref=e98] + - cell "2.40(26.47)" [ref=e100]: + - text: "2.40" + - generic [ref=e101]: (26.47) + - cell "0.95(23.53)" [ref=e102]: + - text: "0.95" + - generic [ref=e103]: (23.53) + - cell "Suppress BelowThreshold" [ref=e104]: + - generic [ref=e105]: Suppress + - generic [ref=e106]: BelowThreshold + - cell [ref=e107]: + - generic [ref=e108]: + - button "Interested" [ref=e109] + - button "Not interested" [ref=e110] + - row [ref=e111]: + - cell "Coastal storm forces evacuations 2026-09-01 17:20:00· bypass" [ref=e112]: + - link "Coastal storm forces evacuations" [ref=e113] [cursor=pointer]: + - /url: https://example.test/source-a/storm + - generic [ref=e114]: + - text: 2026-09-01 17:20:00 + - generic [ref=e115]: · bypass + - cell "3" [ref=e116] + - cell "2.65(91.18)" [ref=e118]: + - text: "2.65" + - generic [ref=e119]: (91.18) + - cell "1.02(29.41)" [ref=e120]: + - text: "1.02" + - generic [ref=e121]: (29.41) + - cell "Suppress AlreadyNotified" [ref=e122]: + - generic [ref=e123]: Suppress + - generic [ref=e124]: AlreadyNotified + - cell [ref=e125]: + - generic [ref=e126]: + - button "Interested" [ref=e127] + - button "Not interested" [ref=e128] + - row [ref=e129]: + - cell "Storm watch issued for mountain region 2026-09-01 17:18:00· bypass" [ref=e130]: + - link "Storm watch issued for mountain region" [ref=e131] [cursor=pointer]: + - /url: https://example.test/source-c/mountain-storm + - generic [ref=e132]: + - text: 2026-09-01 17:18:00 + - generic [ref=e133]: · bypass + - cell "2" [ref=e134] + - cell "2.57(67.65)" [ref=e136]: + - text: "2.57" + - generic [ref=e137]: (67.65) + - cell "0.96(26.47)" [ref=e138]: + - text: "0.96" + - generic [ref=e139]: (26.47) + - cell "Suppress AlreadyNotified" [ref=e140]: + - generic [ref=e141]: Suppress + - generic [ref=e142]: AlreadyNotified + - cell [ref=e143]: + - generic [ref=e144]: + - button "Interested" [ref=e145] + - button "Not interested" [ref=e146] + - row [ref=e147]: + - cell "Celebrity gossip roundup for the week 2026-09-01 17:12:00" [ref=e148]: + - link "Celebrity gossip roundup for the week" [ref=e149] [cursor=pointer]: + - /url: https://example.test/source-c/gossip + - generic [ref=e150]: 2026-09-01 17:12:00 + - cell "1" [ref=e151] + - cell "2.40(26.47)" [ref=e153]: + - text: "2.40" + - generic [ref=e154]: (26.47) + - cell "—(2.94)" [ref=e155]: + - text: — + - generic [ref=e156]: (2.94) + - cell "Suppress BelowThreshold" [ref=e157]: + - generic [ref=e158]: Suppress + - generic [ref=e159]: BelowThreshold + - cell [ref=e160]: + - generic [ref=e161]: + - button "Interested" [ref=e162] + - button "Not interested" [ref=e163] + - row [ref=e164]: + - cell "Local bakery wins pie contest 2026-09-01 17:10:00" [ref=e165]: + - link "Local bakery wins pie contest" [ref=e166] [cursor=pointer]: + - /url: https://example.test/source-c/bakery + - generic [ref=e167]: 2026-09-01 17:10:00 + - cell "2" [ref=e168] + - cell "2.57(67.65)" [ref=e170]: + - text: "2.57" + - generic [ref=e171]: (67.65) + - cell "0.00(11.76)" [ref=e172]: + - text: "0.00" + - generic [ref=e173]: (11.76) + - cell "Suppress BelowThreshold" [ref=e174]: + - generic [ref=e175]: Suppress + - generic [ref=e176]: BelowThreshold + - cell [ref=e177]: + - generic [ref=e178]: + - button "Interested" [ref=e179] + - button "Not interested" [ref=e180] + - row [ref=e181]: + - cell "Global summit yields historic trade pact 2026-09-01 17:05:00" [ref=e182]: + - link "Global summit yields historic trade pact" [ref=e183] [cursor=pointer]: + - /url: https://example.test/source-b/summit-trade + - generic [ref=e184]: 2026-09-01 17:05:00 + - cell "1" [ref=e185] + - cell "2.40(26.47)" [ref=e187]: + - text: "2.40" + - generic [ref=e188]: (26.47) + - cell "2.52(100.00)" [ref=e189]: + - text: "2.52" + - generic [ref=e190]: (100.00) + - cell "Notify" [ref=e191] + - cell [ref=e193]: + - generic [ref=e194]: + - button "Interested" [ref=e195] + - button "Not interested" [ref=e196] + - row [ref=e197]: + - cell "Major trade deal signed at summit 2026-09-01 17:00:00· bypass" [ref=e198]: + - link "Major trade deal signed at summit" [ref=e199] [cursor=pointer]: + - /url: https://example.test/source-a/trade-deal + - generic [ref=e200]: + - text: 2026-09-01 17:00:00 + - generic [ref=e201]: · bypass + - cell "3" [ref=e202] + - cell "2.65(91.18)" [ref=e204]: + - text: "2.65" + - generic [ref=e205]: (91.18) + - cell "2.18(100.00)" [ref=e206]: + - text: "2.18" + - generic [ref=e207]: (100.00) + - cell "Suppress AlreadyNotified" [ref=e208]: + - generic [ref=e209]: Suppress + - generic [ref=e210]: AlreadyNotified + - cell [ref=e211]: + - generic [ref=e212]: + - button "Interested" [ref=e213] + - button "Not interested" [ref=e214] \ No newline at end of file