Pure policy for comparing Threadline.Health.trigger_coverage/1 output with
host-configured expected audited table names.
Intersection semantics: Only tables listed in expected_tables are
evaluated. Each must appear in the coverage list as {:covered, name}.
{:uncovered, name} for an expected name is a violation. If a name is not
present in the coverage list at all (e.g. typo or table outside the catalog
Health enumerates), that is reported as {:missing, name}.
An empty expected_tables list yields no violations; the Mix task fails
closed before invoking this module when the configured list is missing or empty.
Summary
Functions
Counts expected tables vs how many are fully covered (no violation row).
Returns a sorted list of violations for tables the host expects to be covered.
Functions
Counts expected tables vs how many are fully covered (no violation row).
Returns a sorted list of violations for tables the host expects to be covered.
coverage is [{:covered | :uncovered, String.t()}] from
Threadline.Health.trigger_coverage/1. expected_tables is a list of
unique public table name strings.