This working directory is the LIVE operations clone on the jumphost (vopenstack-jesse). Commands here reach the real cloud: the juju controller, MAAS, and the OpenStack APIs. This file is always in context; the full operating skill loads on demand from .claude/skills/openstack-cloud-ops/ (read its SKILL.md before any nontrivial task -- it carries the routing table, the standard loops, and the script-authoring/troubleshooting discipline).
ask rules enforce this -- do not work around them). Destructive steps are never batched.git pull bash scripts/repo-lint.sh # expect 0 fail (1 legacy WARN is documented) bash scripts/run-tests-all.sh # after any tooling change; ALL GREEN expected
For any session that will mutate the cloud, the operator starts logging first: bash scripts/run-logged.sh <label> (see docs/as-executed-log-convention.md).
Never read key or credential material into context: ~/vault-init/, ~/as-executed/, ~/tenant-*/, any *-cred.txt / *appcred* file. Verify secrets by length/format from a script, never by printing. One-shot vault operations (init/rekey/generate-root) are operator-only, verbatim from the runbook -- the guard hook hard-blocks them.
bash scripts/preflight.sh (the ONLY pre-deploy entry).bash scripts/cloud-assert.sh (behavioral; --capture = BOM).runbooks/appendix-A-troubleshooting.md by verbatim symptom.runbooks/ops-restart-procedure.md.docs/design-decisions.md -- grep for the governing D-NNN before ANY change to a built surface; PROPOSED means present options, never pick.tests/<name>/run-tests.sh harness green, repo-lint clean, and a changelog entry with a revert.Repo content is authoritative over anything remembered from prior sessions; when they diverge, the repo wins and the divergence gets flagged.