Skip to content

ci(macos): run the darwin target this repository already ships - #26

Merged
rldyourmnd merged 1 commit into
mainfrom
ci/prove-the-darwin-target-we-ship
Aug 23, 2026
Merged

ci(macos): run the darwin target this repository already ships#26
rldyourmnd merged 1 commit into
mainfrom
ci/prove-the-darwin-target-we-ship

Conversation

@rldyourmnd

Copy link
Copy Markdown
Contributor

This repository declares darwin as a first-class target in its own schemas:

"target_os": {"enum": ["darwin", "linux"]}

in both release-installation.schema.json and bundle-trust.schema.json, and the release builder emits darwin artifacts. Every test so far has run on ubuntu-latest only, so darwin has been cross-compiled and never executed.

Cross-compilation proves it builds. It says nothing about behaviour, and this engine is made of precisely the things that differ between the two systems — path resolution, os.Root confinement, file locking, temp directory semantics, case sensitivity. agent-runtime already runs [ubuntu-latest, macos-latest] for exactly this reason; it ships the same two targets.

Standard macOS runners are unmetered on public repositories, so the coverage is free. macOS-XL is billed even on public and is deliberately not used.

Why a separate workflow

gds-ci.yml is a generated projection — # GENERATED FILE - DO NOT EDIT DIRECTLY — and its template carries a single .Runner. Widening it to a matrix means changing the engine's template and generator and then regenerating through the governed projection path, which is a much larger change than the coverage is worth right now.

.github is outside developmentBundleSourcePaths, so adding a file here leaves the bundle lock alone. Confirmed rather than assumed — gds context on this branch reports only the pre-existing GDS_CONTEXT_ESTATE_NOT_REGISTERED, no GDS_CONTEXT_POLICY_SOURCE_DIGEST_MISMATCH. Same reason release-bundle.yml and codeql.yml already live beside the generated workflow.

The steps are the repository's own

go vet ./..., go build -trimpath ./core/cmd/gds, go test ./... — taken from .gds/repository.yaml so this lane cannot drift into testing something else.

Not added to required_contexts: a lane with no green run yet should not gate the pull request introducing it.

It may go red

If it does, that is the finding — it would mean the darwin binaries shipped so far were never exercised on darwin. Verified on linux that the three commands pass; actionlint 1.7.12 clean.

`schemas/v1/release-installation.schema.json` and `bundle-trust.schema.json`
both declare `target_os: {"enum": ["darwin", "linux"]}`, and the release builder
emits darwin artifacts. Every test so far ran on ubuntu only, so darwin has been
cross-compiled and never executed.

Cross-compilation proves it builds. It says nothing about behaviour, and this
engine is made of the things that differ between the two systems: path
resolution, `os.Root` confinement, file locking, temp directory semantics, case
sensitivity. `agent-runtime` already tests `[ubuntu-latest, macos-latest]` for
the same reason — it ships the same two targets.

Standard macOS runners are unmetered on public repositories, so this costs
nothing. macOS-XL is billed even on public and is deliberately not used.

A separate workflow rather than a matrix inside `gds-ci.yml`, because that file
is a generated projection carrying a single `.Runner`; widening it means
changing the engine's template and generator and then regenerating under the
governed projection path. `.github` is outside `developmentBundleSourcePaths`,
so adding a file here leaves the bundle lock alone — confirmed by running
`gds context` on this branch, which reports no
`GDS_CONTEXT_POLICY_SOURCE_DIGEST_MISMATCH`. It is the same reason
`release-bundle.yml` and `codeql.yml` already sit beside the generated workflow.

The steps are the repository's own declared commands from `.gds/repository.yaml`
(`go vet ./...`, `go build -trimpath ./core/cmd/gds`, `go test ./...`) so this
lane cannot drift into testing something else. Not added to
`required_contexts`: a lane with no green run yet should not gate the pull
request that introduces it.

This may well fail on its first run. That would be the finding, not a setback —
it would mean the darwin binaries shipped so far were never exercised.

Verified on linux: `go vet ./...` and `go build -trimpath ./core/cmd/gds` pass;
actionlint 1.7.12 clean.
@rldyourmnd
rldyourmnd merged commit bbe0629 into main Aug 23, 2026
6 checks passed
@rldyourmnd
rldyourmnd deleted the ci/prove-the-darwin-target-we-ship branch August 23, 2026 23:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant