{"id":"template-method-principled-inheritance-counterexample","text":"Template Method's fine-grained override control (five operation kinds, non-virtual skeleton, hook vs. abstract distinction) constitutes the principled counterexample to composition's general superiority: it demonstrates that inheritance-based reuse can be made disciplined under specific structural constraints — a controlled inversion channel within the otherwise composition-dominant paradigm.","truth_value":"IN","source":"","source_url":"","source_hash":"","justifications":[{"type":"SL","antecedents":["template-method-fine-grained-override-control","composition-superiority-for-reuse"],"outlist":[],"label":"Template Method is the exception that proves the composition rule by showing when inheritance works"}],"dependents":["reuse-mechanisms-ordered-with-principled-inheritance-boundary","template-method-dual-role-skeleton-and-safety","template-method-inheritance-bounded-by-composition"],"metadata":{"source_type":"derived","review_result":"insufficient"},"created_at":"2026-06-17T23:32:57+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":"template-method-principled-inheritance-counterexample","truth_value":"IN","reason":"SL justification valid","antecedents":["template-method-fine-grained-override-control","composition-superiority-for-reuse"],"label":"Template Method is the exception that proves the composition rule by showing when inheritance works"},{"node":"template-method-fine-grained-override-control","truth_value":"IN","reason":"SL justification valid","antecedents":["gof-template-method-five-operation-kinds","hook-operations-overridable-defaults","gof-cpp-template-method-nonvirtual"],"label":"Five operation kinds plus non-virtual skeleton produce the most controlled inheritance in the GoF"},{"node":"gof-template-method-five-operation-kinds","truth_value":"IN","reason":"premise"},{"node":"hook-operations-overridable-defaults","truth_value":"IN","reason":"premise"},{"node":"gof-cpp-template-method-nonvirtual","truth_value":"IN","reason":"premise"},{"node":"composition-superiority-for-reuse","truth_value":"IN","reason":"SL justification valid","antecedents":["favor-composition-over-inheritance","inheritance-breaks-encapsulation","inheritance-compile-time-composition-run-time","delegation-composition-as-powerful-as-inheritance"],"label":"Four independent arguments converge on composition's superiority over inheritance"},{"node":"favor-composition-over-inheritance","truth_value":"IN","reason":"premise"},{"node":"inheritance-breaks-encapsulation","truth_value":"IN","reason":"premise"},{"node":"inheritance-compile-time-composition-run-time","truth_value":"IN","reason":"premise"},{"node":"delegation-composition-as-powerful-as-inheritance","truth_value":"IN","reason":"premise"}]}}