Библиотека одной 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/.