Skip to content

Release DevFeed 0.1.4 - #307

Merged
abhi1693 merged 3 commits into
masterfrom
release/0.1.4
Oct 25, 2026
Merged

abhi1693 merged 3 commits into
masterfrom
release/0.1.4

Conversation

@abhi1693

Copy link
Copy Markdown
Owner

Performance Improvements

  • #300 - Avoid rebuilding article pipeline cards when scheduler checks only advance the next-check time.
  • #301, #302, #304 - Reduce database work for token-usage, publication-review, and topic-inference reports while preserving exact accounting and report results.
  • #303 - Reduce source-filter lookup work in large feeds while preserving source visibility, ordering, and combined filters.
  • #305 - Clean up old analysis payloads in bounded, resumable batches instead of repeatedly scanning history on every scheduler tick.

Bug Fixes

  • #292 - Preserve loaded articles, Columns scroll positions, open editors, and the reading-streak panel when returning to a browser tab on web, Chrome, and Edge.
  • #303 - Keep the reading position stable when opening and closing article previews, including delayed navigation in Edge.
  • #306 - Keep overview and blocker reports updating during continuous catalog refreshes, with explicit catching-up status and separate catalog progress.

Upgrade Notes

  • Apply schema revisions 0035–0037 before starting the new runtimes. Pause the previous pipeline publisher and stop older schedulers before migration; verify the three retention indexes are valid before starting the new scheduler. PostgreSQL 17 or later is required for retention transaction timeouts.
  • Topic-report migration 0036 briefly pauses proposal and workflow writes while backfilling indexed call facts. Deploy the updated admin UI, API, and report workers together. Coordinate application and schema rollback; downgrading cannot restore analysis payloads already removed by retention.

What changes and why?

Prepare the next patch release, DevFeed 0.1.4, from the changes merged since v0.1.3. Update the dated changelog and synchronize workspace manifests, lockfiles, OpenAPI documents and generated API metadata. Chrome and Edge extension packages advance to 0.1.24 for the reader fixes.

Validation

  • Version consistency check and 81 version/release-tool tests passed.
  • Python lint, formatting and mypy passed (367 source files).
  • Verified all 813 manifest/generated/lockfile diffs contain only application version metadata; dependency versions are unchanged.
  • Production web build, Chrome and Edge builds and packages passed; both ZIP manifests verified at 0.1.24.
  • Extension TypeScript checks and all 205 extension unit tests passed.
  • Production browser tab-resume regressions passed on web, built Chrome and built Edge across guest/member feeds and three layouts. Web reading-streak resume regression also passed. These are focused checks; the full browser, backend and migration suites remain hosted CI gates.
  • No new visible UI change in this preparation PR. Native GitHub attachment upload is unavailable through the connected tools; no review screenshots are committed.
  • Hosted CI required and all CodeQL checks must pass before merge. Keep this PR in draft as requested.

Rollout notes

This PR prepares versions and documentation only. No release tag, GitHub release, image publication, deployment or browser-store submission has been performed.

For the eventual release, use the exact merged master's successful CI proof, then verify all twelve native ARM64 release images, immutable digests and attestations before updating Fleet-managed pins. Extension packaging and store publication are separate gates; local archives are not store submissions.

Upgrade from schema 0034 through 0035, 0036 and 0037 with the ordering described above and in migrations/README.md. Migration 0036 adds write maintenance for indexed topic call facts; measured reporting gains do not establish an overall ingestion speedup. Observe report freshness, catalog progress, writer latency, retention progress and temporary I/O after rollout. Retain prior image digests and coordinate schema/application rollback; retention redaction is irreversible.

Ready for review

  • Changelog, synchronized versions and extension versions are updated.
  • Validation results, remaining hosted gates and rollout risks are documented.
  • Draft retained until the user requests review readiness.

@github-actions

github-actions Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Backend unit coverage

PASS · minimum combined coverage 98.00%.

Tests: 10999 passed, 0 failed, 0 skipped. Source files: 367.

Workspace Lines Branches Combined
All backend code 98.67% 95.66% 98.00%
apps/admin-api 96.62% 89.72% 95.31%
apps/aggregator 97.99% 94.45% 97.18%
apps/api 99.50% 98.89% 99.39%
apps/article-enrichment-worker 80.00% 50.00% 71.43%
apps/cli 99.43% 90.76% 98.13%
apps/images-worker 80.00% 50.00% 71.43%
apps/mcp 99.86% 98.70% 99.65%
apps/notifications 100.00% 100.00% 100.00%
apps/partner-api 99.47% 95.51% 98.83%
apps/search-indexer 85.48% 85.71% 85.53%
apps/source-discovery-worker 80.00% 50.00% 71.43%
apps/user-api 99.88% 98.96% 99.72%
packages/core 99.11% 96.87% 98.56%
packages/http 99.47% 97.49% 99.03%

