Confirm post-migration span-shape and propagation parity against the baseline #144

Closed
opened 2026-09-29 17:58:03 +00:00 by cameron · 1 comment
Owner

Part of #135

Work

Re-capture the #137 request set on the completed feature/tracing-migration
and diff the span shape against the pre-migration baseline
(docs/tracing-baseline/pre-migration/, branch baseline/span-baseline-137,
commit 73523c6).

  • Build release off the finished migration branch.
  • Replay the same requests against a local Jaeger: GET /photos,
    GET /memories, POST /insights/generate/agentic,
    POST /insights/chat/stream, plus the incoming-traceparent probe.
  • Regenerate span-inventory.json and compare operation names, span.kind,
    attribute keys, and parent/child nesting.
  • Confirm the "before" gaps are closed: one root span per request; the async
    generation parented to its HTTP request (not a separate trace); the
    streaming chat path no longer fragmented.
  • Confirm parity is preserved: llm.request keeps kind=client with
    llm.model / llm.provider / llm.operation; db.* keeps
    db.query_type / db.operation; an incoming W3C traceparent still joins
    the caller's trace (now via the middleware root span).
  • Record intentional differences (the middleware root span; the dropped
    per-handler request spans) as expected, not regressions.

Note: re-capture needs the same preconditions #137 hit — a populated DB copy,
local Jaeger, release build, and a temp aux bind (the hardcoded
localhost:8088 collides with the live image-rs.service).

Resolution

The after-capture diff against the baseline, and an explicit parity verdict
(pass, or an intentional-difference list).

Part of #135 ## Work Re-capture the #137 request set on the completed `feature/tracing-migration` and diff the span shape against the pre-migration baseline (`docs/tracing-baseline/pre-migration/`, branch `baseline/span-baseline-137`, commit `73523c6`). - Build release off the finished migration branch. - Replay the same requests against a local Jaeger: `GET /photos`, `GET /memories`, `POST /insights/generate/agentic`, `POST /insights/chat/stream`, plus the incoming-`traceparent` probe. - Regenerate `span-inventory.json` and compare operation names, `span.kind`, attribute keys, and parent/child nesting. - Confirm the "before" gaps are closed: one root span per request; the async generation parented to its HTTP request (not a separate trace); the streaming chat path no longer fragmented. - Confirm parity is *preserved*: `llm.request` keeps `kind=client` with `llm.model` / `llm.provider` / `llm.operation`; `db.*` keeps `db.query_type` / `db.operation`; an incoming W3C `traceparent` still joins the caller's trace (now via the middleware root span). - Record intentional differences (the middleware root span; the dropped per-handler request spans) as expected, not regressions. Note: re-capture needs the same preconditions #137 hit — a populated DB copy, local Jaeger, release build, and a temp aux bind (the hardcoded `localhost:8088` collides with the live `image-rs.service`). ## Resolution The after-capture diff against the baseline, and an explicit parity verdict (pass, or an intentional-difference list).
Author
Owner

Duplicate of #143 ("Verify parity against the baseline"), which already exists, predates this ticket, and is already wired to the same blockers (#140/#141/#142, with #137 now closed). Closing this as the redundant copy; #143 is canonical.

Duplicate of #143 ("Verify parity against the baseline"), which already exists, predates this ticket, and is already wired to the same blockers (#140/#141/#142, with #137 now closed). Closing this as the redundant copy; #143 is canonical.
cameron added the wayfinder:task label 2026-09-30 00:47:33 +00:00
Sign in to join this conversation.