Datasets
Rows, editing and conflicts
Browse and filter the rows grid, edit or add a row, change row status, and see what happens when two people edit the same row.
The Rows tab is where you fix a wrong expected output, add a missing case and set each row's status.
The grid
The Source column links to the trace a row came from, if any. A filter shows all active rows or one status, and rows load a page at a time. Selecting rows opens a bulk bar to finalize, mark golden or archive them. Rows are deleted one at a time, from the drawer.
Edit a row
Click a row to open its drawer, where you can edit the input (required), expected output, output and system instructions, and set the status. Golden needs an expected output.
Save updates that one row. A new input or expected output changes the dataset hash; a new output does not. Delete removes the row for everyone after you confirm, and snapshots keep their frozen copy.
Add row on the toolbar opens the same drawer empty and adds the row after the last one.
Row status
| Status | Meaning |
|---|---|
draft | Where imported, generated, trace-built and playground-promoted rows start. |
finalized | Your own mark that the row is ready. |
golden | A person verified the expected output, which must not be empty. The row records who verified it and when. |
archived | Left out of default reads, exports, the hash and snapshots. The row can be restored. |
Archiving or restoring a row changes the content hash; the other status changes never do. Verifying expected outputs is covered in Curate and maintain a golden dataset.
When two people edit the same row
The API guards edits with two tags. Reading a row returns a strong tag, a hash of its input, expected output, output, system instructions, turns, status and extra columns. Reading the row list returns a weak tag for the whole set: a counter that moves on every write, because the content hash ignores status.
A write that sends its tag in If-Match gets 412 if the row or the set changed since it was read. The 412 carries the current tag, so the client can show both versions and retry without reading again. Bulk status changes and archive use the set tag and apply to all selected rows or none.
An identical repeated edit is not a conflict. Adding and deleting rows take no condition, so two people adding at once both succeed. If-Match is optional, so the SDK and older clients work without it.
The app sends the tag from the drawer and the bulk bar. When a save is refused, the drawer has Take theirs and Keep mine and overwrite, and if the row was deleted meanwhile it says so and keeps your text. A refused bulk change applies nothing and shows Reload rows.
Health
The Health tab counts rows by status, and by age since they were added: 0–30, 31–90, 91–180 and over 180 days.
Duplicate groups list rows whose inputs match exactly or nearly (a Jaccard similarity of 0.85 or more over three-word shingles). Near duplicates are checked over the first 5,000 active rows, and the section says when not every row was compared. Archive duplicates, keep first archives all but the first row of each group. Last run time is not reported, so the top line reads Not computed yet.