An inbound channel reply resolving an inbox item matched decision words
as substrings anywhere in the text, with allow words checked first. Two
consequences:
- A free-text answer to a question was hijacked whenever it merely
contained a keyword: "I have no preference - use us-east-1" resolved
the item as "deny" instead of the answer; "yesterday's numbers look
fine" resolved as "allow".
- A negated approval reply flipped to an approval: "I cannot approve
this yet" contains "approve", so the pending action was ALLOWED.
Intent now comes from the reply's leading word (or emoji) after the
[ow:...] token is stripped: "Yes, go ahead", "No.", "deny", a bare
thumbs-up all still resolve as before. Anything else falls through to
the free-text path, which inbox_approver already maps to deny - the
safe default for an approval gate.