fix(acp): match a slash command against the prompt ledger it was rebuilt from
The background watcher decides whether a transcript record belongs to a turn codeg sent (the wire renders it) or to out-of-turn work it has to surface as an overlay, by matching the record's initiator text against the prompt ledger. A slash command has no readable initiator text: the CLI persists the invocation as command tags, so slash_command_display rebuilds it as the name, one space, and the trimmed args. That drops whatever separator the sender actually typed, and the composer already inserts a space after a command badge so a sender who types their own sends two. The rebuilt text then does not start with the fingerprint, the command classifies as an out-of-turn initiator, and the whole wire-rendered turn comes back as a background overlay beside itself, which is the duplicated /goal turn again by a different route. Compare on collapsed whitespace as well as bytes, which keeps the match exact in words and order.
A
Adam Dalloul committed
116d033ab51a3f0b42d1f7a17cce66501a1f6326
Parent: 938b235