Design the complete client-side architecture for a system that assigns and tracks ATM refilling tasks for field workers, including offline synchronization.
For this coding exercise, implement the synchronization core as a pure function. Merge local and remote task snapshots, apply pending offline field operations deterministically, ignore operations already acknowledged by the server, and return the merged tasks plus operations that still require upload.
The function receives dictionaries keyed by task ID and returns { "tasks": ..., "pending_ops": ... }. Each task contains status, assignee, per-field timestamps, version, and optional applied_ops; each operation contains op_id, task_id, field, value, and ts.
status and assigneedef reconcile_tasks(local_tasks, remote_tasks, pending_ops):