Conversation
Major restructuring that adds Bazel 9 build support and replaces the old shell-based golden test infrastructure with a proper in-process Go test. The gen/go-golden directory is gone. The checked-in gen/go/*.pb.mcp.go files ARE the golden files now. TestGoldenGeneration rebuilds them from compiled proto descriptors (patched with source_code_info from a buf-built FileDescriptorSet) and diffs against the checked-in copies. Works in both Bazel and go test, no shell, no protoc, no buf at test time. Other changes in this batch: - Extract core schema logic into pkg/gen (reusable library, independent of protoc plugin machinery) - Add dynamic/reflection-based MCP registration (gen.RegisterService) - Edge case protos and tests for deep nesting, all scalar types, map variants, multiple oneofs, numeric validation - Conformance test framework for Anthropic, OpenAI, Google Gemini - FixOpenAI improvements: handle repeated messages, map values, JSON names - Bazel BUILD files for all packages, MODULE.bazel, .bazelrc - Handler e2e tests, fuzz tests, extra properties integration tests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add bazelisk test job to GitHub Actions CI. Set size="small" on all three test targets to match their actual <1s execution time. Remove stale golden-files and buf-lint CI jobs, update justfile to run all tests including conformance/integration, clean up TODO and CLAUDE.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Enable nogo in the Bazel build with stdlib analyzers (nilness, errorsas, copylock, printf, etc.) and all staticcheck SA analyzers. Zero findings in our code. Consolidate the three separate CI jobs (go test, golangci-lint, buf-lint) into a single Bazel job on Blacksmith runners. nogo runs static analysis as part of the build, so linting and testing happen in one pass. No more fragile multi-job CI with separate tool setups. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
All three cache layers were disabled by default in setup-bazel, causing full rebuilds (~1100 actions) on every run. Enable bazelisk, disk, and repository caches. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
alenkacz
approved these changes
Mar 13, 2026
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Replace the multi-job Go CI pipeline (test + bazel + lint) with a single Bazel job that handles build, test, and static analysis via nogo.
Why
Three separate CI jobs each doing their own setup (Go, Buf, golangci-lint) is slow and redundant. Bazel with nogo runs everything in one pass with proper caching -- 38s warm vs 2min cold.
Implementation details
buildjob on Blacksmith 2-vCPU runner,bazelisk test //...does it allnogo_config.jsonexcludes third-party deps from analysis, disables false-positive analyzers (shadow, loopclosure)useblacksmith/setup-bazel@v1tools.goadded to pin staticcheck dependency for nogoReferences
Blacksmith setup-bazel: https://github.com/useblacksmith/setup-bazel