diff --git a/docs/agent-environment-orientation.md b/docs/agent-environment-orientation.md index 8141340..6943375 100644 --- a/docs/agent-environment-orientation.md +++ b/docs/agent-environment-orientation.md @@ -78,6 +78,7 @@ Owner: railiance-platform (OpenBao) and ops-warden (the `warden access` lane). - Run the credential-routing check (`warden route find ""`) before requesting anything. See the "Credential and access routing" section in every repo's `AGENTS.md`. - **Never read a Secret with `-o yaml`, `-o json`, `describe`-style tools, or even `-o jsonpath='{.metadata}'`.** A Secret created with `kubectl apply` carries its full data in the `kubectl.kubernetes.io/last-applied-configuration` annotation, so a metadata read prints the secret. To test for the annotation without printing a value: `kubectl get secret -o go-template='{{ if index .metadata.annotations "kubectl.kubernetes.io/last-applied-configuration" }}HAS-ANNOTATION{{ else }}clean{{ end }}'` +- **Do not run any other go-template or jsonpath against a Secret.** On 2026-09-23 a template that only asked for `len .metadata.ownerReferences` failed because the field was absent, and kubectl printed the raw object, including `.data` and the last-applied annotation. A metadata-only template is not safe on that basis. The presence check above is the only template to use. - ExternalSecrets use ClusterSecretStores. The target pattern is **OpenBao Kubernetes auth**: one ServiceAccount per consumer, 15-minute tokens, and a policy scoped to exact paths. Five stores still use static `*-eso-token` Secrets, which expire. Do not re-run the old `*-eso-token-apply` scripts. ## 7. GitOps (ArgoCD) on railiance01