Delivery, retries, and acknowledgements
Delivery is planned. The gateway-side durability behavior and wire ACK are already implemented, and the agent's compatibility tests record that contract.
Success condition
For the response to a particular request, normal delivery completes only when accepted == true, durable == true, and received equals the number of submitted records. The ACK does not echo the batch ID or identify accepted records individually. Transport must keep request/response association intact. Inventory counts records, not the items inside them.
- Spoolplanned
- Deliveryplanned
- ingest-gatewayimplemented
ifMatched durable ACK with full count
- 5Spool: Reclaim acknowledged records
elseTimeout, refusal, or incomplete ACK
- 4Delivery: Classify failure and schedule retry
Retry classes
Transient network or broker failures require bounded retry/backoff without changing observation identity. Publication may have partly succeeded, so retry can repeat events. A schema/protocol incompatibility must be distinguishable from corrupted producer data; the implemented internal/protocol refusal classifier supplies this distinction.
Malformed data, capacity pressure, expired certificates, revoked agent state, and a backend that does not speak the schema are different failures. An uploader that retries every refusal forever with the same delay can fill its spool without giving an operator a usable diagnosis.
Ordering and backpressure
The target must define in-flight batch limits, concurrency, retry scheduling, and pressure propagation to collection. Preserve per-source progress requirements without inventing global ordering across all collectors. A separate inventory stream cannot be broken into misleading complete scans merely to fit a batch.
Security limits
mTLS proves possession of a trusted private key. It does not prove the endpoint's observations are truthful or that the executable is authentic. Initial server trust must arrive through an authenticated provisioning path. There is no supported insecure-verification switch.
See gateway admission, spool requirements, and PKI limits.
Source evidence
Reviewed against the source baseline. Seagull-contracts/proto/seagull/ingest/v1/ingest.proto · Seagull-agent-v2/internal/protocol/protocol.go · Seagull-backend-v2/internal/ingest/http.go.