Problem
In the Darwin watcher internal/clip/watcher_darwin.go:100-126, lastTS is updated only after a successful PUT.
A permanent 413 or 415 response leaves the same clipboard hash pending, so the watcher retries the same rejected image every tick and can generate sustained traffic and logs.
Acceptance criteria
- Classify permanent client errors separately from transient transport or server errors.
- Do not retry an image forever after a permanent rejection.
- Continue retrying transient failures.
- Add Darwin-specific tests for 413, 415, 5xx, and successful retry behavior.
Problem
In the Darwin watcher internal/clip/watcher_darwin.go:100-126, lastTS is updated only after a successful PUT.
A permanent 413 or 415 response leaves the same clipboard hash pending, so the watcher retries the same rejected image every tick and can generate sustained traffic and logs.
Acceptance criteria