Clean up warnings: collapse write_task/write_attrs wrappers
Removed the parameterless `write_task` / `write_attrs` convenience
wrappers (only ever used from tests after the rich-message refactor)
and merged them into a single function each that always takes
event/detail. Test call sites pass `"write", None` explicitly. The
write_task_with_event / write_attrs_with_event names go away.
Also:
- Replace two clippy `get(k).is_none()` warnings with `!contains_key(k)`.
Build is now warning-free; clippy --all-targets is silent.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>