mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-31 00:40:46 +02:00
- Exclude `failed` from the (trigger_id, dedupe_key) partial unique index alongside `rejected`, so a transient ingress failure does not strand the provider's stable X-GitHub-Delivery / Idempotency-Key retry. Update the dedupe lookup to prefer non-terminal rows under the same predicate. - Tighten delivery status enum: drop `skipped` from the CHECK constraint and from the handler. A run that was admission-skipped (e.g. runtime offline) is now recorded as delivery=`dispatched` linked to the skipped run, with the response payload carrying status=`skipped`. Source of truth for skipped-ness is autopilot_run.status, not the delivery row — keeps the Deliveries UI enum unambiguous. - On dispatch error, link the (possibly non-nil) autopilot_run returned by DispatchAutopilot to the failed delivery so Deliveries UI can navigate to the run row for debugging. - Slim list projection: ListWebhookDeliveriesByAutopilot no longer pulls raw_body / selected_headers / response_body — a 100-row page × 256 KiB would otherwise round-trip ~25 MiB from Postgres per Deliveries reload. Detail endpoint continues to return the full row. - Fix backend CI: TestGetDelivery_ReturnsFullPayload now decodes the response and asserts on the parsed raw_body instead of substring- matching against an escaped JSON string; raise the test-suite default webhook rate limits in TestMain so the shared 192.0.2.1 IP bucket doesn't fill across the suite and leak 429s into unrelated tests. - Add regression coverage for the dedupe-after-failure path. cd server && go test ./... is green locally. Co-authored-by: multica-agent <github@multica.ai>