{
  "code": null,
  "collection": "architecture",
  "href": "https://banes-lab.com/ontology#architecture-hardcoded-configuration",
  "id": "hardcoded-configuration",
  "kind": "anti-pattern",
  "layer": {
    "href": "https://banes-lab.com/ontology/schema#layer-enforcement-core",
    "json": "https://banes-lab.com/json/records/layer/enforcement-core",
    "label": "Enforcement Core",
    "markdown": "https://banes-lab.com/records/layer/enforcement-core.md",
    "ref": "layer:enforcement-core"
  },
  "name": "Hardcoded Configuration",
  "ref": "architecture:hardcoded-configuration",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-externalize-configuration",
          "json": "https://banes-lab.com/json/records/lexicon/externalize-configuration",
          "label": "Externalize Configuration",
          "markdown": "https://banes-lab.com/records/lexicon/externalize-configuration.md",
          "ref": "lexicon:externalize-configuration"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-configuration-schema",
          "json": "https://banes-lab.com/json/records/lexicon/configuration-schema",
          "label": "Configuration Schema",
          "markdown": "https://banes-lab.com/records/lexicon/configuration-schema.md",
          "ref": "lexicon:configuration-schema"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-centralized-configuration",
          "json": "https://banes-lab.com/json/records/architecture/centralized-configuration",
          "label": "Centralized Configuration",
          "markdown": "https://banes-lab.com/records/architecture/centralized-configuration.md",
          "ref": "architecture:centralized-configuration"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-remove-secret-from-code",
          "json": "https://banes-lab.com/json/records/lexicon/remove-secret-from-code",
          "label": "Remove Secret from Code",
          "markdown": "https://banes-lab.com/records/lexicon/remove-secret-from-code.md",
          "ref": "lexicon:remove-secret-from-code"
        }
      ],
      "relation": "refactored-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/schema#vocabulary-severity-discouraged",
          "json": "https://banes-lab.com/json/records/vocabulary/severity-discouraged",
          "label": "discouraged",
          "markdown": "https://banes-lab.com/records/vocabulary/severity-discouraged.md",
          "ref": "vocabulary:severity-discouraged"
        }
      ],
      "relation": "severity"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-category-anti-patterns",
          "json": "https://banes-lab.com/json/records/architecture-category/anti-patterns",
          "label": "Anti-patterns",
          "markdown": "https://banes-lab.com/records/architecture-category/anti-patterns.md",
          "ref": "architecture-category:anti-patterns"
        }
      ],
      "relation": "category"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/schema#force-semantic-consistency",
          "json": "https://banes-lab.com/json/records/force/semantic-consistency",
          "label": "Semantic consistency",
          "markdown": "https://banes-lab.com/records/force/semantic-consistency.md",
          "ref": "force:semantic-consistency"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#force-state-transaction",
          "json": "https://banes-lab.com/json/records/force/state-transaction",
          "label": "State transaction",
          "markdown": "https://banes-lab.com/records/force/state-transaction.md",
          "ref": "force:state-transaction"
        }
      ],
      "relation": "force"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/governance#file-governance-codemods-entrypoints-location-entrypoint-ts",
          "json": "https://banes-lab.com/json/source/governance/codemods/entrypoints/location.entrypoint.ts",
          "label": "codemods/entrypoints/location.entrypoint.ts",
          "markdown": "https://banes-lab.com/source/governance/codemods/entrypoints/location.entrypoint.ts.md",
          "ref": "anatomy:file-governance-codemods-entrypoints-location-entrypoint-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/governance#file-governance-rules-eslint-closure-paths-via-ssot-eslint-rule-ts",
          "json": "https://banes-lab.com/json/source/governance/rules/eslint/closure-paths-via-ssot.eslint.rule.ts",
          "label": "rules/eslint/closure-paths-via-ssot.eslint.rule.ts",
          "markdown": "https://banes-lab.com/source/governance/rules/eslint/closure-paths-via-ssot.eslint.rule.ts.md",
          "ref": "anatomy:file-governance-rules-eslint-closure-paths-via-ssot-eslint-rule-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/governance#file-governance-rules-eslint-no-hardcoded-exclusions-eslint-rule-ts",
          "json": "https://banes-lab.com/json/source/governance/rules/eslint/no-hardcoded-exclusions.eslint.rule.ts",
          "label": "rules/eslint/no-hardcoded-exclusions.eslint.rule.ts",
          "markdown": "https://banes-lab.com/source/governance/rules/eslint/no-hardcoded-exclusions.eslint.rule.ts.md",
          "ref": "anatomy:file-governance-rules-eslint-no-hardcoded-exclusions-eslint-rule-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/governance#file-governance-rules-eslint-no-inline-asset-path-eslint-rule-ts",
          "json": "https://banes-lab.com/json/source/governance/rules/eslint/no-inline-asset-path.eslint.rule.ts",
          "label": "rules/eslint/no-inline-asset-path.eslint.rule.ts",
          "markdown": "https://banes-lab.com/source/governance/rules/eslint/no-inline-asset-path.eslint.rule.ts.md",
          "ref": "anatomy:file-governance-rules-eslint-no-inline-asset-path-eslint-rule-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/governance#file-governance-rules-eslint-no-port-literal-eslint-rule-ts",
          "json": "https://banes-lab.com/json/source/governance/rules/eslint/no-port-literal.eslint.rule.ts",
          "label": "rules/eslint/no-port-literal.eslint.rule.ts",
          "markdown": "https://banes-lab.com/source/governance/rules/eslint/no-port-literal.eslint.rule.ts.md",
          "ref": "anatomy:file-governance-rules-eslint-no-port-literal-eslint-rule-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/governance#file-governance-rules-eslint-no-secret-value-eslint-rule-ts",
          "json": "https://banes-lab.com/json/source/governance/rules/eslint/no-secret-value.eslint.rule.ts",
          "label": "rules/eslint/no-secret-value.eslint.rule.ts",
          "markdown": "https://banes-lab.com/source/governance/rules/eslint/no-secret-value.eslint.rule.ts.md",
          "ref": "anatomy:file-governance-rules-eslint-no-secret-value-eslint-rule-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-rule-entrypoint-ts",
          "json": "https://banes-lab.com/json/source/quality/runtime/entrypoints/rule.entrypoint.ts",
          "label": "runtime/entrypoints/rule.entrypoint.ts",
          "markdown": "https://banes-lab.com/source/quality/runtime/entrypoints/rule.entrypoint.ts.md",
          "ref": "anatomy:file-quality-runtime-entrypoints-rule-entrypoint-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/scripts#file-scripts-runtime-entrypoints-credential-entrypoint-ts",
          "json": "https://banes-lab.com/json/source/scripts/runtime/entrypoints/credential.entrypoint.ts",
          "label": "runtime/entrypoints/credential.entrypoint.ts",
          "markdown": "https://banes-lab.com/source/scripts/runtime/entrypoints/credential.entrypoint.ts.md",
          "ref": "anatomy:file-scripts-runtime-entrypoints-credential-entrypoint-ts"
        }
      ],
      "relation": "detected-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-configuration-externalization",
          "json": "https://banes-lab.com/json/records/architecture/configuration-externalization",
          "label": "Configuration Externalization",
          "markdown": "https://banes-lab.com/records/architecture/configuration-externalization.md",
          "ref": "architecture:configuration-externalization"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-declarative-configuration",
          "json": "https://banes-lab.com/json/records/architecture/declarative-configuration",
          "label": "Declarative Configuration",
          "markdown": "https://banes-lab.com/records/architecture/declarative-configuration.md",
          "ref": "architecture:declarative-configuration"
        }
      ],
      "relation": "negated-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-configuration-externalization",
          "json": "https://banes-lab.com/json/records/architecture/configuration-externalization",
          "label": "Configuration Externalization",
          "markdown": "https://banes-lab.com/records/architecture/configuration-externalization.md",
          "ref": "architecture:configuration-externalization"
        }
      ],
      "relation": "violates"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/pag/guide#tool-invocation",
          "json": "https://banes-lab.com/json/pag/guide/tool-invocation",
          "label": "Semantic operations",
          "markdown": "https://banes-lab.com/pag/guide/tool-invocation.md",
          "ref": "chapter:/pag/guide#tool-invocation"
        },
        {
          "href": "https://banes-lab.com/disciplined-methodology/build#one-home",
          "json": "https://banes-lab.com/json/disciplined-methodology/build/one-home",
          "label": "One home",
          "markdown": "https://banes-lab.com/disciplined-methodology/build/one-home.md",
          "ref": "chapter:/disciplined-methodology/build#one-home"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-anti-patterns",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-anti-patterns",
          "label": "Anti-patterns",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md",
          "ref": "chapter:/ontology#architecture-category-anti-patterns"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-portability-infrastructure-deployment",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-portability-infrastructure-deployment",
          "label": "Portability / Infrastructure / Deployment",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-portability-infrastructure-deployment.md",
          "ref": "chapter:/ontology#architecture-category-portability-infrastructure-deployment"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-metadata-self-description-declarative-systems",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-metadata-self-description-declarative-systems",
          "label": "Metadata / Self-Description / Declarative Systems",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-metadata-self-description-declarative-systems.md",
          "ref": "chapter:/ontology#architecture-category-metadata-self-description-declarative-systems"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-control-coordination-centralization",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-control-coordination-centralization",
          "label": "Control / Coordination / Centralization",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-control-coordination-centralization.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-control-coordination-centralization"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-security-privacy-compliance",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-security-privacy-compliance",
          "label": "Security Privacy Compliance",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-security-privacy-compliance.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-security-privacy-compliance"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#the-vocabulary-severity",
          "json": "https://banes-lab.com/json/ontology/schema/the-vocabulary-severity",
          "label": "Severity levels",
          "markdown": "https://banes-lab.com/ontology/schema/the-vocabulary-severity.md",
          "ref": "chapter:/ontology/schema#the-vocabulary-severity"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#the-forces",
          "json": "https://banes-lab.com/json/ontology/schema/the-forces",
          "label": "The forces",
          "markdown": "https://banes-lab.com/ontology/schema/the-forces.md",
          "ref": "chapter:/ontology/schema#the-forces"
        }
      ],
      "relation": "linked-from"
    }
  ],
  "summary": "A defect in which environment, credential or policy values are written into code instead of being supplied as configuration.",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/ontology#architecture-shared-mutable-state",
      "json": "https://banes-lab.com/json/records/architecture/shared-mutable-state",
      "label": "Shared Mutable State",
      "markdown": "https://banes-lab.com/records/architecture/shared-mutable-state.md",
      "ref": "architecture:shared-mutable-state"
    },
    "previous": {
      "href": "https://banes-lab.com/ontology#architecture-implicit-contract",
      "json": "https://banes-lab.com/json/records/architecture/implicit-contract",
      "label": "Implicit Contract",
      "markdown": "https://banes-lab.com/records/architecture/implicit-contract.md",
      "ref": "architecture:implicit-contract"
    }
  },
  "up": {
    "href": null,
    "json": "https://banes-lab.com/json/api/records/architecture",
    "label": "Architecture principles",
    "markdown": "https://banes-lab.com/api/records/architecture.md",
    "ref": "api:records/architecture"
  },
  "aliases": [],
  "exemplar": {
    "after": "const config = FooConfigSchema.parse({ url: process.env.FOO_URL, key: process.env.FOO_KEY });\nconst client = new FooClient(config);",
    "before": "const client = new FooClient(\"https://foo.prod.example\", \"sk_live_abc123\");",
    "lang": "ts",
    "medium": "code"
  },
  "formedBy": "Embed environment, path, credential, feature, service endpoint, or policy values directly into code, then duplicate those assumptions across runtime contexts.",
  "scope": [
    "semantic_consistency",
    "state_transaction"
  ],
  "severity": "discouraged"
}
