The designated concept id for "true" and "false" are stored as global properties within the system. The ConceptServiceImpl has two static variables, trueConcept and falseConcept, that stores these "true" and "false" concepts.
However, instead of loading the true and false concepts from the DB, ConceptServiceImpl initializes trueConcept and falseConcept by creating dummy concepts initialized with the appropriate concept ids. Therefore the trueConcept and falseConcept variables get random uuids, not the uuids of the underlying concepts. This is problematic--for one, starting in OpenMRS 1.9 object comparsions are done using uuids, so someObs.getValueAsBoolean() will always return null.