---
url: >-
  https://adk.nht.io/api/@nhtio/adk/batteries/validation/types/interfaces/RequiredMetadataRule.md
description: Requires provider-specific metadata on selected primitives.
---

# Interface: RequiredMetadataRule

Defined in: [src/batteries/validation/types.ts:46](https://github.com/NHTIO/ADK/blob/v1.20260824.1/src/src/batteries/validation/types.ts#L46)

Requires provider-specific metadata on selected primitives.

## Properties

| Property                                                                         | Type                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                   | Defined in                                                                                                                        |
| -------------------------------------------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|  `applyTo`                                          | `"every"` | `"first-in-group"`                                     | Whether metadata is required only on the group leader or on every matching primitive.                                                                                                                                                                                                                                                                                                                                                         | [src/batteries/validation/types.ts:54](https://github.com/NHTIO/ADK/blob/v1.20260824.1/src/src/batteries/validation/types.ts#L54) |
|  `fallbackPayloadValue?`               | `unknown`                                                           | Vendor-documented sentinel used when the genuine metadata is unavailable (for example, Gemini's `skip_thought_signature_validator` for translated or model-switched history). Consumed only by mutate-mode repair, and only with [OrderingGuardOptions.allowMetadataFallbackRepair](OrderingGuardOptions.md#property-allowmetadatafallbackrepair); it must never be applied by ordinary mutate mode because it represents a provenance claim. | [src/batteries/validation/types.ts:74](https://github.com/NHTIO/ADK/blob/v1.20260824.1/src/src/batteries/validation/types.ts#L74) |
|  `fallbackReplayCompatibility?` | `string`                                                            | Replay-adapter convention to attach alongside [fallbackPayloadValue](#property-fallbackpayloadvalue). A payload requires this tag so the ADK knows which adapter may replay it. Consumed only by the separately opted-in mutate-mode fallback repair, never by validation or ordinary mutation.                                                                                                                                               | [src/batteries/validation/types.ts:80](https://github.com/NHTIO/ADK/blob/v1.20260824.1/src/src/batteries/validation/types.ts#L80) |
|  `gatedByReplayCompatibility?`   | `string`\[]                                                          | Optional producer tags that gate this check; metadata is required only when the primitive's replay-compatibility tag identifies one of these wire formats.                                                                                                                                                                                                                                                                                    | [src/batteries/validation/types.ts:67](https://github.com/NHTIO/ADK/blob/v1.20260824.1/src/src/batteries/validation/types.ts#L67) |
|  `id`                                                    | `string`                                                            | Stable identifier used in violations.                                                                                                                                                                                                                                                                                                                                                                                                         | [src/batteries/validation/types.ts:50](https://github.com/NHTIO/ADK/blob/v1.20260824.1/src/src/batteries/validation/types.ts#L50) |
|  `kind`                                                | [`OrderingPrimitiveKind`](../type-aliases/OrderingPrimitiveKind.md) | Primitive whose payload is required to carry the metadata.                                                                                                                                                                                                                                                                                                                                                                                    | [src/batteries/validation/types.ts:52](https://github.com/NHTIO/ADK/blob/v1.20260824.1/src/src/batteries/validation/types.ts#L52) |
|  `requiredPayloadKey`                    | `string`                                                            | Dot-path into `value.payload` for the required provider metadata.                                                                                                                                                                                                                                                                                                                                                                             | [src/batteries/validation/types.ts:56](https://github.com/NHTIO/ADK/blob/v1.20260824.1/src/src/batteries/validation/types.ts#L56) |
|  `severity?`                                       | `"blocking"` | `"advisory"`                                        | Whether a missing value blocks dispatch. Omitted means `blocking`; `advisory` records the same metadata check without allowing it to reject a dispatch. This models Gemini 3's hard `thought_signature` requirement versus Gemini 2.5's advisory version of the same check.                                                                                                                                                                   | [src/batteries/validation/types.ts:62](https://github.com/NHTIO/ADK/blob/v1.20260824.1/src/src/batteries/validation/types.ts#L62) |
|  `type`                                                | `"requiredMetadata"`                                                | Discriminator selecting the metadata-presence evaluator.                                                                                                                                                                                                                                                                                                                                                                                      | [src/batteries/validation/types.ts:48](https://github.com/NHTIO/ADK/blob/v1.20260824.1/src/src/batteries/validation/types.ts#L48) |
