Marius Ciepluch and Claude Fable 5.1
605b7af5ba
plane(2.4): reconciler on Delivery -- the start body carries the URLs, the store completes the task
...
_execute builds the task's `delivery {put, inputs}` from Delivery, passes it to
router.starter, grants the store's host in the egress policy, awaits
Delivery.delivered (the tar's exact key in the store), then collect()s:
download, extract with the member checks, re-put the declared artifacts, write
done.json; the outcome is the collected summary.json. Three findings from the
tests: a rerun of an unfinished task completed at once on the previous
attempt's tar, so Delivery.reset(task) deletes output.tar and done.json before
every attempt; a worker thread that raised left the run blocked on its queue,
so the worker now turns any exception into a failed task; a consumer may
declare a producer's summary.json without the producer listing it (the loop
Run does), so declared(run) publishes outputs[] plus every artifact a consumer
names. The receiver thread survives behind OUSAST_DELIVERY=receiver for this
group only (no presigned URLs, the http rule, OUSAST_ARTIFACT_URL in the env);
the default path renders no receiver address into any Task. The fake ax PUTs
to the start body's URL and GETs its inputs from theirs; the reconciler tests
run through the S3-shaped fake store and assert the objects, done.json, the
seeded rerun and the receiver mode. reconciler.py: 549 lines (bound 550).
Gates: pytest 2031 passed, 42 skipped, exit 0; ruff check 0; ruff format 0;
mypy 0.
Co-Authored-By: Claude Fable 5.1 <[email protected] >
Claude-Session: https://claude.ai/code/session_01EmM1j46qgKMh3zqD1QMwEo
2026-10-02 21:49:58 +02:00
..
2026-09-30 13:44:32 +02:00
2026-06-22 17:13:02 +02:00
2026-10-02 20:26:46 +02:00
2026-10-01 10:13:31 +02:00
2026-10-02 21:05:48 +02:00
2026-09-29 19:41:35 +02:00
2026-10-01 11:51:28 +02:00
2026-10-02 19:48:01 +02:00
2026-09-30 15:05:47 +02:00
2026-06-18 10:06:21 +02:00
2026-09-08 12:15:54 +02:00
2026-09-05 10:45:43 +02:00
2026-09-03 20:33:48 +02:00
2026-09-04 00:18:33 +02:00
2026-09-03 20:33:48 +02:00
2026-09-03 20:05:13 +02:00
2026-10-02 07:51:38 +02:00
2026-09-23 08:51:12 +02:00
2026-09-26 07:44:33 +02:00
2026-09-26 15:36:25 +02:00
2026-09-17 08:35:57 +02:00
2026-09-08 12:15:54 +02:00
2026-06-22 17:13:02 +02:00
2026-09-24 11:08:22 +02:00
2026-10-02 10:15:19 +02:00
2026-09-23 19:36:32 +02:00
2026-06-22 15:27:16 +02:00
2026-09-14 08:07:06 +02:00
2026-09-30 12:13:26 +02:00
2026-10-02 07:22:35 +02:00
2026-09-25 15:29:43 +02:00
2026-09-13 17:08:49 +02:00
2026-06-22 20:02:34 +02:00
2026-06-18 10:06:21 +02:00
2026-10-02 08:07:35 +02:00
2026-09-28 20:10:57 +02:00
2026-09-28 20:15:14 +02:00
2026-06-18 10:59:25 +02:00
2026-09-30 13:44:32 +02:00
2026-09-05 10:45:43 +02:00
2026-09-30 18:15:52 +02:00
2026-09-30 18:03:07 +02:00
2026-09-08 19:46:58 +02:00
2026-09-30 18:49:05 +02:00
2026-10-01 10:36:34 +02:00
2026-10-02 10:15:19 +02:00
2026-10-01 10:36:34 +02:00
2026-10-02 10:15:19 +02:00
2026-10-02 17:24:49 +02:00
2026-10-02 16:12:08 +02:00
2026-10-02 18:57:56 +02:00
2026-10-01 10:05:19 +02:00
2026-10-01 11:03:54 +02:00
2026-10-02 15:25:21 +02:00
2026-10-01 20:40:41 +02:00
2026-10-02 11:33:16 +02:00
2026-10-01 14:04:28 +02:00
2026-09-30 18:38:04 +02:00
2026-09-04 11:53:06 +02:00
2026-09-09 17:33:36 +02:00
2026-09-09 13:15:54 +02:00
2026-09-25 14:30:36 +02:00
2026-09-20 16:30:04 +02:00
2026-09-09 13:09:47 +02:00
2026-09-28 09:10:02 +02:00
2026-09-11 13:45:00 +02:00
2026-09-08 19:46:58 +02:00
2026-09-14 08:07:06 +02:00
2026-09-09 09:27:19 +02:00
2026-09-17 14:04:39 +02:00
2026-09-08 19:46:58 +02:00
2026-09-09 07:42:44 +02:00
2026-09-14 08:07:06 +02:00
2026-09-25 15:13:30 +02:00
2026-09-09 12:45:21 +02:00
2026-09-09 16:13:17 +02:00
2026-09-09 14:30:48 +02:00
2026-09-09 15:08:01 +02:00
2026-10-02 07:22:35 +02:00
2026-09-04 11:50:44 +02:00
2026-09-08 12:15:54 +02:00
2026-09-05 19:38:04 +02:00
2026-09-06 07:24:13 +02:00
2026-09-06 07:24:13 +02:00
2026-09-06 13:09:56 +02:00
2026-09-06 07:24:13 +02:00
2026-09-06 07:24:13 +02:00
2026-09-06 07:24:13 +02:00
2026-09-05 19:38:04 +02:00
2026-09-06 07:24:13 +02:00
2026-09-08 12:15:54 +02:00
2026-09-06 07:24:13 +02:00
2026-09-08 19:46:58 +02:00
2026-09-08 19:46:58 +02:00
2026-09-30 18:49:05 +02:00
2026-06-21 20:44:08 +02:00
2026-09-29 19:04:52 +02:00
2026-09-29 17:41:09 +02:00
2026-10-02 21:49:58 +02:00
2026-10-02 21:29:32 +02:00
2026-09-30 15:05:47 +02:00
2026-09-30 18:38:04 +02:00
2026-10-01 19:40:58 +02:00
2026-10-02 20:43:40 +02:00
2026-10-02 20:32:51 +02:00
2026-09-30 18:38:04 +02:00
2026-10-01 09:56:52 +02:00
2026-10-02 10:15:19 +02:00
2026-10-02 20:43:40 +02:00
2026-10-02 21:49:58 +02:00
2026-09-30 13:44:32 +02:00
2026-09-29 17:55:34 +02:00
2026-10-02 20:26:46 +02:00
2026-10-02 21:12:19 +02:00
2026-10-02 08:07:35 +02:00
2026-09-30 08:19:46 +02:00
2026-09-29 19:49:28 +02:00
2026-06-22 12:31:35 +02:00
2026-06-17 21:13:51 +02:00
2026-09-23 19:05:08 +02:00
2026-09-05 10:45:43 +02:00
2026-09-07 07:37:41 +02:00
2026-09-17 09:56:59 +02:00
2026-09-13 18:03:31 +02:00
2026-09-13 16:16:19 +02:00
2026-09-23 14:12:47 +02:00
2026-09-12 21:12:45 +02:00
2026-09-13 19:32:43 +02:00
2026-09-13 15:24:06 +02:00
2026-09-13 19:06:02 +02:00
2026-09-13 17:51:28 +02:00
2026-09-12 18:45:54 +02:00
2026-09-13 17:45:16 +02:00
2026-09-21 13:50:38 +02:00
2026-09-13 18:43:13 +02:00
2026-09-13 13:25:44 +02:00
2026-09-23 07:55:33 +02:00
2026-09-13 17:08:49 +02:00
2026-09-12 19:04:20 +02:00
2026-09-12 21:12:45 +02:00
2026-09-16 19:59:12 +02:00
2026-06-18 07:57:06 +02:00
2026-06-22 20:02:34 +02:00
2026-09-03 22:36:02 +02:00
2026-09-03 22:48:10 +02:00
2026-09-03 22:12:45 +02:00
2026-09-03 22:59:01 +02:00
2026-09-30 12:45:29 +02:00
2026-09-10 07:32:20 +02:00
2026-09-09 08:10:59 +02:00
2026-09-30 18:49:05 +02:00
2026-06-17 21:13:51 +02:00
2026-09-03 23:43:15 +02:00
2026-09-03 23:43:15 +02:00
2026-09-30 12:13:26 +02:00
2026-09-30 12:13:26 +02:00
2026-06-22 15:27:16 +02:00
2026-06-22 15:41:17 +02:00
2026-09-04 15:07:35 +02:00
2026-09-30 12:18:42 +02:00
2026-09-04 15:07:35 +02:00
2026-09-08 19:46:58 +02:00
2026-09-30 18:49:05 +02:00
2026-06-22 19:51:04 +02:00
2026-09-04 11:49:44 +02:00
2026-09-04 11:54:01 +02:00
2026-09-03 23:14:00 +02:00
2026-09-08 19:46:58 +02:00
2026-09-30 12:13:26 +02:00
2026-09-06 12:39:55 +02:00
2026-06-18 10:06:21 +02:00