File sync semantics

Updated Dec 26, 2025

Mriya syncs the working tree with rsync -az --delete --filter=":- .gitignore" so only files not matched by .gitignore patterns are transferred. Ignored cache paths such as target/ are not deleted remotely, which keeps pre-existing build outputs available for incremental runs. The .git directory is excluded from transfer.

Remote commands execute through the system ssh client, and Mriya mirrors the remote exit code. If cargo test fails remotely with exit status 101, the local process will also exit 101. Commands run via sync_and_run automatically cd into MRIYA_SYNC_REMOTE_PATH before execution, so callers do not need to prefix their commands with a directory change.