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.