Tyapkin
Capkin

Библиотека одной Machine

Минимальный Rust путь Capkin compile → CAP decide → verify_trace.

Одна Machine без приложения

capkin-machine — библиотека строгого базового machine-v1. Её прямые зависимости — protocol-core и закреплённый Rust parser gherkin; ей не нужны Flow, imports, protobuf, CEL, ContractStore, SQLite, сеть или Allium. cap-cli использует тот же компилятор через совместимый facade, поэтому не существует двух независимых реализаций Machine grammar.

compile_machine_profile принимает только явный machine-v1 и отказывает любому неизвестному profile. compile_machine остаётся alias для этого же единственного профиля.

use capkin_machine::compile_machine_profile;

let checked = compile_machine_profile(source, "machine-v1")?;
let checkpoint = checked.initial("trace-1")?;
// Host заполняет DecisionRequest проверенными claims и expected_head.
let decision = checked.decide(&request)?;
let verified = checked.verify_trace(&verify_request)?;

checked.ir().digest — канонический CapIrV1 digest. Поля checked Machine нельзя изменять через публичный Rust API, чтобы digest и контракт не разошлись. decide проверяет структуру и допустимость перехода относительно переданных claims. Он не удостоверяет Principal, истинность внешнего Guard или доставку Output. verify_trace независимо перепроверяет Commitment chain. Хост отвечает за доверенный checkpoint, persistence, права actor и внешние эффекты.

Библиотека сейчас намеренно поддерживает только machine-v1 с одним строгим Scenario. feature-module-v1 собирает несколько Scenario в обычные Machine через опциональный профиль cap-cli. Все Rust .feature компиляторы сначала проходят один check_gherkin_syntax: Rust Gherkin parser проверяет структуру, затем прежний закрытый semantic compiler проверяет слова и типы. Официальный @cucumber/gherkin AST остаётся независимым cross-language corpus check. Ни один parser не вводит свободные исполняемые шаги.

Локальная проверка:

pnpm test:capkin-machine
pnpm check:capkin:compatibility-baseline
cargo tree --offline -p capkin-machine --depth 1

См. границу малого ядра и архив принятого change openspec/changes/archive/2026-10-09-tyapkin-modular-allium-readiness/.

On this page