К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

transaction-correctness — скилл для Claude Code: WAL и ACID в Turso

Объясняет механику транзакций в Turso: как работает WAL, чекпоинты, восстановление после сбоя и правила конкурентного доступа.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add tursodatabase/turso --skill transaction-correctness -a claude-code
Открыть на GitHub

Что делает transaction-correctness

Скилл разбирает, как Turso выполняет операции чтения и записи через WAL (Write-Ahead Logging): writer добавляет фреймы в .db-wal, reader видит консистентный снимок по read mark, checkpoint переносит изменения обратно в .db. Описаны четыре типа чекпоинта — PASSIVE, FULL, RESTART, TRUNCATE — и правила конкурентного доступа: один writer, читатели не блокируют запись.

Turso не использует файл .db-shm — вместо него in-memory структуры: hashmap frame_cache, атомарные read marks и блокировки. Скилл ссылается на wal.rs и pager.rs, показывает разницу между приватным состоянием соединения (Pager, WalFile) и общим (WalFileShared, DatabaseStorage). Это база для тех, кто правит транзакционный слой Turso или отлаживает race conditions.

Нужен репозиторий Turso — скилл опирается на конкретные файлы кодовой базы.

Какие задачи решает

  • разобраться в WAL-механике Turso
  • понять восстановление после сбоя
  • изучить правила конкурентного доступа к базе
  • отладить транзакционную логику
  • разобраться в архитектуре Pager и WalFile

Примеры запросов агенту

  • объясни, как работает чекпоинт в Turso
  • покажи разницу между PASSIVE и FULL checkpoint
  • как reader видит консистентный снимок данных

Как установить transaction-correctness

1Через Skills CLI (Vercel)

npx skills add tursodatabase/turso --skill transaction-correctness -a claude-code

2Вручную: положить файлы

~/.claude/skills/transaction-correctness/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/transaction-correctness/

Из того же набора10

Весь набор →
code-quality tursodatabase Набор правил корректности, Rust-паттернов и принципов без переусложнения для агентов, которые пишут код в вашем проекте. Claude Code CX Codex Cursor +1 1 800установок storage-format tursodatabase Справочник по формату файла SQLite: заголовок, страницы, B-деревья, ячейки, overflow и freelist, с привязкой к коду Turso. Claude Code CX Codex Cursor +1 1 300установок testing tursodatabase Скилл помогает писать тесты для SQL и Rust: учит выбирать между форматами .sqltest, TCL и интеграционными тестами, показывает команды для запуска. Claude Code CX Codex Cursor +1 1 300установок async-io-model tursodatabase Обучает агента архитектуре асинхронного ввода-вывода в Turso: явным стейт-машинам, типу IOResult и защите от багов повторного входа. Claude Code CX Codex Cursor +1 1 300установок debugging tursodatabase Скилл по отладке tursodb: сравнить байткод с SQLite, включить трейс-логи, прогнать ThreadSanitizer, воспроизвести баг по seed и замерить стек. Claude Code CX Codex Cursor +1 1 300установок index-knowledge tursodatabase Скилл автоматически создаёт иерархическую документацию AGENTS.md для кодовой базы. Анализирует структуру проекта, оценивает сложность каждой папки и генерирует файлы с инструкциями для ИИ-агентов. Claude Code CX Codex Cursor +1 1 300установок mvcc tursodatabase Справочник по экспериментальному MVCC в кодовой базе Turso: многоверсионность строк, изоляция снимков и ограничения памяти. Пригодится при отладке и разработке ядра базы данных. Claude Code CX Codex Cursor +1 1 200установок differential-fuzzer tursodatabase Скилл помогает запускать дифференциальный фаззер Turso и разбирать расхождения с SQLite. Нужен при поиске ошибок корректности в сгенерированных SQL-запросах. Claude Code CX Codex Cursor +1 1 200установок

Похожие

shap K-Dense-AI Скилл помогает агенту вычислять и проверять объяснения предсказаний ML-моделей через библиотеку SHAP. Пригодится для аудита алгоритмов и построения графиков влияния признаков. Claude Code CX Codex Cursor +1 2 000установок networkx K-Dense-AI Создаёт и анализирует графы в Python через NetworkX. Пригодится для поиска маршрутов, центральности, сообществ и работы с файлами графов. Claude Code CX Codex Cursor +1 2 000установок polars K-Dense-AI Скилл подключает справочник по Polars — библиотеке DataFrame для Python с expression-based API, ленивыми запросами и агрегациями для ETL и миграции с pandas. Claude Code CX Codex Cursor +1 2 000установок rag-architect https://github.com/Jeffallan Проектирует RAG-системы: разбивает документы на чанки, генерирует эмбеддинги, настраивает векторные базы, строит гибридный поиск и оценивает качество извлечения контекста. Claude Code CX Codex Cursor +1 4 700установок pyopenms K-Dense-AI Обрабатывает данные масс-спектрометрии в протеомике и метаболомике через pyOpenMS. Помогает находить сигналы, идентифицировать пептиды и собирать матрицы количественного анализа. Claude Code CX Codex Cursor +1 1 900установок polars-bio K-Dense-AI Считает геномные интервалы в Polars DataFrame и читает биоинформатические форматы от BED до CRAM. Пригодится, когда пайплайн на Python перерос bedtools. Claude Code CX Codex Cursor +1 1 900установок xlsx официальный anthropics Работает с табличными файлами: создаёт, читает, правит и преобразует книги. Подходит, когда итогом должен стать файл Excel или другой табличный формат. Claude Code Claude.ai 187 223установок google-agents-cli-observability официальный Google Помогает настроить трассировку и сбор данных о работе ИИ-агентов, включая агентов на ADK. Пригодится, когда нужно разбирать выполнение запросов или наблюдать за агентом после развёртывания. Claude Code CX Codex Cursor +1 509 900установок

