Skip to content

Go build fails on Linux: VZ symbols referenced without a darwin build tag #17

Description

@Snider

Go Tests + Coverage and golangci-lint have failed on every main run since at least 2026-07-31. Not caused by any open PR.

pkg/agentic/dispatch_vz.go:101:60: undefined: container.NewVZProvider
pkg/agentic/dispatch_vz.go:270:44: undefined: container.ExecResult
pkg/agentic/dispatch_vz.go:288:36: undefined: container.ExecResult
pkg/agentic/runtime_container.go:59:19: undefined: container.IsVZAvailable
FAIL dappco.re/go/agent/cmd/core-agent [build failed]
FAIL dappco.re/go/agent/pkg/agentic  [build failed]
FAIL dappco.re/go/agent/pkg/brain    [build failed]
FAIL dappco.re/go/agent/pkg/monitor  [build failed]
FAIL dappco.re/go/agent/pkg/runner   [build failed]
FAIL dappco.re/go/agent/pkg/setup    [build failed]

VZ is Apple's Virtualization.framework, so container.NewVZProvider, container.ExecResult and container.IsVZAvailable only exist in dappco.re/go/container on darwin. Neither go/pkg/agentic/dispatch_vz.go nor go/pkg/agentic/runtime_container.go carries a //go:build darwin constraint, so Linux CI compiles them and cannot resolve the symbols. It builds on a Mac, which is why this was not caught locally.

Fix is a build-tag split: //go:build darwin on the VZ implementation plus a //go:build !darwin stub providing the same internal surface (containerRuntimeAvailable / runtimeUsesProvider returning false for RuntimeVZ). Worth checking whether container.ExecResult is genuinely darwin-only upstream or should be portable — if the latter, the fix belongs in dappco.re/go/container.

Blocks merge for every PR while main is red.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions