Threadline.Verify.CoveragePolicy (Threadline v0.4.0)

Copy Markdown View Source

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

summary_counts(coverage, expected_tables)

Counts expected tables vs how many are fully covered (no violation row).

violations(coverage, expected_tables)

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.