Skip to content

feat(tracing): add portable journal file exporter - #116

Merged
sklinglernv merged 2 commits into
mainfrom
condensed-traces
Aug 10, 2026
Merged

feat(tracing): add portable journal file exporter#116
sklinglernv merged 2 commits into
mainfrom
condensed-traces

Conversation

@sklinglernv

Copy link
Copy Markdown
Collaborator

What does this PR do?

  • Adds an opt-in exporters.journal_file() exporter that writes append-only session.nooa.jsonl artifacts containing message-stripped OTLP spans and content-addressed journal block/call records.
  • Extends nooa import-traces and nooa import-harbor to stream the new records into the viewer and remap journal session IDs consistently with renamed files and Harbor trials.
  • Preserves all existing exporter defaults and supports HTTP and file journal callbacks simultaneously in either construction order.
  • Adds end-to-end reconstruction, Harbor remapping, deduplication, coexistence, and factory coverage.

This persists the existing journal protocol; true snapshot-delta encoding of the remaining full hash skeleton is intentionally left for a follow-up.

Related issues

None.

Validation

  • Commit hooks: Ruff, Ruff format, Pyright, SPDX, and repository checks passed.
  • Broad tracing/import suite: 190 passed.
  • Focused final suite: 14 passed.

Checklist

  • Code follows the project style (Ruff and format checks pass)
  • Tests added/updated and passing
  • Docs updated for the new public exporter API
  • New source files carry an SPDX license header

Signed-off-by: Severin Klingler <sklingler@nvidia.com>
@sklinglernv

Copy link
Copy Markdown
Collaborator Author

End-to-end validation completed against a real NOOA viewer on localhost:5001.

  • Ran a real synchronous LiteLLM request against a temporary OpenAI-compatible HTTP endpoint with exporters.journal_file enabled.
  • Produced a 2,869-byte, five-record e2e-journal-pr116-8c41d6.nooa.jsonl artifact: manifest, two content-addressed blocks, one call record, and one stripped OTLP span.
  • Verified both SHA-256 block hashes, single-copy input/output bodies, stripped LLM payload attributes, and call-to-span correlation.
  • Imported the artifact with nooa import-traces: 1 imported, 0 skipped.
  • Flushed and queried the viewer APIs; one span and one linked call were present, and /api/trace/export reconstructed E2E_INPUT_MARKER and E2E_OUTPUT_MARKER as standard OpenInference message attributes with total token count 10.

All end-to-end assertions passed.

Signed-off-by: Severin Klingler <sklingler@nvidia.com>
@furgalep

Copy link
Copy Markdown
Collaborator

LGTM

@furgalep
furgalep self-requested a review August 10, 2026 07:27

@furgalep furgalep left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve

@sklinglernv
sklinglernv merged commit 0ecff89 into main Aug 10, 2026
6 checks passed
@sklinglernv
sklinglernv deleted the condensed-traces branch August 10, 2026 07:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants