Skip to content

docs: design v2/later feature specs 15-21 + integrate & reconcile #3

docs: design v2/later feature specs 15-21 + integrate & reconcile

docs: design v2/later feature specs 15-21 + integrate & reconcile #3

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
env:
# Single enforced Go toolchain floor (DECISIONS, ARCHITECTURE §7.8).
GO_VERSION: "1.25"
jobs:
build-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
check-latest: true
- name: gofmt
run: |
unformatted=$(gofmt -l .)
if [ -n "$unformatted" ]; then
echo "These files are not gofmt-clean:"; echo "$unformatted"; exit 1
fi
- name: go vet
run: go vet ./...
- name: build (CGO disabled — static binary invariant)
run: CGO_ENABLED=0 go build ./...
- name: test -race
env:
CGO_ENABLED: "1" # the race detector requires cgo (see Makefile)
run: go test -race ./...
govulncheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
check-latest: true
- name: govulncheck
run: |
go install golang.org/x/vuln/cmd/govulncheck@latest
govulncheck ./...
cross-compile:
# Proves the 4 release targets build CGO-free from one Linux runner.
runs-on: ubuntu-latest
strategy:
matrix:
goos: [linux, darwin]
goarch: [amd64, arm64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
check-latest: true
- name: build ${{ matrix.goos }}/${{ matrix.goarch }}
env:
CGO_ENABLED: "0"
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
run: go build -o /dev/null ./cmd/devstack
# Placeholder lanes wired as their milestones land:
# - schema-drift: JSON-Schema ↔ Go-struct round-trip check (M1)
# - determinism: assert byte-identical generated artifacts (M1)
# - integration: testcontainers-go / dind lane behind a build tag (M7)