Ask a commercial interaction checker about a three-drug problem and you'll get, at best, three separate two-drug answers. That's not a limitation of the vendor's diligence — it's a limitation of the data structure. A pairwise severity table is drug × drug → severity. It has one shape, and that shape is a pair. A risk that only exists when three drugs stack has no cell to live in.

The clinical literature is blunt about this: 3+-drug interactions are excluded from the standard commercial knowledge bases. Not deprioritized — structurally excluded.

Why the third drug matters

Consider three real mechanisms a pair table drops on the floor:

We store the mechanism, so we can compose it

Instead of storing pairs, we store the mechanism: drug → enzyme/transporter edges (clarithromycin —inhibits→ CYP3A4, simvastatin —substrate_of→ CYP3A4). An interaction is then something we derive by composing edges along a graph — and the path we walked is the proof.

Because the representation is a graph, the third drug isn't a special case. A polypharmacy reasoner takes a whole medication list and emits a regimen risk profile, with a cited proof per finding, catching the loads a pairwise table can't hold.

The evidence — and the honest boundary

Here's the number and where it lives. In the polypharmacy battery (expr5798-polypharmacy-battery.json), the reasoner produced 8 findings with zero fabricationsfalse_additive, false_competition, and false_joint counts all zero — and it abstains on a drug whose properties it doesn't have. It surfaces the amiodarone + clarithromycin + haloperidol QT stack as a three-contributor finding, not as any single pair.

Now the boundary, because honesty is the whole point: this is a demonstrated capability, proven on a curated battery of real documented drug properties. It is not a claim of coverage-at-scale — the real, cited property facts that would drive this across the full formulary come from an extraction pipeline that's still growing, gated behind our own ratification bar. So: the reasoner can do the thing a pair table structurally cannot; how much of the formulary it does it over is labeled growing, and you can watch that number move on our honesty dashboard.

The capability is the moat. The coverage is the work.


Coverage is labeled growing, never parity. Every number here traces to an on-disk evaluation that regenerates from cargo test. Public naming and launch timing are not yet decided.