Repository navigation
fix(cli,replay-node,message): keep the debug-only _wire_size stamp out of recordings and replay - #3756
Conversation
…out of recordings and replay The daemon stamps `_wire_size` on every `dora topic` debug frame so `dora topic info` can charge the real on-wire size. `dora record --proxy` stored those frames with the stamp intact, and the replay node forwarded `metadata.parameters` verbatim into `send_output`, so every downstream node of a replayed proxy recording saw a stale `_wire_size` in its input metadata — a key documented as "never set on real node→node outputs". `dora topic echo` also printed it as if it were user metadata. Make `WIRE_SIZE` one of the internal keys `strip_internal_parameters` removes (the daemon stamps it after stripping, so `topic info` still sees it), and call that helper at the three consumers that store, print or re-send debug frames: - record --proxy: while rewriting the event (now in a `prepare_proxy_event` helper next to the existing wire→public id rewrite) - replay-node: before `send_output`, so recordings made before this fix replay clean too - topic echo: before rendering the metadata The node API already strips internal keys on receive, so a node can no longer see the stamp either. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C38big8SF3jEa21cdm4q6B
|
😎 Merged successfully - details. |
Automated review run: summary
PRs opened (3)Correctness
Optimization / Documentation / Simplification: no PR this run. See the deferred and rejected items below. Combined-diff validation (run once on all branches together)
Deferred (real, but not opened this run)
Rejected findings
Generated by Claude Code |
|
🤖 Automated review (fully automated Claude Code review; no human has checked this, advisory only). No issues found. What I checked:
Generated by Claude Code |
Problem
The daemon stamps
_wire_size(dora_message::metadata::WIRE_SIZE) on everydora topicdebug frame (binaries/daemon/src/dataflow_lifecycle.rs:488) so thatdora topic infocan count the real on-wire size. Its docs say it is "Debug/inspection path only — never set on real node→node outputs".strip_internal_parametersdoes not remove it, and nothing else does either, so it leaks in two places:dora record --proxy→dora replay.run_record_proxyre-serializes each debug frame with its metadata unchanged, so every entry in the.dreccarries_wire_size. The replay node then callsnode.send_output(output_id, metadata.parameters, array), which puts a stale_wire_sizeinto the input metadata of every downstream node in the replayed dataflow.dora topic echoprints it as if it were the node's own metadata. Every frame showsmetadata={"_wire_size":N}, and with--format jsonthemetadatafield is nevernull, even when the output has no metadata.Fix
WIRE_SIZEbecomes one of the internal keys removed bydora_message::metadata::strip_internal_parameters, next to_schema_hashand_framing. The daemon stamps the key after it calls that function on the debug path, sodora topic infostill sees it;topic infois the key's only legitimate consumer.That helper is now called at the three consumers that store, print or re-send debug frames:
record --proxy: the existing wire→public output-id rewrite moves into a smallprepare_proxy_eventhelper, which now also strips the key. The rewrite logic itself is unchanged.send_output(replay_parameters), so proxy recordings made before this fix also replay clean.topic echo: strips before rendering.The node API already calls
strip_internal_parameterson receive, so a node can no longer observe the stamp through any path.Validation
Class: C (record/replay semantics)
mainas-is):dora-cli:command::record::tests::proxy_event_drops_the_debug_wire_size_stampdora-replay-node:tests::replay_drops_the_debug_wire_size_stampcargo test -p dora-cli --lib record(48 passed),cargo test -p dora-replay-node(13 passed),cargo test -p dora-message --lib metadata(23 passed),cargo test -p dora-node-api --lib(235 passed),cargo test -p dora-daemon --lib debug_topic(8 passed; the daemon stamp-after-strip tests).cargo clippy -p dora-message -p dora-cli -p dora-replay-node -p dora-daemon --all-targets -- -D warnings,cargo fmt --check: clean.make qa-breaking ARGS="--fast"against v1.1.0: no breaking changes.make qa-fast, the fault-tolerance E2E and the contract tests were run once on the combined diff of this review batch; results are in the summary comment.🤖 Generated with Claude Code
https://claude.ai/code/session_01C38big8SF3jEa21cdm4q6B
Generated by Claude Code