The License / License-Code check in buildtable.pl does $val =~ s/ OR .*//, so only the first license in an SPDX OR expression is checked. That has two effects:
License: GPL-2.0 OR MITfails with "Unacceptable license GPL-2.0", although BIP-3 allows any expression that is "L" or equivalent to "L OR E" for an acceptable L. Order shouldn't matter.License: MIT OR Bogus-Licensepasses, because the second identifier is never looked at.
This splits the value on OR, requires every operand to be in %DefinedLicenses, and requires at least one operand to be acceptable (or grandfathered PD / CC-BY-SA-4.0 for the BIPs listed). Results with a temporarily edited header on bip-0341:
| License | before | after |
|---|---|---|
BSD-3-Clause |
ok | ok |
GPL-2.0 OR MIT |
Unacceptable license GPL-2.0 | ok |
MIT OR Bogus-License |
ok | Undefined license Bogus-License |
GPL-2.0 OR AGPL-3.0 |
Unacceptable | Unacceptable |
CC0-1.0 OR MIT OR Apache-2.0 |
ok | ok |
The script still runs cleanly over the whole repo, and diffcheck.sh has no changes.