{
  "code": null,
  "collection": "architecture",
  "href": "https://banes-lab.com/ontology#architecture-traceability",
  "id": "traceability",
  "kind": "quality-attribute",
  "layer": {
    "href": "https://banes-lab.com/ontology/schema#layer-observability",
    "json": "https://banes-lab.com/json/records/layer/observability",
    "label": "Observability",
    "markdown": "https://banes-lab.com/records/layer/observability.md",
    "ref": "layer:observability"
  },
  "name": "Traceability",
  "ref": "architecture:traceability",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-correlation-id",
          "json": "https://banes-lab.com/json/records/architecture/correlation-id",
          "label": "Correlation ID",
          "markdown": "https://banes-lab.com/records/architecture/correlation-id.md",
          "ref": "architecture:correlation-id"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-logs-traces",
          "json": "https://banes-lab.com/json/records/lexicon/logs-traces",
          "label": "Logs/Traces",
          "markdown": "https://banes-lab.com/records/lexicon/logs-traces.md",
          "ref": "lexicon:logs-traces"
        }
      ],
      "relation": "requires"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-debuggability",
          "json": "https://banes-lab.com/json/records/lexicon/debuggability",
          "label": "Debuggability",
          "markdown": "https://banes-lab.com/records/lexicon/debuggability.md",
          "ref": "lexicon:debuggability"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-auditability",
          "json": "https://banes-lab.com/json/records/architecture/auditability",
          "label": "Auditability",
          "markdown": "https://banes-lab.com/records/architecture/auditability.md",
          "ref": "architecture:auditability"
        }
      ],
      "relation": "reinforces"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-end-to-end-causality",
          "json": "https://banes-lab.com/json/records/lexicon/end-to-end-causality",
          "label": "End-to-End Causality",
          "markdown": "https://banes-lab.com/records/lexicon/end-to-end-causality.md",
          "ref": "lexicon:end-to-end-causality"
        }
      ],
      "relation": "enables"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-anonymous-flow",
          "json": "https://banes-lab.com/json/records/lexicon/anonymous-flow",
          "label": "Anonymous Flow",
          "markdown": "https://banes-lab.com/records/lexicon/anonymous-flow.md",
          "ref": "lexicon:anonymous-flow"
        }
      ],
      "relation": "conflicts-with"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-metadata-propagation-overhead",
          "json": "https://banes-lab.com/json/records/lexicon/metadata-propagation-overhead",
          "label": "Metadata Propagation Overhead",
          "markdown": "https://banes-lab.com/records/lexicon/metadata-propagation-overhead.md",
          "ref": "lexicon:metadata-propagation-overhead"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-dynamic-dispatch",
          "json": "https://banes-lab.com/json/records/architecture/dynamic-dispatch",
          "label": "Dynamic Dispatch",
          "markdown": "https://banes-lab.com/records/architecture/dynamic-dispatch.md",
          "ref": "architecture:dynamic-dispatch"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-choreography",
          "json": "https://banes-lab.com/json/records/architecture/choreography",
          "label": "Choreography",
          "markdown": "https://banes-lab.com/records/architecture/choreography.md",
          "ref": "architecture:choreography"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-polymorphism",
          "json": "https://banes-lab.com/json/records/architecture/polymorphism",
          "label": "Polymorphism",
          "markdown": "https://banes-lab.com/records/architecture/polymorphism.md",
          "ref": "architecture:polymorphism"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-chain-of-responsibility-pattern",
          "json": "https://banes-lab.com/json/records/architecture/chain-of-responsibility-pattern",
          "label": "Chain of Responsibility Pattern",
          "markdown": "https://banes-lab.com/records/architecture/chain-of-responsibility-pattern.md",
          "ref": "architecture:chain-of-responsibility-pattern"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-inversion-of-control",
          "json": "https://banes-lab.com/json/records/architecture/inversion-of-control",
          "label": "Inversion of Control",
          "markdown": "https://banes-lab.com/records/architecture/inversion-of-control.md",
          "ref": "architecture:inversion-of-control"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#tension-dynamic-dispatch-traceability",
          "json": "https://banes-lab.com/json/records/tension/dynamic-dispatch-traceability",
          "label": "Dynamic Dispatch / Traceability",
          "markdown": "https://banes-lab.com/records/tension/dynamic-dispatch-traceability.md",
          "ref": "tension:dynamic-dispatch-traceability"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#tension-choreography-traceability",
          "json": "https://banes-lab.com/json/records/tension/choreography-traceability",
          "label": "Choreography / Traceability",
          "markdown": "https://banes-lab.com/records/tension/choreography-traceability.md",
          "ref": "tension:choreography-traceability"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#tension-polymorphism-traceability",
          "json": "https://banes-lab.com/json/records/tension/polymorphism-traceability",
          "label": "Polymorphism / Traceability",
          "markdown": "https://banes-lab.com/records/tension/polymorphism-traceability.md",
          "ref": "tension:polymorphism-traceability"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#tension-chain-of-responsibility-pattern-traceability",
          "json": "https://banes-lab.com/json/records/tension/chain-of-responsibility-pattern-traceability",
          "label": "Chain of Responsibility Pattern / Traceability",
          "markdown": "https://banes-lab.com/records/tension/chain-of-responsibility-pattern-traceability.md",
          "ref": "tension:chain-of-responsibility-pattern-traceability"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#tension-inversion-of-control-ioc-traceability",
          "json": "https://banes-lab.com/json/records/tension/inversion-of-control-ioc-traceability",
          "label": "Inversion of Control (IoC) / Traceability",
          "markdown": "https://banes-lab.com/records/tension/inversion-of-control-ioc-traceability.md",
          "ref": "tension:inversion-of-control-ioc-traceability"
        }
      ],
      "relation": "tensions-with"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/schema#tension-metadata-propagation-overhead-traceability",
          "json": "https://banes-lab.com/json/records/tension/metadata-propagation-overhead-traceability",
          "label": "Traceability / Metadata Propagation Overhead",
          "markdown": "https://banes-lab.com/records/tension/metadata-propagation-overhead-traceability.md",
          "ref": "tension:metadata-propagation-overhead-traceability"
        }
      ],
      "relation": "tensions"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-uncorrelated-events",
          "json": "https://banes-lab.com/json/records/lexicon/uncorrelated-events",
          "label": "Uncorrelated Events",
          "markdown": "https://banes-lab.com/records/lexicon/uncorrelated-events.md",
          "ref": "lexicon:uncorrelated-events"
        }
      ],
      "relation": "violated-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-correlation-id",
          "json": "https://banes-lab.com/json/records/architecture/correlation-id",
          "label": "Correlation ID",
          "markdown": "https://banes-lab.com/records/architecture/correlation-id.md",
          "ref": "architecture:correlation-id"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-distributed-tracing",
          "json": "https://banes-lab.com/json/records/architecture/distributed-tracing",
          "label": "Distributed Tracing",
          "markdown": "https://banes-lab.com/records/architecture/distributed-tracing.md",
          "ref": "architecture:distributed-tracing"
        }
      ],
      "relation": "refactored-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/schema#vocabulary-severity-mandatory",
          "json": "https://banes-lab.com/json/records/vocabulary/severity-mandatory",
          "label": "mandatory",
          "markdown": "https://banes-lab.com/records/vocabulary/severity-mandatory.md",
          "ref": "vocabulary:severity-mandatory"
        }
      ],
      "relation": "severity"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-category-observability-auditability-traceability",
          "json": "https://banes-lab.com/json/records/architecture-category/observability-auditability-traceability",
          "label": "Observability / Auditability / Traceability",
          "markdown": "https://banes-lab.com/records/architecture-category/observability-auditability-traceability.md",
          "ref": "architecture-category:observability-auditability-traceability"
        }
      ],
      "relation": "category"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/governance#file-governance-codemods-entrypoints-specifier-target-entrypoint-ts",
          "json": "https://banes-lab.com/json/source/governance/codemods/entrypoints/specifier.target.entrypoint.ts",
          "label": "codemods/entrypoints/specifier.target.entrypoint.ts",
          "markdown": "https://banes-lab.com/source/governance/codemods/entrypoints/specifier.target.entrypoint.ts.md",
          "ref": "anatomy:file-governance-codemods-entrypoints-specifier-target-entrypoint-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/governance#file-governance-codemods-validators-reference-validator-ts",
          "json": "https://banes-lab.com/json/source/governance/codemods/validators/reference.validator.ts",
          "label": "codemods/validators/reference.validator.ts",
          "markdown": "https://banes-lab.com/source/governance/codemods/validators/reference.validator.ts.md",
          "ref": "anatomy:file-governance-codemods-validators-reference-validator-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/content#file-content-runtime-entrypoints-template-entrypoint-ts",
          "json": "https://banes-lab.com/json/source/content/runtime/entrypoints/template.entrypoint.ts",
          "label": "runtime/entrypoints/template.entrypoint.ts",
          "markdown": "https://banes-lab.com/source/content/runtime/entrypoints/template.entrypoint.ts.md",
          "ref": "anatomy:file-content-runtime-entrypoints-template-entrypoint-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/docs#file-docs-runtime-entrypoints-invocation-entrypoint-ts",
          "json": "https://banes-lab.com/json/source/docs/runtime/entrypoints/invocation.entrypoint.ts",
          "label": "runtime/entrypoints/invocation.entrypoint.ts",
          "markdown": "https://banes-lab.com/source/docs/runtime/entrypoints/invocation.entrypoint.ts.md",
          "ref": "anatomy:file-docs-runtime-entrypoints-invocation-entrypoint-ts"
        }
      ],
      "relation": "enforced-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-causality",
          "json": "https://banes-lab.com/json/records/architecture/causality",
          "label": "Causality",
          "markdown": "https://banes-lab.com/records/architecture/causality.md",
          "ref": "architecture:causality"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-causal-dependency",
          "json": "https://banes-lab.com/json/records/architecture/causal-dependency",
          "label": "Causal Dependency",
          "markdown": "https://banes-lab.com/records/architecture/causal-dependency.md",
          "ref": "architecture:causal-dependency"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-architecture-decision-records",
          "json": "https://banes-lab.com/json/records/architecture/architecture-decision-records",
          "label": "Architecture Decision Records",
          "markdown": "https://banes-lab.com/records/architecture/architecture-decision-records.md",
          "ref": "architecture:architecture-decision-records"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-logging",
          "json": "https://banes-lab.com/json/records/architecture/logging",
          "label": "Logging",
          "markdown": "https://banes-lab.com/records/architecture/logging.md",
          "ref": "architecture:logging"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-audit-logging",
          "json": "https://banes-lab.com/json/records/architecture/audit-logging",
          "label": "Audit Logging",
          "markdown": "https://banes-lab.com/records/architecture/audit-logging.md",
          "ref": "architecture:audit-logging"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-dashboards",
          "json": "https://banes-lab.com/json/records/architecture/dashboards",
          "label": "Dashboards",
          "markdown": "https://banes-lab.com/records/architecture/dashboards.md",
          "ref": "architecture:dashboards"
        }
      ],
      "relation": "reinforced-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-explainability",
          "json": "https://banes-lab.com/json/records/architecture/explainability",
          "label": "Explainability",
          "markdown": "https://banes-lab.com/records/architecture/explainability.md",
          "ref": "architecture:explainability"
        }
      ],
      "relation": "required-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/disciplined-methodology/verify#documentation-is-code",
          "json": "https://banes-lab.com/json/disciplined-methodology/verify/documentation-is-code",
          "label": "Documentation is code",
          "markdown": "https://banes-lab.com/disciplined-methodology/verify/documentation-is-code.md",
          "ref": "chapter:/disciplined-methodology/verify#documentation-is-code"
        },
        {
          "href": "https://banes-lab.com/software-architecture#a-system-is-a-graph",
          "json": "https://banes-lab.com/json/software-architecture/model/a-system-is-a-graph",
          "label": "A system is a graph",
          "markdown": "https://banes-lab.com/software-architecture/model/a-system-is-a-graph.md",
          "ref": "chapter:/software-architecture#a-system-is-a-graph"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-runtime-discovery-dynamic-binding",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-runtime-discovery-dynamic-binding",
          "label": "Runtime Discovery / Dynamic Binding",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-runtime-discovery-dynamic-binding.md",
          "ref": "chapter:/ontology#architecture-category-runtime-discovery-dynamic-binding"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-causality-ordering-distributed-time",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-causality-ordering-distributed-time",
          "label": "Causality / Ordering / Distributed Time",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-causality-ordering-distributed-time.md",
          "ref": "chapter:/ontology#architecture-category-causality-ordering-distributed-time"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-control-coordination-centralization",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-control-coordination-centralization",
          "label": "Control / Coordination / Centralization",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-control-coordination-centralization.md",
          "ref": "chapter:/ontology#architecture-category-control-coordination-centralization"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-solid-object-oriented-design",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-solid-object-oriented-design",
          "label": "SOLID / Object-Oriented Design",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-solid-object-oriented-design.md",
          "ref": "chapter:/ontology#architecture-category-solid-object-oriented-design"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-architecture-review-evolution-governance-artifacts",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-architecture-review-evolution-governance-artifacts",
          "label": "Architecture Review / Evolution / Governance Artifacts",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-architecture-review-evolution-governance-artifacts.md",
          "ref": "chapter:/ontology#architecture-category-architecture-review-evolution-governance-artifacts"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-model-architecture",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-model-architecture",
          "label": "Model Architecture",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-model-architecture.md",
          "ref": "chapter:/ontology#architecture-category-model-architecture"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-observability-auditability-traceability",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-observability-auditability-traceability",
          "label": "Observability / Auditability / Traceability",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md",
          "ref": "chapter:/ontology#architecture-category-observability-auditability-traceability"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-behavioral-patterns",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-behavioral-patterns",
          "label": "Behavioral Patterns",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-behavioral-patterns.md",
          "ref": "chapter:/ontology#architecture-category-behavioral-patterns"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-plugin-extensibility-ioc",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-plugin-extensibility-ioc",
          "label": "Plugin / Extensibility / IoC",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-plugin-extensibility-ioc.md",
          "ref": "chapter:/ontology#architecture-category-plugin-extensibility-ioc"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-observability-auditability-traceability",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-observability-auditability-traceability",
          "label": "Observability / Auditability / Traceability",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-observability-auditability-traceability.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-observability-auditability-traceability"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-quality-attributes",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-quality-attributes",
          "label": "Quality Attributes",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-quality-attributes.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-quality-attributes"
        },
        {
          "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-resolutions",
          "json": "https://banes-lab.com/json/ontology/schema/the-resolutions",
          "label": "The resolutions",
          "markdown": "https://banes-lab.com/ontology/schema/the-resolutions.md",
          "ref": "chapter:/ontology/schema#the-resolutions"
        }
      ],
      "relation": "linked-from"
    }
  ],
  "summary": "The degree to which a request, workflow or change can be followed end to end through correlated records.",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/ontology#architecture-correlation-id",
      "json": "https://banes-lab.com/json/records/architecture/correlation-id",
      "label": "Correlation ID",
      "markdown": "https://banes-lab.com/records/architecture/correlation-id.md",
      "ref": "architecture:correlation-id"
    },
    "previous": {
      "href": "https://banes-lab.com/ontology#architecture-audit-logging",
      "json": "https://banes-lab.com/json/records/architecture/audit-logging",
      "label": "Audit Logging",
      "markdown": "https://banes-lab.com/records/architecture/audit-logging.md",
      "ref": "architecture:audit-logging"
    }
  },
  "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 trace = traceContext.start({ operation: \"processFoo\", fooId: foo.id });\nawait processFoo(foo, trace);\ntrace.finish();",
    "before": "await processFoo(foo);",
    "lang": "ts",
    "medium": "code"
  },
  "formedBy": null,
  "scope": [
    "request",
    "workflow",
    "change"
  ],
  "severity": "mandatory"
}
