src/logic_network_generator.py:1409-1424 — leaves = get_terminal_components(stid) then one pos/and assembly edge per leaf.
get_terminal_components walks through EntitySets (reaction_generator.py:519-528), so mutually-exclusive alternatives arrive as siblings, all marked and.
This path does not split, so the constitution's "splitting already encodes the OR" justification does not cover it. That rule holds because each alternative becomes its own virtual reaction; here there is no VR, just N AND-ed assembly edges onto one complex node.
Evidence
382 of the 1,050 root-input assembly-target complexes in the fresh v97 catalog contain an internal DefinedSet/CandidateSet, and in every one the members are emitted as AND assembly members.
R-HSA-5693631 "PBX1:PKNOX1,MEIS1 [nucleoplasm]"
hasComponent -> R-HSA-453045 PBX1 (EWAS)
hasComponent -> R-HSA-5617480 "MEIS1,PKNOX1" (DefinedSet)
hasMember -> R-HSA-5617496 PKNOX1
hasMember -> R-HSA-5490327 MEIS1
emitted: 3 assembly edges (PBX1, PKNOX1, MEIS1), all and_or="and"
The curator's name says either PKNOX1 or MEIS1. Also affected: the HOX bivalent-chromatin complexes (R-HSA-5617473/5617645/5617482/5617474), each flattening R-HSA-4839773 (2 members) and R-HSA-1214232 (3 members).
61,652 assembly edges catalog-wide sit on this path.
Consequence
Knocking out one paralog gates the complex even when the alternative is intact — systematic signal dilution at exactly the root-input nodes that curator perturbations target.
Caution
This is the one place where OR genuinely is needed under Adam's rule (the exception being "sets we explicitly do not split on"). But LNG_SET_MEMBERS_OR on the catalyst/regulator path was a large regression (167→116 of 223, macro-F1 −0.209) because DeltaSignal has no aggregator for "one of N redundant alternatives was lost". Expect the same failure mode here, and land it only alongside such an aggregator — see the DeltaSignal DS_OR_COMBINE=gate work.
src/logic_network_generator.py:1409-1424—leaves = get_terminal_components(stid)then onepos/andassemblyedge per leaf.get_terminal_componentswalks through EntitySets (reaction_generator.py:519-528), so mutually-exclusive alternatives arrive as siblings, all markedand.This path does not split, so the constitution's "splitting already encodes the OR" justification does not cover it. That rule holds because each alternative becomes its own virtual reaction; here there is no VR, just N AND-ed assembly edges onto one complex node.
Evidence
382 of the 1,050 root-input assembly-target complexes in the fresh v97 catalog contain an internal
DefinedSet/CandidateSet, and in every one the members are emitted as AND assembly members.The curator's name says either PKNOX1 or MEIS1. Also affected: the HOX bivalent-chromatin complexes (
R-HSA-5617473/5617645/5617482/5617474), each flatteningR-HSA-4839773(2 members) andR-HSA-1214232(3 members).61,652 assembly edges catalog-wide sit on this path.
Consequence
Knocking out one paralog gates the complex even when the alternative is intact — systematic signal dilution at exactly the root-input nodes that curator perturbations target.
Caution
This is the one place where OR genuinely is needed under Adam's rule (the exception being "sets we explicitly do not split on"). But
LNG_SET_MEMBERS_ORon the catalyst/regulator path was a large regression (167→116 of 223, macro-F1 −0.209) because DeltaSignal has no aggregator for "one of N redundant alternatives was lost". Expect the same failure mode here, and land it only alongside such an aggregator — see the DeltaSignalDS_OR_COMBINE=gatework.