# proto: (field mask): invalid path "user..name"

- **ID:** `go/proto-field-mask-path-invalid`
- **Domain:** go
- **Category:** data_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

fieldmaskpb validation rejected a path with empty segments or names not present in the message descriptor.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| google.golang.org/protobuf v1.31+ | active | — | — |

## Workarounds

1. **** (92% success)
   ```
   fm := &fieldmaskpb.FieldMask{Paths: []string{"user.name", "user.email"}}
fm.Normalize()
if !fm.IsValid(msg) {
    return nil, status.Error(codes.InvalidArgument, "invalid field mask")
}
   ```
2. **** (85% success)
   ```
   md := msg.ProtoReflect().Descriptor()
for _, p := range fm.Paths {
    if !fieldMaskPathExists(md, p) {
        return nil, fmt.Errorf("unknown field: %s", p)
    }
}
   ```

## Dead Ends

- **** — Silently changes semantics; the Update RPC will apply the wrong field mask. (80% fail)
- **** — Loses protobuf descriptor validation and interop with other gRPC clients. (75% fail)
