Контекст
Обычный quality gate должен быть воспроизводимым и не иметь скрытого доступа к сети. В v8-runner 0.5.1 tools download описан как загрузка из latest GitHub release; для YaXUnit/Vanessa доступны только --force и частные options.
Из-за отсутствия pin/checksum/offline contract проекту приходится держать отдельный provisioner и manifest, хотя сам download уже является ответственностью runner.
Предложение
Расширить tools download единым supply-chain contract:
--version <exact>;
- expected
--sha256 <digest> или digest в config/lock file;
--offline / tools verify, не выполняющий network requests;
- atomic publication после size/hash validation;
- machine-readable manifest/lock с kind, version, source URL, length и SHA-256.
Критерии готовности
- exact version никогда не разрешается в latest;
- mismatch digest удаляет temporary file и возвращает typed error;
- offline verify гарантированно не обращается к сети;
- повторный verify идемпотентен;
- одинаковый контракт работает для YaXUnit, Vanessa и client-mcp;
- JSON result перечисляет verified/downloaded artifacts и их digests;
- credentials/tokens не попадают в output/log.
После появления этого контракта project-specific provisioner можно удалить, оставив runner-first workflow.
Наблюдение сделано на v8-runner 0.5.1.
Контекст
Обычный quality gate должен быть воспроизводимым и не иметь скрытого доступа к сети. В v8-runner 0.5.1
tools downloadописан как загрузка из latest GitHub release; для YaXUnit/Vanessa доступны только--forceи частные options.Из-за отсутствия pin/checksum/offline contract проекту приходится держать отдельный provisioner и manifest, хотя сам download уже является ответственностью runner.
Предложение
Расширить
tools downloadединым supply-chain contract:--version <exact>;--sha256 <digest>или digest в config/lock file;--offline/tools verify, не выполняющий network requests;Критерии готовности
После появления этого контракта project-specific provisioner можно удалить, оставив runner-first workflow.
Наблюдение сделано на v8-runner 0.5.1.