feat: params — TunnelParams/Substrate wire types + tunnel_open_spec
- TunnelParams {resource, substrate} with deny_unknown_fields (ADR-001
loud-rejection posture); Substrate enum ships unix in v1 (OQ-TN-14)
- tunnel_open_spec(): channels/tunnel/sub, Sub-typed, alk/tunnel
channel-open marker, input schema enum [tcp,udp,unix], channel_id
output schema (minimum 1, required), tunnel:open ACL (ADR-006),
discovery description
- establishment_reason delegates to alkcall 0.7.0's typed
ChannelOpenError::establishment_reason; error re-exported through
params
- 6 unit tests: serde round-trip, unknown/missing-field rejection,
unknown-substrate rejection, spec conformance to wire.md
Verified: cargo test, clippy --all-targets -D warnings (native +
wasm32), fmt --check, wasm32 check — all clean