Skip to content

docs(design): 060 tracing off by default, wall-clock epoch in trace IDs - #468

Merged
lxsaah merged 3 commits into
mainfrom
claude/serene-lovelace-d1m836
Nov 11, 2026
Merged

lxsaah merged 3 commits into
mainfrom
claude/serene-lovelace-d1m836

Conversation

@lxsaah

@lxsaah lxsaah commented Nov 11, 2026

Copy link
Copy Markdown
Member
  • trace-context is off by default; every crate that depends on core
    forwards the feature, and libraries never enable it (§2.6)
  • the trace ID's reserved bytes hold an epoch from unix_time(), so
    trace IDs do not repeat across a restart on instances with a wall
    clock (§4.2)
  • span IDs may still repeat across a restart; consumers bound parent
    walks (§6)

Co-Authored-By: Claude Fable 5.2 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01WGkDJ8UNN7mWpJEEj5zxzX

- trace-context is off by default; every crate that depends on core
  forwards the feature, and libraries never enable it (§2.6)
- the trace ID's reserved bytes hold an epoch from unix_time(), so
  trace IDs do not repeat across a restart on instances with a wall
  clock (§4.2)
- span IDs may still repeat across a restart; consumers bound parent
  walks (§6)

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WGkDJ8UNN7mWpJEEj5zxzX
- joins: one parent per write, stated as a limit; handlers take ctx
- single-input async body renamed on_stream, same shape as on_triggers
- WebSocket duplicate-tag check through the upgrade URL, server side
- Zenoh: zenoh:// carries the trace as the attachment, ros2:// does not
- record.set accepts an optional trace, so a client can name a cause
- carrier ignores trailing fields; AimX minor depends on 059's order
- all three phases ship in one 4.0.0 release
- tags for unprovisioned instances, OwnTagInbound logging, sync API,
  portable-atomic reuse, record.get wording

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WGkDJ8UNN7mWpJEEj5zxzX
A throwaway spike tested the opt-in feature, the epoch, on_stream, ctx in
join handlers, record.set with a cause, handshake tags and the Zenoh
attachment. Findings written into the design:

- a fallback tag in test builds: the mandatory tag failed 41 core, 52
  Tokio adapter and 11 Zenoh tests with tracing on
- the ID source is compiled only with the feature (Cortex-M build)
- parent walk checks trace ID and exact depth; a cycle forms after
  three derived writes
- record.set: cause through JsonRecordAccess, trace in the reply
- tag text form; ws_url_with_version takes the tag
- second cost measurement, Zenoh attachment result

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WGkDJ8UNN7mWpJEEj5zxzX
@lxsaah
lxsaah merged commit 787c246 into main Nov 11, 2026
9 checks passed
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