Skip to content

feat(repo-required-gate): add first-class Go lane (go-ci.yml + stack=go/polyglot)#52

Merged
ArchonVII merged 2 commits into
mainfrom
agent/claude/51-go-ci-lane
Jun 7, 2026
Merged

feat(repo-required-gate): add first-class Go lane (go-ci.yml + stack=go/polyglot)#52
ArchonVII merged 2 commits into
mainfrom
agent/claude/51-go-ci-lane

Conversation

@ArchonVII

Copy link
Copy Markdown
Owner

Summary

Adds a first-class Go lane to the shared CI surface. repo-required-gate supported node/python/minimal/polyglot but had no way to build, vet, or test Go — a real consumer (ArchonVII/archon, 10 tracked Go modules) routed .go changes to language-ci while only node-ci ran (a false-green required check).

  • New reusable go-ci.yml — discovers every tracked go.mod via git ls-files (deliberately NOT a filesystem find: that catches gitignored build artifacts like dist/<scaffold>/go.mod and recurses into generated dirs whose conflicting package decls break go build ./...). Runs go build / go vet / go test per module. Optional setup-command, generate-command + verify-generated (dirty-tree drift check for committed codegen), exclude-modules, cgo-enabled, and build/test arg passthrough.
  • Classifierstack: go + runGoCi; polyglot generalized to a third language via go-paths; lane label lists active languages (e.g. code (polyglot: node+go)).
  • Gatego-* inputs, run-go-ci detect output, a go-ci job, and decision wiring.
  • Docs — standalone examples/go-ci.yml, a node+go polyglot example, a README row, and a changelog fragment.

Concrete Go support first; the languages: [<lang>] list-sugar + resolver refinement is deferred to a follow-up to keep this reviewable.

Verification

  • Classifier unit tests (TDD: 12 new, written failing first, then implemented)
  • actionlint on all changed/new workflows
  • Discovery + exclusion logic validated against the real archon tree

Verification Notes

  • npx vitest run116 passed (6 files), including 12 new Go cases (stack=go, polyglot node+go, node+python+go label ordering, push + forced-full events, all-empty-paths guardrail).
  • actionlint go-ci.yml repo-required-gate.yml examples/go-ci.yml examples/repo-required-gate.yml → exit 0.
  • Ran go-ci.yml's discovery + exclude-modules shell against C:\GitHub\archon: found all 10 tracked modules (root + tsunami + 8 tsunami/demo/*); exclude-modules: tsunami/demo/ correctly kept root + tsunami and skipped the 8 demos. (root + tsunami also go build/go vet clean on archon main.)
  • shellcheck is not installed locally; go-ci.yml's run: blocks carry # shellcheck disable=SC2086 for the two intentional word-split arg expansions.

Docs / Changelog

.changelog/unreleased/51-go-ci-lane.md added; README Generic-CI table updated; examples added/updated.

Linked Issue

Closes #51

Release note

Consumers (e.g. archon) can use the Go lane only after v1 is retagged (git tag -f v1 && git push -f origin v1) post-merge.

ArchonVII and others added 2 commits June 7, 2026 13:59
Add 'go' to valid stacks and a runGoCi output. stack=go routes code/package changes to the Go lane; polyglot gains a third language via go-paths, with the lane label listing active languages (e.g. node+python+go). Push and forced-full events include Go. 12 new classifier tests; full suite 116 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New reusable go-ci.yml discovers tracked go.mod roots via git ls-files (skipping gitignored build artifacts and generated dirs) and runs go build/vet/test per module, with optional setup/generate commands and a dirty-tree drift check. repo-required-gate.yml gains go-* inputs, a run-go-ci detect output, a go-ci job, and decision wiring. Adds standalone examples/go-ci.yml, a node+go polyglot example, a README row, and a changelog fragment.

Closes #51

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ArchonVII
ArchonVII merged commit 4455794 into main Jun 7, 2026
1 check passed
ArchonVII added a commit that referenced this pull request Jun 7, 2026
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 deleted the agent/claude/51-go-ci-lane 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: add first-class Go lane to repo-required-gate (go-ci.yml + go stack/polyglot)

1 participant