Skip to content

Operational Playbook

llms.txt lists every page for an agent
Optional: hand this page to your coding agentThe steps work by hand too.
Show the whole prompt
Read https://intentius.io/chant/lexicons/gcp/operational-playbook/.
Run `npx chant lint src/` and `npx chant build src/ --output manifests.yaml`, and fix each WGC finding they report.
For a resource I say is stuck, read the status and events I paste from `kubectl describe` and tell me the cause from the page's tables and the fix.
Open a pull request with the fix. Do not run `kubectl apply` or `kubectl delete` against a cluster.
Never deploy to a real cloud account or shared environment (with `chant run`, `chant components` or a platform's own CLI), approve (a pull request review, `chant approve` or `chant run approve`), override a policy denial (`chant approve policy-override`), or merge; never cut or publish a release (`chant release cut --yes` or `chant release publish`), push or delete a `ci/*` tag (`chant ci tick` pushes them), or change the value of an existing flag; never touch `.chant/allowed_signers` or `chant/lifecycle`.

This playbook covers chant-built Config Connector manifests from build to troubleshooting.

StepCommandWhat it catches
Lint sourcechant lint src/Hardcoded project IDs (WGC001), regions (WGC002), public IAM (WGC003)
Build manifestschant build src/ --output manifests.yamlPost-synth: missing encryption (WGC101), public IAM (WGC102), missing project annotation (WGC103), 14 more checks
Server dry-runkubectl apply -f manifests.yaml --dry-run=serverK8s API validation: CRD schema errors, admission webhooks
Terminal window
# Build
chant build src/ --output manifests.yaml
# Diff before applying
kubectl diff -f manifests.yaml
# Dry run
kubectl apply -f manifests.yaml --dry-run=server
# Apply
kubectl apply -f manifests.yaml
Terminal window
# List all Config Connector resources
kubectl get gcp -A
# Check specific resource status
kubectl describe storagebuckets.storage.cnrm.cloud.google.com my-bucket
# Watch for status changes
kubectl get gcp -A -w
StatusMeaningDiagnosticFix
UpToDateResource in syncNone needed—
UpdatingApplying changeskubectl describe → EventsWait for completion
UpdateFailedGCP API errorkubectl describe → EventsCheck IAM permissions, quota, API enablement
DependencyNotReadyWaiting for refkubectl get gcpEnsure referenced resource exists and is UpToDate
DeletionFailedCannot deletekubectl describe → EventsCheck IAM permissions, child resource dependencies
SymptomCauseResolution
Resource stuck in UpdatingMissing GCP APIEnable API: add Service resource or gcloud services enable
Permission deniedService account lacks IAM roleGrant role to Config Connector SA
Resource recreated on every applyMissing deletion-policy annotationAdd cnrm.cloud.google.com/deletion-policy: abandon
Namespace not foundConfigConnectorContext missingCreate ConfigConnectorContext in namespace
Cross-project reference failsMissing project annotationAdd cnrm.cloud.google.com/project-id annotation
CommandDescription
chant build src/Synthesize manifests
chant lint src/Check for anti-patterns
kubectl apply -f manifests.yamlApply to cluster
kubectl get gcp -AList all Config Connector resources
kubectl describe <resource>Check reconciliation status
kubectl delete -f manifests.yamlRemove resources

chant