Server authority
Veldriq Field
When local and server state differ, the backend remains the business authority. The Flutter UI never treats a local complete as final.
Screen path: after Sync now, lists and Closeout chips update from pull. Native Field is not the Field PWA.
Preconditions
Section titled “Preconditions”A successful push/pull (or a rejection). Several technicians working offline do not share one authoritative team state on the phone.
- Work locally. Chips may say Pending sync or Completion pending sync.
- Sync while the app is running.
- Read the result: accept, reject, or attention.
- If Closeout is no longer valid, the server can reject completion — Status stays in attention; the appointment is not locally forced to Completed.
Consequences:
- assignment removed — job can disappear on the next pull, or show This job is no longer assigned. Unsynced work is saved on this device.
- appointment cancelled or rescheduled — list/detail update on pull
- form version changed — review and resubmit; server not overwritten automatically
- permission/licence changed — Access denied.
- completion already processed — stale Complete job is rejected
- invalid stale operation — Sync shows the rejection
There is no claim of automatic universal conflict resolution.
What works / does not work
Section titled “What works / does not work”| Works | Does not work | |
|---|---|---|
| Server reject | Attention row, keep pending | Force-complete in Flutter |
| Local artefacts after revoke | Stay until synced | Keep executing the job |
| Team truth offline | Per device | Shared crew Closeout on one phone |
If the job vanished after Sync: ask office. Do not recreate it in Field. See Job changed.