# RowCove workflow instructions

## The default five-step path

1. **Choose:** ask the user to select a file or folder with the native picker. Accept a pasted path only as an optional fallback.
2. **Detect:** let RowCove identify format, compression, delimiter, headers and dataset layout automatically.
3. **Understand:** request schema, types, partitions and a bounded first page.
4. **Narrow:** project fields, select partitions and apply the smallest filter or time range that answers the question.
5. **Report or write:** return a paged result with scope and provenance, or ask for explicit destination confirmation before creating a new artifact.

## AI training data

For instruction, preference, chat or evaluation data, inspect nested message paths and label distributions before asking for a complete scan. Keep train/validation/test boundaries explicit, preserve conversation roles and do not infer data quality from a handful of records. For shards, query the split and partition first.

## Quantitative and backtest data

Identify timezone, timestamp unit, symbol, venue, timeframe and whether a candle is final. Preserve raw price/size precision, funding and open-interest units, sequence fields and source-row identity. Check gaps, duplicates, ordering and future leakage separately. A visual chart or preview is not a backtest result.

## Query and sort

State whether the predicate is literal contains, exact equality, numeric comparison, range or another supported operator. State sort direction and stable tie behavior. A complete sort includes key preparation and result-index generation; never compare it to a first-page preview. Keep progress and cancellation visible.

## Safe editing

Treat the source as read-only. Stage reversible changes, choose Save copy, verify the new destination and report whether the output is complete. A failed or cancelled write must leave the source unchanged.

## Error handling

If a job is running, poll its status instead of starting duplicate work. If it is cancelled, report cancellation and ask whether to retry. If a cached result is damaged, retry the same authorized query after the app invalidates the damaged generation. If a source changed, stop and ask the user to reopen it.
