Recover buffered tracking positions without request storms, cross-device attribution or unintended sends while paused.
Scope
Upload in stable queue order with controlled sequential requests and backoff starting at 5 seconds, doubling to a maximum of 5 minutes. Reset backoff after success.
Remove a specific position only after HTTP 2xx or approved retention/capacity discard. Document handling of permanent rejection without silent data loss or a tight retry loop.
Stop automatic uploads/retries when explicitly paused. Cancel in-flight work where possible; do not claim cancellation retracts a position already accepted by a server.
Pause before changing destination or device identifier. With pending positions, offer Cancel change or Discard pending positions and apply, with explicit discard confirmation. Without pending positions, apply and remain paused.
Never reassign old positions to a new destination/identity, including a newly generated identifier. Keep one active configuration for the prototype.
Acceptance criteria
Offline/reconnect, transient failure and successful recovery preserve ordering and respect backoff.
Non-2xx does not delete a position or update the last accepted-send status.
Pause and destination changes cannot race into a request using the wrong configuration.
Cancel preserves pending data/configuration; confirmed discard applies the new configuration and remains paused.
Clearing the queue during an upload cannot cause an unrelated row to be removed.
Documentation acknowledges possible duplicate delivery when acceptance occurs but the response is lost; no exactly-once guarantee is made.
Validation
Use the local receiver and controlled timing, including restart mid-failure. Do not modify external server configuration or test against real device history automatically.
Add or extend this feature's meaningful deterministic tests in the CI workflow from PROTO-002 as part of the same implementation, without waiting for the final milestone. Keep physical-Mac checks explicitly manual.
References
Pinned official source references for implementation comparison; mobile APIs are not assumed available on macOS.
Originally created by @jayanezj on GitHub (Oct 23, 2026).
Original GitHub issue: https://github.com/jayanezj/traccar-client-macos/issues/10
## Goal
Recover buffered tracking positions without request storms, cross-device attribution or unintended sends while paused.
## Scope
- Upload in stable queue order with controlled sequential requests and backoff starting at 5 seconds, doubling to a maximum of 5 minutes. Reset backoff after success.
- Remove a specific position only after HTTP 2xx or approved retention/capacity discard. Document handling of permanent rejection without silent data loss or a tight retry loop.
- Stop automatic uploads/retries when explicitly paused. Cancel in-flight work where possible; do not claim cancellation retracts a position already accepted by a server.
- Pause before changing destination or device identifier. With pending positions, offer Cancel change or Discard pending positions and apply, with explicit discard confirmation. Without pending positions, apply and remain paused.
- Never reassign old positions to a new destination/identity, including a newly generated identifier. Keep one active configuration for the prototype.
## Acceptance criteria
- [ ] Offline/reconnect, transient failure and successful recovery preserve ordering and respect backoff.
- [ ] Non-2xx does not delete a position or update the last accepted-send status.
- [ ] Pause and destination changes cannot race into a request using the wrong configuration.
- [ ] Cancel preserves pending data/configuration; confirmed discard applies the new configuration and remains paused.
- [ ] Clearing the queue during an upload cannot cause an unrelated row to be removed.
- [ ] Documentation acknowledges possible duplicate delivery when acceptance occurs but the response is lost; no exactly-once guarantee is made.
## Validation
Use the local receiver and controlled timing, including restart mid-failure. Do not modify external server configuration or test against real device history automatically.
Add or extend this feature's meaningful deterministic tests in the CI workflow from [PROTO-002](https://github.com/jayanezj/traccar-client-macos/issues/2) as part of the same implementation, without waiting for the final milestone. Keep physical-Mac checks explicitly manual.
## References
Pinned official source references for implementation comparison; mobile APIs are not assumed available on macOS.
- [Official source 1](https://github.com/traccar/traccar-client-sdk/blob/a297767642e98193eb7939cbb4d54c101ff23610/core/src/commonMain/kotlin/org/traccar/client/TrackerEngine.kt)
## Dependencies
- [PROTO-006](https://github.com/jayanezj/traccar-client-macos/issues/6)
- [PROTO-008](https://github.com/jayanezj/traccar-client-macos/issues/8)
- [PROTO-009](https://github.com/jayanezj/traccar-client-macos/issues/9)
<!-- planning-id: PROTO-010 -->
jayanezj
added this to the M4 - Reliable tracking and persistence milestone 2026-10-23 18:09:15 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @jayanezj on GitHub (Oct 23, 2026).
Original GitHub issue: https://github.com/jayanezj/traccar-client-macos/issues/10
Goal
Recover buffered tracking positions without request storms, cross-device attribution or unintended sends while paused.
Scope
Acceptance criteria
Validation
Use the local receiver and controlled timing, including restart mid-failure. Do not modify external server configuration or test against real device history automatically.
Add or extend this feature's meaningful deterministic tests in the CI workflow from PROTO-002 as part of the same implementation, without waiting for the final milestone. Keep physical-Mac checks explicitly manual.
References
Pinned official source references for implementation comparison; mobile APIs are not assumed available on macOS.
Dependencies