Found during review of #41. Test-coverage gap on a merged feature.
Problem
The channel fence in dispatchChannelToolCall is tested only for channel_open and foreign channel_close. The action forks actually perform — channel_publish — has no coverage:
- home-defaulting (omitted
channelId → injected home) — untested
- foreign-publish rejection — untested
Additionally, the existing fence test reaches through as unknown as { dispatchChannelToolCall } and calls the private directly, so it validates the guard in isolation, not that a fork's real tool call is routed through it.
Suggested fix
Add a channel_publish case to test/conversation-routing.test.ts: assert (a) omitted channelId is rewritten to the home channel, and (b) a foreign channelId is rejected. ~3 asserts.
Found during review of #41. Test-coverage gap on a merged feature.
Problem
The channel fence in
dispatchChannelToolCallis tested only forchannel_openand foreignchannel_close. The action forks actually perform —channel_publish— has no coverage:channelId→ injectedhome) — untestedAdditionally, the existing fence test reaches through
as unknown as { dispatchChannelToolCall }and calls the private directly, so it validates the guard in isolation, not that a fork's real tool call is routed through it.Suggested fix
Add a
channel_publishcase totest/conversation-routing.test.ts: assert (a) omittedchannelIdis rewritten to the home channel, and (b) a foreignchannelIdis rejected. ~3 asserts.