{"id":"naming-drift-is-canonical-frozen-debt","text":"Naming drift is the canonical instance of permanently frozen engineering debt: names serve no functional role at any layer of the architecture (neither runtime execution nor test harness depend on semantic correctness of names), while the isolation mechanism that freezes all engineering debt simultaneously ensures naming errors are undetectable without manual inspection — making naming the purest case of a defect that is simultaneously consequenceless and uncorrectable.","truth_value":"IN","source":"","source_url":"","source_hash":"","justifications":[{"type":"SL","antecedents":["names-serve-no-functional-role","engineering-debt-permanently-frozen"],"outlist":[],"label":"Depth-7 instantiation: naming concretely demonstrates both the non-functionality (depth 6) and the permanence (depth 5) that define frozen debt"}],"dependents":["naming-drift-evidences-co-adaptation-lock","naming-drift-is-definitive-immunity-proof"],"metadata":{"source_type":"derived","last_reviewed":"2026-06-07T22:02:22","review_result":"pass"},"created_at":"","updated_at":"","reviewed_at":"","verified_at":"","retracted_at":"","explanation":{"steps":[{"node":"naming-drift-is-canonical-frozen-debt","truth_value":"IN","reason":"SL justification valid","antecedents":["names-serve-no-functional-role","engineering-debt-permanently-frozen"],"label":"Depth-7 instantiation: naming concretely demonstrates both the non-functionality (depth 6) and the permanence (depth 5) that define frozen debt"},{"node":"names-serve-no-functional-role","truth_value":"IN","reason":"SL justification valid","antecedents":["generation-errors-remain-invisible","naming-drift-does-not-affect-execution"],"label":"Generation errors are invisible (depth-5) because isolation prevents cross-solution name collisions, and naming drift doesn't affect execution (depth-2) because the alias convention decouples names from test harness binding; together, names have zero functional significance"},{"node":"generation-errors-remain-invisible","truth_value":"IN","reason":"SL justification valid","antecedents":["generation-pipeline-is-naming-error-root-cause","inconsistency-is-invisible-because-submission-optimized"],"label":"generation errors are contained by isolation until a misnamed export breaks the test harness routing boundary","outlist":["misnamed-module-exports-in-test-harness"]},{"node":"generation-pipeline-is-naming-error-root-cause","truth_value":"IN","reason":"SL justification valid","antecedents":["pipeline-generates-misnamed-functions","stale-aliases-from-generation-pipeline"],"label":"Root cause identification — naming errors are a systematic pipeline artifact, not random human error"},{"node":"pipeline-generates-misnamed-functions","truth_value":"IN","reason":"premise"},{"node":"stale-aliases-from-generation-pipeline","truth_value":"IN","reason":"premise"},{"node":"inconsistency-is-invisible-because-submission-optimized","truth_value":"IN","reason":"SL justification valid","antecedents":["isolation-creates-undetectable-inconsistency","repo-optimized-for-submission-not-engineering"],"label":"Isolation both generates inconsistency (no-consistency-enforcement) and conceals it (tooling unreliability) — the architecture is a self-stabilizing inconsistency trap"},{"node":"isolation-creates-undetectable-inconsistency","truth_value":"IN","reason":"SL justification valid","antecedents":["no-consistency-enforcement-at-any-level","isolation-cascades-to-tooling-unreliability"],"label":"When the same architecture that prevents consistency also breaks the tools that would detect inconsistency, the drift is self-concealing"},{"node":"no-consistency-enforcement-at-any-level","truth_value":"IN","reason":"SL justification valid","antecedents":["isolation-enables-style-drift","test-colocation-dual-mode-inconsistent","duplication-over-shared-infrastructure"],"label":"isolation removes the forcing function, duplication removes the single point of standardization, and dual-mode testing confirms that even simple conventions (where tests live) have drifted"},{"node":"isolation-enables-style-drift","truth_value":"IN","reason":"SL justification valid","antecedents":["repo-no-cross-problem-imports","solution-class-vs-standalone-function","method-name-mismatch-pattern","leetcode-repo-mixed-function-style"],"label":"Zero coupling means zero convention enforcement; each directory evolves independently"},{"node":"repo-no-cross-problem-imports","truth_value":"IN","reason":"premise"},{"node":"solution-class-vs-standalone-function","truth_value":"IN","reason":"premise"},{"node":"method-name-mismatch-pattern","truth_value":"IN","reason":"premise"},{"node":"leetcode-repo-mixed-function-style","truth_value":"IN","reason":"premise"},{"node":"test-colocation-dual-mode-inconsistent","truth_value":"IN","reason":"SL justification valid","antecedents":["tests-colocated-in-solution-file","test-files-import-sibling-solution","some-solutions-bundle-tests-inline","repo-solution-test-convention"],"label":"Both test patterns work but the inconsistency reflects the same isolation-driven style drift as the class-vs-function split"},{"node":"tests-colocated-in-solution-file","truth_value":"IN","reason":"premise"},{"node":"test-files-import-sibling-solution","truth_value":"IN","reason":"premise"},{"node":"some-solutions-bundle-tests-inline","truth_value":"IN","reason":"premise"},{"node":"repo-solution-test-convention","truth_value":"IN","reason":"premise"},{"node":"duplication-over-shared-infrastructure","truth_value":"IN","reason":"SL justification valid","antecedents":["treenode-is-de-facto-shared-via-inline-copies","tree-serialization-helpers-duplicated","per-problem-data-structure-isolation","repo-no-cross-problem-imports"],"label":"Architecture deliberately prioritizes isolation over deduplication"},{"node":"treenode-is-de-facto-shared-via-inline-copies","truth_value":"IN","reason":"premise"},{"node":"tree-serialization-helpers-duplicated","truth_value":"IN","reason":"premise"},{"node":"per-problem-data-structure-isolation","truth_value":"IN","reason":"premise"},{"node":"isolation-cascades-to-tooling-unreliability","truth_value":"IN","reason":"SL justification valid","antecedents":["isolation-enables-style-drift","imported-by-metadata-systematically-unreliable"],"label":"Isolation makes dependency analysis impossible because there are no real dependencies to analyze"},{"node":"imported-by-metadata-systematically-unreliable","truth_value":"IN","reason":"SL justification valid","antecedents":["imported-by-lists-are-misleading","imported-by-lists-are-tooling-artifact","test-harness-uniform-import-convention"],"label":"The test harness imports a uniform symbol from every solution, inflating apparent coupling to ~400 dependents per file"},{"node":"imported-by-lists-are-misleading","truth_value":"IN","reason":"premise"},{"node":"imported-by-lists-are-tooling-artifact","truth_value":"IN","reason":"premise"},{"node":"test-harness-uniform-import-convention","truth_value":"IN","reason":"premise"},{"node":"repo-optimized-for-submission-not-engineering","truth_value":"IN","reason":"SL justification valid","antecedents":["leetcode-judge-optimized-not-reusable","no-consistency-enforcement-at-any-level"],"label":"Judge optimization (no validation, mutation, duplication) combines with absence of enforcement to produce a codebase where correctness is local and accidental consistency is the only kind"},{"node":"leetcode-judge-optimized-not-reusable","truth_value":"IN","reason":"SL justification valid","antecedents":["no-validation-is-deliberate-contract","in-place-mutation-with-return-convention","duplication-over-shared-infrastructure"],"label":"each decision is rational for a judge environment (trusted input, single caller, no shared state) but would be a defect in reusable library code"},{"node":"no-validation-is-deliberate-contract","truth_value":"IN","reason":"SL justification valid","antecedents":["solutions-no-input-validation","no-input-validation-convention","solutions-trust-leetcode-preconditions","leetcode-solutions-no-validation-convention"],"label":"Validation omission is a consistent design decision, not accumulated technical debt"},{"node":"solutions-no-input-validation","truth_value":"IN","reason":"premise"},{"node":"no-input-validation-convention","truth_value":"IN","reason":"premise"},{"node":"solutions-trust-leetcode-preconditions","truth_value":"IN","reason":"premise"},{"node":"leetcode-solutions-no-validation-convention","truth_value":"IN","reason":"premise"},{"node":"in-place-mutation-with-return-convention","truth_value":"IN","reason":"SL justification valid","antecedents":["in-place-mutation-return-convention","in-place-sort-mutation-pattern","assign-cookies-mutates-inputs","fused-reverse-invert"],"label":"The mutate-and-return idiom matches LeetCode's expected interface pattern"},{"node":"in-place-mutation-return-convention","truth_value":"IN","reason":"premise"},{"node":"in-place-sort-mutation-pattern","truth_value":"IN","reason":"premise"},{"node":"assign-cookies-mutates-inputs","truth_value":"IN","reason":"premise"},{"node":"fused-reverse-invert","truth_value":"IN","reason":"premise"},{"node":"naming-drift-does-not-affect-execution","truth_value":"IN","reason":"SL justification valid","antecedents":["solution-module-level-alias-convention","isolation-enables-style-drift"],"label":"Module-level aliases bridge naming drift unless the alias itself is misnamed","outlist":["misnamed-module-exports-in-test-harness"]},{"node":"solution-module-level-alias-convention","truth_value":"IN","reason":"premise"},{"node":"engineering-debt-permanently-frozen","truth_value":"IN","reason":"SL justification valid","antecedents":["inconsistency-is-invisible-because-submission-optimized","algorithmic-precision-despite-engineering-neglect"],"label":"Stability analysis — debt is frozen UNLESS naming errors propagate to test failures, which would introduce the missing feedback signal","outlist":["misnamed-module-exports-in-test-harness"]},{"node":"algorithmic-precision-despite-engineering-neglect","truth_value":"IN","reason":"SL justification valid","antecedents":["repo-optimized-for-submission-not-engineering","stdlib-reinforces-exactness"],"label":"Submission-optimized engineering + stdlib-reinforced exactness shows the optimization target is judge correctness, not code quality"},{"node":"stdlib-reinforces-exactness","truth_value":"IN","reason":"SL justification valid","antecedents":["python-stdlib-preferred-over-manual-algorithms","exactness-over-performance-at-every-layer"],"label":"Stdlib abstractions inherently provide the exact semantics the repo demands"},{"node":"python-stdlib-preferred-over-manual-algorithms","truth_value":"IN","reason":"SL justification valid","antecedents":["string-over-arithmetic-for-digit-ops","counter-universal-frequency-primitive"],"label":"both patterns reflect the same principle: prefer a well-tested stdlib abstraction over a hand-rolled equivalent, trading minor performance for readability and correctness confidence"},{"node":"string-over-arithmetic-for-digit-ops","truth_value":"IN","reason":"SL justification valid","antecedents":["str-conversion-digit-extraction-idiom","string-based-digit-check-idiom","digit-sum-via-str-conversion","bin-count-for-popcount"],"label":"String conversion is the universal digit-decomposition idiom, chosen for readability over performance"},{"node":"str-conversion-digit-extraction-idiom","truth_value":"IN","reason":"premise"},{"node":"string-based-digit-check-idiom","truth_value":"IN","reason":"premise"},{"node":"digit-sum-via-str-conversion","truth_value":"IN","reason":"premise"},{"node":"bin-count-for-popcount","truth_value":"IN","reason":"premise"},{"node":"counter-universal-frequency-primitive","truth_value":"IN","reason":"SL justification valid","antecedents":["counter-dominant-frequency-tool","counter-pattern-dominates-frequency-problems","counter-missing-key-returns-zero","counter-subtraction-drops-nonpositive"],"label":"Counter's built-in semantics eliminate boilerplate that manual dicts would require"},{"node":"counter-dominant-frequency-tool","truth_value":"IN","reason":"premise"},{"node":"counter-pattern-dominates-frequency-problems","truth_value":"IN","reason":"premise"},{"node":"counter-missing-key-returns-zero","truth_value":"IN","reason":"premise"},{"node":"counter-subtraction-drops-nonpositive","truth_value":"IN","reason":"premise"},{"node":"exactness-over-performance-at-every-layer","truth_value":"IN","reason":"SL justification valid","antecedents":["integer-arithmetic-avoids-float-precision","string-over-arithmetic-for-digit-ops"],"label":"Both patterns sacrifice theoretical efficiency (string ops are slower than arithmetic, isqrt has overhead) for the same reason: eliminating an entire class of precision bugs rather than reasoning about when they'd actually trigger"},{"node":"integer-arithmetic-avoids-float-precision","truth_value":"IN","reason":"SL justification valid","antecedents":["isqrt-over-sqrt-for-large-inputs","pivot-integer-isqrt-not-sqrt","sum-substitution-avoids-float-precision","percentage-floor-integer-arithmetic"],"label":"four independent solutions independently chose integer arithmetic to dodge the same class of bug (float precision near integer boundaries), indicating a deliberate defensive pattern"},{"node":"isqrt-over-sqrt-for-large-inputs","truth_value":"IN","reason":"premise"},{"node":"pivot-integer-isqrt-not-sqrt","truth_value":"IN","reason":"premise"},{"node":"sum-substitution-avoids-float-precision","truth_value":"IN","reason":"premise"},{"node":"percentage-floor-integer-arithmetic","truth_value":"IN","reason":"premise"}]}}