{"id":"facade-implements-asymmetric-dip","text":"Facade's asymmetric subsystem simplification (one-directional dependency, subsystem unaware of Facade, typically Singleton) can support the conditions that enable DIP at the subsystem boundary: the Facade acts as an abstraction boundary owned by the higher-level client layer, and the subsystem's complete unawareness of its Facade aligns with DIP's principle that lower-level modules should not depend on higher-level modules' abstractions. However, this alignment with DIP is conditional on the Facade establishing a true abstraction boundary rather than merely a convenience wrapper.","truth_value":"IN","source":"","source_url":"","source_hash":"","justifications":[{"type":"SL","antecedents":["facade-asymmetric-subsystem-simplification","adapter-facade-implements-dip-at-boundaries"],"outlist":[],"label":"Facade's asymmetry concretely instantiates DIP's ownership and directionality principles"}],"dependents":[],"metadata":{"source_type":"derived","review_result":"pass","repair_action":"softened"},"created_at":"2026-06-17T23:58:28+00:00","updated_at":"2026-06-18T06:15:08+00:00","reviewed_at":"2026-06-18T06:15:08+00:00","verified_at":"","retracted_at":"","explanation":{"steps":[{"node":"facade-implements-asymmetric-dip","truth_value":"IN","reason":"SL justification valid","antecedents":["facade-asymmetric-subsystem-simplification","adapter-facade-implements-dip-at-boundaries"],"label":"Facade's asymmetry concretely instantiates DIP's ownership and directionality principles"},{"node":"facade-asymmetric-subsystem-simplification","truth_value":"IN","reason":"SL justification valid","antecedents":["facade-often-singleton","facade-subsystem-unaware-of-facade"],"label":"One-way dependency with singleton uniqueness establishes asymmetric simplification"},{"node":"facade-often-singleton","truth_value":"IN","reason":"premise"},{"node":"facade-subsystem-unaware-of-facade","truth_value":"IN","reason":"premise"},{"node":"adapter-facade-implements-dip-at-boundaries","truth_value":"IN","reason":"SL justification valid","antecedents":["adapter-facade-interface-boundary-pair","dip-enables-ocp"],"label":"Boundary patterns are the concrete mechanism by which DIP's abstraction requirement is fulfilled at system interfaces"},{"node":"adapter-facade-interface-boundary-pair","truth_value":"IN","reason":"SL justification valid","antecedents":["facade-vs-adapter-new-vs-existing-interface","adapter-after-design-bridge-before-design","facade-defines-higher-level-interface-to-subsystem"],"label":"Two structural patterns addressing interface boundaries at complementary granularities"},{"node":"facade-vs-adapter-new-vs-existing-interface","truth_value":"IN","reason":"premise"},{"node":"adapter-after-design-bridge-before-design","truth_value":"IN","reason":"premise"},{"node":"facade-defines-higher-level-interface-to-subsystem","truth_value":"IN","reason":"premise"},{"node":"dip-enables-ocp","truth_value":"IN","reason":"SL justification valid","antecedents":["dip-depend-on-abstractions-not-concretions","ocp-open-for-extension-closed-for-modification","program-to-interface-not-implementation"],"label":"Abstraction-dependency is the mechanism enabling extension-without-modification"},{"node":"dip-depend-on-abstractions-not-concretions","truth_value":"IN","reason":"premise"},{"node":"ocp-open-for-extension-closed-for-modification","truth_value":"IN","reason":"premise"},{"node":"program-to-interface-not-implementation","truth_value":"IN","reason":"premise"}]}}