Unit coverage includes every backend workspace. PostgreSQL/Redis integration tests run separately.

Commit: d016c6b · HTML, JSON, XML reports and job logs · attempt 1

@github-actions

github-actions Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Lighthouse · ⚠️ Targets exceeded

⚠️ 20 target warnings · Bold values need attention.

Page FCP LCP CLS TBT JS Total
Latest (/latest) 1.22 s 4.39 s 0.001 428 ms 361 KiB 663 KiB
Article preview (/articles/…) 1.37 s 4.91 s 0.000 526 ms 364 KiB 685 KiB
Topics (/topics) 1.22 s 4.04 s 0.000 319 ms 319 KiB 471 KiB
Sources (/sources) 1.22 s 4.37 s 0.000 552 ms 332 KiB 488 KiB
Public profile (/users/…) 1.22 s 2.59 s 0.009 147 ms 280 KiB 428 KiB
Leaderboard (/leaderboard) 1.07 s 2.53 s 0.000 207 ms 276 KiB 383 KiB

Mobile reader · Three cold loads per page · Median timings · Largest transfer size.

Needs attention

Page Finding Measured Target / limit
Latest (/latest) ⚠️ Target · LCP 4.39 s 4.00 s
Latest (/latest) ⚠️ Target · TBT 428 ms 400 ms
Latest (/latest) ⚠️ Target · JS transfer 361 KiB 330 KiB
Latest (/latest) ⚠️ Target · LCP 4.39 s 2.50 s
Latest (/latest) ⚠️ Target · TBT 428 ms 200 ms
Article preview (/articles/…) ⚠️ Target · TBT 526 ms 400 ms
Article preview (/articles/…) ⚠️ Target · JS transfer 364 KiB 330 KiB
Article preview (/articles/…) ⚠️ Target · LCP 4.91 s 2.50 s
Article preview (/articles/…) ⚠️ Target · TBT 526 ms 200 ms
Topics (/topics) ⚠️ Target · LCP 4.04 s 4.00 s
Topics (/topics) ⚠️ Target · LCP 4.04 s 2.50 s
Topics (/topics) ⚠️ Target · TBT 319 ms 200 ms
Sources (/sources) ⚠️ Target · LCP 4.37 s 4.00 s
Sources (/sources) ⚠️ Target · TBT 552 ms 400 ms
Sources (/sources) ⚠️ Target · JS transfer 332 KiB 330 KiB
Sources (/sources) ⚠️ Target · LCP 4.37 s 2.50 s
Sources (/sources) ⚠️ Target · TBT 552 ms 200 ms
Public profile (/users/…) ⚠️ Target · LCP 2.59 s 2.50 s
Leaderboard (/leaderboard) ⚠️ Target · LCP 2.53 s 2.50 s
Leaderboard (/leaderboard) ⚠️ Target · TBT 207 ms 200 ms

Full reports and logs · d016c6b · Attempt 1

@github-actions

github-actions Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

PR performance results

Current PR head: d016c6bc6f0f87368749146b13241fdf6a3afb6d

Token usage benchmark

Pending: no results have been published.

Reader API performance

Source head: d016c6bc6f0f87368749146b13241fdf6a3afb6d · run 40204188434 · attempt 1

PR reader API performance

Result: INCONCLUSIVE

5 inconclusive · 3 within threshold. Zero request failures across all six runs.

Base af074f99171aaa49c40a9e019af73c16ba6b5433 → PR d016c6bc6f0f87368749146b13241fdf6a3afb6d

Three independent GitHub-hosted ARM64 runners, each measuring base and PR sequentially with alternating order and isolated resources for every sample. 16 users, completed bootstrap and 15 seconds of warmup before each full 60-second measurement, fixed journey seed 294, 1,000 synthetic articles, cache off, five PgBouncer slots.

Latency comparison

All latency values are in milliseconds; lower is better. Values are medians of three runs, with one-millisecond histogram bins.

