Single source of truth for all .proto contracts in the Duke-ECE
managed-agents project. Generated Go code is committed under gen/go/, so
consumers only need go get — no protoc/buf setup required.
proto/<package>/<version>/*.proto # the contracts
gen/go/<package>/<version>/ # generated Go, committed — do not edit by hand
go get github.com/Duke-ECE/protos@latest # or pin a tag, e.g. @v0.1.0import v1 "github.com/Duke-ECE/protos/gen/go/sandbox/v1"- Edit / add files under
proto/. buf lintandbuf generate(requiresbuf,protoc-gen-go,protoc-gen-go-grpc).- Commit both the
.protoand the regeneratedgen/go/— CI fails if they drift. - Breaking changes are rejected in CI (
buf breakingagainst main). Additive changes (new RPCs, new fields) are fine within the samevNpackage; anything breaking needs a new package version (v2).
Tags follow semver: v0.x.y while the APIs stabilize, v1.0.0 once they do.
Bump the patch/minor tag after merging additive changes so consumers can pin.