Skip to content

fix(engineering-analytics): restore health card benchmarks - #95654

Merged
trunk-io[bot] merged 4 commits into
masterfrom
codex/health-remove-chart-notes
Sep 5, 2026
Merged

fix(engineering-analytics): restore health card benchmarks#95654
trunk-io[bot] merged 4 commits into
masterfrom
codex/health-remove-chart-notes

Conversation

@pauldambra

@pauldambra pauldambra commented Sep 5, 2026

Copy link
Copy Markdown
Member

Problem

Engineering Analytics Health cards lost their DORA bands and threshold tooltips when their comparison layout changed.
The chart notes also add noise when deployment coverage needs no warning.

Changes

  • Restore the four cards' benchmark colors and threshold tooltips using the existing DORA bands.
  • Replace the unattributed-PR sentence with a warning only when more than 10% of merged PRs lack an attributed deployment.
  • Keep the warning inside the lead-time scope panel so it follows the selected team, environments, and dates.
  • Remove the explanation below the boxplot title.
  • Mechanical: delete the unused notice component.

How did you test this code?

  • Existing logic tests now cover null, zero, exactly 10%, and higher coverage gaps to prevent warnings at or below the threshold.
  • Playwright checked the warning boundary, retained benchmark cards, and wide and 520-pixel layouts using Storybook fixtures.
  • Earlier browser checks covered threshold tooltips, metric definitions, and the empty lead-time card.
  • Local screenshots use repository fixtures; public upload awaits approval.

👉 Stay up-to-date with PostHog coding conventions for a smoother review.

Automatic notifications

  • Publish to changelog?

Docs update

None. This changes Health presentation without changing the API or benchmark definitions.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Codex used shell tools, GitHub CLI, and Playwright.
Workflow skills: pr-shepherd, qa-swarm, review-triage, simplify, ci-shepherd, and running-ci-preflight.
Code skills: writing-ui-components, writing-kea-logics, writing-user-facing-copy, writing-code-comments, writing-tests, adopting-generated-api-types, setting-feature-flags-in-storybook, and writing-pr-descriptions.

The follow-up restores the benchmark presentation lost in #95572 and applies the warning rule from the review discussion.
Searches found no competing open cleanup or benchmark restoration PR.

@pauldambra pauldambra added skip-inkeep-docs Use this label to skip an Inkeep docs PR in posthog.com skip-agent-review Save $$$, skip auto agent reviews (Greptile) — use for trivial or chore PRs labels Sep 5, 2026
@pauldambra pauldambra self-assigned this Sep 5, 2026
@trunk-io

trunk-io Bot commented Sep 5, 2026

Copy link
Copy Markdown

😎 Merged successfully - details.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

Trunk lane — non-backend lane

This PR is assigned to the non-backend lane. It does not run backend Python tests and may merge in parallel with PRs in other lanes.

Complexity (TypeScript) — clean

Cyclomatic complexity above the limit in changed typescript files (10 for production files, 15 for test files). Warn only: worth simplifying when you next touch these functions.

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

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

Total: 68.62 MiB · 🔺 +1.4 KiB (+0.0%)

File Size Δ vs base
posthog-app/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsScene.js 62.9 KiB 🔺 +1.3 KiB (+2.2%)

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.50 MiB · 22 files no change ███░░░░░░░ 33.2% of 4.51 MiB
logged-out boot: index + App + bootApp (preloaded by every page, including /login)
src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
5.25 MiB · 668 files 🔺 +76 B (+0.0%) █████████░ 93.3% of 5.63 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
7.67 MiB · 2,677 files 🔺 +76 B (+0.0%) █████████░ 87.4% of 8.77 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/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/layout/navigation-3000/navigationLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/scenes/dashboard/dashboardLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 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
🟢 src/scenes/session-recordings/player/sessionRecordingPlayerLogic.ts 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
1000 B src/index.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
854 B src/scenes/ChunkLoadErrorBoundary.tsx
Largest files eagerly shipped from src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
Size File
276.1 KiB ../node_modules/.pnpm/posthog-js@1.427.2_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
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
255.2 KiB src/taxonomy/core-filter-definitions-by-group.json
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
104.4 KiB src/lib/api.ts
79.1 KiB src/products.tsx
68.8 KiB src/lib/lemon-ui/icons/icons.tsx
62.5 KiB src/lib/utils/eventUsageLogic.ts
38.8 KiB ../node_modules/.pnpm/@dnd-kit+core@6.0.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js
33.9 KiB ../node_modules/.pnpm/kea@4.0.0-pre.6_patch_hash=139b8d1f1304f9d9da452a9a1244c94ea679dbcb85687d8999563146879fb6f5_react@18.3.1/node_modules/kea/lib/index.cjs.js
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
276.1 KiB ../node_modules/.pnpm/posthog-js@1.427.2_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
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
255.2 KiB src/taxonomy/core-filter-definitions-by-group.json
153.8 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
104.4 KiB src/lib/api.ts
95.8 KiB ../packages/quill/packages/quill/dist/index.js
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
79.1 KiB src/products.tsx

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

Toolbar bundle — eager 2.28 MiB within budget

What the toolbar ships to customer pages, measured from the esbuild output (minified, post-tree-shake). The eager set is the entry plus everything statically imported from it — fetched before any feature runs; deferred chunks load lazily. The eager guardrail is 5.72 MiB. Each output file must also stay below 10 MB, where CloudFront stops compressing it. The module boundary is enforced separately by check-toolbar-graph.

