This document tracks the current status of decisions having to do with developing the KCC project. If a decision needs to be made or changed, please file an issue for that decision to be made.
| Short Name | Brief Description | Date of Decision | Status | Link to More Details |
|---|---|---|---|---|
| Labels in Direct Resources | Use Kubernetes metadata.labels as the single source of truth for GCP labels (for now). Remove labels from Spec. |
2025-10-09 | Current | Link |
| Server Generated ID | Use status.externalRef for server-generated IDs. For migrated resources, continue writing to spec.resourceID for compatibility if status into spec is set to merge. |
2025-12-03 | Current | Link |
| Structured Diff Output | Ensure Direct controllers have a structured diff output during reconciliation and support safer upgrade. | 2026-01-01 | Current | |
| Start Reconcile Field | All Direct controllers should have a status.startReconcile field populated when reconciliation begins and which is cleared when reconciliation finishes. |
2026-01-01 | Proposed | |
| Graceful Orphan Deletion | Allow deletion of resources when parent dependencies are missing by using status.externalRef instead of resolving from spec. |
2025-10-03 | Proposed | Link |
| Ignore Unspecified Fields | Use annotation cnrm.cloud.google.com/default-to-gcp-fields to preserve GCP values for unspecified fields in spec. |
2025-09-09 | Proposed | Link |
| Stateful Reconciliation | Use status.lastModifiedCookie to store hashes of applied spec and observed GCP state to detect changes and drift efficiently. |
2025-09-30 | Deprecated | Link |
| Change Cookies | Use cnrm.cloud.google.com/last-changed-cookie annotation to store hashes for stateful reconciliation in Direct controllers. |
2026-02-19 | Current | Link |