Repository navigation
feat(data-modeling): add endpoint lineage tab and metric scene polish - #110915
Conversation
Add a lineage tab to the endpoint scene, rename the metric Tests tab to Data quality, and replace the metric scene spinner with a skeleton. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
😎 Merged successfully - details. |
🤖 CI report
|
| Function | Location | Complexity | Limit |
|---|---|---|---|
EndpointScene |
products/endpoints/frontend/EndpointScene.tsx:70 |
29 | 10 |
DataCatalogMetricScene |
products/data_catalog/frontend/DataCatalogMetricScene.tsx:82 |
28 | 10 |
NodeDetailScene |
products/data_modeling/frontend/nodeDetail/NodeDetailScene.tsx:57 |
20 | 10 |
setViewingVersion |
products/endpoints/frontend/endpointSceneLogic.tsx:784 |
17 | 10 |
<anonymous> |
products/endpoints/frontend/endpointSceneLogic.tsx:861 |
17 | 10 |
OverviewBody |
products/data_modeling/frontend/ModelsOverviewTab.tsx:169 |
16 | 10 |
<anonymous> |
products/data_modeling/frontend/nodeDetail/nodeDetailSceneLogic.ts:479 |
12 | 10 |
MetricMetadata |
products/data_catalog/frontend/DataCatalogMetricScene.tsx:469 |
11 | 10 |
<anonymous> |
products/data_catalog/frontend/dataCatalogMetricSceneLogic.tsx:676 |
11 | 10 |
generateEndpointPayload |
products/endpoints/frontend/endpointSceneLogic.tsx:60 |
11 | 10 |
loadEndpointSuccess |
products/endpoints/frontend/endpointSceneLogic.tsx:666 |
11 | 10 |
✅ Duplication (Python) — clean
New Python code duplication introduced by this branch. Fails at 70+ tokens in app code, or 150+ tokens when both copies live in test files. Advisory while the gate proves itself: extract a shared helper instead of copying.
✅ Duplication (TypeScript) — clean
New TypeScript code duplication introduced by this branch. Fails at 70+ tokens in app code, or 150+ tokens when both copies live in test files. Advisory while the gate proves itself: extract a shared helper instead of copying.
⚠️ Bundle size — 🔺 +4.1 KiB (+0.0%)
Uncompressed size of every built .js bundle, compared against the base branch.
Total: 69.76 MiB · 🔺 +4.1 KiB (+0.0%)
| File | Size | Δ vs base |
|---|---|---|
posthog-app/_parent/products/endpoints/frontend/EndpointScene.js |
63.7 KiB | 🔺 +2.4 KiB (+3.9%) |
posthog-app/src/scenes/AuthenticatedShell.js |
267.8 KiB | 🔺 +1.1 KiB (+0.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.63 MiB · 22 files | 🔺 +253 B (+0.0%) | █████████░ 88.7% of 1.84 MiB |
logged-out boot: index + App + bootApp (preloaded by every page, including /login)src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts |
3.72 MiB · 660 files | 🔺 +253 B (+0.0%) | █████████░ 92.3% of 4.03 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
7.59 MiB · 2,407 files | 🔺 +2.9 KiB (+0.0%) | █████████░ 91.0% of 8.34 MiB |
dashboard scenesrc/scenes/dashboard/Dashboard.tsx |
9.66 MiB · 3,389 files | 🔺 +253 B (+0.0%) | ███████░░░ 71.7% of 13.48 MiB |
today home pathsrc/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx |
7.60 MiB · 2,415 files | 🔺 +2.9 KiB (+0.0%) | █████████░ 88.5% of 8.58 MiB |
events scenesrc/scenes/activity/explore/EventsScene.tsx |
9.28 MiB · 3,241 files | 🔺 +253 B (+0.0%) | ███████░░░ 73.5% of 12.64 MiB |
replay detail scenesrc/scenes/session-recordings/detail/SessionRecordingDetail.tsx |
12.12 MiB · 4,129 files | 🔺 +253 B (+0.0%) | ████████░░ 77.1% of 15.72 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
🟢 src/lib/lemon-ui/LemonMarkdown/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/RichContentEditor/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/CodeSnippet/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/taxonomy/core-filter-definitions-by-group.json 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
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 src/scenes/project-homepage/today/TodayReportPage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.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/index.tsx |
| 1.3 KiB | src/RootErrorBoundary.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 |
|---|---|
| 306.2 KiB | ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 220.3 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 |
| 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 |
| 100.5 KiB | src/lib/api.ts |
| 92.5 KiB | src/products.tsx |
| 69.4 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 40.1 KiB | src/lib/utils/eventUsageLogic.ts |
| 38.7 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 |
| 29.0 KiB | ../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.js |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
| Size | File |
|---|---|
| 306.2 KiB | ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 279.9 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 220.3 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 |
| 153.7 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 |
| 110.0 KiB | ../packages/quill/packages/quill/dist/index.js |
| 100.5 KiB | src/lib/api.ts |
| 93.3 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 92.5 KiB | src/products.tsx |
| 90.6 KiB | ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js |
Largest files eagerly shipped from src/scenes/dashboard/Dashboard.tsx
| Size | File |
|---|---|
| 306.2 KiB | ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 279.9 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 220.3 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 |
| 181.8 KiB | src/queries/validators.js |
| 153.7 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 |
| 110.0 KiB | ../packages/quill/packages/quill/dist/index.js |
| 100.5 KiB | src/lib/api.ts |
| 93.3 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 92.5 KiB | src/products.tsx |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
| Size | File |
|---|---|
| 306.2 KiB | ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 279.9 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 220.3 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 |
| 153.7 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 |
| 110.0 KiB | ../packages/quill/packages/quill/dist/index.js |
| 100.5 KiB | src/lib/api.ts |
| 93.3 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 92.5 KiB | src/products.tsx |
| 90.6 KiB | ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js |
Largest files eagerly shipped from src/scenes/activity/explore/EventsScene.tsx
| Size | File |
|---|---|
| 306.2 KiB | ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 279.9 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 220.3 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 |
| 181.8 KiB | src/queries/validators.js |
| 153.7 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 |
| 110.0 KiB | ../packages/quill/packages/quill/dist/index.js |
| 100.5 KiB | src/lib/api.ts |
| 93.3 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 92.5 KiB | src/products.tsx |
Largest files eagerly shipped from src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
| Size | File |
|---|---|
| 315.5 KiB | ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/rrweb.js |
| 306.2 KiB | ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 279.9 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 220.3 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 |
| 181.8 KiB | src/queries/validators.js |
| 153.7 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 |
| 110.0 KiB | ../packages/quill/packages/quill/dist/index.js |
| 100.5 KiB | src/lib/api.ts |
| 93.3 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/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
✅ Toolbar bundle — eager 2.20 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.20 MiB · 19 files | no change | ████░░░░░░ 38.4% of 5.72 MiB |
| Deferred (lazy) | 2.11 MiB · 44 files | no change | n/a — loads on demand |
Loader dist/toolbar.js |
1.2 KiB | no change | █░░░░░░░░░ 6.0% of 19.5 KiB |
Largest eagerly-shipped chunks
| Size | File |
|---|---|
| 834.2 KiB | dist/toolbar/toolbar-app-LXAUZCP3.css |
| 657.4 KiB | dist/toolbar/chunk-chunk-PDXEE7YG.js |
| 259.4 KiB | dist/toolbar/chunk-chunk-EXS5VGKQ.js |
| 138.2 KiB | dist/toolbar/chunk-chunk-YTISI4G3.js |
| 131.8 KiB | dist/toolbar/chunk-chunk-FDH2IBXT.js |
| 75.2 KiB | dist/toolbar/toolbar-app-6G7F6XL7.js |
| 69.0 KiB | dist/toolbar/chunk-chunk-TSAL54PB.js |
| 35.6 KiB | dist/toolbar/chunk-chunk-U65TWWSR.js |
| 21.0 KiB | dist/toolbar/chunk-chunk-JYRTCG7P.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 — 🔺 +64.4 KiB (+0.0%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 959.85 MiB · 🔺 +64.4 KiB (+0.0%)
⚠️ Playwright — 1 flaky
🎭 Playwright report · View test results →
- create experiment via wizard, add metrics, and launch (chromium)
These issues are not necessarily caused by your changes.
Annoyed by this section? Help fix flakies and failures and it will go green!
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. 🧰 Additional context used📚 Code guidelines (17)No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: PostHog/posthog/.coderabbit.yaml Review profile: QUIET Plan: Enterprise Run ID: 📒 Files selected for processing (3)
Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 7 remain after this review. 📝 WalkthroughWalkthroughThe metric scene shows skeleton placeholders while a metric is loading and unavailable. Metric and node-detail data-quality tabs replace “Tests,” and legacy routes and related links use the updated tab name. Endpoint scenes add a Lineage tab and File-menu action when a saved query ID is available. The lineage view loads and displays the graph, with loading, missing-model, and failure states. Priority: ➖ Normal Merge Risk: 🔵 Low · up to The data-quality tab rename and the endpoint lineage tab look sound and are covered by tests. One minor open concern remains: the no-lineage state may not offer a Configuration action as the PR objective describes. This is a small follow-up and does not block merging. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The new lineage view uses existing project-scoped read permissions, and legacy tab links remain compatible. No introduced security issue was established. Overlapping requests and interrupted project or version transitions were not fully verified. Retained concerns Security review detailsSecurity Blast Radius
Security Findings and Attack Paths
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 1✅ Passed checks (1 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
products/endpoints/frontend/endpoint-tabs/EndpointLineage.tsx (1)
23-23: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd
data-attrto the new actions.Give Open configuration, Retry, and Open the full graph distinct kebab-case
data-attrvalues. Without them, the new interactions lack the selectors used by autocapture and UI tests.As per coding guidelines, “New buttons and key interactive elements get a kebab-case
data-attr.”Also applies to: 42-42, 67-67
Source: Coding guidelines
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository: PostHog/posthog/.coderabbit.yaml
Review profile: QUIET
Plan: Enterprise
Run ID: 556431dd-d95d-4bd2-bc4a-168cf94f426b
📒 Files selected for processing (6)
products/data_catalog/frontend/DataCatalogMetricScene.tsxproducts/data_catalog/frontend/tabs/MetricTestsTabLabel.tsxproducts/endpoints/frontend/EndpointScene.tsxproducts/endpoints/frontend/endpoint-tabs/EndpointLineage.tsxproducts/endpoints/frontend/endpoint-tabs/endpointLineageLogic.tsproducts/endpoints/frontend/endpointSceneLogic.tsx
Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 10 remain after this review.
|
[Medium risk] Renames a UI tab from tests to data-quality across multiple features. The PR is not ready to merge: two unresolved repository requirements remain, alongside the endpoint tab URL mismatch. Reviews (2) · Last reviewed commit: "feat(data-modeling): hide endpoint linea..." |
|
… tests tab key Show the endpoint lineage tab only for a materialized version, and use data-quality as the tab key on metric and node detail pages. Old tests links redirect to the new key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Note
Quiet mode is enabled, so only the most important comments were posted inline. Other review comments are grouped below.
🟡 Other comments (2)
products/endpoints/frontend/EndpointScene.tsx-274-277 (1)
274-277: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winPreserve the viewed version in the File-menu Lineage link.
When the URL omits
searchParams.version,endpointSceneLogicclearsviewingVersion. This action sends onlytab, so opening Lineage from an older version can switch to the current version.Suggested fix
- combineUrl(urls.endpoint(endpoint.name), { tab: EndpointTab.LINEAGE }).url + combineUrl(urls.endpoint(endpoint.name), { + ...router.values.searchParams, + tab: EndpointTab.LINEAGE, + }).urlproducts/endpoints/frontend/endpoint-tabs/EndpointLineage.tsx-30-32 (1)
30-32: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winAdd the Configuration action to the empty state.
When
lineageMissingis true,EndpointLineagerenders only the empty-state message. The Configuration action is therefore unavailable in this state. Add the Configuration button and preserve the viewed endpoint version in its destination.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository: PostHog/posthog/.coderabbit.yaml
Review profile: QUIET
Plan: Enterprise
Run ID: 66879af4-8cf2-4434-a2f1-a2cf5ffdb29b
📒 Files selected for processing (17)
frontend/src/products.tsxproducts/data_catalog/frontend/DataCatalogMetricScene.tsxproducts/data_catalog/frontend/dataCatalogMetricSceneLogic.test.tsproducts/data_catalog/frontend/dataCatalogMetricSceneLogic.tsxproducts/data_catalog/manifest.tsxproducts/data_modeling/frontend/ModelsOverviewTab.tsxproducts/data_modeling/frontend/nodeDetail/NodeDetailScene.tsxproducts/data_modeling/frontend/nodeDetail/nodeDetailSceneLogic.test.tsproducts/data_modeling/frontend/nodeDetail/nodeDetailSceneLogic.tsproducts/data_quality/backend/logic/notifications.pyproducts/data_quality/backend/tests/test_notifications.pyproducts/data_quality/frontend/overview/DataQualityOverview.test.tsxproducts/data_quality/frontend/overview/dataQualityOverviewLogic.test.tsproducts/data_quality/frontend/overview/dataQualityOverviewLogic.tsproducts/endpoints/frontend/EndpointScene.tsxproducts/endpoints/frontend/endpoint-tabs/EndpointLineage.tsxproducts/endpoints/frontend/endpoint-tabs/endpointLineageLogic.ts
Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 5 remain after this review.
|
Risk: No findings The delta since the last review contains no runtime changes: reordered/tightened TypeScript type annotations in the node detail and endpoint lineage kea typegen blocks, and a new Jest suite for the endpoint lineage logic. No security-relevant behavior is added or altered. Sentinel reviewed |
🦔 Hogbox preview · ✅ ready▶ Open the preview
commit |
The typechecking job regenerates kea types and then fails `git diff --exit-code`, so the stale generated interfaces in these two logic files turned the job red and took the frontend aggregate gate down with it. Add logic tests for the new endpoint lineage tab: a 404 means the backing model has no lineage node yet, any other failure is retryable, and the selector marks the endpoint's own node in the graph. Generated-By: PostHog Desktop Task-Id: bbd6d56d-3db5-457c-abee-56be818ba72c
|
/trunk merge |
There was a problem hiding this comment.
Approved.
Frontend-only UI change that adds a read-only lineage tab and renames a tab key, with redirects for the old tests links. It touches no risky territory, has logic tests, and the author is on the owning team. The only backend edit is one notification link string, which the frontend still resolves.
- Author wrote 35% of the modified lines and has 109 merged PRs in these paths (familiarity MODERATE).
- 👍 on the PR from greptile-apps[bot].
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✓ | no deny categories matched |
| size | ✓ | 282L, 14F substantive, 417L/20F incl. docs/generated/snapshots — within ceiling |
| tier | ✓ | T1-agent / T1d-complex (417L, 20F, two-areas, feat) |
| stamphog 2.3.1 | .stamphog/policy.yml @ 8a96337 · reviewed head 8a96337 |
Problem
Endpoint authors can't see which tables and models an endpoint reads from without leaving the endpoint page. The Metric scene also calls its checks tab "Tests" where every other scene says "Data quality", and it shows a bare spinner while loading.
Changes
data-qualityon the Metric and node detail pages, and in notification links. Oldtestslinks redirect to the new key.The tab looks up lineage by saved query id, which the lineage API already accepts. So the endpoints product needs no data modeling import and no extra node lookup.
How did you test this code?
typescript:check, on the devbox.Test rationale: No new tests. The tab is presentational over an existing API call, and the regression a unit test would catch (a zero-height graph container) is a layout issue only a render shows.
Release status
The renamed tab only shows where
data-quality-checksis already on, as before.Automatic notifications
Docs update
None.
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Agent: Claude Code, Opus 5.5
/setting-up-devbox,/verifying-posthog-ui,/writing-pr-descriptions.LemonTabsdoes not provide. It now has a fixed height.🤖 Generated with Claude Code