# Projects, originals and undo

A Yapwing project keeps an editable description of a video. It records which
parts of each source are present, their order, captions and overlays. Preview
and export are both drawn from that description.

## Keep originals or collect them

Import links the original recording. A cut changes the project's selected
source coverage; it does not rewrite the original. Source identity is checked,
so replacing a linked recording is an error rather than an automatic retiming
of the edit.

**File → Collect Assets** copies registered assets into the project folder
and verifies their contents before changing the links. Originals remain
intact. Keep the entire folder, including its `.yapwing` metadata, when moving
a project to another Mac.

## Words and cuts have different jobs

A recognized word points to recorded audio and picture. Cutting it removes
that represented interval. Correcting its spelling changes the visible label
over the same interval. A correction cannot create a new spoken word.

Some recognizer tokens share a timing interval and form one indivisible unit.
Use the unit IDs from inspection rather than inventing cut times from the
displayed text.

## One project, one history

App gestures and agent edits go through the same validated core. The app
holds a lock on each project it has open, and external commands reach the app
while the project is open. A closed project uses the same lock for
command-line changes.

An agent request names the project, the revision it inspected and an operation
ID. A request made from an older revision is refused. Retrying an identical
request returns its saved result without applying the change twice. Authored edits participate
in Undo and Redo; source-analysis metadata has separate rules so its arrival
does not erase editing history.
