- Schema version (x_schema_version, schema_hash) в prompt/trace - Кеш read/search/logs/env (ContextCache) в plan-цикле - Контекст-диета: MAX_FILES=8, MAX_FILE_CHARS=20k, MAX_TOTAL_CHARS=120k - Plan→Apply двухфазность, NO_CHANGES, path sanitization - Protected paths, content validation, EOL normalization - Trace (PAPAYU_TRACE), redaction (PAPAYU_TRACE_RAW) - Preview diff, undo/redo, transactional apply Co-authored-by: Cursor <cursoragent@cursor.com>
31 lines
1.9 KiB
Markdown
31 lines
1.9 KiB
Markdown
# Тест AUTO_ROLLBACK (v2.3.3)
|
||
|
||
Проверка: первый шаг применяется, второй падает → откат первого шага, в UI сообщения «Обнаружены ошибки. Откатываю изменения…» и «Изменения привели к ошибкам, откат выполнен.»
|
||
|
||
## Формат payload в papa-yu
|
||
|
||
- Команда: `apply_actions` (или `apply_actions_cmd`).
|
||
- Payload: `ApplyPayload` с полями **`root_path`**, **`actions`**, **`auto_check`**.
|
||
- В **`actions`** поле **`kind`** в формате **SCREAMING_SNAKE_CASE**: `CREATE_FILE`, `UPDATE_FILE`, `DELETE_FILE`, `CREATE_DIR`, `DELETE_DIR`.
|
||
|
||
## Вариант 1 — падение на safe_join (..)
|
||
|
||
Подставь свой путь в `root_path` и вызови apply с `actions` из `test-auto-rollback-payload.json`:
|
||
|
||
1. Создаётся `papayu_test_ok.txt`.
|
||
2. Второй action с путём `../../forbidden.txt` → `safe_join` возвращает ошибку.
|
||
3. Rollback удаляет `papayu_test_ok.txt`.
|
||
4. Ответ: `ok: false`, `error_code: "AUTO_ROLLBACK_DONE"`, `failed_at: 1`.
|
||
|
||
## Вариант 2 — падение через ОС (permission denied)
|
||
|
||
Используй `test-auto-rollback-fs-payload.json`: второй шаг пишет в `/System/...` — в papa-yu абсолютный путь отсекается в `safe_join`, так что отказ будет до записи в ФС, результат тот же (AUTO_ROLLBACK_DONE + откат).
|
||
|
||
## Запуск
|
||
|
||
```bash
|
||
cd ~/Desktop/papa-yu/src-tauri && cargo tauri dev
|
||
```
|
||
|
||
Проверку можно делать через UI (предпросмотр → применить с действиями, которые содержат запрещённый путь) или через invoke с payload из JSON выше.
|