# T2.1 — Add `SignalMessage::TransportFeedback` **Status:** Pending Review **Agent:** Kimi Code CLI **Started:** 2026-05-11T17:00Z **Completed:** 2026-05-11T17:04Z **Commit:** (see git log) **PRD:** ../PRD-transport-feedback-bwe.md ## What I changed - `crates/wzp-proto/src/packet.rs` — Added `TransportFeedback` variant to `SignalMessage`: ```rust TransportFeedback { #[serde(default)] version: u8, stream_id: u8, acked_seqs: Vec, nacked_seqs: Vec, remb_bps: u32, recv_time_us: u64, } ``` - `crates/wzp-proto/Cargo.toml` — Added `bincode = "1"` to `[dev-dependencies]` for forward-compat serialization tests. ## Why these choices `#[serde(default)]` on `version` ensures old senders that omit the field deserialize cleanly (version = 0). `bincode` is already used elsewhere in the workspace (e.g., `wzp-crypto` tests), so adding it as a dev-dependency carries no supply-chain risk. ## Deviations from the task spec None. ## Verification output ```bash $ cargo test -p wzp-proto transport_feedback running 2 tests test packet::tests::transport_feedback_roundtrip ... ok test packet::tests::transport_feedback_default_version ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 113 filtered out; finished in 0.00s ``` ## Test summary - Tests added: 2 - `transport_feedback_roundtrip` — JSON + bincode serialization/deserialization - `transport_feedback_default_version` — verifies omitted `version` field defaults to 0 - Tests modified: 0 - `wzp-proto` test count: 115 (was 113 before T2.1) - `cargo clippy -p wzp-proto --all-targets -- -D warnings`: pass - `cargo fmt --all -- --check`: pass ## Risks / follow-ups - No production code consumes `TransportFeedback` yet — T2.2/T2.3 will wire the BWE layer to produce and ingest it. ## Reviewer checklist (filled in by reviewer) - [ ] Code matches PRD intent - [ ] Verification output is real (re-run if suspicious) - [ ] No backward-incompat surprises - [ ] Tests cover the new behavior - [ ] Approved