Bipartite Coverage Matrix¶
Model — instantiates Target-Complete Mapping Design
Lays the required targets and the valid sources on two axes and marks every covering pair, so any target whose row is blank stands out as an uncovered gap.
Bipartite Coverage Matrix models the mapping as a two-mode grid — required targets down one axis, valid sources across the other — and marks a cell wherever a source genuinely covers a target. Its defining move is that completeness becomes a purely row-wise property: a target is covered if and only if its row carries at least one mark, so an all-blank row is an uncovered target you cannot overlook, no matter how busy the rest of the grid looks. It is the abstract structural substrate the other coverage mechanisms read from — it does not carry lifecycle evidence or pick an efficient subset of sources, it just lays the relation bare so gaps and redundancies are visible at a glance.
Example¶
An on-call rotation must always have someone able to handle each of 14 distinct incident types — database failover, TLS-cert rotation, payment-gateway triage, and so on (the targets). The nine engineers on the roster are the sources. A cell is marked where an engineer is both trained and rostered for that incident type. Reading down the columns first, everything looks healthy: nine capable engineers, forty-plus marks. But reading across the rows is the point — thirteen incident types have at least one marked engineer, and the "payment-gateway triage" row is entirely blank. Nobody currently on the rotation can do it. Aggregate capability hid a single lethal gap that the row view exposes instantly. As a bonus, a column reading shows one engineer alone covers eight types — a concentration the redundancy check will want to flag.
How it works¶
What distinguishes it is that coverage is represented as a biadjacency structure rather than inferred from activity. Completeness reduces to "no empty target row." Row sums read as redundancy-per-target (how many sources back each one); column sums read as load-per-source; empty rows are the gaps. Reordering or clustering the axes groups related gaps and exposes block structure, but the core test never changes: scan for a blank row.
Tuning parameters¶
- Cell criterion — what earns a mark: strict (trained and available and authorized) versus loose (nominally capable). A stricter criterion surfaces more real gaps but costs more to populate honestly.
- Axis granularity — one row per target family versus one per specific case. Finer rows catch narrow gaps; coarser rows keep the grid readable.
- Weighting — binary marks versus weighted cells for partial coverage. Weights capture "sort of covers" but blur the clean blank-row test.
- Ordering — how rows and columns are sorted; clustering surfaces the shape of the gaps rather than scattering them.
When it helps, and when it misleads¶
Its strength is converting "we have plenty of sources" into a per-target check that one glance can audit — orphan targets that aggregate counts bury become impossible to miss. Its limit is that a mark is only as honest as its criterion: a cell marked "covered" for a source that in truth lacks capacity or reachability is false comfort, since the matrix asserts a covering relation, not a working one. The classic misuse is filling cells to make the grid look full — recording nominal coverage to pass a review rather than testing that each marked source truly reaches its target. The discipline that guards against it is to define the cell criterion before populating, and to let an independent check spot-verify marked cells rather than trusting self-marking. Note, too, that choosing the smallest set of sources that still covers every target is the classic set-cover problem[1] — the matrix frames that question but does not answer it.
How it implements the components¶
Bipartite Coverage Matrix realizes the structural, relation-defining side of the archetype — not every component, only the ones a model of the mapping can hold:
required_target_space— the row axis: the enumerated set of targets that must each be covered.valid_source_space— the column axis: the sources eligible to serve as witnesses.target_to_witness_coverage_matrix— the grid itself: the marked source-by-target relation whose empty rows are the gaps.
It does not record per-witness evidence or the coverage contract — that is the Requirements Traceability Matrix — nor select a minimal covering set, which is Set-Cover Analysis; the matrix lays out the relation, others act on it.
Related¶
- Instantiates: Target-Complete Mapping Design — the matrix is the structural substrate the appraisal reads coverage from.
- Sibling mechanisms: Requirements Traceability Matrix · Coverage Dashboard · Set-Cover Analysis · Graph Reachability Analysis · Redundancy N+1 Check · Uncovered-Target Triage
Notes¶
A filled cell asserts that a witness is claimed at that intersection, not that it works. Capacity, real-world reachability, and validity are checked by other mechanisms — Source Capacity Load Test, Accessibility Reachability Test, Witness Validation Test. The matrix's job ends at "a witness is claimed here"; keeping that boundary explicit is what stops a full-looking grid from being mistaken for proven coverage.
References¶
[1] The set cover problem — selecting the fewest sources whose combined coverage still hits every target — is NP-hard in general. The coverage matrix is the natural input to it, which is why the optimization is handed to a dedicated sibling (Set-Cover Analysis) rather than eyeballed off the grid. ↩