Skip to content
1 min read · 279 words

Interface: AdjacencyRule ​

Defined in: src/batteries/validation/types.ts:180

Requires a first-kind primitive to be immediately followed by a permitted primitive.

Remarks ​

The ADK's Message has no payload field, and its MessageRole documentation says tool results never appear in persisted message history. Results live on ToolCall itself, so the former field-correlation model could never resolve a tool result. This rule therefore directly forbids selected kinds as the immediate successor.

Properties ​

PropertyTypeDescriptionDefined in
disallowBetweenOrderingPrimitiveKind[]Primitive kinds that may not immediately follow a first-kind primitive.src/batteries/validation/types.ts:188
firstOrderingPrimitiveKindPrimitive whose immediate successor is constrained.src/batteries/validation/types.ts:186
idstringStable identifier used in violations.src/batteries/validation/types.ts:184
severity?"blocking" | "advisory"Whether a violation blocks dispatch. Omitted means advisory. Remarks Advisory is the default because this catalog's rules were derived from vendor DOCUMENTATION, and a live audit against each rule's own native API found that most of them block turn state the vendor accepts (16 of 17 rules measured; only thought-signature-required was confirmed enforced). Documentation describes what a vendor says it requires; only observation shows what it does. Defaulting to advisory keeps the catalog's knowledge — you still learn which primitive broke which vendor's stated contract — without rejecting dispatches the model would have served. Opt into blocking per rule when you have verified the constraint on the surface you dispatch through. See docs/batteries/validation/api-surface-scope.md.src/batteries/validation/types.ts:202
type"adjacency"Discriminator selecting the adjacency evaluator.src/batteries/validation/types.ts:182