Skip to content

test(go-ci): add workflow-level self-test for the Go lane#56

Merged
ArchonVII merged 1 commit into
mainfrom
agent/claude/55-go-ci-selftest
Jun 7, 2026
Merged

test(go-ci): add workflow-level self-test for the Go lane#56
ArchonVII merged 1 commit into
mainfrom
agent/claude/55-go-ci-selftest

Conversation

@ArchonVII

Copy link
Copy Markdown
Owner

Summary

go-ci.yml (added in #52) shipped with no workflow-level execution testself-test.yml only runs vitest over the classifier scripts and never invokes any reusable lane. So the Go lane's 200-line shell (discovery, go build/go vet/go test, exclude-modules) had never actually run in Actions.

This adds self-test-go.yml, which calls go-ci.yml through a local (./) reusable ref — so the in-PR version is the one under test — against committed fixture modules under test/fixtures/go/:

  • alpha/ — valid module with a passing test → proves go build + go vet + go test all execute.
  • beta/ — second valid module → proves multi-module discovery (git ls-files finds more than one go.mod).
  • excluded/intentionally non-compiling, passed via exclude-modules → a green run self-validates that exclusion actually skips it. If exclusion ever regresses, the broken module builds and the job fails loudly.

cache: false because the dependency-less fixtures have no go.sum, and actions/setup-go with caching errors when **/go.sum matches nothing. Caching is actions/setup-go behavior, not what this self-test proves.

Why now

This closes the self-test gap #52 shipped with and lets the v1 retag be proven, not hopeful. Sequence: merge this → retag v1 → archon #145 Phase 3 consumes the Go lane via @v1.

Verification

Local (Windows, Go 1.26.3), with fixtures staged so git ls-files discovery is realistic:

discovery -> test/fixtures/go/{alpha,beta,excluded}
alpha:    go build/vet/test -> ok  example.com/selftest/alpha
beta:     go build/vet      -> ok  (no test files, exit 0)
excluded: go build          -> FAIL: undefined: undefinedOnPurpose (exit 1)  # proves exclusion is a real assertion
  • actionlint v1.7.12 on self-test-go.yml + go-ci.yml → clean.
  • The authoritative build/vet/test on the ubuntu lane is this PR's own Self-test (go lane) check.

Scope boundary

This proves discovery + build/vet/test + exclude-modules. The generate-command/verify-generated drift path (trivial git status --porcelain shell) is left unexercised here; archon #145 Phase 3 is its real-world consumer and will prove it in that PR's CI.

Docs / Changelog

.changelog/unreleased/55-go-ci-selftest.md added. Fixtures documented in test/fixtures/go/README.md.

Linked Issue

Closes #55

go-ci.yml shipped (#52) with no execution test -- self-test.yml only runs vitest over the classifier. This adds self-test-go.yml, which calls go-ci.yml via a local (./) reusable ref against fixture modules under test/fixtures/go/, proving discovery, go build/vet/test, and exclude-modules actually run in Actions.

The excluded fixture is intentionally non-compiling and passed via exclude-modules, so a green run self-validates that exclusion skips it (a regression would build it and fail loudly). cache:false because the dependency-less fixtures have no go.sum.

Refs #55

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ArchonVII
ArchonVII merged commit b973ced into main Jun 7, 2026
1 check passed
@ArchonVII
ArchonVII deleted the agent/claude/55-go-ci-selftest branch June 11, 2026 02:32
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.

ci: go-ci.yml has no workflow-level self-test (only the classifier is unit-tested)

1 participant