Skip to main content
Some fields change on every response: request ids, timestamps, correlation ids. Tracking their values would make every response look like drift. volatile_fields tells pikopod which values are allowed to churn.

Suppression is value-only

A volatile field is still learned. Its presence, its type and its nullability are still asserted. Only its values stop being tracked, so: The same rule applies in baseline learning, drift diffing, the replay CI gate, the traffic overlay and the state machine.

Entry syntax

Matching is case-insensitive. An entry may not be empty, start or end with a slash, contain an empty segment, or contain characters other than letters, digits, _, -, ., $ and @. Anything else is a configuration error: pikopod up refuses to start and names the entry.

Curated defaults

A curated list of names that churn by convention is always applied on top of yours, so you rarely need to list the obvious ones: request and correlation ids, trace ids, timestamps, created_at, updated_at, processed_at, etag, nonce. The replay tier additionally strips a curated list of request fields and headers when hashing: idempotency keys, signatures, trace headers, dates.

Let the tool suggest them

A field is suggested only when it is proven to churn: at least ten observations, a stable type, never a container, never a value the sanitizer rewrote, and at least half of its observations distinct. Anything that did not become a suggestion is listed with the reason, so an over-broad entry never goes green while quietly asserting less.

Collateral

pikopod up and volatile suggest both lint the configured entries against what has been learned:
Remove or fix what it names. See pikopod volatile.