> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parable.work/llms.txt
> Use this file to discover all available pages before exploring further.

# Parable Pool

> Query materialized Plot results by Parable and Plot slug.

The Parable Pool contains materialized Plot results. Each result is addressed
by the Parable that owns the Plot and the Plot's own name:

```text theme={null}
parables.{parable}.{plot}
```

For example:

```sql theme={null}
SELECT *
FROM parables.spend.tool_costs
LIMIT 10
```

A declared Plot can register its output table before its first successful run.
If a successful run produces no records, the result remains a table with a
schema and zero rows rather than becoming a missing table.

## Build on materialized results

Plots can read Provider and Artifact tables and materialize the result into the
Parable Pool. Other queries and Plots can then reuse that result:

```sql theme={null}
SELECT
  cost.provider,
  cost.month,
  cost.amount
FROM parables.spend.tool_costs AS cost
WHERE cost.month >= DATE '2026-01-01'
ORDER BY cost.month DESC
```

The Pane's Perception declares the Plot's reusable input and output contract.
Stored rows must conform to that contract before a caller's projection, filter,
join, or aggregate can consume them. An empty result still checks its columns.
An absent contract refuses execution.

The same rule covers Plots assembled from Delta rows and embedding vectors.
The joined rows are validated and filtered by current output Policies before
the Plot or its Delta/vector aliases expose their columns. A vector alias
does not bypass a filter on a different declared field. Physical row identity
and ordinal columns remain absent from the main Plot's result and metadata.

Captured Report bytes and their producing contract remain fixed. Reads recheck
the captured inputs' current authority as file batches are read and at
completion, including empty and fully filtered results. A source revocation
ends the read with a refusal. Current output Policies also apply before a
query can project or aggregate those rows.
Report metadata also requires a current binding for each captured Plot input
before exposing a stored row count. Removing that input hides the count;
creating a different Plot with the same handle does not restore it.

The Plot owns its refresh cadence. Use
[catalog discovery](/protocols/sql/data-catalog/discover-tables-and-columns) to
confirm the available columns and the latest successful materialization before
depending on a result.

See [Plots](/ponder/parables/pieces/plots) for the product journey and the
[Plot Plugins primer](/plugins/plot-plugins) for the execution capabilities a
Plot can use.
