# Observability / Auditability / Traceability

> Every principle in this category is listed as a record.

Page: Ontology · Principles
Canonical: https://banes-lab.com/ontology#architecture-category-observability-auditability-traceability

Listed in [Ontology · Principles](https://banes-lab.com/api/pages/ontology/principles.md), after [Model Architecture](https://banes-lab.com/ontology/principles/architecture-category-model-architecture.md) and before [Behavioral Patterns](https://banes-lab.com/ontology/principles/architecture-category-behavioral-patterns.md).

Every principle in this category is listed as a record. Each record carries its kind, its severity, the scopes it applies at and the layer it lives in, then the edge relations that join it to other records, the records that point back at it, the contracts that answer to it and the tensions it takes part in. The descriptors say how it is violated, detected, measured, repaired and enforced. Where the record carries one, an exemplar shows the shape before and after the principle is applied.

Relations diagram

The relations inside this category.

```mermaid
flowchart LR
n_observability["Observability"]
n_logging["Logging"]
n_monitoring["Monitoring"]
n_alerting["Alerting"]
n_auditability["Auditability"]
n_audit_logging["Audit Logging"]
n_traceability["Traceability"]
n_correlation_id["Correlation ID"]
n_causation_id["Causation ID"]
n_distributed_tracing["Distributed Tracing"]
n_slo_sli["SLO/SLI"]
n_dashboards["Dashboards"]
n_logging --> n_traceability
n_alerting --> n_monitoring
n_auditability --> n_audit_logging
n_auditability --> n_traceability
n_audit_logging --> n_auditability
n_audit_logging --> n_traceability
n_traceability --> n_correlation_id
n_traceability --> n_auditability
n_correlation_id --> n_distributed_tracing
n_distributed_tracing --> n_observability
n_slo_sli --> n_monitoring
n_slo_sli --> n_observability
n_slo_sli --> n_alerting
n_dashboards --> n_monitoring
n_dashboards --> n_observability
n_dashboards --> n_traceability
```

### Observability

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)
- Mandatory for: production systems
- Scope: service, system, runtime
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
The degree to which a system's internal behavior in production can be inferred from the logs, metrics and traces it emits.