Вопросы о transaction-correctness

Как установить transaction-correctness в Claude Code?

Выполни npx skills add tursodatabase/turso --skill transaction-correctness -a claude-code. Файл скилла появится в ~/.claude/skills/transaction-correctness/SKILL.md.

Что делает transaction-correctness?

Объясняет механику транзакций в Turso: как работает WAL, чекпоинты, восстановление после сбоя и конкурентный доступ к базе данных.

Чем Turso отличается от стандартного SQLite?

Turso не использует файл .db-shm — вместо него in-memory индекс WAL с hashmap frame_cache и атомарными read marks, потому что многопроцессный доступ не поддерживается.

Исходный текст

SKILL.md · MIT
---
name: transaction-correctness
description: How WAL mechanics, checkpointing, concurrency rules, recovery work in tursodb
---
# Transaction Correctness Guide

Turso uses WAL (Write-Ahead Logging) mode exclusively.

Files: `.db`, `.db-wal` (no `.db-shm` - Turso uses in-memory WAL index)

## WAL Mechanics

### Write Path
1. Writer appends frames (page data) to WAL file (sequential I/O)
2. COMMIT = frame with non-zero db_size in header (marks transaction end)
3. Original DB unchanged until checkpoint

### Read Path
1. Reader acquires read mark (mxFrame = last valid commit frame)
2. For each page: check WAL up to mxFrame, fall back to main DB
3. Reader sees consistent snapshot at its read mark

### Checkpointing
Transfers WAL content back to main DB.

```
WAL grows → checkpoint triggered (default: 1000 pages) → pages copied to DB → WAL reused
```

Checkpoint types:
- **PASSIVE**: Non-blocking, stops at pages needed by active readers
- **FULL**: Waits for readers, checkpoints everything
- **RESTART**: Like FULL, also resets WAL to beginning
- **TRUNCATE**: Like RESTART, also truncates WAL file to zero length

### WAL-Index
SQLite uses a shared memory file (`-shm`) for WAL index. **Turso does not** - it uses in-memory data structures (`frame_cache` hashmap, atomic read marks) since multi-process access is not supported.

## Concurrency Rules

- One writer at a time
- Readers don't block writer, writer doesn't block readers
- Checkpoint must stop at pages needed by active readers

## Recovery

On crash:
1. First connection acquires exclusive lock
2. Replays valid commits from WAL
3. Releases lock, normal operation resumes

## Turso Implementation

Key files:
- [WAL implementation](../../../core/storage/wal.rs) - WAL implementation
- [Page management, transactions](../../../core/storage/pager.rs)

### Connection-Private vs Shared

**Per-Connection (private):**
- `Pager` - page cache, dirty pages, savepoints, commit state
- `WalFile` - connection's snapshot view:
  - `max_frame` / `min_frame` - frame range for this connection's snapshot
  - `max_frame_read_lock_index` - which read lock slot this connection holds
  - `last_checksum` - rolling checksum state

**Shared across connections:**
- `WalFileShared` - global WAL state:
  - `frame_cache` - page-to-frame index (replaces `.shm` file)
  - `max_frame` / `nbackfills` - global WAL progress
  - `read_locks[5]` - read mark slots (TursoRwLock with embedded frame values)
  - `write_lock` - exclusive writer lock
  - `checkpoint_lock` - checkpoint serialization
  - `file` - WAL file handle
- `DatabaseStorage` - main `.db` file
- `BufferPool` - shared memory allocation

## Correctness Invariants

1. **Durability**: COMMIT record must be fsynced before returning success
2. **Atomicity**: Partial transactions never visible to readers
3. **Isolation**: Each reader sees consistent snapshot
4. **No lost updates**: Checkpoint can't overwrite uncommitted changes

## References

- [SQLite WAL](https://sqlite.org/wal.html)
- [WAL File Format](https://sqlite.org/walformat.html)

© tursodatabase · MIT · tursodatabase/turso

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой