Let's take a step back. Apparently, you want to solve two things at
least: (1) Having a distinct predicate for foreign status. (2) Having
error objects that carry an extensible list of properties.
This conflict is I think resolved: we will wrap the list of properties in a trivial record, thus giving it an overarching predicate "Is this a foreign-status object?"
In this system, it makes sense that being a foreign status is
implemented as a simple condition.
Given the direction I am moving in this thread, a compound condition would make more sense, since a status may have properties in more than one property group. So each group of properties is a simple condition
One thing I don't understand about compound conditions is how you get access to the simple conditions inside.