Requires
[Logs](https://banes-lab.com/records/lexicon/logs.md), [Metrics](https://banes-lab.com/records/lexicon/metrics.md), [Traces](https://banes-lab.com/records/lexicon/traces.md)

Reinforces
[Resilience](https://banes-lab.com/records/architecture/resilience.md), [Debuggability](https://banes-lab.com/records/lexicon/debuggability.md)

Enables
[Incident Diagnosis](https://banes-lab.com/records/lexicon/incident-diagnosis.md)

In tension with
[Cost/Noise](https://banes-lab.com/records/lexicon/cost-noise.md)

Conflicts with
[Unobservable Failure](https://banes-lab.com/records/architecture/unobservable-failure.md)

Referenced by
[Centralized Logging](https://banes-lab.com/records/architecture/centralized-logging.md), [Information Hiding](https://banes-lab.com/records/architecture/information-hiding.md), [Dead-Letter Queue](https://banes-lab.com/records/architecture/dead-letter-queue.md), [Fail Fast](https://banes-lab.com/records/architecture/fail-fast.md), [Resilience](https://banes-lab.com/records/architecture/resilience.md), [Error Handling](https://banes-lab.com/records/architecture/error-handling.md), [Model Drift Monitoring](https://banes-lab.com/records/architecture/model-drift-monitoring.md), [Distributed Tracing](https://banes-lab.com/records/architecture/distributed-tracing.md), [SLO/SLI](https://banes-lab.com/records/architecture/slo-sli.md), [Dashboards](https://banes-lab.com/records/architecture/dashboards.md), [Self-Healing Architecture](https://banes-lab.com/records/architecture/self-healing-architecture.md), [Canary Deployment](https://banes-lab.com/records/architecture/canary-deployment.md), [Chaos Engineering](https://banes-lab.com/records/architecture/chaos-engineering.md)

Contracts
[Observability](https://banes-lab.com/records/algorithms/observability.md)

Tensions
[Observability / Cost/Noise](https://banes-lab.com/records/tension/cost-noise-observability.md)

Distinct from
[Fault Tolerance](https://banes-lab.com/records/architecture/fault-tolerance.md): Observability is seeing internal behavior, while fault tolerance is operating correctly through component failure.

Distinct from
[Auditability](https://banes-lab.com/records/architecture/auditability.md): Observability infers internal behavior from signals, while auditability ties sensitive actions to their actors afterwards.

Distinct from
[Traceability](https://banes-lab.com/records/architecture/traceability.md): Observability is the whole view from logs, metrics and traces, while traceability is following one request or change end to end.

Distinct from
[Cost/Noise](https://banes-lab.com/records/lexicon/cost-noise.md): Observability is the insight telemetry gives, while cost and noise are what collecting more of it adds.

Distinct from
[Debuggability](https://banes-lab.com/records/lexicon/debuggability.md): Observability is inferring behavior in production, while debuggability is how easily the developer locates a fault.

Distinct from
[Fault Isolation](https://banes-lab.com/records/lexicon/fault-isolation.md): Observability is seeing a failure, while fault isolation is keeping it from spreading.

Violated by
production behavior cannot be inferred

Detected by
missing telemetry around critical paths

Measured by
telemetry coverage, MTTR

Refactored by
Add Logs/Metrics/Traces

Enforced by
observability standards

Before

```typescript
async function processFoo(foo: Foo) {
await fooStore.save(foo);
}
```

After

```typescript
async function processFoo(foo: Foo, telemetry: Telemetry) {
return telemetry.trace("foo.process", { fooId: foo.id }, async span => {
await fooStore.save(foo);
span.event("foo.saved");
telemetry.count("foo.processed", 1);
});
}
```

How it is checked

Checked by
observability standards

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Logs](https://banes-lab.com/records/lexicon/logs.md), [Metrics](https://banes-lab.com/records/lexicon/metrics.md), [Traces](https://banes-lab.com/records/lexicon/traces.md), [Resilience](https://banes-lab.com/records/architecture/resilience.md), [Debuggability](https://banes-lab.com/records/lexicon/debuggability.md), [Incident Diagnosis](https://banes-lab.com/records/lexicon/incident-diagnosis.md)

Shape it refuses
[Unobservable Failure](https://banes-lab.com/records/architecture/unobservable-failure.md), [Unobservable Failure](https://banes-lab.com/records/architecture/unobservable-failure.md)

### Logging

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [mandatory](https://banes-lab.com/records/vocabulary/severity-mandatory.md)
- Scope: application, service
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
A mechanism that records structured events with their context as the code runs.

Requires
[Structured Events](https://banes-lab.com/records/lexicon/structured-events.md), [Context](https://banes-lab.com/records/lexicon/context.md)

Reinforces
[Traceability](https://banes-lab.com/records/architecture/traceability.md), [Debugging](https://banes-lab.com/records/lexicon/debugging.md)

Enables
[Incident Analysis](https://banes-lab.com/records/lexicon/incident-analysis.md)

In tension with
[Noise/Personal Data Leakage](https://banes-lab.com/records/lexicon/noise-personal-data-leakage.md)

Conflicts with
[Silent Failure](https://banes-lab.com/records/lexicon/silent-failure.md), [Log-as-Control-Flow](https://banes-lab.com/records/architecture/log-as-control-flow.md)

Tensions
[Logging / Noise/Personal Data Leakage](https://banes-lab.com/records/tension/logging-noise-personal-data-leakage.md)

Violated by
missing or unstructured critical logs

Detected by
absence of logs on error/business events

Measured by
log coverage, signal/noise ratio

Refactored by
Add Structured Logs, Add Context

Enforced by
logging policy, linting

Before

```typescript
console.log("saved", foo);
```

After

```typescript
logger.info("foo.saved", { fooId: foo.id, version: foo.version });
```

How it is checked

Checked by
logging policy, linting

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Structured Events](https://banes-lab.com/records/lexicon/structured-events.md), [Context](https://banes-lab.com/records/lexicon/context.md), [Traceability](https://banes-lab.com/records/architecture/traceability.md), [Debugging](https://banes-lab.com/records/lexicon/debugging.md), [Incident Analysis](https://banes-lab.com/records/lexicon/incident-analysis.md)

Shape it refuses
[Silent Failure](https://banes-lab.com/records/lexicon/silent-failure.md), [Log-as-Control-Flow](https://banes-lab.com/records/architecture/log-as-control-flow.md)

### Monitoring

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [mandatory](https://banes-lab.com/records/vocabulary/severity-mandatory.md)
- Scope: service, infrastructure
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
A mechanism that collects metrics about resources and service levels over time and compares them with thresholds.

Requires
[Metrics](https://banes-lab.com/records/lexicon/metrics.md), [Thresholds](https://banes-lab.com/records/lexicon/thresholds.md)

Reinforces
[Reliability](https://banes-lab.com/records/lexicon/reliability.md)

Enables
[Failure Detection](https://banes-lab.com/records/lexicon/failure-detection.md)

In tension with
[Alert Noise](https://banes-lab.com/records/lexicon/alert-noise.md)

Conflicts with
[Blind Operation](https://banes-lab.com/records/lexicon/blind-operation.md)

Referenced by
[Model Safety](https://banes-lab.com/records/architecture/model-safety.md), [Alerting](https://banes-lab.com/records/architecture/alerting.md), [SLO/SLI](https://banes-lab.com/records/architecture/slo-sli.md), [Dashboards](https://banes-lab.com/records/architecture/dashboards.md), [Resource Utilization](https://banes-lab.com/records/architecture/resource-utilization.md)

Tensions
[Monitoring / Alert Noise](https://banes-lab.com/records/tension/alert-noise-monitoring.md)

Distinct from
[Alerting](https://banes-lab.com/records/architecture/alerting.md): Monitoring collects and compares metrics over time, while alerting notifies a responder when a condition holds past its threshold.

Distinct from
[Metrics](https://banes-lab.com/records/lexicon/metrics.md): Monitoring is the mechanism that collects and compares, while metrics are the measurements it collects.

Distinct from
[Guardrails](https://banes-lab.com/records/lexicon/guardrails.md): Monitoring observes behavior after the fact, while guardrails bound what a model may output or do as it runs.

Violated by
no metrics for critical resources/SLIs

Detected by
missing dashboards/SLI metrics

Measured by
metric coverage, detection latency

Refactored by
Add Metrics, Define SLIs

Enforced by
production readiness checklist

Before

```typescript
setInterval(() => report(fooQueue.length), 60_000);
```

After

```typescript
metrics.gauge("foo.queue.depth", () => fooQueue.length);
metrics.histogram("foo.processing.duration_ms", fooProcessingDuration);
```

How it is checked

Checked by
production readiness checklist

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Metrics](https://banes-lab.com/records/lexicon/metrics.md), [Thresholds](https://banes-lab.com/records/lexicon/thresholds.md), [Reliability](https://banes-lab.com/records/lexicon/reliability.md), [Failure Detection](https://banes-lab.com/records/lexicon/failure-detection.md)

Shape it refuses
[Blind Operation](https://banes-lab.com/records/lexicon/blind-operation.md)

### Alerting

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [mandatory](https://banes-lab.com/records/vocabulary/severity-mandatory.md)
- Scope: operations, service
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
A mechanism that notifies an on-call responder when a monitored condition holds for longer than its threshold.

Requires
[Monitoring](https://banes-lab.com/records/architecture/monitoring.md), [Thresholds](https://banes-lab.com/records/lexicon/thresholds.md)

Reinforces
[Incident Response](https://banes-lab.com/records/lexicon/incident-response.md)

Enables
[Timely Intervention](https://banes-lab.com/records/lexicon/timely-intervention.md)

In tension with
[Alert Fatigue](https://banes-lab.com/records/lexicon/alert-fatigue.md)

Conflicts with
[Silent Failure](https://banes-lab.com/records/lexicon/silent-failure.md), [Observability Noise](https://banes-lab.com/records/architecture/observability-noise.md)

Referenced by
[SLO/SLI](https://banes-lab.com/records/architecture/slo-sli.md)

Tensions
[Alerting / Alert Fatigue](https://banes-lab.com/records/tension/alert-fatigue-alerting.md)

Violated by
critical failures without alert

Detected by
incident reported by customers before monitoring caught it

Measured by
MTTD, alert precision

Refactored by
Add Alert, Tune Thresholds

Enforced by
on-call policy

Before

```typescript
if (errorRate > 0.05) notify("foo errors");
```

After

```typescript
alerts.define("FooErrorBudgetBurn", {
condition: rate("foo.errors", "5m") > 0.05,
for: "10m",
severity: "critical",
});
```

How it is checked

Checked by
on-call policy

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Monitoring](https://banes-lab.com/records/architecture/monitoring.md), [Thresholds](https://banes-lab.com/records/lexicon/thresholds.md), [Incident Response](https://banes-lab.com/records/lexicon/incident-response.md), [Timely Intervention](https://banes-lab.com/records/lexicon/timely-intervention.md)

Shape it refuses
[Silent Failure](https://banes-lab.com/records/lexicon/silent-failure.md), [Observability Noise](https://banes-lab.com/records/architecture/observability-noise.md)

### Auditability

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)
- Mandatory for: regulated or sensitive systems
- Scope: system, data, security
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
The degree to which each sensitive action can be traced afterwards to its actor, target, time and reason.

Requires
[Audit Logging](https://banes-lab.com/records/architecture/audit-logging.md), [Traceability](https://banes-lab.com/records/architecture/traceability.md)

Reinforces
[Compliance](https://banes-lab.com/records/architecture/compliance.md)

Enables
[Accountability](https://banes-lab.com/records/lexicon/accountability.md)

In tension with
[Storage/Privacy](https://banes-lab.com/records/lexicon/storage-privacy.md)

Conflicts with
[Opaque Mutation](https://banes-lab.com/records/lexicon/opaque-mutation.md)

Referenced by
[Centralized Logging](https://banes-lab.com/records/architecture/centralized-logging.md), [Reproducibility](https://banes-lab.com/records/architecture/reproducibility.md), [Event Sourcing](https://banes-lab.com/records/architecture/event-sourcing.md), [Append-Only Log](https://banes-lab.com/records/architecture/append-only-log.md), [Audit Logging](https://banes-lab.com/records/architecture/audit-logging.md), [Traceability](https://banes-lab.com/records/architecture/traceability.md), [Compliance](https://banes-lab.com/records/architecture/compliance.md), [Continuous Compliance](https://banes-lab.com/records/architecture/continuous-compliance.md)

Contracts
[Governed Autonomous Plan Loop](https://banes-lab.com/records/algorithms/governed-autonomous-plan-loop.md)

Tensions
[Auditability / Storage/Privacy](https://banes-lab.com/records/tension/auditability-storage-privacy.md)

Distinct from
[Traceability](https://banes-lab.com/records/architecture/traceability.md): Auditability ties each sensitive action to its actor, target, time and reason, while traceability follows a request or change end to end.

Distinct from
[Storage/Privacy](https://banes-lab.com/records/lexicon/storage-privacy.md): Auditability is keeping the history, while storage and privacy are the costs of keeping it.

Distinct from
[Reproducibility](https://banes-lab.com/records/architecture/reproducibility.md): Auditability records what happened, while reproducibility reruns it and gets the same output.

Violated by
critical action without audit record

Detected by
missing audit event for sensitive operation

Measured by
audit event coverage

Refactored by
Add Audit Log, Add Actor/Reason Metadata

Enforced by
compliance gates

Before

```typescript
function renameFoo(foo: Foo, name: string) { foo.name = name; }
```

After

```typescript
function renameFoo(foo: Foo, name: string, actor: Actor) {
const previous = foo.name;
foo.rename(name);
audit.append({ action: "FooRenamed", fooId: foo.id, actorId: actor.id, previous, next: name });
}
```

How it is checked

Checked by
compliance gates

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Audit Logging](https://banes-lab.com/records/architecture/audit-logging.md), [Traceability](https://banes-lab.com/records/architecture/traceability.md), [Compliance](https://banes-lab.com/records/architecture/compliance.md), [Accountability](https://banes-lab.com/records/lexicon/accountability.md)

Shape it refuses
[Opaque Mutation](https://banes-lab.com/records/lexicon/opaque-mutation.md)

### Audit Logging

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)
- Mandatory for: sensitive systems
- Scope: security, compliance, data mutation
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
A mechanism that appends an immutable record of each sensitive operation, naming the actor, the action, the target and the time.

Requires
[Actor](https://banes-lab.com/records/lexicon/actor.md), [Action](https://banes-lab.com/records/lexicon/action.md), [Timestamp](https://banes-lab.com/records/lexicon/timestamp.md), [Target](https://banes-lab.com/records/lexicon/target.md)

Reinforces
[Auditability](https://banes-lab.com/records/architecture/auditability.md), [Traceability](https://banes-lab.com/records/architecture/traceability.md)

Enables
[Forensics](https://banes-lab.com/records/lexicon/forensics.md)

In tension with
[Privacy](https://banes-lab.com/records/lexicon/privacy.md)

Conflicts with
[Untracked Mutation](https://banes-lab.com/records/lexicon/untracked-mutation.md)

Referenced by
[Auditability](https://banes-lab.com/records/architecture/auditability.md)

Tensions
[Audit Logging / Privacy](https://banes-lab.com/records/tension/audit-logging-privacy.md)

Violated by
sensitive operation without immutable record

Detected by
missing audit instrumentation

Measured by
audit coverage

Refactored by
Add Audit Event, Protect Audit Store

Enforced by
[policy-as-code](https://banes-lab.com/records/architecture/policy-as-code.md), [tests](https://banes-lab.com/records/lexicon/tests.md)

Before

```typescript
logger.info(`user ${user.id} changed foo ${foo.id}`);
```

After

```typescript
auditLog.append({
eventId: eventId(),
action: "FOO_UPDATE",
actorId: user.id,
resourceId: foo.id,
occurredAt: clock.now().toISOString(),
});
```

How it is checked

Checked by
policy-as-code, tests

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Actor](https://banes-lab.com/records/lexicon/actor.md), [Action](https://banes-lab.com/records/lexicon/action.md), [Timestamp](https://banes-lab.com/records/lexicon/timestamp.md), [Target](https://banes-lab.com/records/lexicon/target.md), [Auditability](https://banes-lab.com/records/architecture/auditability.md), [Traceability](https://banes-lab.com/records/architecture/traceability.md), [Forensics](https://banes-lab.com/records/lexicon/forensics.md)

Shape it refuses
[Untracked Mutation](https://banes-lab.com/records/lexicon/untracked-mutation.md)

### Traceability

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [mandatory](https://banes-lab.com/records/vocabulary/severity-mandatory.md)
- Scope: request, workflow, change
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
The degree to which a request, workflow or change can be followed end to end through correlated records.

Requires
[Correlation ID](https://banes-lab.com/records/architecture/correlation-id.md), [Logs/Traces](https://banes-lab.com/records/lexicon/logs-traces.md)

Reinforces
[Debuggability](https://banes-lab.com/records/lexicon/debuggability.md), [Auditability](https://banes-lab.com/records/architecture/auditability.md)

Enables
[End-to-End Causality](https://banes-lab.com/records/lexicon/end-to-end-causality.md)

In tension with
[Metadata Propagation Overhead](https://banes-lab.com/records/lexicon/metadata-propagation-overhead.md)

Conflicts with
[Anonymous Flow](https://banes-lab.com/records/lexicon/anonymous-flow.md)

Referenced by
[Dynamic Dispatch](https://banes-lab.com/records/architecture/dynamic-dispatch.md), [Causality](https://banes-lab.com/records/architecture/causality.md), [Causal Dependency](https://banes-lab.com/records/architecture/causal-dependency.md), [Choreography](https://banes-lab.com/records/architecture/choreography.md), [Polymorphism](https://banes-lab.com/records/architecture/polymorphism.md), [Architecture Decision Records (ADR)](https://banes-lab.com/records/architecture/architecture-decision-records.md), [Explainability](https://banes-lab.com/records/architecture/explainability.md), [Logging](https://banes-lab.com/records/architecture/logging.md), [Auditability](https://banes-lab.com/records/architecture/auditability.md), [Audit Logging](https://banes-lab.com/records/architecture/audit-logging.md), [Dashboards](https://banes-lab.com/records/architecture/dashboards.md), [Chain of Responsibility Pattern](https://banes-lab.com/records/architecture/chain-of-responsibility-pattern.md), [Inversion of Control (IoC)](https://banes-lab.com/records/architecture/inversion-of-control.md)

Tensions
[Traceability / Metadata Propagation Overhead](https://banes-lab.com/records/tension/metadata-propagation-overhead-traceability.md)

Distinct from
[Metadata Propagation Overhead](https://banes-lab.com/records/lexicon/metadata-propagation-overhead.md): Traceability is following a request end to end, while propagation overhead is the size and processing that carrying its metadata costs.

Violated by
uncorrelated logs/events

Detected by
missing correlation propagation

Measured by
trace completeness

Refactored by
Add Correlation ID, Propagate Context

Enforced by
middleware, tracing policy

Before

```typescript
await processFoo(foo);
```

After

```typescript
const trace = traceContext.start({ operation: "processFoo", fooId: foo.id });
await processFoo(foo, trace);
trace.finish();
```

How it is checked

Checked by
middleware, tracing policy

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Correlation ID](https://banes-lab.com/records/architecture/correlation-id.md), [Logs/Traces](https://banes-lab.com/records/lexicon/logs-traces.md), [Debuggability](https://banes-lab.com/records/lexicon/debuggability.md), [Auditability](https://banes-lab.com/records/architecture/auditability.md), [End-to-End Causality](https://banes-lab.com/records/lexicon/end-to-end-causality.md)

Shape it refuses
[Anonymous Flow](https://banes-lab.com/records/lexicon/anonymous-flow.md)

### Correlation ID

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)
- Mandatory for: distributed systems
- Scope: request, message, workflow
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
A mechanism that attaches one identifier to a request and carries it through every call, message and log line the request causes.

Requires
[Context Propagation](https://banes-lab.com/records/lexicon/context-propagation.md)

Reinforces
[Distributed Tracing](https://banes-lab.com/records/architecture/distributed-tracing.md)

Enables
[Request-Level Traceability](https://banes-lab.com/records/lexicon/request-level-traceability.md)

In tension with
[Header/Metadata Management](https://banes-lab.com/records/lexicon/header-metadata-management.md)

Conflicts with
[Uncorrelated Events](https://banes-lab.com/records/lexicon/uncorrelated-events.md)

Referenced by
[Traceability](https://banes-lab.com/records/architecture/traceability.md)

Tensions
[Correlation ID / Header/Metadata Management](https://banes-lab.com/records/tension/correlation-id-header-metadata-management.md)

Distinct from
[Distributed Tracing](https://banes-lab.com/records/architecture/distributed-tracing.md): A correlation id is one identifier carried through a request, while distributed tracing records each call as a timed span of one trace.

Violated by
logs/events without correlation identifier

Detected by
missing correlation field

Measured by
correlation coverage

Refactored by
Add Middleware, Propagate Header

Enforced by
logging/tracing standards

Before

```typescript
await http.post("/bar", { fooId: foo.id });
```

After

```typescript
const correlationId = request.headers.get("X-Correlation-ID") ?? idSource.next();
await http.post("/bar", { fooId: foo.id }, { headers: { "X-Correlation-ID": correlationId } });
```

How it is checked

Checked by
logging/tracing standards

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Context Propagation](https://banes-lab.com/records/lexicon/context-propagation.md), [Distributed Tracing](https://banes-lab.com/records/architecture/distributed-tracing.md), [Request-Level Traceability](https://banes-lab.com/records/lexicon/request-level-traceability.md)

Shape it refuses
[Uncorrelated Events](https://banes-lab.com/records/lexicon/uncorrelated-events.md)

### Causation ID

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [recommended](https://banes-lab.com/records/vocabulary/severity-recommended.md)
- Scope: event, message, workflow
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
A mechanism that stamps each event with the identifier of the event that caused it.

Requires
[Event Metadata](https://banes-lab.com/records/lexicon/event-metadata.md)

Reinforces
[Causality](https://banes-lab.com/records/architecture/causality.md), [Audit Trail](https://banes-lab.com/records/lexicon/audit-trail.md)

Enables
[Cause-Effect Reconstruction](https://banes-lab.com/records/lexicon/cause-effect-reconstruction.md)

In tension with
[Metadata Verbosity](https://banes-lab.com/records/lexicon/metadata-verbosity.md)

Conflicts with
[Unlinked Events](https://banes-lab.com/records/lexicon/unlinked-events.md)

Tensions
[Causation ID / Metadata Verbosity](https://banes-lab.com/records/tension/causation-id-metadata-verbosity.md)

Violated by
event chains without parent cause

Detected by
missing causation field in event metadata

Measured by
causation coverage

Refactored by
Add Causation Metadata

Enforced by
event schema rules

Before

```typescript
events.publish({ id: eventId(), type: "BarCreated", fooId: event.fooId });
```

After

```typescript
events.publish({
id: eventId(),
type: "BarCreated",
fooId: event.fooId,
correlationId: event.correlationId,
causationId: event.id,
});
```

How it is checked

Checked by
event schema rules

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Event Metadata](https://banes-lab.com/records/lexicon/event-metadata.md), [Causality](https://banes-lab.com/records/architecture/causality.md), [Audit Trail](https://banes-lab.com/records/lexicon/audit-trail.md), [Cause-Effect Reconstruction](https://banes-lab.com/records/lexicon/cause-effect-reconstruction.md)

Shape it refuses
[Unlinked Events](https://banes-lab.com/records/lexicon/unlinked-events.md)

### Distributed Tracing

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)
- Mandatory for: distributed systems
- Scope: distributed system, service mesh
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
A mechanism that propagates a trace context across service calls and records each call as a timed span of one trace.

Requires
[Trace Context Propagation](https://banes-lab.com/records/lexicon/trace-context-propagation.md)

Reinforces
[Observability](https://banes-lab.com/records/architecture/observability.md), [Causality](https://banes-lab.com/records/architecture/causality.md)

Enables
[Latency/Failure Root Cause Analysis](https://banes-lab.com/records/lexicon/latency-failure-root-cause-analysis.md)

In tension with
[Overhead/Sampling](https://banes-lab.com/records/lexicon/overhead-sampling.md)

Conflicts with
[Opaque Distributed Calls](https://banes-lab.com/records/lexicon/opaque-distributed-calls.md)

Referenced by
[Correlation ID](https://banes-lab.com/records/architecture/correlation-id.md)

Tensions
[Distributed Tracing / Overhead/Sampling](https://banes-lab.com/records/tension/distributed-tracing-overhead-sampling.md)

Violated by
service calls without trace propagation

Detected by
broken traces, missing spans

Measured by
trace completeness, span coverage

Refactored by
Add Tracing Middleware, Propagate Context

Enforced by
observability policy

Before

```typescript
await fooService.call();
await barService.call();
```

After

```typescript
await tracer.span("foo.request", async span => {
await fooService.call({ traceparent: span.traceparent });
await barService.call({ traceparent: span.traceparent });
});
```

How it is checked

Checked by
observability policy

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Trace Context Propagation](https://banes-lab.com/records/lexicon/trace-context-propagation.md), [Observability](https://banes-lab.com/records/architecture/observability.md), [Causality](https://banes-lab.com/records/architecture/causality.md), [Latency/Failure Root Cause Analysis](https://banes-lab.com/records/lexicon/latency-failure-root-cause-analysis.md)

Shape it refuses
[Opaque Distributed Calls](https://banes-lab.com/records/lexicon/opaque-distributed-calls.md)

### SLO/SLI

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)
- Mandatory for: production systems
- Scope: service, reliability, operations
- Aliases: Service Level Objective, Service Level Indicator, Objective Reliability Targets
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
A rule or precondition that a service's reliability is stated as a measured indicator with an objective and an error budget over a window.

Requires
[Monitoring](https://banes-lab.com/records/architecture/monitoring.md)

Reinforces
[Observability](https://banes-lab.com/records/architecture/observability.md), [Alerting](https://banes-lab.com/records/architecture/alerting.md)

Enables
[Error-Budget Decisions](https://banes-lab.com/records/lexicon/error-budget-decisions.md)

In tension with
[Feature Velocity](https://banes-lab.com/records/lexicon/feature-velocity.md)

Conflicts with
[Vague Reliability Goals](https://banes-lab.com/records/lexicon/vague-reliability-goals.md)

Tensions
[SLO/SLI / Feature Velocity](https://banes-lab.com/records/tension/feature-velocity-slo-sli.md)

Violated by
reliability judged by subjective feel

Detected by
no measured indicator behind reliability claims

Measured by
SLO attainment vs error budget

Refactored by
Define SLIs and SLOs

Enforced by
reliability review

Before

```typescript
alert.when(latency > 1000);
```

After

```typescript
const fooLatencySli = ratio("foo.requests.fast", "foo.requests.total");
defineSLO("foo-latency", { sli: fooLatencySli, objective: 0.99, window: "30d", errorBudget: 0.01 });
```

How it is checked

Checked by
reliability review

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Monitoring](https://banes-lab.com/records/architecture/monitoring.md), [Observability](https://banes-lab.com/records/architecture/observability.md), [Alerting](https://banes-lab.com/records/architecture/alerting.md), [Error-Budget Decisions](https://banes-lab.com/records/lexicon/error-budget-decisions.md)

Shape it refuses
[Vague Reliability Goals](https://banes-lab.com/records/lexicon/vague-reliability-goals.md)

### Dashboards

- Kind: [artifact](https://banes-lab.com/records/kind/artifact.md)
- Category: [Observability / Auditability / Traceability](https://banes-lab.com/ontology/principles/architecture-category-observability-auditability-traceability.md)
- Severity: [recommended](https://banes-lab.com/records/vocabulary/severity-recommended.md)
- Scope: service, operations, visibility
- Layer: [Observability](https://banes-lab.com/records/layer/observability.md)

Details

Definition
Descriptive data about a system's key signals, arranged as panels that show health and trends at a glance.

Requires
[Monitoring](https://banes-lab.com/records/architecture/monitoring.md)

Reinforces
[Observability](https://banes-lab.com/records/architecture/observability.md), [Traceability](https://banes-lab.com/records/architecture/traceability.md)

Enables
[At-a-Glance System Health](https://banes-lab.com/records/lexicon/at-a-glance-system-health.md), [Trend Visibility](https://banes-lab.com/records/lexicon/trend-visibility.md)

In tension with
[Dashboard Sprawl](https://banes-lab.com/records/lexicon/dashboard-sprawl.md)

Conflicts with
[Log-Grep-Only Diagnosis](https://banes-lab.com/records/lexicon/log-grep-only-diagnosis.md)

Tensions
[Dashboards / Dashboard Sprawl](https://banes-lab.com/records/tension/dashboard-sprawl-dashboards.md)

Violated by
the developer grepping raw logs to judge health

Detected by
no curated view of key signals

Measured by
time-to-diagnose during incidents

Refactored by
Build Signal Dashboards

Enforced by
operations review

Before

```typescript
grepLogsForFooErrors();
```

After

```typescript
const fooDashboard = dashboard("foo-health", {
panels: [rate("foo.errors"), histogram("foo.latency"), gauge("foo.queue.depth")],
});
```

How it is checked

Checked by
operations review

Population
Every critical path, sensitive operation, request and message the telemetry is meant to cover

Freshness
A verdict stands until a code path, a telemetry field or an alert threshold changes

Refusal
The logging, tracing or audit policy check fails a change that leaves a covered path without its signal

Observation
Emitted logs, metrics, spans and audit records, compared with the paths that should emit them

Evidence
None, because the catalog states this check as a class, so a watched run belongs to each system that adopts it

Authoritative side
The declared telemetry coverage, which the emitted signals are compared against

Depends on
[Monitoring](https://banes-lab.com/records/architecture/monitoring.md), [Observability](https://banes-lab.com/records/architecture/observability.md), [Traceability](https://banes-lab.com/records/architecture/traceability.md), [At-a-Glance System Health](https://banes-lab.com/records/lexicon/at-a-glance-system-health.md), [Trend Visibility](https://banes-lab.com/records/lexicon/trend-visibility.md)

Shape it refuses
[Log-Grep-Only Diagnosis](https://banes-lab.com/records/lexicon/log-grep-only-diagnosis.md)

## Links to

- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)
- [Observability](https://banes-lab.com/records/layer/observability.md)
- [Logs](https://banes-lab.com/records/lexicon/logs.md)
- [Metrics](https://banes-lab.com/records/lexicon/metrics.md)
- [Traces](https://banes-lab.com/records/lexicon/traces.md)
- [Resilience](https://banes-lab.com/records/architecture/resilience.md)
- [Debuggability](https://banes-lab.com/records/lexicon/debuggability.md)
- [Incident Diagnosis](https://banes-lab.com/records/lexicon/incident-diagnosis.md)
- [Cost/Noise](https://banes-lab.com/records/lexicon/cost-noise.md)
- [Unobservable Failure](https://banes-lab.com/records/architecture/unobservable-failure.md)
- [Centralized Logging](https://banes-lab.com/records/architecture/centralized-logging.md)
- [Information Hiding](https://banes-lab.com/records/architecture/information-hiding.md)
- [Dead-Letter Queue](https://banes-lab.com/records/architecture/dead-letter-queue.md)
- [Fail Fast](https://banes-lab.com/records/architecture/fail-fast.md)
- [Error Handling](https://banes-lab.com/records/architecture/error-handling.md)
- [Model Drift Monitoring](https://banes-lab.com/records/architecture/model-drift-monitoring.md)
- [Distributed Tracing](https://banes-lab.com/records/architecture/distributed-tracing.md)
- [SLO/SLI](https://banes-lab.com/records/architecture/slo-sli.md)
- [Dashboards](https://banes-lab.com/records/architecture/dashboards.md)
- [Self-Healing Architecture](https://banes-lab.com/records/architecture/self-healing-architecture.md)
- [Canary Deployment](https://banes-lab.com/records/architecture/canary-deployment.md)
- [Chaos Engineering](https://banes-lab.com/records/architecture/chaos-engineering.md)
- [Observability](https://banes-lab.com/records/algorithms/observability.md)
- [Observability / Cost/Noise](https://banes-lab.com/records/tension/cost-noise-observability.md)
- [Fault Tolerance](https://banes-lab.com/records/architecture/fault-tolerance.md)
- [Auditability](https://banes-lab.com/records/architecture/auditability.md)
- [Traceability](https://banes-lab.com/records/architecture/traceability.md)
- [Fault Isolation](https://banes-lab.com/records/lexicon/fault-isolation.md)
- [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- [mandatory](https://banes-lab.com/records/vocabulary/severity-mandatory.md)
- [Structured Events](https://banes-lab.com/records/lexicon/structured-events.md)
- [Context](https://banes-lab.com/records/lexicon/context.md)
- [Debugging](https://banes-lab.com/records/lexicon/debugging.md)
- [Incident Analysis](https://banes-lab.com/records/lexicon/incident-analysis.md)
- [Noise/Personal Data Leakage](https://banes-lab.com/records/lexicon/noise-personal-data-leakage.md)
- [Silent Failure](https://banes-lab.com/records/lexicon/silent-failure.md)
- [Log-as-Control-Flow](https://banes-lab.com/records/architecture/log-as-control-flow.md)
- [Logging / Noise/Personal Data Leakage](https://banes-lab.com/records/tension/logging-noise-personal-data-leakage.md)
- [Thresholds](https://banes-lab.com/records/lexicon/thresholds.md)
- [Reliability](https://banes-lab.com/records/lexicon/reliability.md)
- [Failure Detection](https://banes-lab.com/records/lexicon/failure-detection.md)
- [Alert Noise](https://banes-lab.com/records/lexicon/alert-noise.md)
- [Blind Operation](https://banes-lab.com/records/lexicon/blind-operation.md)
- [Model Safety](https://banes-lab.com/records/architecture/model-safety.md)
- [Alerting](https://banes-lab.com/records/architecture/alerting.md)
- [Resource Utilization](https://banes-lab.com/records/architecture/resource-utilization.md)
- [Monitoring / Alert Noise](https://banes-lab.com/records/tension/alert-noise-monitoring.md)
- [Guardrails](https://banes-lab.com/records/lexicon/guardrails.md)
- [Monitoring](https://banes-lab.com/records/architecture/monitoring.md)
- [Incident Response](https://banes-lab.com/records/lexicon/incident-response.md)
- [Timely Intervention](https://banes-lab.com/records/lexicon/timely-intervention.md)
- [Alert Fatigue](https://banes-lab.com/records/lexicon/alert-fatigue.md)
- [Observability Noise](https://banes-lab.com/records/architecture/observability-noise.md)
- [Alerting / Alert Fatigue](https://banes-lab.com/records/tension/alert-fatigue-alerting.md)
- [Audit Logging](https://banes-lab.com/records/architecture/audit-logging.md)
- [Compliance](https://banes-lab.com/records/architecture/compliance.md)
- [Accountability](https://banes-lab.com/records/lexicon/accountability.md)
- [Storage/Privacy](https://banes-lab.com/records/lexicon/storage-privacy.md)
- [Opaque Mutation](https://banes-lab.com/records/lexicon/opaque-mutation.md)
- [Reproducibility](https://banes-lab.com/records/architecture/reproducibility.md)
- [Event Sourcing](https://banes-lab.com/records/architecture/event-sourcing.md)
- [Append-Only Log](https://banes-lab.com/records/architecture/append-only-log.md)
- [Continuous Compliance](https://banes-lab.com/records/architecture/continuous-compliance.md)
- [Governed Autonomous Plan Loop](https://banes-lab.com/records/algorithms/governed-autonomous-plan-loop.md)
- [Auditability / Storage/Privacy](https://banes-lab.com/records/tension/auditability-storage-privacy.md)
- [Actor](https://banes-lab.com/records/lexicon/actor.md)
- [Action](https://banes-lab.com/records/lexicon/action.md)
- [Timestamp](https://banes-lab.com/records/lexicon/timestamp.md)
- [Target](https://banes-lab.com/records/lexicon/target.md)
- [Forensics](https://banes-lab.com/records/lexicon/forensics.md)
- [Privacy](https://banes-lab.com/records/lexicon/privacy.md)
- [Untracked Mutation](https://banes-lab.com/records/lexicon/untracked-mutation.md)
- [Audit Logging / Privacy](https://banes-lab.com/records/tension/audit-logging-privacy.md)
- [Policy as Code](https://banes-lab.com/records/architecture/policy-as-code.md)
- [Tests](https://banes-lab.com/records/lexicon/tests.md)
- [Correlation ID](https://banes-lab.com/records/architecture/correlation-id.md)
- [Logs/Traces](https://banes-lab.com/records/lexicon/logs-traces.md)
- [End-to-End Causality](https://banes-lab.com/records/lexicon/end-to-end-causality.md)
- [Metadata Propagation Overhead](https://banes-lab.com/records/lexicon/metadata-propagation-overhead.md)
- [Anonymous Flow](https://banes-lab.com/records/lexicon/anonymous-flow.md)
- [Dynamic Dispatch](https://banes-lab.com/records/architecture/dynamic-dispatch.md)
- [Causality](https://banes-lab.com/records/architecture/causality.md)
- [Causal Dependency](https://banes-lab.com/records/architecture/causal-dependency.md)
- [Choreography](https://banes-lab.com/records/architecture/choreography.md)
- [Polymorphism](https://banes-lab.com/records/architecture/polymorphism.md)
- [Architecture Decision Records](https://banes-lab.com/records/architecture/architecture-decision-records.md)
- [Explainability](https://banes-lab.com/records/architecture/explainability.md)
- [Logging](https://banes-lab.com/records/architecture/logging.md)
- [Chain of Responsibility Pattern](https://banes-lab.com/records/architecture/chain-of-responsibility-pattern.md)
- [Inversion of Control](https://banes-lab.com/records/architecture/inversion-of-control.md)
- [Traceability / Metadata Propagation Overhead](https://banes-lab.com/records/tension/metadata-propagation-overhead-traceability.md)
- [Context Propagation](https://banes-lab.com/records/lexicon/context-propagation.md)
- [Request-Level Traceability](https://banes-lab.com/records/lexicon/request-level-traceability.md)
- [Header/Metadata Management](https://banes-lab.com/records/lexicon/header-metadata-management.md)
- [Uncorrelated Events](https://banes-lab.com/records/lexicon/uncorrelated-events.md)
- [Correlation ID / Header/Metadata Management](https://banes-lab.com/records/tension/correlation-id-header-metadata-management.md)
- [recommended](https://banes-lab.com/records/vocabulary/severity-recommended.md)
- [Event Metadata](https://banes-lab.com/records/lexicon/event-metadata.md)
- [Audit Trail](https://banes-lab.com/records/lexicon/audit-trail.md)
- [Cause-Effect Reconstruction](https://banes-lab.com/records/lexicon/cause-effect-reconstruction.md)
- [Metadata Verbosity](https://banes-lab.com/records/lexicon/metadata-verbosity.md)
- [Unlinked Events](https://banes-lab.com/records/lexicon/unlinked-events.md)
- [Causation ID / Metadata Verbosity](https://banes-lab.com/records/tension/causation-id-metadata-verbosity.md)
- [Trace Context Propagation](https://banes-lab.com/records/lexicon/trace-context-propagation.md)
- [Observability](https://banes-lab.com/records/architecture/observability.md)
- [Latency/Failure Root Cause Analysis](https://banes-lab.com/records/lexicon/latency-failure-root-cause-analysis.md)
- [Overhead/Sampling](https://banes-lab.com/records/lexicon/overhead-sampling.md)
- [Opaque Distributed Calls](https://banes-lab.com/records/lexicon/opaque-distributed-calls.md)
- [Distributed Tracing / Overhead/Sampling](https://banes-lab.com/records/tension/distributed-tracing-overhead-sampling.md)
- [constraint](https://banes-lab.com/records/kind/constraint.md)
- [Error-Budget Decisions](https://banes-lab.com/records/lexicon/error-budget-decisions.md)
- [Feature Velocity](https://banes-lab.com/records/lexicon/feature-velocity.md)
- [Vague Reliability Goals](https://banes-lab.com/records/lexicon/vague-reliability-goals.md)
- [SLO/SLI / Feature Velocity](https://banes-lab.com/records/tension/feature-velocity-slo-sli.md)
- [artifact](https://banes-lab.com/records/kind/artifact.md)
- [At-a-Glance System Health](https://banes-lab.com/records/lexicon/at-a-glance-system-health.md)
- [Trend Visibility](https://banes-lab.com/records/lexicon/trend-visibility.md)
- [Dashboard Sprawl](https://banes-lab.com/records/lexicon/dashboard-sprawl.md)
- [Log-Grep-Only Diagnosis](https://banes-lab.com/records/lexicon/log-grep-only-diagnosis.md)
- [Dashboards / Dashboard Sprawl](https://banes-lab.com/records/tension/dashboard-sprawl-dashboards.md)

## Linked from

- [The layer topology](https://banes-lab.com/ontology/schema/the-layer-topology.md)
- [The membership](https://banes-lab.com/ontology/schema/the-membership.md)
