v0.107.0
v0.107.0 is a non-breaking reliability release that makes acquisition connector execution auditable and retry-aware.
What Changed
| Area | Change | Why it matters |
|---|---|---|
| Connector attempts | max_attempts / MaxAttempts | Lets callers opt into retrying transient connector failures without changing existing single-attempt behavior |
| Idempotency | X-ContextDB-Acquisition-Idempotency-Key | Gives connector services a stable key for task, connector, and payload identity across retries |
| Receipts | AcquisitionExecutionReceipts and REST /acquisition/receipts | Records append-only audit evidence for every executed connector attempt |
| Retry candidates | AcquisitionRetryCandidates and REST /acquisition/retry-candidates | Groups unresolved failed connector attempts without sending retries |
| Retry guidance | AcquisitionRetryRecommendations and REST /acquisition/retry-recommendations | Adds read-only backoff timing and retryability reasons for operators and dashboards |
| Feature metadata | acquisition-connector-retry-receipts | Lets live services advertise connector durability support |
Flow
Dry runs remain non-mutating. Executed runs now send payload SHA and idempotency headers to connectors, classify retryable failures such as 429, 502, 503, and 504, record a receipt for each attempt, and only write returned items after source allow-list filtering.
{
"budget": 2,
"max_results": 3,
"max_attempts": 2,
"execute": true,
"connectors": [
{
"id": "openai-web",
"type": "search",
"endpoint": "http://localhost:7780/openai/search",
"allowed_source_ids": ["openai:web"]
}
]
}After execution, inspect receipts and retry state:
curl "http://localhost:7701/v1/namespaces/my-app/acquisition/receipts"
curl "http://localhost:7701/v1/namespaces/my-app/acquisition/retry-candidates"
curl "http://localhost:7701/v1/namespaces/my-app/acquisition/retry-recommendations"Compatibility
This release is additive. Existing dry-run previews, custom connectors, provider adapters, SDK calls, and source-constrained writes continue to work unchanged. Automatic retries happen only when callers set max_attempts greater than 1.
Verification
The release adds SDK tests for successful execution receipts, retryable 429 recovery with stable idempotency keys, unresolved 503 retry candidates, and retry recommendation readiness.