> This page is for NeMo Relay, version dev.
> For other versions, use one of these documentation indexes:
> - Latest (v0.10.4) (default): https://docs.nvidia.com/nemo/relay/latest/llms.txt
> - dev: https://docs.nvidia.com/nemo/relay/dev/llms.txt
> - v0.10.4: https://docs.nvidia.com/nemo/relay/v0.10.4/llms.txt
> - v0.9.4: https://docs.nvidia.com/nemo/relay/v0.9.4/llms.txt
> - v0.8.4: https://docs.nvidia.com/nemo/relay/v0.8.4/llms.txt
> - v0.7.3: https://docs.nvidia.com/nemo/relay/v0.7.3/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/relay/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/relay/_mcp/server.

# Struct Observation

> One observation. Its count is a positive input delta, never a cumulative total.

Generated from `cargo doc --no-deps -p nemo-relay -p nemo-relay-adaptive -p nemo-relay-pii-redaction -p nemo-relay-ffi -p nemo-relay-types -p nemo-relay-plugin -p nemo-relay-worker-proto -p nemo-relay-worker`.

<pre />

One observation. Its count is a positive input delta, never a cumulative total.

```rust
use nemo_relay::diagnostics::{Classification, Observation, SuccessCode};
// Constructors require NonZeroU64, so a zero integer is not a valid input.
let observation = Observation::new(
    Classification::success(SuccessCode::SinkInitialized), "initialized", 0,
);
```

## Fields

### `detail: DiagnosticDetailRef<'a>`

Optional producer-approved explanation; bounding does not perform redaction.

### `count: NonZeroU64`

Positive input occurrence delta, never a cumulative report total.

### `severity: DiagnosticSeverity`

Operational evidence severity, independent of deployment health.

### `outcome: DiagnosticOutcome`

Explicit observed operation outcome for summaries and windows.

### `correlation: DiagnosticCorrelation<'a>`

Borrowed caller correlation, never an aggregate key.

### `context: PluginObservationContext`

Plugin execution and phase names, validated before fixed-size core retention.

## Implementations

### `impl<'a> Observation<'a>`

<pre />

#### `new`

<pre />

Author built-in evidence with severity/outcome defaults from its code.

The type guarantees a positive count; recording validates the reservation. Constructing this value does not retain its borrowed detail or source error.

#### `extension`

<pre />

Author evidence using an admitted extension handle and supported cause.

Recording validates ownership, descriptor generation, and class. A stale handle cannot reserve a replacement code or create another counter.

#### `extension_with_class`

<pre />

Author an extension failure with its own admitted immutable cause name. Handles from another code/registration or expired metadata are rejected.

#### `classification_overflow`

<pre />

Explicit summary-only admission when extension vocabulary could not fit. This is not a way to reinterpret an invalid or undeclared code.

#### `with_plugin_context`

<pre />

Attach known plugin execution and lifecycle facts without another series.

#### `with_outcome`

<pre />

Set the observed outcome without changing classification or health policy.

#### `with_severity`

<pre />

Set output severity independently of operation outcome and cause.

#### `with_correlation`

<pre />

Attach safe borrowed correlation to be capped outside aggregate keys.

## Trait Implementations

### `impl<'a> Clone for Observation<'a>`

<pre />

#### `clone`

<pre />

#### `clone_from`

<pre />

### `impl<'a> Debug for Observation<'a>`

<pre />

#### `fmt`

<pre />