Feat
- contacts: write addresses (ADR) on create and update
Fix
- contacts: log the post-update re-parse failure as a warning
- contacts: reject a non-str/list ADR type instead of raising
- contacts: keep contact data out of all contacts-client logs
- contacts: keep address values out of logs, parse adr once
- contacts: never let unusable adr input wipe addresses on update
- contacts: warn on truncated ADR strings, log only rejected types
- contacts: treat a None canonical key as absent before aliasing
- contacts: keep a bare CR in ADR components on create