docs: design v2/later feature specs 15-21 + integrate & reconcile #3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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) |