Провайдеры машин, доступ к серверу, bootstrap
Провайдер машины позволяет плагину создавать вычислительные ресурсы. Обязанности с ядром строго разделены: «core owns enrollment, the identity files and the internals of installing the daemon», а «machine plugins do not clone projects».
Когда подключается новая машина, ядро само настраивает git remote проекта, регистрирует его источник и только затем вызывает провайдер окружения, которому нужен projectCheckout. Машина не привязана к проекту: «nothing in its creation names a project, and projects reach the machine later through project sources».
Порядок. validate/availability → create (идемпотентно по ключу) → await checkpoint(resource) → bootstrap({ key, executor, report, signal }) → возвращает { status:"created", name, resource }.
Удаление. Ядро вызывает remove({ hostId, resource, … }), если чекпойнт существует, и reconcileCleanup({ key, … }), если его нет: «find and remove indeterminate allocations by the durable key; return failed until the allocation intent is resolved». Удаление постоянной машины сначала каскадом проходит через провайдеры окружений. Удаление эфемерной машины пропускает teardown и никогда не возобновляет приостановленные вычисления.
Простой. Отслеживайте время простоя сами, ядро этого не делает. Используйте experimental_thread.events и experimental_terminal.input для продления дедлайна, а bb.background.schedule вместе с начальной сверкой — для очистки. «The dispatch hook helps report status, but it is bypassable and does not protect terminal/file RPC.»
availability. Проверки идут параллельно, дедлайн — 5 секунд на каждую; «malformed output, exceptions and timeouts all look like unavailable», и «a registered provider is not by itself enough».