> 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 Plugin Observation Context

> Shared plugin-operation facts for producers, projections, and decoded evidence.

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 />

Shared plugin-operation facts for producers, projections, and decoded evidence.

Known producer values borrow canonical static names; decoded values own their strings, including future names. Core validates and encodes recording input into private fixed-size storage. Missing values remain distinct from names unrecognized by a reader, and context never establishes counter dimensions. Execution and phase have distinct wrappers, so mixing their typed values is rejected before recording:

```rust
use nemo_relay_types::diagnostics::{PluginObservationContext, PluginPhase};
let context = PluginObservationContext {
    execution: Some(PluginPhase::Activation.into()),
    phase: None,
};
```

Phase-one activation recording supplies only `phase = "activation"` and leaves execution unset. Other producer integrations remain deferred.

## Fields

### `execution: Option<PluginExecutionName>`

Observed execution name, when known; never inferred from a code.

### `phase: Option<PluginPhaseName>`

Observed lifecycle phase or policy-gate context, when known.

## Trait Implementations

### `impl Clone for PluginObservationContext`

<pre />

#### `clone`

<pre />

#### `clone_from`

<pre />

### `impl Debug for PluginObservationContext`

<pre />

#### `fmt`

<pre />

### `impl Default for PluginObservationContext`

<pre />

#### `default`

<pre />

### `impl<'de> Deserialize<'de> for PluginObservationContext`

<pre />

#### `deserialize`

<pre />

### `impl Hash for PluginObservationContext`

<pre />

#### `hash`

<pre />

#### `hash_slice`

<pre />

### `impl PartialEq for PluginObservationContext`

<pre />

#### `eq`

<pre />

#### `ne`

<pre />

### `impl Serialize for PluginObservationContext`

<pre />

#### `serialize`

<pre />

### `impl Eq for PluginObservationContext`

<pre />

### `impl StructuralPartialEq for PluginObservationContext`

<pre />