/charges/{id}), every low-cardinality string field whose value changed between two recordings records an edge, pending → succeeded, with a count.
Reading it
never observed lists every ordered pair of observed states with no recorded edge, and appears only once the field has cleared both warmup gates. It is never a claim that the provider cannot make the transition. Nothing here is enforced: the sandbox is untouched, and no alert is raised from it.
--format json includes the graph.
What is stored
Only the aggregate graph: field paths, value pairs, counts and timestamps, under<data_dir>/apis/<upstream>.behaviour.json. The previous value per resource lives in a bounded in-memory cache and is never written, so a restart loses in-flight edges rather than persisting per-resource data.
What is excluded
- Endpoints with no path parameter, because there is no resource to follow.
- The identifier itself.
- Fields the sanitizer tokenized or dropped.
- Fields matched by
volatile_fields, and templates undermute. - Fields that show more than 24 distinct values, or more than 64 distinct edges. They latch and are never tracked again: a high-cardinality field is not a state machine.