{
  "code": null,
  "collection": "architecture",
  "href": "https://banes-lab.com/ontology#architecture-opaque-runtime-behavior",
  "id": "opaque-runtime-behavior",
  "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": "Opaque Runtime Behavior",
  "ref": "architecture:opaque-runtime-behavior",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-manifest-based-design",
          "json": "https://banes-lab.com/json/records/architecture/manifest-based-design",
          "label": "Manifest-Based Design",
          "markdown": "https://banes-lab.com/records/architecture/manifest-based-design.md",
          "ref": "architecture:manifest-based-design"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-binding-decision-log",
          "json": "https://banes-lab.com/json/records/lexicon/binding-decision-log",
          "label": "Binding Decision Log",
          "markdown": "https://banes-lab.com/records/lexicon/binding-decision-log.md",
          "ref": "lexicon:binding-decision-log"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-runtime-topology-report",
          "json": "https://banes-lab.com/json/records/lexicon/runtime-topology-report",
          "label": "Runtime Topology Report",
          "markdown": "https://banes-lab.com/records/lexicon/runtime-topology-report.md",
          "ref": "lexicon:runtime-topology-report"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-declare-capability",
          "json": "https://banes-lab.com/json/records/lexicon/declare-capability",
          "label": "Declare Capability",
          "markdown": "https://banes-lab.com/records/lexicon/declare-capability.md",
          "ref": "lexicon:declare-capability"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-discovery-validation",
          "json": "https://banes-lab.com/json/records/lexicon/discovery-validation",
          "label": "Discovery Validation",
          "markdown": "https://banes-lab.com/records/lexicon/discovery-validation.md",
          "ref": "lexicon:discovery-validation"
        }
      ],
      "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-metaprogramming-modeling",
          "json": "https://banes-lab.com/json/records/force/metaprogramming-modeling",
          "label": "Metaprogramming modeling",
          "markdown": "https://banes-lab.com/records/force/metaprogramming-modeling.md",
          "ref": "force:metaprogramming-modeling"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#force-runtime-extensibility",
          "json": "https://banes-lab.com/json/records/force/runtime-extensibility",
          "label": "Runtime extensibility",
          "markdown": "https://banes-lab.com/records/force/runtime-extensibility.md",
          "ref": "force:runtime-extensibility"
        }
      ],
      "relation": "force"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-introspection",
          "json": "https://banes-lab.com/json/records/architecture/introspection",
          "label": "Introspection",
          "markdown": "https://banes-lab.com/records/architecture/introspection.md",
          "ref": "architecture:introspection"
        }
      ],
      "relation": "negated-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/software-architecture/decay#seven-controls-seven-classes",
          "json": "https://banes-lab.com/json/software-architecture/decay/seven-controls-seven-classes",
          "label": "Seven controls, seven classes",
          "markdown": "https://banes-lab.com/software-architecture/decay/seven-controls-seven-classes.md",
          "ref": "chapter:/software-architecture/decay#seven-controls-seven-classes"
        },
        {
          "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-metaprogramming-language-oriented-architecture",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-metaprogramming-language-oriented-architecture",
          "label": "Metaprogramming / Language-Oriented Architecture",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-metaprogramming-language-oriented-architecture.md",
          "ref": "chapter:/ontology#architecture-category-metaprogramming-language-oriented-architecture"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-metadata-self-description-declarative-systems",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-metadata-self-description-declarative-systems",
          "label": "Metadata / Self-Description / Declarative Systems",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-metadata-self-description-declarative-systems.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-metadata-self-description-declarative-systems"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-runtime-discovery-dynamic-binding",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding",
          "label": "Runtime Discovery / Dynamic Binding",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-runtime-discovery-dynamic-binding"
        },
        {
          "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 runtime behavior emerges from hidden reflection, registration or binding that nothing reports, so the runtime's structure and state cannot be inspected.",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/ontology#architecture-unowned-risk",
      "json": "https://banes-lab.com/json/records/architecture/unowned-risk",
      "label": "Unowned Risk",
      "markdown": "https://banes-lab.com/records/architecture/unowned-risk.md",
      "ref": "architecture:unowned-risk"
    },
    "previous": {
      "href": "https://banes-lab.com/ontology#architecture-manual-only-governance",
      "json": "https://banes-lab.com/json/records/architecture/manual-only-governance",
      "label": "Manual-Only Governance",
      "markdown": "https://banes-lab.com/records/architecture/manual-only-governance.md",
      "ref": "architecture:manual-only-governance"
    }
  },
  "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": [
    "Opaque Runtime"
  ],
  "exemplar": {
    "after": "function processFoo(foo: Foo) {\n  logger.info(\"foo.process.start\", { fooId: foo.id });\n  const result = doWork(foo);\n  logger.info(\"foo.process.done\", { fooId: foo.id, outcome: result.status });\n}",
    "before": "function processFoo(foo) { doWork(foo); }",
    "lang": "ts",
    "medium": "code"
  },
  "formedBy": "Let runtime behavior emerge from hidden reflection, implicit registration, undocumented configuration, side effects, or untraced dynamic binding.",
  "scope": [
    "runtime_extensibility",
    "metaprogramming_modeling"
  ],
  "severity": "discouraged"
}
