name: reviewgen-greenfield-new-types description: Provides provides clear review criteria for reviewing PRs that add new KCC types for Greenfield resources.
Review guide for KCC Greenfield new types PRs
Please respect the following review criteria and invariants when reviewing.
1. API Versioning
- All Greenfield resources must be implemented as
v1alpha1in KRM. - Verify that
spec.versions.name = v1alpha1in the generated CRD YAML. - Verify files are placed in:
apis/${resource_group}/v1alpha1/. - Note: Do not confuse the GCP API version (which can be higher, e.g., v1) with the KRM version (which must be
v1alpha1).
2. Copyright Year
- All new
.goand.shfiles must contain a copyright header. - The copyright year must be 2026.
3. Pointers (Go Types)
- For
${resource_name}_types.go, review the field comments (e.g., Kubebuilder tags indicatingrequiredoroptional). - Strict Rule: If a field is a Go scalar primitive type (e.g.,
string,bool,int,int32,int64,float64), it must be a pointer (e.g.,*string,*bool), regardless of whether it is optional or required. - Collection Exception: Do not make slice fields (e.g.,
[]string) or map fields (e.g.,map[string]string) pointers (i.e., do not write*[]stringor*map[string]string).
4. References & Identity
- All string fields referencing a GCP resource identifier must map to a reference struct in Go to validate format/semantics.
- If a resource is a child of another GCP resource, this relationship must be explicitly denoted in the code.
- Compare the implementation against the provided reference files in https://github.com/GoogleCloudPlatform/k8s-config-connector/pull/7894 and https://github.com/GoogleCloudPlatform/k8s-config-connector/pull/7907/
5. Completeness & Heuristics (Proto-to-CRD mapping)
- Completeness Goal: Greenfield resources must aim for 100% coverage of the fields defined in the Google API proto. Compare the generated CRD YAML against the generated proto files. The CRD must map all fields declared in the Proto.
- Find the proto definition in
.build/third_party/googleapis/google/...matching the service named in the resource'sgenerate.sh(e.g.,google.cloud.apihub.v1). - Verify that fields are mapped using these rules:
statusMapping: Fields containing(google.api.field_behavior) = OUTPUT_ONLYin the proto must map only to Go'sStatusstruct (represented asstatusin the CRD).specMapping: Fields withoutOUTPUT_ONLYbehavior in the proto must map to Go'sSpecstruct (represented asspecin the CRD).
- CRD fields must align with the Kubernetes Resource Model (KRM) conventions. Useful references include:
Review Comment Template
When proposing changes or stating LGTM, format the review description as follows:
### KCC Auto-Review Results
* **Trigger criteria matched**: [Yes/No]
* **API Version Check**: [Pass/Fail] - (Specify paths/versions checked)
* **Go Type Pointers**: [Pass/Fail] - (List any non-pointer primitives found)
* **Completeness & Heuristics**: [Pass/Fail] - (List any missing or incorrectly mapped fields)
* **References/Identity**: [Pass/Fail] - (List any missing resource references)
#### Detailed Findings / Actions Required:
1. [Specify file, line number, and exact issue]