# protoc-gen-go: error: duplicate symbol "pb.User" in file "user.proto" and "user_v2.proto"

- **ID:** `go/proto-duplicate-symbol`
- **Domain:** go
- **Category:** build_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

Two .proto files declare the same fully-qualified message name (same package + message) and are compiled together, causing a symbol collision in generated Go code.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| protoc-gen-go 1.31+ | active | — | — |

## Workarounds

1. **** (95% success)
   ```
   Give each file a distinct proto package:
// user.proto
package pb.v1;
// user_v2.proto
package pb.v2;
   ```
2. **** (85% success)
   ```
   Use buf to detect and lint duplicate symbols across the workspace:
buf lint
buf breaking --against '.git#branch=main'
   ```

## Dead Ends

- **** — The collision is on the protobuf fully-qualified name, not the Go package; protoc still errors. (90% fail)
- **** — At link time the generated Go files still declare identical Go types and the Go build fails. (85% fail)
