{"id":"controls","title":"Operational controls","source":{"file":"17","file_slug":"automation-workflows","section":"3-operational-controls","table":"17.3-operational-controls.t1","line":186},"headers":["Control","Minimum implementation"],"align":["left","left"],"count":10,"records":[{"id":"idempotency","label":"Idempotency","control":"Idempotency","minimum_implementation":"Stable key from tenant + workflow + target + source + planned interval; unique database constraint","cells":["Idempotency","Stable key from tenant + workflow + target + source + planned interval; unique database constraint"],"defined_in":{"file":"17","file_slug":"automation-workflows","section":"3-operational-controls","table":"17.3-operational-controls.t1","line":186}},{"id":"retry","label":"Retry","control":"Retry","minimum_implementation":"Error taxonomy, exponential backoff with jitter, per-source retry budget, no policy-denial retry","cells":["Retry","Error taxonomy, exponential backoff with jitter, per-source retry budget, no policy-denial retry"],"defined_in":{"file":"17","file_slug":"automation-workflows","section":"3-operational-controls","table":"17.3-operational-controls.t1","line":186}},{"id":"rate-limiting","label":"Rate limiting","control":"Rate limiting","minimum_implementation":"Connector token bucket plus global domain concurrency cap","cells":["Rate limiting","Connector token bucket plus global domain concurrency cap"],"defined_in":{"file":"17","file_slug":"automation-workflows","section":"3-operational-controls","table":"17.3-operational-controls.t1","line":186}},{"id":"circuit-breaker","label":"Circuit breaker","control":"Circuit breaker","minimum_implementation":"Pause source after repeated blocks, anomalous payloads, or terms change","cells":["Circuit breaker","Pause source after repeated blocks, anomalous payloads, or terms change"],"defined_in":{"file":"17","file_slug":"automation-workflows","section":"3-operational-controls","table":"17.3-operational-controls.t1","line":186}},{"id":"dead-letter","label":"Dead-letter","control":"Dead-letter","minimum_implementation":"Preserved event, failure class, attempts, last error, policy context, safe replay button","cells":["Dead-letter","Preserved event, failure class, attempts, last error, policy context, safe replay button"],"defined_in":{"file":"17","file_slug":"automation-workflows","section":"3-operational-controls","table":"17.3-operational-controls.t1","line":186}},{"id":"timeouts","label":"Timeouts","control":"Timeouts","minimum_implementation":"Request, parse, model, workflow, and reviewer expiry separately bounded","cells":["Timeouts","Request, parse, model, workflow, and reviewer expiry separately bounded"],"defined_in":{"file":"17","file_slug":"automation-workflows","section":"3-operational-controls","table":"17.3-operational-controls.t1","line":186}},{"id":"concurrency","label":"Concurrency","control":"Concurrency","minimum_implementation":"Per source, tenant, target, and expensive model; never unbounded fan-out","cells":["Concurrency","Per source, tenant, target, and expensive model; never unbounded fan-out"],"defined_in":{"file":"17","file_slug":"automation-workflows","section":"3-operational-controls","table":"17.3-operational-controls.t1","line":186}},{"id":"checkpointing","label":"Checkpointing","control":"Checkpointing","minimum_implementation":"After capture, normalization, claim review, estimate run, and activation","cells":["Checkpointing","After capture, normalization, claim review, estimate run, and activation"],"defined_in":{"file":"17","file_slug":"automation-workflows","section":"3-operational-controls","table":"17.3-operational-controls.t1","line":186}},{"id":"compensation","label":"Compensation","control":"Compensation","minimum_implementation":"Remove/restrict projections after retraction, opt-out, or failed activation","cells":["Compensation","Remove/restrict projections after retraction, opt-out, or failed activation"],"defined_in":{"file":"17","file_slug":"automation-workflows","section":"3-operational-controls","table":"17.3-operational-controls.t1","line":186}},{"id":"kill-switch","label":"Kill switch","control":"Kill switch","minimum_implementation":"Disable source, connector, tenant, campaign, or all collection independently","cells":["Kill switch","Disable source, connector, tenant, campaign, or all collection independently"],"defined_in":{"file":"17","file_slug":"automation-workflows","section":"3-operational-controls","table":"17.3-operational-controls.t1","line":186}}]}