Skip to content

fix(eng-analytics): improve flaky test leaderboard - #70464

Merged
rnegron merged 7 commits into
masterfrom
rauln/flaky-test-leaderboard
Jul 13, 2026
Merged

fix(eng-analytics): improve flaky test leaderboard#70464
rnegron merged 7 commits into
masterfrom
rauln/flaky-test-leaderboard

Conversation

@rnegron

@rnegron rnegron commented Jul 13, 2026

Copy link
Copy Markdown
Member

Problem

The flaky-test leaderboard showed too many rows initially and could mix CI trace signals from different repositories connected to one project.

Changes

  • Show 10 ranked tests per page and fetch up to 200 for pagination.
  • Scope trace signals to the selected GitHub repository.
  • Make the quarantine action clearer, accessible, and lower emphasis.

flaky-test-leaderboard

How did you test this code?

  • Leaderboard integration tests: 16 passed.
  • Timing-emitter tests: 33 passed.
  • Scoped TypeScript check, strict preflight, and Storybook visual verification.

Automatic notifications

  • Publish to changelog?
  • Alert Sales and Marketing teams?

Docs update

  • Updated the engineering analytics specification with repository scoping.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

I used Codex desktop with /wt, /source-command-conventions, /writing-tests, /run-posthog, /running-ci-preflight, and Browser. I kept LemonTable to match the main-app component boundary and added repository scoping after tracing the OTLP data path.

@rnegron rnegron self-assigned this Jul 13, 2026
@github-actions

github-actions Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

⚠️ Bundle size — 🔺 +4.9 KiB (+0.0%)

Uncompressed size of every built .js bundle, compared against the base branch.

Total: 64.34 MiB · 🔺 +4.9 KiB (+0.0%)

File Size Δ vs base
posthog-app/src/scenes/inbox/InboxScene.js 651.2 KiB 🔺 +1.9 KiB (+0.3%)
render-query/src/render-query/render-query.js 21.20 MiB 🔺 +1.4 KiB (+0.0%)
posthog-app/src/scenes/AuthenticatedShell.js 219.6 KiB 🔺 +1.3 KiB (+0.6%)

Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report

Eager graph — within budget

How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.

Root Eager (shipped) Δ vs base Budget
entry (logged-out pages, app bootstrap)
src/index.tsx
1.21 MiB · 22 files 🔺 +384 B (+0.0%) ███░░░░░░░ 28.1% of 4.29 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.10 MiB · 2,973 files 🔺 +7.3 KiB (+0.1%) █████████░ 87.6% of 9.25 MiB

🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx

Largest files eagerly shipped from src/index.tsx
Size File
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
24.6 KiB ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js
6.3 KiB ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
4.5 KiB ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js
3.9 KiB ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js
1.4 KiB ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
1.3 KiB src/RootErrorBoundary.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
789 B src/scenes/ChunkLoadErrorBoundary.tsx
668 B src/index.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
278.6 KiB ../node_modules/.pnpm/posthog-js@1.399.2/node_modules/posthog-js/dist/rrweb.js
267.7 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
234.9 KiB src/taxonomy/core-filter-definitions-by-group.json
221.5 KiB ../node_modules/.pnpm/posthog-js@1.399.2/node_modules/posthog-js/dist/module.js
164.0 KiB src/queries/validators.js
154.3 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
105.9 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
90.6 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js

Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479

⚠️ Dist folder size — 🔺 +174.9 KiB (+0.0%)

Total size of the built frontend/dist folder (all assets), compared against the base branch.

Total: 1278.74 MiB · 🔺 +174.9 KiB (+0.0%)

@trunk-io

trunk-io Bot commented Jul 13, 2026

Copy link
Copy Markdown

Static BadgeStatic BadgeStatic BadgeStatic Badge

View Full Report ↗︎Docs

@posthog

posthog Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Visual changes approved by @rnegron — baseline updated in 022c975.

View this run in PostHog

2 changed.

@rnegron
rnegron marked this pull request as ready for review July 13, 2026 15:14
@github-actions
github-actions Bot requested a deployment to preview-pr-70464 July 13, 2026 15:14 In progress
@github-actions

github-actions Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ✅ ready

▶ Open the preview

🔑 Login test@posthog.com / 12345678 (demo data)
🧩 Running this PR's backend and frontend, on the PostHog :master base
🔗 Link stable across rebuilds — a re-push swaps the box underneath, the URL stays
🔒 Access tailnet only (PostHog VPN)
🛠️ Admin inspect & debug state in hogland
💤 Idle sleeps after ~30 min idle (snapshot to S3, zero node cost) and wakes on your next visit in ~30s, behind a brief "waking up" screen

