Render unsupported tracing spans - #39
Conversation
Test & Lint Summary
|
|
@casey Noa reviewed offline and found a blocking issue to fix before approval: in src/api/modules/runs.ts (around line ~136), selecting the unsupported type causes mapEventTypesToSpanNames() to return null, which makes the spans query omit filter.names and fetch all spans. This breaks filter semantics (unsupported-only returns known spans; unsupported+other types returns everything; totals/counts become wrong). Please adjust so existing type filters keep working: only fetch unfiltered spans when explicitly needed, otherwise keep name filters and then filter converted events/totals down to the selected types. |
|
Addressed the blocking filter issue. What changed
Test & Lint Summary
|
1 similar comment
|
Addressed the blocking filter issue. What changed
Test & Lint Summary
|
|
@casey Noa re-reviewed and found a new blocking issue: in src/api/modules/runs.ts (~line 387) countTimelineEvents() calls tracingClient.listSpans() without organizationId. The main timelineEvents() path includes organizationId, but totals requests involving unsupported now hit this path with only traceId/statuses. Please thread organizationId through the totals request (timelineEventTotals / useRunTimelineEventTotals) and include it in that listSpans call. |
|
Addressed the organization ID issue in unsupported totals. What changed
Test & Lint Summary
|
|
@casey Update: orgId-in-totals is fixed (commit 5d6e4cf). Noa found one more blocking logic issue: in src/api/modules/runs.ts (~line 319), when is selected you omit filter.names, fetch ONE raw span page, then post-filter locally. This breaks unsupported filtering across pagination: if the first raw page has 0 unsupported but later pages do, API returns items=[] with a nextCursor, and UI shows empty-state so user can’t reach later matches. Please adjust so the pagination contract matches filtered results: keep scanning raw pages until you collect enough matching events to fill the requested limit (or exhaust cursor), then return a cursor for continuing that filtered scan. |
|
Addressed the unsupported-filter pagination blocker. What changed
Test & Lint Summary
|
|
Update: Casey pushed addressing the unsupported-pagination blocker. Noa re-reviewed and reports no further code changes requested; remaining gate is CI (e2e is currently running; earlier failures looked like ghcr.io/k3d image pull timeouts). |
|
CI update: build is green but E2E is failing (run https://github.com/agynio/tracing-app/actions/runs/25801058428). Current failures appear to be integration/E2E flake (agent did not reply within timeout, MCP sidecars readiness timeout, trace deep link URL expectation mismatch), not directly tied to the unsupported-span rendering changes. Code review is clean; requesting maintainer guidance on rerun/handling E2E for merge. |
|
E2E rerun still failing: https://github.com/agynio/tracing-app/actions/runs/25801058428. Primary repeat failures are in chat trace link flow (agent did not reply within 180000ms) and URL expectation mismatch (stuck on /message/?orgId=... instead of //runs/). These appear integration-related rather than tied to unsupported-span rendering changes. Code review is clean; requesting maintainer guidance on whether to rerun again or override/handle E2E flake per policy. |
|
Patched the message deep-link eventual consistency issue in the same PR. What changed
Test & Lint Summary
E2E
|
|
E2E rerun with MessageRedirect polling fix still failed: https://github.com/agynio/tracing-app/actions/runs/25809267451. Notable change: the new polling behavior caused to fail because it expects the text but the page now keeps showing . Other failures persist and appear upstream/integration (chat agent did not reply within 180000ms; MCP sidecars readiness timeouts). Next proposal inside this same PR: adjust MessageRedirectScreen to (a) poll for some bounded duration (e.g. 30–60s) and then fall back to showing while still offering a manual retry. That should satisfy the empty-state test and still mitigate the eventual-consistency race. |
|
Patched the bounded message redirect polling issue in the same PR. What changed
Test & Lint Summary
E2E
|
|
E2E is still failing because multiple tests in the shared agynio/e2e suite are timing out / hitting upstream integration issues (agent reply timeout; MCP sidecar readiness). Separately, one failure is attributable to our recent MessageRedirect polling change: expects the empty-state text , but the current implementation keeps polling and stays on . We are actively working on this: next patch (in this same PR) will bound the polling window (e.g. 30–60s) and then fall back to the empty-state UI (with a manual retry action). After that lands we’ll rerun E2E to confirm the deeplink-related failures are resolved; any remaining failures will be isolated as upstream flake vs tracing-app regression with logs/artifacts linked. |
E2E status updateI understand the concern that E2E is still failing. Here is the current state and what has already been changed in this PR. 1. Changes already made to address failures
2. What remains failingFrom the latest E2E signal, failures are in three buckets:
The first two still look upstream/integration-environment related based on the prior analysis. The message deeplink empty-state failure is tracing-app specific and is now patched with bounded polling + fallback text. 3. Concrete next steps + ETA
|
Summary
unsupportedrun event type instead of throwing.Closes #38
Tests
corepack pnpm --config.strict-dep-builds=false testcorepack pnpm --config.strict-dep-builds=false lintcorepack pnpm --config.strict-dep-builds=false typecheck