Jens and Claude Opus 5
16dedeb670
claim analysis jobs atomically and keep acquisition on its official host
...
Two defects of the same kind: work that is supposed to be bounded is not.
The analysis worker selected queued jobs and then set them to running in a
second statement. A restarted process overlapping the previous one, or a second
replica, could both select the same row and both start tiled GPU inference on
it — duplicate analysis runs and double the GPU load. The AOI worker beside it
already claims with FOR UPDATE SKIP LOCKED; this uses a conditional update,
which is the same guarantee in one statement. run_once now reports jobs it
actually claimed rather than jobs it looked at.
urlopen follows redirects, so although every acquisition URL is built from
settings and cannot be steered by a request payload, a misconfigured or
compromised upstream could send the runtime to the loopback interface, to
another container on the compose network, or to a cloud metadata endpoint — and
the bytes would then be persisted under an official provenance. That is exactly
the substitution the product forbids. All eight fetch sites now open through a
guard that refuses private, loopback and link-local destinations (resolving the
host first, so a DNS name cannot hide one) and refuses a redirect that leaves
the configured origin or downgrades from HTTPS.
The guard is proven by calling the services' own fetch paths, not by grepping
for the call: every existing acquisition test injects an opener, which bypasses
it by design.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-22 15:59:01 +02:00
..
2026-06-16 23:36:32 +02:00
2026-08-01 23:46:17 +02:00
2026-08-22 14:34:13 +02:00
2026-08-01 23:46:17 +02:00
2026-08-01 23:46:17 +02:00
2026-08-02 01:06:35 +02:00
2026-08-02 04:53:16 +02:00
2026-08-02 04:29:10 +02:00
2026-08-02 04:29:10 +02:00
2026-06-16 23:36:32 +02:00
2026-08-22 15:59:01 +02:00
2026-08-22 15:59:01 +02:00
2026-08-22 14:33:37 +02:00
2026-08-01 23:46:17 +02:00
2026-07-27 09:58:25 +02:00
2026-07-27 10:48:39 +02:00
2026-08-01 23:46:17 +02:00
2026-07-29 17:14:17 +02:00
2026-07-30 04:24:35 +02:00
2026-07-27 07:35:50 +02:00
2026-08-22 14:56:15 +02:00
2026-08-22 14:33:37 +02:00
2026-08-01 23:46:17 +02:00
2026-08-01 23:46:17 +02:00
2026-08-22 14:32:44 +02:00
2026-08-22 14:31:21 +02:00
2026-08-22 15:24:46 +02:00
2026-08-22 14:32:44 +02:00
2026-08-01 23:46:17 +02:00
2026-06-18 02:04:31 +02:00
2026-08-22 14:56:37 +02:00
2026-08-22 14:56:37 +02:00
2026-08-01 23:46:17 +02:00
2026-08-22 14:33:19 +02:00
2026-06-18 02:04:31 +02:00
2026-08-22 14:34:13 +02:00
2026-07-14 15:28:14 +02:00
2026-08-01 23:46:17 +02:00
2026-08-01 23:46:17 +02:00
2026-07-18 00:12:34 +02:00
2026-06-17 06:47:09 +02:00
2026-07-22 02:11:48 +02:00
2026-08-22 14:32:44 +02:00
2026-07-30 05:47:26 +02:00
2026-08-22 15:59:01 +02:00
2026-08-22 14:33:19 +02:00
2026-08-01 23:46:17 +02:00
2026-07-22 03:39:08 +02:00
2026-08-22 14:31:21 +02:00
2026-08-01 23:46:17 +02:00
2026-08-22 15:14:26 +02:00
2026-08-22 14:33:19 +02:00
2026-07-14 15:19:42 +02:00
2026-06-16 23:36:32 +02:00
2026-08-01 23:46:17 +02:00
2026-07-18 02:01:11 +02:00
2026-08-22 14:34:13 +02:00
2026-08-01 16:41:53 +02:00
2026-07-18 05:07:35 +02:00
2026-07-18 06:07:44 +02:00
2026-08-22 14:34:13 +02:00
2026-07-18 07:37:28 +02:00
2026-07-19 12:07:04 +02:00
2026-07-18 00:29:13 +02:00
2026-07-18 00:53:00 +02:00
2026-07-19 12:07:04 +02:00
2026-08-22 14:34:13 +02:00
2026-07-14 11:41:16 +02:00
2026-07-27 06:46:42 +02:00
2026-07-18 04:15:59 +02:00
2026-07-27 09:58:25 +02:00
2026-07-29 17:23:36 +02:00
2026-08-01 23:46:17 +02:00
2026-08-01 23:46:17 +02:00
2026-07-26 05:23:33 +02:00
2026-07-30 04:24:35 +02:00
2026-07-13 12:15:27 +02:00
2026-08-22 14:32:44 +02:00
2026-08-22 14:32:44 +02:00
2026-07-26 05:23:33 +02:00
2026-08-22 14:33:19 +02:00
2026-08-01 23:46:17 +02:00
2026-07-17 21:29:26 +02:00
2026-08-01 23:46:17 +02:00
2026-08-22 14:32:44 +02:00
2026-08-22 14:32:44 +02:00
2026-08-01 23:46:17 +02:00
2026-06-18 21:46:19 +02:00
2026-08-01 23:46:17 +02:00
2026-07-18 06:07:44 +02:00
2026-06-16 23:36:32 +02:00
2026-08-09 11:31:51 +02:00
2026-06-16 23:55:52 +02:00
2026-07-19 03:09:44 +02:00
2026-07-17 14:19:02 +02:00
2026-06-17 07:52:14 +02:00
2026-07-17 14:19:02 +02:00
2026-06-17 23:50:56 +02:00
2026-06-17 02:13:57 +02:00
2026-07-14 21:40:32 +02:00
2026-06-17 21:23:04 +02:00
2026-07-17 14:19:02 +02:00
2026-07-19 14:24:54 +02:00
2026-07-28 07:23:37 +02:00
2026-08-22 14:34:13 +02:00
2026-06-17 18:57:58 +02:00
2026-07-14 11:41:16 +02:00
2026-07-19 14:24:54 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 12:35:50 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-07-19 14:24:54 +02:00
2026-07-17 14:19:02 +02:00
2026-07-14 21:40:32 +02:00
2026-06-18 23:44:36 +02:00
2026-06-19 02:35:31 +02:00
2026-07-17 14:19:02 +02:00
2026-07-14 21:40:32 +02:00
2026-07-14 21:40:32 +02:00
2026-07-14 21:40:32 +02:00
2026-07-14 21:40:32 +02:00
2026-07-17 14:42:27 +02:00
2026-07-14 21:40:32 +02:00
2026-06-20 01:11:45 +02:00
2026-07-17 14:19:02 +02:00
2026-06-20 01:38:39 +02:00
2026-06-20 02:07:24 +02:00
2026-07-14 21:53:56 +02:00
2026-07-19 14:24:54 +02:00
2026-07-17 14:19:02 +02:00
2026-06-20 03:10:45 +02:00
2026-07-19 14:24:54 +02:00
2026-07-17 14:19:02 +02:00
2026-07-14 21:40:32 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-07-14 21:40:32 +02:00
2026-07-17 14:19:02 +02:00
2026-08-22 14:34:13 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-06-23 00:12:20 +02:00
2026-06-23 01:50:47 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-06-24 21:57:24 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-08-22 14:34:13 +02:00
2026-08-01 23:46:17 +02:00
2026-08-01 23:46:17 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-08-22 15:14:26 +02:00
2026-07-04 23:08:58 +02:00
2026-07-04 23:15:37 +02:00
2026-07-04 23:21:55 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 21:29:26 +02:00
2026-07-06 20:59:03 +02:00
2026-07-06 23:55:58 +02:00
2026-07-14 11:25:28 +02:00
2026-08-09 10:54:52 +02:00
2026-07-07 01:29:33 +02:00
2026-07-17 14:19:02 +02:00
2026-07-09 10:55:45 +02:00
2026-07-07 02:30:30 +02:00
2026-07-09 10:55:45 +02:00
2026-07-09 15:02:12 +02:00
2026-08-09 20:41:54 +02:00
2026-07-29 17:21:18 +02:00
2026-07-13 12:15:27 +02:00
2026-07-07 22:07:56 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-07-17 14:19:02 +02:00
2026-07-08 13:41:39 +02:00
2026-07-08 13:57:09 +02:00
2026-07-08 14:30:37 +02:00
2026-07-09 14:52:06 +02:00
2026-08-09 19:51:17 +02:00
2026-08-09 10:54:52 +02:00
2026-07-12 23:42:29 +02:00
2026-07-10 02:15:15 +02:00
2026-07-10 02:44:11 +02:00
2026-07-11 00:25:34 +02:00
2026-07-13 12:27:21 +02:00
2026-07-11 10:45:06 +02:00
2026-07-12 23:53:18 +02:00
2026-07-16 00:01:14 +02:00
2026-07-13 12:15:27 +02:00
2026-07-17 14:36:55 +02:00
2026-07-13 17:20:40 +02:00
2026-08-22 14:34:13 +02:00
2026-07-13 18:39:50 +02:00
2026-07-13 20:22:53 +02:00
2026-07-17 14:19:02 +02:00
2026-07-22 02:11:48 +02:00
2026-07-14 23:18:22 +02:00
2026-07-17 14:19:02 +02:00
2026-07-15 00:35:39 +02:00
2026-07-14 11:49:12 +02:00
2026-07-14 12:40:11 +02:00
2026-08-22 14:34:13 +02:00
2026-08-22 14:56:37 +02:00
2026-07-14 18:08:43 +02:00
2026-07-27 18:38:52 +02:00
2026-07-16 19:30:46 +02:00
2026-07-16 19:30:46 +02:00
2026-08-22 14:34:13 +02:00
2026-08-09 10:54:52 +02:00
2026-07-27 18:38:52 +02:00
2026-07-15 02:01:03 +02:00
2026-08-01 23:46:17 +02:00
2026-07-15 03:10:22 +02:00
2026-08-22 14:34:13 +02:00
2026-07-15 04:10:38 +02:00
2026-08-22 14:34:13 +02:00
2026-08-22 14:33:19 +02:00
2026-07-16 05:02:44 +02:00
2026-07-15 12:28:35 +02:00
2026-07-15 13:23:00 +02:00
2026-07-15 16:11:44 +02:00
2026-08-01 23:46:17 +02:00
2026-07-15 17:36:33 +02:00
2026-08-22 14:33:19 +02:00
2026-07-16 00:01:14 +02:00
2026-07-16 00:53:37 +02:00
2026-07-16 12:36:34 +02:00
2026-07-16 02:11:16 +02:00
2026-07-18 05:07:35 +02:00
2026-07-16 03:06:36 +02:00
2026-07-16 11:45:00 +02:00
2026-07-16 12:36:34 +02:00
2026-08-22 14:34:13 +02:00
2026-07-17 14:19:02 +02:00
2026-07-16 22:14:48 +02:00
2026-07-16 18:56:10 +02:00
2026-07-16 22:14:48 +02:00
2026-07-19 03:31:46 +02:00
2026-07-19 01:43:07 +02:00
2026-07-17 00:53:34 +02:00
2026-07-17 01:30:19 +02:00
2026-07-17 02:23:46 +02:00
2026-07-17 12:35:50 +02:00
2026-08-22 14:34:13 +02:00
2026-07-17 14:36:55 +02:00
2026-07-22 02:11:48 +02:00
2026-08-22 14:34:13 +02:00
2026-08-22 14:34:13 +02:00
2026-07-19 17:54:07 +02:00
2026-08-22 14:34:13 +02:00
2026-07-22 03:39:08 +02:00
2026-07-19 04:07:01 +02:00
2026-07-26 05:23:33 +02:00
2026-07-26 03:39:50 +02:00
2026-07-22 08:06:07 +02:00
2026-06-16 23:36:32 +02:00
2026-08-01 23:46:17 +02:00
2026-07-30 00:10:15 +02:00
2026-08-01 23:46:17 +02:00
2026-08-01 23:46:17 +02:00
2026-08-22 14:33:19 +02:00
2026-07-22 06:37:05 +02:00
2026-08-22 14:32:44 +02:00
2026-08-22 14:32:44 +02:00
2026-07-29 15:48:51 +02:00