Pular para conteúdo

AUR-403 — Perfil Go unit offline

Documento histórico do board. Pode descrever componentes removidos; para uso atual, consulte o guia do produto.

go-unit-offline-v1 usa o schema dedicado .board/schemas/go-unit-offline-profile.schema.json, é registrado no registry canônico em ordem lexicográfica e fixa seu lock content-addressed. O lock pina aurum-bootstrap-go-bash@sha256:503ac356fa6bca4bad56fade87b5479ff371bd446ffb9c7db91f211323c7c73e — a mesma imagem local já pinada por bootstrap-readonly-v1, que fornece bash em /bin/bash e go1.21.13 em /usr/local/go/bin/go e passa o probe de runtime do preflight (--pull=never, --network=none, rootfs read-only, usuário 65534:65534, sem capabilities). A base golang:1.21-alpine anterior foi rejeitada porque não contém bash e o probe saía 127. Tags mutáveis são rejeitadas antes de qualquer engine; o image_set_digest continua sendo o SHA-256 da referência completa name@sha256:<digest> do lock.

O profile mantém rede none, rootfs e checkout read-only, usuário não-root, capabilities removidas, limites bounded, cache /go/pkg/mod somente leitura, GOPROXY=off, GOSUMDB=off, GONOSUMDB=*, GOTOOLCHAIN=local e somente o array exato ["go", "test", "-mod=readonly", "./..."]. O loader confirma a coerência das invariantes do schema, exige o conjunto completo de chaves do profile e do ambiente e rejeita chaves desconhecidas, duplicadas ou bytes após o documento. Fixtures hostis cobrem a omissão de privileged e a tentativa de representar o comando permitido com apenas três elementos.

A aceitação executa unit, contract, integration, E2E e o AC-001 completo do AUR-402, incluindo suas quatro camadas e mutações. Os vetores rejeitam duplicidade, lock com tag mutable e alteração de isolamento (network, mounts, devices, rootfs ou capabilities), sempre antes de qualquer invocação de engine. Os códigos estáveis do loader do profile são schema-missing, schema-invalid, profile-missing, unsafe-plan, lock-missing, mutable-input, lock-digest-mismatch, duplicate-profile, order-invalid, profile-unregistered, registry-missing, schema-digest-mismatch e digest-invalid.

Diagnóstico offline: toda a validação é leitura local de arquivos — nenhum fetch, pull ou consulta a engine ocorre para aceitar ou rejeitar o documento. Se o preflight reportar owned profile go-unit-offline-v1 lacks required runtime (bash,go), a imagem pinada no lock não fornece bash e go no contrato de entrypoint Bash usado por oci-run; corrija o lock para uma imagem local que prove ambos, recalcule lock_digest (SHA-256 do arquivo de lock) no profile e no registry e mantenha image_set_digest coerente. O runner permanece fail-closed para go-unit-offline-v1 até um card dependente habilitá-lo.