commit 022c975 · box box-1d064e15ca55 · ready in 533s (push → usable) · build log · rebuilds on every push, torn down on close

@pr-assigner-resolver-posthog
pr-assigner-resolver-posthog Bot requested a review from a team July 13, 2026 15:14
@greptile-apps

greptile-apps Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Security Review

The new trace query scoping can fail open when a selected GitHub source has no repository value, allowing CI trace signals from other repositories in the same project to appear in the leaderboard.

Comments Outside Diff (1)

  1. products/engineering_analytics/frontend/scenes/EngineeringAnalyticsTestHealth.tsx, line 224 (link)

    P2 Truncated Sort Looks Complete

    With the frontend now fetching the maximum 200 rows and paginating them locally, column sorting only reorders that capped set. If more than 200 tests qualify, sorting by PRs hit, Failures, or Last seen can hide matching tests outside the fetched window while the table still presents the sort as if it covers the leaderboard.

Reviews (1): Last reviewed commit: "Merge branch 'master' into rauln/flaky-t..." | Re-trigger Greptile

Comment thread products/engineering_analytics/backend/logic/queries/flaky_tests.py Outdated
@rnegron rnegron added the stamphog Request AI approval (no full review) label Jul 13, 2026
@rnegron
rnegron enabled auto-merge (squash) July 13, 2026 16:32
stamphog[bot]
stamphog Bot previously approved these changes Jul 13, 2026

@stamphog stamphog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The security concern Greptile flagged (repository filter failing open) is directly fixed in this diff — it now fails closed and returns no rows plus a dedicated regression test — and the change is by a STRONG-familiarity author on the owning team for an internal analytics dashboard, not risky-territory production code.

  • Author wrote 100% of the modified lines and has 48 merged PRs in these paths (familiarity STRONG).
  • 👍 on the PR from greptile-apps[bot], hex-security-app[bot].
  • Unresolved P2 comment from Greptile: sorting the leaderboard only reorders the capped 200-row fetch, which can present an incomplete sort as if it covers the full result set — cosmetic/UX nit, not a correctness or safety issue.
Gate mechanics and policy version
Gate Result
prerequisites all clear
deny-list no deny categories matched
size 66L, 5F substantive, 113L/10F incl. docs/generated/snapshots — within ceiling
tier T1-agent / T1c-medium (113L, 10F, two-areas, fix)
stamphog 2.0.0b3 .stamphog/policy.yml @ 9c7cb39 · reviewed head 1fd27f3

2 updated
Run: 69f068ce-1585-4e95-839d-68721ea159b2

Co-authored-by: rnegron <4153103+rnegron@users.noreply.github.com>
@stamphog
stamphog Bot dismissed their stale review July 13, 2026 18:17

New commits pushed (delta classified non_trivial_delta) — stamphog approval dismissed; re-review running automatically.

@stamphog stamphog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a targeted fix for a real cross-repository data-scoping bug in an internal test-flakiness dashboard; the diff includes the fail-closed guard and a dedicated regression test (test_source_without_repository_fails_closed) that directly covers the exact issue Greptile flagged on an earlier commit, and the author has STRONG familiarity with 93% of the touched lines on the owning team. The remaining open review note (sort only covering the fetched page) is a minor UX quibble, not a correctness or security showstopper.

  • Author wrote 93% of the modified lines and has 59 merged PRs in these paths (familiarity STRONG).
  • 👍 on the PR from greptile-apps[bot], hex-security-app[bot].
Gate mechanics and policy version
Gate Result
prerequisites all clear
deny-list no deny categories matched
size 70L, 6F substantive, 117L/11F incl. docs/generated/snapshots — within ceiling
tier T1-agent / T1d-complex (117L, 11F, cross-cutting, fix)
stamphog 2.0.0b3 .stamphog/policy.yml @ b864e6b · reviewed head 022c975

@rnegron
rnegron merged commit 43d892c into master Jul 13, 2026
183 checks passed
@rnegron
rnegron deleted the rauln/flaky-test-leaderboard branch July 13, 2026 18:29
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 13, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-07-13 18:57 UTC Run
prod-us ✅ Deployed 2026-07-13 19:14 UTC Run
prod-eu ✅ Deployed 2026-07-13 19:15 UTC Run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stamphog Request AI approval (no full review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant