# tmux_query:plan/0

- **Package:** libtmux_erlang
- **Language:** Erlang
- **Kind:** typealias
- **Source:** https://github.com/libtmux/libtmux-erlang/blob/d1b6308440cf9eb8f6647e7ae434bce60e849368/apps/libtmux_erlang/src/tmux_query.erl#L107
- **Page:** https://libtmux.org/en/erlang/latest/reference/t-tmux_query-plan-0/

```
-type plan() ::
          #{entity := tmux_schema:entity(),
            pushdown := boolean(),
            candidate := candidate(),
            residual := tmux_filter:wire_document(),
            required := [tmux_snapshot:requirement()],
            limit := infinity | 0..65536,
            commands := command_plan(),
            hydration := complete_graph,
            ordering := session_index_window | numeric_id,
            deduplication := membership | physical_id,
            capabilities :=
                #{minimum_tmux := binary(),
                  transport := one_shot},
            consistency := observed,
            atomic := false,
            candidate_scalars :=
                same_row_checked_against_spine,
            text_and_relations := later_observations,
            temporal_limit :=
                excluded_rows_cannot_be_recovered}.
```

Pure explanation of a query. pushdown reports whether candidate exclusion is enabled (disabled by default). residual is the full portable predicate, required lists coverage requirements, and limit applies after residual evaluation. ordering and deduplication name the identity policy, not arbitrary map order. capabilities describes the planner baseline without probing a live endpoint.

Capture spans commands. Candidate scalar values are checked against the first
scan; text and relationships are later observations. Excluded rows cannot be
recovered after state changes. Even an exact candidate is not an atomic query.
