Skip to content

fix(aio): guard against null summarization response in summary view - #71085

Merged
Radu-Raicea merged 1 commit into
masterfrom
posthog-code/fix-ai-summary-null-guard
Jul 15, 2026
Merged

fix(aio): guard against null summarization response in summary view#71085
Radu-Raicea merged 1 commit into
masterfrom
posthog-code/fix-ai-summary-null-guard

Conversation

@Radu-Raicea

Copy link
Copy Markdown
Member

Problem

The AI observability trace summary view threw an uncaught TypeError: Cannot read properties of null (reading 'summary') from summaryViewLogic.ts. The generateSummary loader called the summarization endpoint and read data.summary directly. When the endpoint resolves to an empty/null body (for example when no summary is available yet), that dereference blew up. Surfaced by an error tracking alert.

Changes

Guard the response before reading its fields. If the body is missing or has no summary, the loader now throws a clear "No summary available for this trace yet" error, which the kea loader captures as a normal failure state instead of a null dereference.

How did you test this code?

No automated test added — this is a one-line defensive guard in a kea loader. I (the agent) did not run the frontend manually. The change is type-safe against the existing { summary, text_repr } | null loader default.

Docs update

No docs affected.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Investigated the error tracking issue from a Slack thread using the PostHog MCP tools (query-error-tracking-issues-list, query-error-tracking-issue-events) and the investigating-error-issue skill. The single sample event pointed at summaryViewLogic.ts:150 where data.summary was read without a null check. Chose a minimal guard over a broader refactor since the loader already models a nullable result.


Created with PostHog from a Slack thread

The trace summary loader read `data.summary` directly off the summarization API response. When the endpoint resolves to an empty body, this threw a TypeError. Guard the response before reading its fields so a missing summary surfaces as a normal loader failure.

Generated-By: PostHog Code
Task-Id: e8cd5716-c75f-4d35-bc0f-96895893fc0e
@Radu-Raicea Radu-Raicea self-assigned this Jul 15, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Hey @Radu-Raicea! 👋

It looks like your git author email on this PR isn't your @posthog.com address (radu@raicea.com). Since you're on the PostHog team, it's worth pointing your local git author email at your @posthog.com address. Why it matters:

  • Consistent work identity in git history — internal tooling that attributes commits to team members keys off your @posthog.com address.
  • Keeps team contributions easy to tell apart from external community ones when scanning history.

You can fix it for this repo with:

git config user.email "you@posthog.com"

Or set it globally with git config --global user.email "you@posthog.com". No need to redo this PR — just a nudge for next time. 🙂

@Radu-Raicea
Radu-Raicea marked this pull request as ready for review July 15, 2026 14:04
@Radu-Raicea Radu-Raicea added the stamphog Request AI approval (no full review) label Jul 15, 2026
@github-actions

github-actions Bot commented Jul 15, 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 1f4247c · box box-960934811ebe · ready in 737s (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 15, 2026 14:05
@greptile-apps

greptile-apps Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Reviews (1): Last reviewed commit: "fix(aio): guard against null summarizati..." | Re-trigger Greptile

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

Trivial 6-line null-guard fix in one file, author is on the owning team, no risky territory involved.

  • 👍 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 6L, 1F substantive — within ceiling
tier T1-agent / T1a-trivial (6L, 1F, single-area, fix)
stamphog 2.0.0b3 .stamphog/policy.yml @ 90ad2ce · reviewed head 1f4247c

@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

⚠️ Bundle size — 🔺 +77 B (+0.0%)

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

Total: 64.80 MiB · 🔺 +77 B (+0.0%)

No file changed by more than 1000 B.

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.15 MiB · 2,979 files no change █████████░ 88.1% 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.1 KiB ../node_modules/.pnpm/posthog-js@1.401.0/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.7 KiB ../node_modules/.pnpm/posthog-js@1.401.0/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
106.1 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 — 🔺 +460 B (+0.0%)

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

Total: 1308.72 MiB · 🔺 +460 B (+0.0%)

@Radu-Raicea
Radu-Raicea enabled auto-merge (squash) July 15, 2026 14:10
@trunk-io

trunk-io Bot commented Jul 15, 2026

Copy link
Copy Markdown

Static BadgeStatic BadgeStatic BadgeStatic Badge

View Full Report ↗︎Docs

@Radu-Raicea
Radu-Raicea merged commit d668782 into master Jul 15, 2026
293 of 320 checks passed
@Radu-Raicea
Radu-Raicea deleted the posthog-code/fix-ai-summary-null-guard branch July 15, 2026 14:24
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 15, 2026

Copy link
Copy Markdown

Deploy status

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