Route Base p95 PR p95 Change Result
All requests 96 98 +2 (+2.1%) Within threshold
Latest feed 123 124 +1 (+0.8%) Within threshold
Feed pagination 87 96 +9 (+10.3%) Inconclusive
Article detail 80 71 -9 (-11.3%) Inconclusive
Source feed 73 88 +15 (+20.5%) Inconclusive
Topic feed 103 86 -17 (-16.5%) Inconclusive
Feed filters 64 66 +2 (+3.1%) Inconclusive
Sources 36 33 -3 (-8.3%) Within threshold
Topics 42 37 -5 (-11.9%) Within threshold
Additional latency and throughput metrics

Each cell shows base → PR. Latencies are in milliseconds.

Endpoint p50 p99 Requests/s
Aggregated 32 → 32 147 → 136 28.82 → 28.88
/v1/feed [latest] 47 → 46 163 → 150 8.63 → 8.66
/v1/feed [page] 30 → 30 133 → 141 4.08 → 4.09
/v1/articles/[id] 19 → 19 134 → 110 5.85 → 5.88
/v1/feed [source] 29 → 30 130 → 123 2.05 → 2.02
/v1/feed [topic] 33 → 29 144 → 158 1.60 → 1.60
/v1/feed/options 23 → 23 106 → 103 2.20 → 2.21
/v1/sources 13 → 12 67 → 42 2.20 → 2.21
/v1/topics 14 → 13 92 → 79 2.20 → 2.21
All paired p95 samples and changes

Each pair shares a validated runner. Cells show base → PR p95 (absolute and percentage change), in milliseconds. Slower/faster counts use the same strict 20% and 20 ms thresholds against that pair's own baseline.

Route Pair 1 Pair 2 Pair 3 Slower pairs Faster pairs
All requests 96 → 99 (+3, +3.1%) 80 → 87 (+7, +8.7%) 108 → 98 (-10, -9.3%) 0 0
Latest feed 123 → 124 (+1, +0.8%) 103 → 108 (+5, +4.9%) 124 → 133 (+9, +7.3%) 0 0
Feed pagination 87 → 96 (+9, +10.3%) 75 → 89 (+14, +18.7%) 117 → 98 (-19, -16.2%) 0 0
Article detail 80 → 74 (-6, -7.5%) 63 → 62 (-1, -1.6%) 97 → 71 (-26, -26.8%) 0 1
Source feed 72 → 88 (+16, +22.2%) 73 → 63 (-10, -13.7%) 116 → 88 (-28, -24.1%) 0 1
Topic feed 103 → 86 (-17, -16.5%) 57 → 78 (+21, +36.8%) 119 → 110 (-9, -7.6%) 1 0
Feed filters 64 → 63 (-1, -1.6%) 62 → 80 (+18, +29.0%) 92 → 66 (-26, -28.3%) 0 1
Sources 36 → 36 (+0, +0.0%) 30 → 32 (+2, +6.7%) 43 → 33 (-10, -23.3%) 0 0
Topics 43 → 34 (-9, -20.9%) 33 → 41 (+8, +24.2%) 42 → 37 (-5, -11.9%) 0 0
Individual runs
Run Requests Failures Exit code
Base 1 1729 0 0
Base 2 1751 0 0
Base 3 1720 0 0
PR 1 1726 0 0
PR 2 1744 0 0
PR 3 1734 0 0
How to interpret this report

Regressed / Improved: a p95 regression needs >20% and >20 ms increase in the medians and in at least two same-runner base/PR pairs. Improvements use the inverse threshold. Within threshold means the change did not meet both thresholds.

Inconclusive: a within-revision p95 range >35% of its median and >20 ms is too noisy for a confident latency verdict. A material median change without two confirming pairs is also inconclusive; this does not prove unchanged performance.

Inconclusive latency comparisons are non-blocking: the check passes without claiming an improvement. Confirmed regressions and test/report errors fail the PR gate. Throughput is descriptive: paced users do not measure maximum capacity. This uncached public API test does not establish production health, browser performance or worker capacity. Base and PR share a runner within each pair; three pairs use independent runners. Alternating order reduces host-assignment bias but cannot eliminate changes in host load over time.

Full HTML/CSV reports and logs · attempt 1

@sonarqubecloud

Copy link
Copy Markdown

@abhi1693
abhi1693 marked this pull request as ready for review October 25, 2026 15:30
@abhi1693
abhi1693 merged commit a3c1bec into master Oct 25, 2026
89 checks passed
@abhi1693
abhi1693 deleted the release/0.1.4 branch October 25, 2026 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant