Skip to content

chore(tracing): dedupe duration-axis config, error-rate formatting, and duration-range type - #71495

Merged
jonmcwest merged 1 commit into
masterfrom
posthog-code/tracing-dedupe-duration-helpers
Jul 16, 2026
Merged

chore(tracing): dedupe duration-axis config, error-rate formatting, and duration-range type#71495
jonmcwest merged 1 commit into
masterfrom
posthog-code/tracing-dedupe-duration-helpers

Conversation

@jonmcwest

Copy link
Copy Markdown
Contributor

Problem

Three helpers exist as near-verbatim copies that can silently drift: the category duration axis config (TracingSparkline + OperationHistogram, character-for-character identical), the error-rate computation and its sub-1% formatting rule (OperationsTable + the operation scene), and the {minNs, maxNs} range shape (durationBuckets + operationFilters). The 1-2-5 bucket series math is also hand-rolled three times in one file.

Changes

Each helper now lives in one place: categoryDurationXScale exported from TracingSparkline, errorRate/formatErrorRate exported from OperationsTable, DurationRange declared in durationBuckets and re-exported from operationFilters. bucketUpperBound derives from fillBucketSeries so the series is encoded once. Also drops a dead pager ternary. Refactor only, no behavior change.

How did you test this code?

durationBuckets.test.ts passes locally (27 tests), covering bucketUpperBound's reimplementation. Component changes are import/reference swaps of identical code.

Automatic notifications

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

Docs update

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Built with PostHog Code (Claude). Part of a set of small PRs split from the too-broad #71484 (now closed); these are the reuse findings from a multi-angle review pass.


Created with PostHog Code

…nd duration-range type

Three helpers existed as near-verbatim copies: the category duration
axis config (TracingSparkline + OperationHistogram), the error-rate
computation and sub-1% formatting rule (OperationsTable + the operation
scene), and the {minNs, maxNs} range type (durationBuckets +
operationFilters). Each now lives in one place. bucketUpperBound derives
from fillBucketSeries so the 1-2-5 series is encoded once, and a dead
pager ternary is dropped. No behavior change.

Generated-By: PostHog Code
Task-Id: 7f7a85c7-f491-4e9d-b5b1-93aa85c5ba9e
@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

Bundle size — 🟢 -11.5 KiB (-0.0%)

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

Total: 64.78 MiB · 🟢 -11.5 KiB (-0.0%)

File Size Δ vs base
posthog-app/_parent/products/tracing/frontend/TracingScene.js 98.1 KiB 🟢 -11.3 KiB (-10.4%)

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.22 MiB · 22 files no change ███░░░░░░░ 28.4% of 4.29 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.13 MiB · 2,981 files no change █████████░ 87.9% 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
762 B src/index.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
281.3 KiB ../node_modules/.pnpm/posthog-js@1.402.3/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
235.5 KiB src/taxonomy/core-filter-definitions-by-group.json
222.9 KiB ../node_modules/.pnpm/posthog-js@1.402.3/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.8 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
92.7 KiB ../packages/quill/packages/quill/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 — 🟢 -924 B (-0.0%)

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

Total: 1312.81 MiB · 🟢 -924 B (-0.0%)

@jonmcwest
jonmcwest marked this pull request as ready for review July 16, 2026 12:13
@jonmcwest jonmcwest added the stamphog Request AI approval (no full review) label Jul 16, 2026
@pr-assigner-resolver-posthog
pr-assigner-resolver-posthog Bot requested a review from a team July 16, 2026 12:14
@greptile-apps

greptile-apps Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Reviews (1): Last reviewed commit: "chore(tracing): dedupe duration-axis con..." | Re-trigger Greptile

@github-actions

github-actions Bot commented Jul 16, 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 bc6b340 · box box-1b55497edeea · ready in 1039s (push → usable) · build log · rebuilds on every push, torn down on close

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

Verified this is a genuine no-behavior-change refactor: the dedup extraction (categoryDurationXScale, errorRate/formatErrorRate, DurationRange) and the bucketUpperBound reimplementation via fillBucketSeries are logically equivalent to the code they replace, and the removed pager ternary is confirmed dead (only reached inside a samples.length > 0 branch). Frontend-only, single-team, STRONG-familiarity author, no risky territory touched.

  • Author wrote 100% of the modified lines and has 47 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 101L, 6F substantive — within ceiling
tier T1-agent / T1c-medium (101L, 6F, single-area, chore)
stamphog 2.0.0b3 .stamphog/policy.yml @ 800cd6f · reviewed head bc6b340

@trunk-io

trunk-io Bot commented Jul 16, 2026

Copy link
Copy Markdown

Static BadgeStatic BadgeStatic BadgeStatic Badge

View Full Report ↗︎Docs

@jonmcwest
jonmcwest merged commit d0d012d into master Jul 16, 2026
312 of 349 checks passed
@jonmcwest
jonmcwest deleted the posthog-code/tracing-dedupe-duration-helpers branch July 16, 2026 13:15
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 16, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-07-16 13:48 UTC Run
prod-us ✅ Deployed 2026-07-16 14:13 UTC Run
prod-eu ✅ Deployed 2026-07-16 14:13 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