Oleksandr Bezdieniezhnykh
7d53cef0cf
ci/woodpecker/push/02-build-push Pipeline failed
[AZ-701] HTTP replay API service (FastAPI + magic-byte upload validation)
...
New replay_api component: FastAPI service wrapping the offline
gps-denied-replay pipeline. POST tlog+video (multipart) → either
sync 200 with result/map/report URLs, or async 202 + job id with
/jobs/{id} polling. Magic-byte validation, bearer auth, in-memory
JobRegistry with concurrency + queue caps (429 on overflow).
Helper accuracy_report.py promoted from tests/ to src/ because the
API needs the Markdown report writer at runtime; all AZ-699 imports
re-pointed. OpenAPI spec exported to docs.
18/18 unit tests pass (AC-1 sync, AC-2 async, AC-3 state machine,
AC-5 auth, AC-6 health, AC-8 concurrency, AC-9 magic-byte). Full
unit suite: 2251 pass, 86 skip, 1 pre-existing C12 cold-start flake
(unchanged). mypy --strict clean on the new surface.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-20 17:30:26 +03:00
..
2026-05-13 19:42:46 +03:00
2026-05-11 01:33:42 +03:00
2026-05-11 03:00:49 +03:00
2026-05-11 03:00:49 +03:00
2026-05-11 01:33:42 +03:00
2026-05-11 02:03:36 +03:00
2026-05-11 03:23:33 +03:00
2026-05-11 02:03:36 +03:00
2026-05-11 03:00:49 +03:00
2026-05-11 03:00:49 +03:00
2026-05-11 03:00:49 +03:00
2026-05-11 03:23:33 +03:00
2026-05-11 01:33:42 +03:00
2026-05-11 03:23:33 +03:00
2026-05-11 02:03:36 +03:00
2026-05-11 01:33:42 +03:00
2026-05-11 02:03:36 +03:00
2026-05-11 03:23:33 +03:00
2026-05-11 02:03:36 +03:00
2026-05-11 03:38:58 +03:00
2026-05-11 03:38:58 +03:00
2026-05-11 03:38:58 +03:00
2026-05-11 03:52:07 +03:00
2026-05-11 03:52:07 +03:00
2026-05-11 03:52:07 +03:00
2026-05-12 04:30:14 +03:00
2026-05-12 23:11:49 +03:00
2026-05-12 23:55:50 +03:00
2026-05-12 10:13:21 +03:00
2026-05-12 10:20:21 +03:00
2026-05-12 10:33:37 +03:00
2026-05-12 04:21:44 +03:00
2026-05-12 17:05:41 +03:00
2026-05-12 18:01:50 +03:00
2026-05-13 04:01:37 +03:00
2026-05-12 19:29:11 +03:00
2026-05-12 20:37:41 +03:00
2026-05-13 07:01:14 +03:00
2026-05-13 19:42:46 +03:00
2026-05-13 05:48:52 +03:00
2026-05-13 06:13:36 +03:00
2026-05-13 08:48:53 +03:00
2026-05-13 00:09:53 +03:00
2026-05-13 04:20:47 +03:00
2026-05-13 02:37:14 +03:00
2026-05-13 02:37:14 +03:00
2026-05-13 05:00:16 +03:00
2026-05-13 19:42:46 +03:00
2026-05-13 19:42:46 +03:00
2026-05-13 19:42:46 +03:00
2026-05-13 21:30:25 +03:00
2026-05-13 21:30:25 +03:00
2026-05-12 04:44:31 +03:00
2026-05-12 09:56:45 +03:00
2026-05-14 01:11:09 +03:00
2026-05-14 02:40:01 +03:00
2026-05-14 03:30:46 +03:00
2026-05-12 05:25:35 +03:00
2026-05-13 22:44:22 +03:00
2026-05-13 22:31:56 +03:00
2026-05-13 23:52:54 +03:00
2026-05-14 00:39:29 +03:00
2026-05-13 21:47:07 +03:00
2026-05-12 05:31:27 +03:00
2026-05-12 06:22:40 +03:00
2026-05-12 05:43:33 +03:00
2026-05-14 04:10:34 +03:00
2026-05-14 04:10:34 +03:00
2026-05-14 04:10:34 +03:00
2026-05-12 05:52:36 +03:00
2026-05-14 04:10:34 +03:00
2026-05-11 10:32:14 +03:00
2026-05-14 05:01:14 +03:00
2026-05-14 05:01:14 +03:00
2026-05-11 05:35:20 +03:00
2026-05-11 05:51:23 +03:00
2026-05-11 06:07:45 +03:00
2026-05-11 06:20:01 +03:00
2026-05-11 07:06:38 +03:00
2026-05-11 10:12:30 +03:00
2026-05-11 07:13:44 +03:00
2026-05-11 06:53:22 +03:00
2026-05-16 09:02:33 +03:00
2026-05-11 04:17:59 +03:00
2026-05-11 04:28:14 +03:00
2026-05-11 04:17:59 +03:00
2026-05-11 04:47:44 +03:00
2026-05-11 04:47:44 +03:00
2026-05-11 04:47:44 +03:00
2026-05-11 05:06:56 +03:00
2026-05-11 05:06:56 +03:00
2026-05-12 05:10:01 +03:00
2026-05-14 05:33:20 +03:00
2026-05-14 05:33:20 +03:00
2026-05-14 11:55:33 +03:00
2026-05-14 20:04:37 +03:00
2026-05-14 09:01:04 +03:00
2026-05-14 21:41:39 +03:00
2026-05-14 09:50:51 +03:00
2026-05-16 16:22:44 +03:00
2026-05-16 17:18:01 +03:00
2026-05-16 17:54:00 +03:00
2026-05-16 18:10:46 +03:00
2026-05-16 17:54:00 +03:00
2026-05-16 17:54:00 +03:00
2026-05-16 18:10:46 +03:00
2026-05-16 18:10:46 +03:00
2026-05-17 07:12:24 +03:00
2026-05-17 07:12:24 +03:00
2026-05-17 07:49:17 +03:00
2026-05-17 07:49:17 +03:00
2026-05-17 07:12:24 +03:00
2026-05-17 07:49:17 +03:00
2026-05-17 14:48:45 +03:00
2026-05-17 15:10:20 +03:00
2026-05-17 15:28:39 +03:00
2026-05-17 15:43:06 +03:00
2026-05-17 08:26:16 +03:00
2026-05-17 08:26:16 +03:00
2026-05-17 08:26:16 +03:00
2026-05-17 15:43:06 +03:00
2026-05-17 16:46:49 +03:00
2026-05-17 16:46:49 +03:00
2026-05-17 16:46:49 +03:00
2026-05-17 16:46:49 +03:00
2026-05-17 17:09:37 +03:00
2026-05-17 17:09:37 +03:00
2026-05-17 17:09:37 +03:00
2026-05-17 17:09:37 +03:00
2026-05-17 17:33:43 +03:00
2026-05-17 17:33:43 +03:00
2026-05-17 17:33:43 +03:00
2026-05-17 17:33:43 +03:00
2026-05-17 18:01:55 +03:00
2026-05-17 18:01:55 +03:00
2026-05-17 18:01:55 +03:00
2026-05-17 18:01:55 +03:00
2026-05-16 17:18:01 +03:00
2026-05-16 17:18:01 +03:00
2026-05-17 18:14:00 +03:00
2026-05-13 19:42:46 +03:00
2026-05-12 02:53:58 +03:00
2026-05-13 02:37:14 +03:00
2026-05-13 23:23:22 +03:00
2026-05-13 23:37:04 +03:00
2026-05-14 00:51:19 +03:00
2026-05-14 03:03:16 +03:00
2026-05-16 05:33:56 +03:00
2026-05-16 12:58:38 +03:00
2026-05-17 08:42:12 +03:00
2026-05-17 09:00:55 +03:00
2026-05-17 09:08:48 +03:00
2026-05-17 09:52:05 +03:00
2026-05-17 12:08:02 +03:00
2026-05-17 13:40:07 +03:00
2026-05-17 14:19:08 +03:00
2026-05-19 10:28:43 +03:00
2026-05-19 06:23:15 +03:00
2026-05-19 06:35:47 +03:00
2026-05-19 06:47:05 +03:00
2026-05-19 08:56:04 +03:00
2026-05-19 09:20:28 +03:00
2026-05-19 10:28:43 +03:00
2026-05-19 09:38:13 +03:00
2026-05-19 12:22:03 +03:00
2026-05-20 16:09:03 +03:00
2026-05-20 16:44:41 +03:00
2026-05-20 16:53:48 +03:00
2026-05-20 17:04:01 +03:00
2026-05-20 17:30:26 +03:00
2026-05-20 16:09:03 +03:00