configuration/algorithm/data/anti-pattern.data.json

configuration/algorithm/data/anti-pattern.data.json is a file in GovLab Context. 293 lines of code and 0 definitions.

{
    "category": "anti-patterns",
    "tier": "leaf",
    "check": {
        "by": [
            "the quality rules compiled from the smell catalog",
            "the cross-file quality gate"
        ],
        "population": "every source file the rules lint",
        "freshness": "a verdict stands until the linted source or a rule changes",
        "refusal": "a compiled rule fails the lint stage on the smell's signature",
        "observation": "none: these records describe decay paths found in source, not signals of a running system",
        "evidence": "none: the catalog states this check as a class, so a watched run belongs to each system that adopts it",
        "authority": "the smell catalog, which the compiled rules are derived from and the source is held to"
    },
    "records": [
        {
            "id": "anti-pattern-inversion",
            "mathType": "logic",
            "yields": "boolean",
            "title": "Anti-Pattern Inversion",
            "intent": "Take any desired architectural principle, invert its invariants, identify the recurring violation shape, model its propagation mechanism, define detection signals, and derive its remediation inverse.",
            "invariant": "Every anti-pattern is a stable failure algorithm created by repeated violation of an architectural contract.",
            "flow": [
                "Principle",
                "Invariant",
                "Violation",
                "Propagation",
                "Detection",
                "Remediation"
            ],
            "productions": [
                {
                    "lhs": "AntiPatternInversion",
                    "rhs": "<HealthyPrinciple> \"→\" <RequiredInvariant> \"→\" <InvariantViolation> \"→\" <FailurePropagation> \"→\" <DetectionSignalSet> \"→\" <RemediationInverse>"
                },
                {
                    "lhs": "AntiPatternRecord",
                    "rhs": "<Name> \",\" <TriggerCondition> \",\" <DegenerationPath> \",\" <DetectionSignals> \",\" <DamageModel> \",\" <RemediationInverse>"
                }
            ],
            "composes": [],
            "force": [
                "contract_compatibility",
                "correctness_verification",
                "model_governance"
            ],
            "exemplar": {
                "before": "Principle: Low Coupling — stated as a goal only; its violations are noticed ad hoc, named inconsistently, and caught late, with no derived failure algorithm.",
                "after": "Low Coupling → invariant{no bidirectional dependency} → violation{Cyclic Dependency} → propagation{a convenience import closes a cycle, then spreads across modules} → detection{dependency-cycle scan} → remediation{invert the dependency / introduce a port}",
                "lang": "flow",
                "medium": "composite"
            }
        },
        {
            "id": "anti-pattern-propagation-kernel",
            "mathType": "dynamical-systems",
            "yields": "boolean | counter",
            "title": "Anti-Pattern Propagation Kernel",
            "intent": "Start with a local shortcut, repeat it under delivery pressure, normalize it as convention, allow dependent code to form around it, then make remediation expensive through coupling and hidden assumptions.",
            "invariant": "Most architecture anti-patterns become dangerous when a shortcut becomes infrastructure.",
            "flow": [
                "Shortcut",
                "Repetition",
                "Normalization",
                "DependencyFormation",
                "Institutionalization",
                "HighCostRepair"
            ],
            "productions": [
                {
                    "lhs": "AntiPatternPropagation",
                    "rhs": "<LocalShortcut> \"→\" <RepeatedUse> \"→\" <ImplicitConvention> \"→\" <DependentCodeFormation> \"→\" <ArchitecturalDebt> \"→\" <RemediationCostIncrease>"
                },
                {
                    "lhs": "DebtAmplifier",
                    "rhs": "\"copy_paste\" | \"missing_contract\" | \"missing_owner\" | \"missing_metric\" | \"missing_boundary\" | \"missing_version\" | \"missing_observability\""
                }
            ],
            "composes": [],
            "force": [
                "modularity",
                "semantic_consistency",
                "correctness_verification"
            ],
            "exemplar": {
                "before": "A one-off shortcut — inline a secret to ship a fix — treated as an isolated, cheap, local choice.",
                "after": "Shortcut{inline secret} → repetition{reused under deadline} → normalization{becomes the team convention} → dependency-formation{configs read it directly} → institutionalization{deploy scripts assume it} → high-cost-repair{rotate the secret and rewire every dependent}",
                "lang": "flow",
                "medium": "composite"
            }
        },
        {
            "id": "anti-pattern-remediation-algebra",
            "mathType": "algebra",
            "yields": "ordered-structure",
            "title": "Anti-Pattern Remediation Algebra",
            "intent": "For each anti-pattern, identify the missing architectural control, introduce the inverse control, migrate existing dependents, verify absence of the old failure shape, and enforce recurrence prevention.",
            "invariant": "Anti-pattern repair is not complete until the propagation path is blocked.",
            "flow": [
                "AntiPattern",
                "MissingControl",
                "InverseControl",
                "Migration",
                "AbsenceCheck",
                "PreventionGate"
            ],
            "productions": [
                {
                    "lhs": "AntiPatternRemediationAlgebra",
                    "rhs": "<AntiPatternRecord> \"→\" <MissingControl> \"→\" <InverseArchitecturalControl> \"→\" <MigrationPlan> \"→\" <EliminationVerification> \"→\" <RecurrencePrevention>"
                },
                {
                    "lhs": "MissingControl",
                    "rhs": "\"boundary\" | \"contract\" | \"owner\" | \"version\" | \"telemetry\" | \"schema\" | \"policy\" | \"state_isolation\" | \"dependency_rule\""
                },
                {
                    "lhs": "RecurrencePrevention",
                    "rhs": "\"static_check\" | \"contract_test\" | \"schema_gate\" | \"architecture_test\" | \"policy_as_code\" | \"review_gate\" | \"runtime_monitor\""
                }
            ],
            "composes": [],
            "force": ["correctness_verification"],
            "exemplar": {
                "before": "The anti-pattern is deleted at one call site; the propagation path stays open, so it reappears elsewhere next sprint.",
                "after": "Secret Sprawl → missing-control{no secret authority} → inverse-control{central store + injected access} → migration{repoint every reader} → absence-check{scan finds zero inline secrets} → prevention-gate{lint rule rejects new inline secrets}",
                "lang": "flow",
                "medium": "composite"
            }
        },
        {
            "id": "architecture-smell-record",
            "mathType": "logic",
            "yields": "boolean",
            "title": "Architecture Smell Record",
            "intent": "Model every smell as a recurring degeneration path with trigger conditions, enabling conditions, detection signals, damage model, remediation inverse, and prevention gate.",
            "invariant": "A smell becomes enforceable when it is represented as a measurable failure contract.",
            "flow": [
                "Smell",
                "Trigger",
                "Degeneration",
                "Detection",
                "Measurement",
                "Remediation",
                "Prevention"
            ],
            "productions": [
                {
                    "lhs": "ArchitectureSmellRecord",
                    "rhs": "<SmellName> \",\" <TriggerCondition> \",\" <EnablingConditionSet> \",\" <DegenerationPath> \",\" <DetectionSignalSet> \",\" <MetricSet> \",\" <DamageModel> \",\" <RemediationInverse> \",\" <PreventionGate>"
                },
                {
                    "lhs": "PreventionGate",
                    "rhs": "\"static_check\" | \"architecture_test\" | \"contract_test\" | \"schema_gate\" | \"review_gate\" | \"fitness_function\" | \"runtime_monitor\""
                }
            ],
            "composes": [],
            "force": [
                "contract_compatibility",
                "correctness_verification",
                "model_governance"
            ],
            "exemplar": {
                "before": "Smell described in prose ('this class is too big') — unmeasurable, unenforceable, re-argued case by case.",
                "after": "God Object : trigger{unrelated methods accrete} → degeneration{fan-in/out grows} → detection{LCOM + responsibility count} → measurement{cohesion score below threshold} → remediation{Extract Class} → prevention{architecture test on cohesion}",
                "lang": "record",
                "medium": "composite"
            }
        },
        {
            "id": "anti-pattern-rule-compiler",
            "mathType": "computation",
            "yields": "procedure",
            "title": "Anti-Pattern Rule Compiler",
            "intent": "Convert each smell record into detection checks, measurable thresholds, severity policy, remediation hints, and recurrence-prevention gates.",
            "invariant": "A smell catalog is enforced only once it compiles into rules.",
            "flow": [
                "SmellRecord",
                "DetectionRule",
                "MetricThreshold",
                "Severity",
                "RefactorHint",
                "Gate"
            ],
            "productions": [
                {
                    "lhs": "AntiPatternRuleCompiler",
                    "rhs": "<ArchitectureSmellRecordSet> \"→\" <DetectionRuleSet> \"→\" <MetricThresholdSet> \"→\" <SeverityPolicy> \"→\" <RemediationPlaybookSet> \"→\" <PreventionGateSet>"
                },
                {
                    "lhs": "CompiledRule",
                    "rhs": "<RuleName> \",\" <Scope> \",\" <Detector> \",\" <Threshold> \",\" <PriorityRank> \",\" <FailureMessage> \",\" <RefactorHint> \",\" <PreventionGate>"
                }
            ],
            "composes": ["severity-policy"],
            "force": ["correctness_verification"],
            "exemplar": {
                "before": "A smell catalog read by the developer — each entry is advice that nothing executes.",
                "after": "SmellRecord{God Object} → detection-rule{find unrelated method clusters} → metric-threshold{LCOM > 0.7} → severity{error} → refactor-hint{Extract Class} → gate{fails the build}",
                "lang": "flow",
                "medium": "composite"
            }
        },
        {
            "id": "smell-taxonomy",
            "mathType": "set-theory",
            "yields": "set | boolean",
            "title": "Smell Taxonomy",
            "intent": "Group smells by missing control so detection and remediation can be generalized.",
            "invariant": "Most bad practices are symptoms of a missing architectural control.",
            "flow": [
                "Smell",
                "MissingControl",
                "RuleFamily",
                "RemediationFamily"
            ],
            "productions": [
                {
                    "lhs": "SmellTaxonomy",
                    "rhs": "<SmellSet> \"→\" <MissingControlClassification> \"→\" <RuleFamilySet> \"→\" <RemediationFamilySet>"
                },
                {
                    "lhs": "MissingControlClassification",
                    "rhs": "\"missing_boundary\" | \"missing_contract\" | \"missing_type\" | \"missing_owner\" | \"missing_version\" | \"missing_validation\" | \"missing_observability\" | \"missing_state_control\" | \"missing_release_control\" | \"missing_security_control\" | \"missing_evidence\" | \"excessive_abstraction\" | \"excessive_coupling\" | \"excessive_manual_process\""
                }
            ],
            "composes": [],
            "force": ["correctness_verification"],
            "exemplar": {
                "before": "Dozens of smells listed flat, each handed its own bespoke, unrelated fix.",
                "after": "smell-set{Magic Value, Secret Sprawl, Hardcoded Path} → missing-control{single source of truth} → rule-family{no-inline-authority checks} → remediation-family{centralize then inject}",
                "lang": "flow",
                "medium": "composite"
            }
        },
        {
            "id": "anti-pattern-relationship-record",
            "mathType": "graph",
            "yields": "edge-list",
            "title": "Anti-Pattern Relationship Record",
            "intent": "Model every anti-pattern as a typed relationship record: name, scope, causal links, conflicts, degradations, enabled failures, detection signals, measurement, remediation inverse, prevention, and severity.",
            "invariant": "An anti-pattern is enforceable only when it is represented as a typed relationship record.",
            "flow": [],
            "productions": [
                {
                    "lhs": "AntiPatternRelationshipRecord",
                    "rhs": "<AntiPatternName> \":\" \"Anti-Pattern\" \",\" <scope> \",\" <caused_by> \",\" <conflicts_with> \",\" <degrades> \",\" <enables_failure> \",\" <detected_by> \",\" <measured_by> \",\" <refactored_by> \",\" <prevented_by> \",\" <severity>"
                }
            ],
            "composes": [],
            "force": ["architecture_evolution"],
            "exemplar": {
                "before": "An anti-pattern named as free text with no typed edges — not resolvable, not gate-checkable, not linkable to the principle it violates.",
                "after": "Cyclic Dependency : Anti-Pattern, scope{module}, caused_by{convenience import}, conflicts_with{Low Coupling}, degrades{modularity}, enables_failure{build deadlock}, detected_by{cycle scan}, refactored_by{invert dependency}, prevented_by{dependency rule}, severity{mandatory}",
                "lang": "record",
                "medium": "composite"
            }
        },
        {
            "id": "architecture-anti-pattern",
            "principleRef": "big-ball-of-mud",
            "title": "<Architecture Anti-Pattern>",
            "intent": "<Local shortcut> → <Missing control> → <Repeated usage> → <Implicit dependency> → <Boundary/contract erosion> → <Systemic fragility> → <Expensive remediation>",
            "invariant": "Every architecture anti-pattern is a reproducible decay path caused by the absence of a specific control: boundary, contract, ownership, versioning, observability, state isolation, or enforcement.",
            "flow": [
                "Shortcut",
                "Drift",
                "Coupling",
                "Fragility",
                "Detection",
                "Inversion"
            ],
            "productions": [
                {
                    "lhs": "ArchitectureAntiPattern",
                    "rhs": "<TriggerCondition> \"→\" <MissingControl> \"→\" <DegenerationPath> \"→\" <DamageModel> \"→\" <DetectionSignalSet> \"→\" <RemediationInverse> \"→\" <PreventionGate>"
                },
                {
                    "lhs": "RemediationInverse",
                    "rhs": "\"introduce_boundary\" | \"declare_contract\" | \"centralize_authority\" | \"assign_owner\" | \"version_change\" | \"add_observability\" | \"isolate_state\" | \"enforce_policy\""
                }
            ],
            "composes": [],
            "force": [
                "modularity",
                "contract_compatibility",
                "correctness_verification",
                "observability_traceability"
            ],
            "meta": true
        }
    ]
}