Metric Size Δ vs base Budget
Eager (shipped)
entry + static imports
2.28 MiB · 18 files 🔺 +67 B (+0.0%) ████░░░░░░ 39.9% of 5.72 MiB
Deferred (lazy) 2.11 MiB · 45 files no change n/a — loads on demand
Loader dist/toolbar.js 1.1 KiB no change █░░░░░░░░░ 5.8% of 19.5 KiB
Largest eagerly-shipped chunks
Size File
756.3 KiB dist/toolbar/toolbar-app-4464UOOM.css
603.4 KiB dist/toolbar/chunk-chunk-Z3XPC222.js
484.7 KiB dist/toolbar/chunk-chunk-D33R7XDZ.js
136.2 KiB dist/toolbar/chunk-chunk-YFTHBNST.js
131.8 KiB dist/toolbar/chunk-chunk-FDH2IBXT.js
71.3 KiB dist/toolbar/toolbar-app-EQHEUZGH.js
69.0 KiB dist/toolbar/chunk-chunk-TSAL54PB.js
35.6 KiB dist/toolbar/chunk-chunk-4PVEGJ2Q.js
21.0 KiB dist/toolbar/chunk-chunk-AVZEELLT.js
6.8 KiB dist/toolbar/chunk-chunk-DV7IWQNF.js

Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile

Dist folder size — 🔺 +41.3 KiB (+0.0%)

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

Total: 1457.30 MiB · 🔺 +41.3 KiB (+0.0%)

⚠️ Playwright — 1 flaky

🎭 Playwright report · View test results →

⚠️ 1 flaky test:

  • Save view (chromium)

These issues are not necessarily caused by your changes.
Annoyed by this section? Help fix flakies and failures and it will go green!

@pauldambra
pauldambra marked this pull request as ready for review September 5, 2026 19:50
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 5, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-05T19:55:11.461881Z 792b184 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Sep 5, 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 13f41c5 · box box-95c8acdafc87 · ready in 625s (push → usable) · build log · rebuilds on every push, torn down on close

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 792b184236

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@trunk-io

trunk-io Bot commented Sep 5, 2026

Copy link
Copy Markdown

Static BadgeStatic BadgeStatic Badge

View Full Report ↗︎Docs

@pauldambra pauldambra changed the title fix(engineering-analytics): remove health chart explanations fix(engineering-analytics): restore health card benchmarks Sep 5, 2026
@pauldambra

Copy link
Copy Markdown
Member Author

Note

🤖 Automated comment by QA Swarm — not written by a human

Multi-perspective review: router (cheap-first pass) + delegated reviewers as warranted

Verdict: ✅ APPROVE (round 1 @ 2a3326b)

The four Health metrics regain their DORA benchmark bands and combined definition/benchmark tooltips. The two explanatory blocks are removed, with no threshold or API changes.

Key findings

  • No actionable findings.
  • Existing checks cover benchmark thresholds, empty state, colors, tooltip content, and narrow rendering.

Convergence

No delegation was needed for this low-risk change.

Reviewer summaries

Reviewer Assessment
🧭 router (gpt-5.6-sol) Low danger, high confidence; changes match the requested scope. No stronger review needed.

Automated by QA Swarm — not a human review

stamphog[bot]
stamphog Bot previously approved these changes Sep 5, 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.

Approved.

Contained frontend presentation fix in Engineering Analytics with no risky-territory surface touched; Codex review completed with no findings and new tests cover the added threshold logic.

  • Author wrote 85% of the modified lines and has 12 merged PRs in these paths (familiarity STRONG).
Gate mechanics and policy version
Gate Result
prerequisites all clear
deny-list no deny categories matched
size 101L, 9F substantive, 115L/10F incl. docs/generated/snapshots — within ceiling
tier T1-agent / T1c-medium (115L, 10F, single-area, fix)
stamphog 2.0.0b4 .stamphog/policy.yml @ 702db2c · reviewed head 702db2c

6 updated
Run: b60968f8-36ee-43c6-8666-5bf9b98bbe8a

Co-authored-by: pauldambra <984817+pauldambra@users.noreply.github.com>
@stamphog
stamphog Bot dismissed their stale review September 5, 2026 21:11

A new stamphog review started for this PR — the fresh verdict replaces this approval.

@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.

Approved.

Contained frontend presentation fix to Engineering Analytics Health cards (benchmark bands, tooltips, unattributed-PR warning threshold) with no API/schema/auth/billing/CI surface touched, backed by new unit and story coverage; author has STRONG familiarity with these exact files and no unresolved review concerns exist.

  • Author wrote 86% of the modified lines and has 579 merged PRs in these paths (familiarity STRONG).
Gate mechanics and policy version
Gate Result
prerequisites all clear
deny-list no deny categories matched
size 113L, 10F substantive, 127L/11F incl. docs/generated/snapshots — within ceiling
tier T1-agent / T1c-medium (127L, 11F, two-areas, fix)
stamphog 2.0.0b4 .stamphog/policy.yml @ 13f41c5 · reviewed head 13f41c5

@trunk-io
trunk-io Bot merged commit 80da9a6 into master Sep 5, 2026
197 checks passed
@trunk-io
trunk-io Bot deleted the codex/health-remove-chart-notes branch September 5, 2026 21:37
@deployment-status-posthog

deployment-status-posthog Bot commented Sep 5, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-09-05 21:56 UTC Run
prod-us ✅ Deployed 2026-09-05 22:10 UTC Run
prod-eu ✅ Deployed 2026-09-05 22:13 UTC Run

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

Labels

skip-agent-review Save $$$, skip auto agent reviews (Greptile) — use for trivial or chore PRs skip-inkeep-docs Use this label to skip an Inkeep docs PR in posthog.com stamphog Request AI approval (no full review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant