A release report can join services to check results, count failures, and keep only services that need attention.

Program

Play the script to choose the maximum allowed failures and inspect the release readiness report.

release_readiness_report.sql
CREATE TABLE services (id INTEGER, name TEXT, owner TEXT);
INSERT INTO services VALUES (1, 'api', 'platform'), (2, 'web', 'frontend'), (3, 'billing', 'finance');
CREATE TABLE checks (service_id INTEGER, check_name TEXT, status TEXT);
INSERT INTO checks VALUES (1, 'smoke', 'pass'), (1, 'schema', 'fail'), (2, 'smoke', 'pass'), (2, 'cdn', 'pass'), (3, 'smoke', 'fail'), (3, 'ledger', 'fail');
WITH params(max_failures) AS (VALUES ()), service_failures AS (SELECT services.name, services.owner, SUM(CASE WHEN checks.status = 'fail' THEN 1 ELSE 0 END) AS failure_count FROM services JOIN checks ON checks.service_id = services.id GROUP BY services.name, services.owner) SELECT name, owner, failure_count, CASE WHEN failure_count <= (SELECT max_failures FROM params) THEN 'ready' ELSE 'blocked' END AS release_status FROM service_failures ORDER BY release_status DESC, name;
CREATE TABLE services (id INTEGER, name TEXT, owner TEXT);
INSERT INTO services VALUES (1, 'api', 'platform'), (2, 'web', 'frontend'), (3, 'billing', 'finance');
CREATE TABLE checks (service_id INTEGER, check_name TEXT, status TEXT);
INSERT INTO checks VALUES (1, 'smoke', 'pass'), (1, 'schema', 'fail'), (2, 'smoke', 'pass'), (2, 'cdn', 'pass'), (3, 'smoke', 'fail'), (3, 'ledger', 'fail');
WITH params(max_failures) AS (VALUES ()), service_failures AS (SELECT services.name, services.owner, SUM(CASE WHEN checks.status = 'fail' THEN 1 ELSE 0 END) AS failure_count FROM services JOIN checks ON checks.service_id = services.id GROUP BY services.name, services.owner) SELECT name, owner, failure_count, CASE WHEN failure_count <= (SELECT max_failures FROM params) THEN 'ready' ELSE 'blocked' END AS release_status FROM service_failures ORDER BY release_status DESC, name;
failure count The aggregate counts failed checks for each service.
release status The CASE expression labels each service as ready or blocked.
selector threshold `max_failures` changes the release policy without changing the report shape.