Совместимость с OpenShell¶
Цель совместимости Quarshell — закреплённый для этой работы последний стабильный
релиз OpenShell: v0.1.4,
commit 5a7728c304b5528e954e9ae900cf21f84e1a12b1. Tag скачан в
tools/upstream/openshell-v0.1.4; UPSTREAM_VERSION и UPSTREAM_SHA задают
baseline generated schemas, RPC inventory и gap register. Это частичная цель
совместимости, а не заявление о полном parity.
Inventory содержит 83 публичных RPC openshell.v1.OpenShell, 12 RPC compute
driver, пять RPC credential driver и связанные middleware/interceptor services.
Проверки регистрации handlers и proto descriptors подтверждают форму API, но не
совпадение поведения каждого метода и backend. Release register ведёт evidence
и gaps по сценариям.
Versioned feature matrix связывает каждую tracked feature с backend, public API
или конфигурационной поверхностью, test references, уровнем evidence и gate
result. implemented, local_test, target_host_test и released обозначают
максимальный подтверждённый уровень; gate_result фиксирует pass, partial, fail
или open. task compat:inventory проверяет реестр функций, матрицу конфигурации
драйверов и VM parity, а task compat:pin-check сверяет upstream pin. Пока
published-consumer gate падает, ни одна строка не заявляет released.
Инвентарь Docker/Podman config строится по публичным driver structs из pinned
source и сверяется с локальными decoders. value_behavior описывает omission,
явные empty/zero значения и runtime effect для всех 54 полей: пять строк имеют
статус verified, 49 — partial; каждая содержит ссылки на source/tests.
Частичные строки перечисляют наблюдаемые отличия и оставшиеся host/runtime
gates, не заявляя parity. Среди примеров — Cautem image/socket defaults,
Podman health-check lifecycle, presence proxy boolean и rootless ID mapping.
Config corpus остаётся release blocker. Инвентарь также фиксирует
неподдерживаемые runtime-image настройки и намеренный отказ от gateway client
certificates.
Политика совместимости¶
Quarshell нацелен на последний стабильный релиз OpenShell, закреплённый tag и
полным commit SHA. На 2026-10-19 upstream помечает v0.1.4 последним стабильным
релизом; движущиеся main/dev сборки исключены. Полная совместимость требует
поведенческого parity для всех перечисленных API, CLI, config, provider,
credential, policy, backend, SDK, TUI и packaging возможностей, а не только
совпадения схем. Приведённая ниже матрица остаётся частичной и блокирует релиз,
пока каждая обязательная строка не получит проходящие conformance evidence.
До этого переключения Quarshell не поддерживает обратную совместимость с
предыдущими релизами Cautem или Quarshell. Продукт выпускается только с
каноническими quarshell-* module/package/config/environment/resource именами.
Старые imports, aliases, dual readers, fallback settings, adoption прежних
ресурсов и миграционный adapter Cautem-to-Quarshell не входят в продукт. Для
старых установок потребуется чистая установка; нужные данные пользователь
сохраняет отдельно. Продукт не удаляет молча посторонние старые ресурсы хоста.
Текущий статус¶
| Поверхность | Состояние |
|---|---|
| Wire schema | Сгенерирована из закреплённого исходника v0.1.4; drift и число методов проверяются. Имена upstream service/fields сохраняются на compatibility endpoint. |
| Public RPC handlers | Зарегистрированы. Некоторые методы явно возвращают unsupported/precondition; поведенческое покрытие неполное. |
| Docker и Podman | Есть широкое покрытие lifecycle, policy, exec, transfer и credentials. Live acceptance на целевых хостах, published binaries, host networking, ownership и восстановление после outage блокируют релиз. |
| Logs и platform watch | Gateway вызывает native Backend log и platform-event extensions. Remote compute plugins используют тот же Backend contract; Engine-to-Backend compatibility adapter удалён. Streams ограничены sandbox, но parity durable cursor и reconnect ещё открыта. |
| Provider labels | Сохраняются и возвращаются; ListProviders.label_selector фильтрует до pagination и отклоняет неверный selector. |
| Operator credential export | GetProviderCredentials требует verified mTLS peer certificate с OU operator; bearer auth для этого метода отклоняется. Нужны deployment и parity по lifetime/refresh. |
| Stable placeholders и credential endpoint bindings | Текущий runtime их не поддерживает. Lint сообщает supports_stable_placeholder=false, а GetSandboxProviderEnvironment возвращает CREDENTIALS_WITHHELD вместо plaintext до появления policy-bound metadata. Это release blocker. |
| MicroVM | Live acceptance macOS ARM64/HVF проверяет authenticated OCI import, восстановление по digest, image config, PTY/stdin/resize/Ctrl-C и driver recovery. Gateway runtime validation остаётся fail-closed; открыты Linux KVM и Gateway→VM acceptance, workspace mounts/ownership, отдельный host UID, policy status reporting и registry auth variants. |
| CLI и SDK | Проверяются dispatch верхнеуровневых команд и отдельный help для каждого sandbox leaf; help fixtures перечисляют принятые flags. Для sandbox create также проверяются все документированные flags, сохранение значений, canonical argv и некорректные аргументы. Остальные вложенные parser, output/timeout, Python API и standalone/published consumers остаются открытыми. |
Provider readiness receipts, status queries и session-bound observation reporting реализованы. MCP endpoint status reporting и его durable per-sandbox snapshot реализованы. Sandbox-configuration admission reporting реализован без provisioning-deadline enforcement; Go-репортёры в supervisor и peer relay paths остаются gaps. RPC inventory содержит точные методы, направления stream, auth, handler, fixtures, тесты и evidence. Gap register содержит остаток работ:
- Реестр функций OpenShell
- Оставшиеся пробелы реализации и приёмки
- Инвентарь Docker/Podman config fields
- Runtime acceptance и карта тестов
- Архитектура и backend SPI
Повторная проверка pin¶
Из корня workspace выполните:
Команды сверяют скачанный исходник, generated proto drift, реестр функций, матрицу конфигурации драйверов и VM parity. Они не находят поведение, которое ещё не добавили в inventory. Docker, Podman и MicroVM требуют отдельных host lanes из матрицы acceptance.
Канонические module и package paths продукта используют имена quarshell-*.
Предыдущие пути Cautem не входят в поддерживаемый контракт беты; см.
продуктовый и релизный контракт.
