v5.0.0
Every worker now publishes a status row into the idempotency table under status|, refreshed at most every five seconds and once more when it stops. The row carries the run it belongs to, what that run has delivered, deduplicated, quarantined and dead-lettered, how many SQS requests and DynamoDB items it has spent, the breaker state, the tokens left in its bucket and its last error.
conduit ops summary joins those rows to live queue depths read from SQS and prints one line per connector: queue and in-flight depth, dead-letter and quarantine depth, throughput per minute, throttle state, breaker state and last error. Because the state comes from the table rather than a metrics port, the command needs to know neither where the workers run nor how to reach them. A connector whose worker has published nothing reads no worker seen, which distinguishes one that never started from one that is merely idle.
conduit ops costs reports what a run actually bought: remote objects created, SQS requests, and DynamoDB writes and reads, priced at the us-east-1 on-demand list rates kept in one table in the source. The counters are per run rather than cumulative, because each worker records where the store and queue counters stood when it started and reports the difference, so restarting a worker starts a new bill.
Queue depth and billable units are also Prometheus gauges beside the delivery counters from earlier versions, and make demo prints both ops blocks at the end of its run with the collected rows written into demo/out/details.json.
Tests are 167 unit and 30 LocalStack plus terraform. The ops tests seed a connector with three delivered tasks, one dead letter, one quarantined payload and one still queued, then assert those exact depths, the thirteen DynamoDB writes and three reads behind the bill, and the rendered lines themselves.
The claim above that queue depth is a Prometheus gauge beside the delivery counters held only for the conduit ops process, not for a worker's /metrics endpoint, and was corrected in v5.0.1, where every worker refreshes the gauge for its own queues.