Problem
hot-buffer.ts already resolves and tags ctx.channelId on its writes (openclaw_channel_id metadata) — but emotional-state.ts's store/fetch path for the Tin Man register carries no channel info at all. A warm voice call and a terse Discord exchange are indistinguishable to the register; it only ever records "how it felt," with zero sense of the medium that produced that feeling.
What we could do
Thread ctx.channelId through to storeEmotionalState's metadata — the value is already resolved elsewhere in the same codebase (hot-buffer.ts), so this is mostly plumbing, not new resolution logic. Whether the injected prose should ever mention medium is a separate, more careful design question — start by just capturing it in metadata (available for later analysis / debugging) without surfacing it in the injected text, so it doesn't become a new ritual signal or something the model starts performing around.
How we'd test it
Have a real voice call and a real terse Discord exchange happen on the same day, then check the stored register's metadata to confirm each is tagged with the correct channel — a pure data-presence check, not a judgment call about whether tone should change based on it.
Problem
hot-buffer.tsalready resolves and tagsctx.channelIdon its writes (openclaw_channel_idmetadata) — butemotional-state.ts's store/fetch path for the Tin Man register carries no channel info at all. A warm voice call and a terse Discord exchange are indistinguishable to the register; it only ever records "how it felt," with zero sense of the medium that produced that feeling.What we could do
Thread
ctx.channelIdthrough tostoreEmotionalState's metadata — the value is already resolved elsewhere in the same codebase (hot-buffer.ts), so this is mostly plumbing, not new resolution logic. Whether the injected prose should ever mention medium is a separate, more careful design question — start by just capturing it in metadata (available for later analysis / debugging) without surfacing it in the injected text, so it doesn't become a new ritual signal or something the model starts performing around.How we'd test it
Have a real voice call and a real terse Discord exchange happen on the same day, then check the stored register's metadata to confirm each is tagged with the correct channel — a pure data-presence check, not a judgment call about whether tone should change based on it.