Skip to content

Tankcorn/preview observability streaming#6524

Merged
Ankcorn merged 13 commits intomainfrom
tankcorn/preview-observability-streaming
Apr 8, 2026
Merged

Tankcorn/preview observability streaming#6524
Ankcorn merged 13 commits intomainfrom
tankcorn/preview-observability-streaming

Conversation

@Ankcorn
Copy link
Copy Markdown
Member

@Ankcorn Ankcorn commented Apr 8, 2026

Summary

Adds preview identity metadata (id, slug, name) to streaming tail worker (STW) onset events. This allows streaming tail workers to identify when they're observing a preview Worker and
which preview it is.

Classic (buffered) tail workers already have access to trace.preview — this PR extends the same metadata to the streaming path.

Motivation

Workers Previews let developers test changes before deploying to production. Streaming tail workers currently have no way to distinguish preview invocations from production ones. This
change exposes preview metadata on the onset event so observability tooling can correctly attribute and filter preview traffic.

Changes

Streaming tail worker onset events

  • Added preview field to Onset::WorkerInfo struct in trace.h
  • Serialized to JS onset event object in trace-stream.c++
  • Added preview @10 :TracePreviewInfo to Trace.Onset in worker-interface.capnp
  • Plumbed through capnp copyTo/reader round-trip in trace.c++
  • Plumbed from Trace into Onset::WorkerInfo in tracer.c++

TypeScript types

  • Added TracePreviewInfo interface to types/defines/trace.d.ts
  • Added preview?: TracePreviewInfo to the STW Onset interface
  • Regenerated type snapshots for latest and experimental

Tests

  • Extended trace-test.c++ onset read/write/clone test to verify preview metadata round-trips correctly

API

  // Streaming tail worker
  export default {
    tailStream(event) {
      console.log(event.event.preview);
      // { id: "63bafce9...", slug: "feature-my-branch", name: "feature/my-branch" }
      return async (event) => { /* ... */ };
    }
  }

@Ankcorn Ankcorn requested review from a team as code owners April 8, 2026 13:30
@Ankcorn Ankcorn requested a review from dario-piotrowicz April 8, 2026 13:30
@ask-bonk
Copy link
Copy Markdown
Contributor

ask-bonk bot commented Apr 8, 2026

OK, same pattern. That's fine -- both ScriptVersion and TracePreviewInfo have explicit copy constructors that do deep string copies. This is correct for JSG_LAZY_READONLY_INSTANCE_PROPERTY usage since it's only called once per instance.

Everything looks clean. No logic bugs, no security issues, no backward compat violations, no missing compat flags. The code follows existing patterns, tests cover the serialization roundtrip, and the TS types are correctly propagated.

LGTM

github run

@Ankcorn Ankcorn enabled auto-merge April 8, 2026 13:50
@Ankcorn Ankcorn disabled auto-merge April 8, 2026 13:51
@Ankcorn Ankcorn enabled auto-merge (squash) April 8, 2026 13:51
@Ankcorn Ankcorn merged commit 5ebf51c into main Apr 8, 2026
33 of 46 checks passed
@Ankcorn Ankcorn deleted the tankcorn/preview-observability-streaming branch April 8, 2026 14:43
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.

3 participants