Jon Chery
eb4fade710
refactor(P02): dual-use contract_ingestor — Lambda + CLI share core logic (REQ-329, backend-engineer)
...
---ci---
project: acdl
phase: 2
milestone: v1.28
status: execute
persona: backend-engineer
---
Extract dispatch_action() shared business-logic dispatch + _to_http_response
error mapper. lambda_handler (Lambda) + cli_main (CLI) become thin input
parsers that both delegate to dispatch_action. The action routing, contract
validation, DynamoDB write, error reporting live in shared functions — single
source of truth (NFR-7). tests/test_dual_use.py verifies both paths produce
the same output for the same input, both call dispatch_action, and code
share >=80% (CAP-026). 41 existing ingestor tests still pass.
2026-08-19 22:46:30 +00:00
..
2026-08-18 22:36:57 +00:00
2026-07-22 14:26:11 +00:00
2026-07-22 17:24:28 +00:00
2026-08-18 22:56:39 +00:00
2026-08-18 22:56:39 +00:00
2026-08-06 15:13:40 +00:00
2026-07-30 02:03:16 +00:00
2026-07-30 01:25:24 +00:00
2026-08-19 22:30:29 +00:00
2026-08-18 22:14:03 +00:00
2026-07-22 18:21:12 +00:00
2026-08-12 14:26:22 +00:00
2026-08-07 18:20:29 +00:00
2026-08-18 22:56:39 +00:00
2026-08-07 18:20:29 +00:00
2026-08-19 00:20:19 +00:00
2026-07-23 04:24:25 +00:00
2026-08-01 13:37:18 +00:00
2026-08-19 22:46:30 +00:00
2026-07-30 02:23:55 +00:00
2026-08-12 14:33:10 +00:00
2026-08-01 13:37:18 +00:00
2026-08-18 22:56:39 +00:00
2026-08-19 22:35:55 +00:00
2026-08-07 18:20:29 +00:00
2026-07-30 01:54:26 +00:00
2026-08-18 22:56:39 +00:00
2026-07-29 21:36:37 +00:00
2026-08-12 18:19:16 +00:00
2026-07-30 02:23:55 +00:00
2026-07-30 01:54:26 +00:00
2026-08-12 18:29:34 +00:00
2026-08-04 20:01:50 +00:00
2026-08-12 21:07:50 +00:00
2026-07-30 01:54:26 +00:00
2026-08-01 13:37:18 +00:00
2026-08-19 22:30:08 +00:00
2026-07-27 21:37:40 +00:00
2026-08-11 19:38:27 +00:00
2026-07-29 21:36:37 +00:00
2026-08-01 13:37:18 +00:00
2026-08-01 13:37:18 +00:00
2026-07-30 01:54:26 +00:00
2026-08-18 22:14:03 +00:00
2026-08-01 13:37:18 +00:00
2026-08-18 22:56:39 +00:00
2026-08-18 22:36:57 +00:00
2026-08-11 14:10:42 +00:00
2026-07-28 16:07:57 +00:00
2026-08-12 18:29:34 +00:00
2026-08-12 18:19:16 +00:00
2026-08-04 20:03:12 +00:00
2026-08-12 00:34:23 +00:00
2026-08-18 22:00:30 +00:00
2026-08-18 23:10:39 +00:00
2026-08-12 18:42:55 +00:00
2026-07-22 20:13:36 +00:00
2026-08-18 23:39:34 +00:00
2026-07-30 02:23:55 +00:00
2026-08-12 14:33:10 +00:00
2026-08-12 18:49:06 +00:00
2026-08-18 22:56:39 +00:00
2026-08-18 22:36:57 +00:00
2026-08-12 00:34:23 +00:00
2026-08-12 18:25:18 +00:00
2026-08-06 15:09:29 +00:00
2026-07-30 01:38:30 +00:00
2026-08-06 15:47:25 +00:00
2026-07-27 17:29:52 +00:00
2026-07-23 04:40:44 +00:00
2026-07-23 04:40:44 +00:00