Émile Ré
dc92fd238f
Fold PromoteSource into Update
...
Every PromoteSource caller already loaded the tracker pattern under
the same transaction, so a dedicated single-column UPDATE only
duplicated machinery and forced callers to learn a second mutation
verb. Add `source = @source` to Update's SET clause, mutate
Source/UpdatedAt on the receiver, and call Update at the three
promotion sites (worker merge loop, worker adoption loop, and
reportDetectedTracker). The shouldPromoteSource gate still ranks the
candidate against the loaded value; Update is now the single write
path that can advance source, with a doc comment spelling out the
load-first contract.
Re-cast the coredata tests around Update: WritesSource pins the
round-trip from receiver to DB, NotFoundForMissingRow preserves the
ErrResourceNotFound contract callers rely on. The old
OnlyTouchesSourceAndUpdatedAt test was a property of the narrow
PromoteSource UPDATE and no longer applies — Update intentionally
rewrites the full editable column set from the receiver.
Signed-off-by: Émile Ré <emile@probo.com >
2026-05-26 18:06:55 +02:00
..
2026-05-26 15:49:17 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 09:27:28 +04:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-13 21:21:39 +02:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-03-21 19:16:19 +01:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-13 21:21:39 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 09:27:28 +04:00
2026-05-20 09:27:28 +04:00
2026-05-20 09:27:28 +04:00
2026-05-23 13:31:38 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-03-25 17:38:32 +01:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 11:46:39 +04:00
2026-05-23 14:07:37 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 11:46:39 +04:00
2026-03-25 17:38:32 +01:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-03-25 17:38:32 +01:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-04-13 14:50:42 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-23 14:07:37 -07:00
2026-05-22 10:20:06 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-04-28 15:28:17 +04:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-26 11:14:48 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-13 21:21:39 +02:00
2026-05-23 14:07:37 -07:00
2026-05-22 11:54:44 +02:00
2026-05-22 11:54:44 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 11:46:39 +04:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-22 14:34:35 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-04-03 11:56:06 +02:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-04-03 11:56:06 +02:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-19 21:44:27 +02:00
2026-04-23 20:50:25 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 09:27:28 +04:00
2026-04-28 13:12:58 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-03-25 17:38:32 +01:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 11:46:39 +04:00
2026-03-25 17:38:32 +01:00
2026-05-26 15:49:17 +02:00
2026-05-26 15:49:17 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-04-27 16:06:44 +04:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-03-25 17:38:32 +01:00
2026-05-20 09:27:28 +04:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-04-03 11:56:06 +02:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 09:27:28 +04:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-15 23:26:02 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:05:08 +04:00
2026-05-20 15:05:08 +04:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 09:27:28 +04:00
2026-05-04 14:13:42 +02:00
2026-05-20 09:27:28 +04:00
2026-04-03 11:56:06 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 11:46:39 +04:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-03-25 17:38:32 +01:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-26 15:49:17 +02:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-26 15:21:38 +02:00
2026-05-26 15:49:17 +02:00
2026-05-20 11:46:39 +04:00
2026-05-11 15:34:24 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-26 18:06:55 +02:00
2026-05-26 18:06:55 +02:00
2026-05-11 14:52:53 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 15:36:47 -07:00
2026-05-20 09:27:28 +04:00
2026-05-20 15:36:47 -07:00
2026-05-23 14:07:37 -07:00