diff --git a/clientdocs/README.md b/clientdocs/README.md index e24da15..c9b7679 100644 --- a/clientdocs/README.md +++ b/clientdocs/README.md @@ -28,6 +28,8 @@ running a Jenkins-to-Kubernetes workflow; same instantiation rule. It is the single end-to-end flow (cluster create -> kubeconfig -> deploy) and cross-links the CI guide and self-service guide for detail. + - `glossary.md` -- with every client; the shared plain-language reference for + the terms used across the pack. Same instantiation rule. - `scripts/` (the tenant starter kit) -- WITH the handover pack: `tenancy-audit.sh`, `smoke-test.sh`, `acceptance-run.sh`, and `ci-cleanup-sweep.sh` go to every client; `clouds.yaml.template` and @@ -73,7 +75,7 @@ Contents: `intake-form.md`, `welcome.md`, `self-service-guide.md`, `handover-pack.md`, `ci-integration-guide.md`, `jenkins-kubernetes-guide.md`, -`acceptance-checklist.md`, +`glossary.md`, `acceptance-checklist.md`, `ai-assistant-guide.md`, `tenant-skill/` (SKILL.md + references/), `scripts/` (starter kit: `tenancy-audit.sh`, `smoke-test.sh`, `acceptance-run.sh`, `ci-cleanup-sweep.sh`, `clouds.yaml.template`, diff --git a/clientdocs/ci-integration-guide.md b/clientdocs/ci-integration-guide.md index 78d1e46..34b5b80 100644 --- a/clientdocs/ci-integration-guide.md +++ b/clientdocs/ci-integration-guide.md @@ -62,6 +62,9 @@ identity_api_version: 3 cacert: +This block is delivered ready-to-copy as `scripts/clouds.yaml.template` in the +starter kit; edit that file rather than retyping the stanza. + Then in a pipeline step: export OS_CLOUD={{TENANT_SHORT_NAME}} diff --git a/clientdocs/glossary.md b/clientdocs/glossary.md new file mode 100644 index 0000000..f958665 --- /dev/null +++ b/clientdocs/glossary.md @@ -0,0 +1,89 @@ +# Omega Cloud -- Glossary (TEMPLATE) + +TEMPLATE NOTE (removed before delivery): fields written as {{THIS}} are filled +in by us per client. + +Plain-language definitions of the terms used across your document pack. Each +guide gives you a workflow; this is the shared reference for what the pieces +are. Terms are grouped, not alphabetized, so related ideas sit together. + +## Your tenancy + +- Domain: your private, isolated boundary on the platform. Nothing inside it is + visible to any other client, and vice versa. Your whole tenancy lives in one + domain. +- Project: a container for resources (servers, networks, volumes, clusters) + inside your domain, with its own quota. You are delivered one production + project. +- Quota: the capacity envelope for a project -- how many instances, cores, how + much memory, how many load balancers and floating IPs you may hold at once. + Requests beyond quota are refused; changing it is a request to your account + contact, not self-service. + +## Your accounts (authoritative details in the Handover Pack) + +- `{{TENANT_SHORT_NAME}}-domain-admin`: manages your team's users, projects, and + role grants inside your domain. Identity work only, not workloads. +- `{{TENANT_SHORT_NAME}}-cluster`: the only account that creates and deletes + Kubernetes clusters, using its password. It owns the cluster SSH keypair. +- `{{TENANT_SHORT_NAME}}-svc`: the automation account. All scripted and day-to-day + work authenticates as this account's application credential. +- Application credential: a scoped, revocable secret tied to the `-svc` account. + Automation uses it instead of a password; it can be revoked without touching + the account. It cannot create Kubernetes clusters. + +## Networking + +- External network (`provider-ext`): the shared network that carries traffic to + and from the outside world. You attach floating IPs from it. +- Floating IP: a routable address you allocate from the external network and + attach to a server or load balancer to make it reachable. It counts against + your quota even while unattached, so release ones you are not using. +- Network / subnet / router: your private network, the address range on it, and + the device that connects it to the external network. You create these inside + your project. +- Security group: a set of firewall rules controlling what traffic reaches your + servers. +- Load balancer: distributes traffic across several backends behind one address. + A Kubernetes LoadBalancer Service creates one automatically (see below). + +## Compute and images + +- Instance (server): a virtual machine in your project. +- Flavor: a machine size (CPU, memory, disk). You choose one when creating a + server or a cluster; list them with `openstack flavor list`. +- Image: the operating-system or Kubernetes image a server or cluster boots + from. The platform provides shared base images. +- Keypair: the SSH key used to reach servers. For clusters, the keypair is owned + by the `{{TENANT_SHORT_NAME}}-cluster` account. + +## Kubernetes + +- Cluster template: the recipe (image, flavors, network driver, options) a + Kubernetes cluster is built from. On this platform, templates must use the + calico network driver, and must not set the Public or Hidden flag. +- Kubernetes cluster: a managed set of control and worker nodes running in your + project. You create it once and deploy into it many times. +- kubeconfig: the certificate-bearing file that grants access to a cluster's + Kubernetes API. Treat it like a password. +- LoadBalancer Service: a Kubernetes Service that asks the platform for a real + load balancer and floating IP, so an app inside the cluster is reachable from + outside. Each one draws a load balancer and a floating IP from your quota. +- Ingress controller: a single LoadBalancer Service that routes to many internal + Services by hostname or path -- one load balancer instead of many. + +## Access and trust + +- API endpoint: the address your tools authenticate against (the identity + service). Your specific URL is in the Handover Pack. +- Dashboard: the web console for your tenancy. Its URL is in the Handover Pack. +- Region: the named location your resources live in; some commands take it. +- CA bundle: the certificate file that lets your tools trust the platform's TLS + certificates. Point your tools at it; never disable certificate verification. +- Catalog: the platform's own list of service endpoints. Discover endpoints from + it (`openstack catalog list`) rather than hardcoding them. +- Secrets / certificates store: where you keep application secrets and TLS + certificates for your project, referenced by your load balancers and apps. + +For anything not defined here, or a change to your tenancy, contact +{{ACCOUNT_CONTACT}}. diff --git a/clientdocs/handover-pack.md b/clientdocs/handover-pack.md index 413f902..7d3a619 100644 --- a/clientdocs/handover-pack.md +++ b/clientdocs/handover-pack.md @@ -36,6 +36,10 @@ called `admin` -- stop and report it to your account contact immediately; that is a platform incident, not a bonus. +This table is the authoritative statement of your accounts and their rights. +The other guides summarize it for their own workflow; if they ever seem to +disagree, this pack is correct. + ## 3. Reaching the platform - **API endpoint (identity service)**: `{{AUTH_URL}}` diff --git a/clientdocs/jenkins-kubernetes-guide.md b/clientdocs/jenkins-kubernetes-guide.md index 3807599..e3b4d74 100644 --- a/clientdocs/jenkins-kubernetes-guide.md +++ b/clientdocs/jenkins-kubernetes-guide.md @@ -546,6 +546,8 @@ `ci-cleanup-sweep.sh` (the backstop quota sweep). - Your tenant AI assistant kit: the Kubernetes, day-2 operations, and troubleshooting references, for step-by-step help in context. +- Glossary: plain-language definitions of every term used across your pack, if + a component in this guide is unfamiliar. For anything not covered here, or a change to your tenancy, contact {{ACCOUNT_CONTACT}}. diff --git a/clientdocs/scripts/Jenkinsfile.example b/clientdocs/scripts/Jenkinsfile.example index 2169933..4cf97c1 100644 --- a/clientdocs/scripts/Jenkinsfile.example +++ b/clientdocs/scripts/Jenkinsfile.example @@ -1,9 +1,16 @@ // Jenkinsfile.example -- declarative pipeline skeleton for your Omega Cloud // environment, following the CI/Automation Integration Guide. // -// What: smoke test -> the guide's worked sequence (via acceptance-run.sh) -// -> an always-runs cleanup, all authenticated with your application -// credential injected from the Jenkins credential store. +// Scope: this example authenticates to the cloud API with your APPLICATION +// CREDENTIAL and exercises the infrastructure acceptance sequence. It +// does NOT deploy an application into a Kubernetes cluster -- for that +// (a pipeline that uses a cluster's kubeconfig to deploy workloads), see +// the Jenkins + Kubernetes Implementation Guide, which carries its own +// ready-to-copy pipeline. +// +// What: smoke test -> an infrastructure acceptance build+teardown (via +// acceptance-run.sh) -> an always-runs cleanup, all authenticated with +// your application credential injected from the Jenkins credential store. // Setup (once, in Manage Jenkins > Credentials): add a "Username with // password" credential with id 'omega-cloud-app-credential', where // username = the application credential id and password = its secret, @@ -42,16 +49,19 @@ stage('Smoke test') { steps { // Token, catalog, quota -- fail fast before building anything. - sh 'bash clientdocs-starter-kit/smoke-test.sh' + sh 'bash scripts/smoke-test.sh' } } - stage('Worked sequence') { + stage('Infrastructure acceptance') { steps { - // The guide section-7 sequence with automatic teardown. - // Replace this with your own deployment steps once you have - // them; keep a trimmed version as a recurring smoke test. - sh 'bash clientdocs-starter-kit/acceptance-run.sh' + // The CI guide's worked sequence with automatic teardown -- an + // infrastructure smoke build (network, server, load balancer), + // NOT an application deploy. Replace it with your own + // automation steps, or keep a trimmed version as a recurring + // smoke test. To deploy an app into a Kubernetes cluster, use + // the Jenkins + Kubernetes Implementation Guide's pipeline. + sh 'bash scripts/acceptance-run.sh' } } } @@ -63,7 +73,7 @@ // (--prefix ci- --hours 24) as a separate scheduled job to catch // everything else your pipelines leak. always { - sh 'bash clientdocs-starter-kit/ci-cleanup-sweep.sh --prefix ci-accept- --hours 0 --apply' + sh 'bash scripts/ci-cleanup-sweep.sh --prefix ci-accept- --hours 0 --apply' } } } diff --git a/clientdocs/self-service-guide.md b/clientdocs/self-service-guide.md index ee9a594..0d8012c 100644 --- a/clientdocs/self-service-guide.md +++ b/clientdocs/self-service-guide.md @@ -13,6 +13,9 @@ | `-cluster` | Creating and deleting Kubernetes clusters; it holds the SSH keypair for cluster nodes | General automation, team logins | | `-svc` | Scripted/automated work via its application credential: networks, VMs, load balancers, day-2 operations | Kubernetes cluster create/delete | +The Handover Pack (section 2) is the authoritative list of your accounts and +their exact rights; the table above is the day-to-day summary. + Three rules that prevent the three most common self-inflicted outages: 1. **Kubernetes clusters are created with the `-cluster` account, logged in @@ -88,14 +91,24 @@ ## Kubernetes Log in as `-cluster` (password), pick the shared cluster template or -your own, and create the cluster. Node counts are limited by your quota. -The cluster gets its own load balancer for the API and can publish Services -of type LoadBalancer through the same mechanism. +your own, and create the cluster. The cluster gets its own load balancer +for the API and can publish Services of type LoadBalancer through the same +mechanism. -If you create your own template, leave the Public and Hidden checkboxes -unchecked: templates are project-scoped, publishing cloud-wide is -operator-only, and setting either flag makes the whole create fail with -the generic "Error: Unable to create cluster template." +Size the cluster against TWO limits, not one. Your quota is the first. The +second is the physical capacity free on the platform right now: a request +that is inside your quota can still fail to place a node, with a node stuck +in ERROR and "No valid host was found. There are not enough hosts +available." That is not a quota problem. Start small (one control node and +one or two workers), confirm it comes up, then scale the worker count up. + +If you create your own template, two rules keep the create from failing. +First, use the calico network driver -- do NOT choose flannel, which never +finishes coming up (the create sits in progress and the nodes never go +Ready). Second, leave the Public and Hidden checkboxes unchecked: templates +are project-scoped, publishing cloud-wide is operator-only, and setting +either flag makes the whole create fail with the generic "Error: Unable to +create cluster template." ## When you need us instead diff --git a/clientdocs/sweep-receipt.txt b/clientdocs/sweep-receipt.txt index 4331d87..ee0b29e 100644 --- a/clientdocs/sweep-receipt.txt +++ b/clientdocs/sweep-receipt.txt @@ -9,26 +9,27 @@ # Repo lint fails when any pinned file drifts, until clientdocs/ has been # reviewed for staleness and this receipt is re-recorded with: # bash scripts/repo-lint.sh --record-clientdocs-sweep -d405a782f1b783533580f3fc3ac7060bf1751b8617c1cdae70488ccef19699e9 clientdocs/README.md +0c3c922e6cdd83bdd325eae4d4a935adcd97f6b6c1ed298a1ecba410a77a85bd clientdocs/README.md b402dda98d3fe63f9b8a6b2798b86dc0c41a8e9348cdc197f32265c1e7267289 clientdocs/acceptance-checklist.md 30c46fd7644637c0a929bfdd195c451dff8cd0df6785cccf3a304a8422b82711 clientdocs/ai-assistant-guide.md -ae51da963d4d3704e6a1bd8613a243616ac22c0b973833b31f1bd22a40f3c66e clientdocs/ci-integration-guide.md -60c890b551e0a16d8d249fc809e2b561d44c6ec6121bf8a20f21e5fe6e2e9c60 clientdocs/handover-pack.md +2e394bd459aa59237c4d68afde64e6cd185c17a900dad42c40a974b02b225bc0 clientdocs/ci-integration-guide.md +2fff42f76839b73c9fd0df2e8ef21e05da02b8225a89cb80882521f9adc52887 clientdocs/glossary.md +6060d29108d742a04d5ec9d1151f4dcfacd52ef3979f057ceb60ea42fd91f06b clientdocs/handover-pack.md 3f08eb458bcbb36172a5ca2785a6ec72a69a4f8cd440fec53ed604f074b1b8c6 clientdocs/intake-form.md -bd54094610aed79687def82200f74b52e5be68fc004e0984ea19055d4aa2e9c4 clientdocs/jenkins-kubernetes-guide.md -96a077bb2e5732a0443683755bcefa044a603fe323024ca887165177e05c390b clientdocs/scripts/Jenkinsfile.example +415fa8a7e8609df3f75a7b4e32f987523dc98d50417977d86b08fa3d29b97d6f clientdocs/jenkins-kubernetes-guide.md +2acd231062e10b33864e3e350ace07a86eac831021825b739ed641f50149e3e3 clientdocs/scripts/Jenkinsfile.example 1955db5d789a2e48d9054e307fbec2678efc1fbafda18103caa389cb896701fd clientdocs/scripts/acceptance-run.sh c2a2ff7ad719cb5866b1b58f5ca2cac930ccc99b96efaf8a3f12301d645727d3 clientdocs/scripts/ci-cleanup-sweep.sh d45eb3738d7fb2742ea1a3abb5af464df8a96bfd4e6c2f56b7182b42f997b289 clientdocs/scripts/clouds.yaml.template 3dd17ab9e95d99bea0c9f36a2662e77d25ea9d691f8c60d1d314f237c7c3f655 clientdocs/scripts/smoke-test.sh 7667bb1d2ff1e315f8ecaa2b4f680d04978a79ceeeb8cc3f5e16de2b295b2205 clientdocs/scripts/tenancy-audit.sh -9dc67421cc8ad4248f7ce9924a1f49679a9b823131506e4c0eb31b12f6029723 clientdocs/self-service-guide.md -7644e527b6ce66804fa9e08315e51e06159a8feb525a8b7d1b8c9edf23e4a86a clientdocs/tenant-skill/SKILL.md +a5f1d96ed87e6ce9c8c4a84db57c3adf3b64ed9e3475c7710671e64e87626ec1 clientdocs/self-service-guide.md +3ee4cfd5e83b4179ff736dc14d1dc8fd51f6701d6c1b894033febce7aa2bb7f2 clientdocs/tenant-skill/SKILL.md c7708c35d1d5fceab763268f6a10ed214e23e9458018b115cb944b6a3168f182 clientdocs/tenant-skill/references/ci-automation.md 22e7ec9c16bc66fcd64264ee2fb9bd2f12076594d7702ffd94bff0f00ddc7713 clientdocs/tenant-skill/references/day2-operations.md 8dfbbb8c053c32c7a63ed58910366f4262fb1d0ac2935defc9c507233b1d96b0 clientdocs/tenant-skill/references/kubernetes.md b844e00610df813275779320a13ecc131525a89b052bd5c8ab522d7666eb4fad clientdocs/tenant-skill/references/troubleshooting.md -2135f05ccdd411ce707bc6ec54c61040284259142b4b388c0c94cae5f6e7efcb clientdocs/welcome.md +4af7bb2afd175863f89cc17dd9ebbdea337965d82d5c518270bbc5d100fa7dac clientdocs/welcome.md e00900e6d08d19c195edee6cab5d8198295a35371cd6333a50ca5ad28940b129 docs/tenant-onboarding-contract.md 64f99b638a1855b02180e907c9535db8bddc5847a502759a9e0d63c513b63077 policies/domain-manager-policy.yaml 02fe1fd7fcf07bfc6088622d4aa8430da53e435d60006d0b81f6b9c2e720a011 policies/overrides.zip diff --git a/clientdocs/tenant-skill/SKILL.md b/clientdocs/tenant-skill/SKILL.md index 42f804f..6df5761 100644 --- a/clientdocs/tenant-skill/SKILL.md +++ b/clientdocs/tenant-skill/SKILL.md @@ -35,6 +35,9 @@ | `{{TENANT_SHORT_NAME}}-cluster` | password | Kubernetes cluster create/delete; it OWNS the SSH keypair `{{TENANT_SHORT_NAME}}-key` | general automation, team logins | | `{{TENANT_SHORT_NAME}}-svc` | its application credential (`{{TENANT_SHORT_NAME}}-svc-cred`) | everything else: networks, VMs, volumes, floating IPs, load balancers, secrets, all scripted and day-2 work | Kubernetes cluster create/delete, identity work | +The Handover Pack is the authoritative statement of these accounts' exact +rights; this table is the operating summary. + Three rules that prevent the three most common outages: 1. Kubernetes clusters are created and deleted ONLY by the `-cluster` @@ -95,6 +98,9 @@ identity_api_version: 3 cacert: +This same block is delivered ready-to-copy as `scripts/clouds.yaml.template` +in the starter kit -- prefer editing that file over retyping it. + export OS_CLOUD={{TENANT_SHORT_NAME}} openstack token issue # smoke test: a token scoped to your project diff --git a/clientdocs/welcome.md b/clientdocs/welcome.md index c2e2fee..a296d1b 100644 --- a/clientdocs/welcome.md +++ b/clientdocs/welcome.md @@ -47,15 +47,35 @@ 1. This welcome letter -- the split of responsibilities. 2. The Self-Service Guide -- how to run your environment day to day. 3. The Handover Pack -- your identifiers, accounts, endpoints, and the - platform rules you acknowledge. + platform rules you acknowledge. This is the single reference for your + specific values (endpoints, account names, network identifiers); the + other guides point back to it rather than repeat them. 4. The CI/Automation Integration Guide -- if you connect pipelines or other automation. -5. The Acceptance Checklist -- run it once at onboarding to prove your +5. The Jenkins + Kubernetes Implementation Guide -- if you run a Jenkins + pipeline against a Kubernetes cluster; a single end-to-end workflow. +6. The Acceptance Checklist -- run it once at onboarding to prove your environment works. -The pack also includes a `scripts/` starter kit (referenced throughout -the guides) and, if your team uses an AI assistant, an AI assistant -guide with its skill package. +The pack also includes a Glossary (plain-language definitions of every +term used across the guides), a `scripts/` starter kit (referenced +throughout the guides), and, if your team uses an AI assistant, an AI +assistant guide with its skill package. + +## Going straight to a task? + +Each guide owns one workflow end-to-end, so you should not need to jump +between documents to finish a task. Start at the one for your goal: + +- Run day-to-day (networks, servers, load balancers, secrets, users): + the Self-Service Guide. +- Look up one of your own values (an endpoint, account name, or network): + the Handover Pack. +- Connect a pipeline or other automation to the cloud API: the + CI/Automation Integration Guide. +- Stand up a Kubernetes cluster and deploy to it from Jenkins: the + Jenkins + Kubernetes Implementation Guide. +- Prove the environment works: the Acceptance Checklist. ## House rules (the short version) diff --git a/docs/session-ledger.md b/docs/session-ledger.md index 178cf0e..f8cdd94 100644 --- a/docs/session-ledger.md +++ b/docs/session-ledger.md @@ -31,8 +31,8 @@ - **OPEN security rows:** SEC-001 (rotate at v1 close, re-ruled 2026-07-06), SEC-003 (custodians + second-person unseal -- DEFERRED; keeps d011-06 MANUAL), SEC-004 (flip repo to private at v1 close -- deferral reaffirmed). -- **Next-free numbers:** D = 076, DOCFIX = 124, BUNDLEFIX = 012. - (Seeded from the 2026-07-08 scan, post-addendum-41.) +- **Next-free numbers:** D = 076, DOCFIX = 125, BUNDLEFIX = 012. + (Seeded from the 2026-07-08 scan, post-addendum-43.) --- @@ -319,9 +319,13 @@ - **OPERATOR RULINGS (on return, 2026-07-08 PM) + status:** 1. devteam cluster: DELETE + DELIVER TEMPLATE ruled. DONE (addendum 42): TestCluster2 confirmed gone + devteam-k8s calico template delivered. - 2. Consolidation review M1-M7: ALL APPROVED to implement now. IN PROGRESS - (see docs/clientdocs-workflow-review-20260708.md). Ships under clientdocs - discipline; package re-instantiation for delivered files. + 2. Consolidation review M1-M7: ALL APPROVED. DONE (addendum 43, DOCFIX-124): + M5 error-holes in self-service-guide; M3 entry point + goal-map in welcome; + M1/M2 single-source-of-truth + pointers (softer than hard-delete -- flagged, + protects the AI skill + P2 test); M6 Jenkinsfile path/stage fixes; M4 new + glossary.md. Package re-instantiation for the changed set = next step. + FLAGGED: package handover-pack.md has unfilled {{CUSTODIAN_1/2}} (operator + value; pre-existing, devteam placeholder-custodian test). 3. Gated script fixes: BOTH approved -- offboard Phase-E0 always-403 fix + cred-.txt-file dashboard_url field. Build offline + harness; live verify gated. IN PROGRESS. diff --git a/docs/v1-redeploy-changelog.md b/docs/v1-redeploy-changelog.md index ab22fe5..84b2da5 100644 --- a/docs/v1-redeploy-changelog.md +++ b/docs/v1-redeploy-changelog.md @@ -3028,4 +3028,47 @@ - Numbers consumed: none (live op). REVERT: template only -- as devteam-svc: openstack coe cluster template delete devteam-k8s. Doc side: git checkout HEAD~ -- logs/as-executed-index.md docs/v1-redeploy-changelog.md docs/session-ledger.md. -Next-free after this push (per scan, keep this line unwrapped): D-076, DOCFIX-124, BUNDLEFIX-012. +### 2026-07-08 (addendum 43, jumphost stream) -- DOCFIX-124: clientdocs consolidation M1-M6 + shared glossary (M4); operator ruled ALL moves + +Operator ruled the whole consolidation proposal +(docs/clientdocs-workflow-review-20260708.md) in. Implemented under clientdocs +discipline; gauntlet 38/38, L7 receipt 31 files, repo-lint 0 fail. + +- **M5 (error-holes) -- self-service-guide.md:** the Kubernetes section now + carries the two rules that were only in the specialist docs: use the calico + driver (flannel never converges), and size to physical host capacity AND + quota (the "No valid host" symptom, not a quota problem, start small + scale). + These are the workflow holes that were causing client errors. +- **M3 (entry point) -- welcome.md:** the "read in this order" list now + includes the Jenkins+Kubernetes guide and names the Handover Pack as the + single value reference; added a "Going straight to a task?" goal-to-document + map so a client jumps to the one guide that owns their workflow. +- **M1/M2 (de-dup) -- interpreted as single-source-of-truth + pointers, NOT + hard deletion:** the tenant AI skill (SKILL.md) needs the account model and + clouds.yaml inline as operating context (it may not have the other docs + loaded), and ci-integration-guide.md's clouds.yaml block is coupled to the + clientdocs-scripts P2 test. So handover-pack.md section 2 is marked the + authoritative account reference; clouds.yaml.template is named the canonical + auth block; the copies in self-service-guide.md, SKILL.md, and + ci-integration-guide.md keep an audience-appropriate copy with a one-line + "authoritative source is X" pointer that resolves drift. (Flagged: this is + the softer reading of M1/M2; hard deletion is a quick follow-up if preferred.) +- **M6 (fixes) -- Jenkinsfile.example:** script paths corrected from the stale + clientdocs-starter-kit/ prefix to the delivered scripts/ layout; the + misleading "Worked sequence" stage renamed "Infrastructure acceptance" with a + comment clarifying it is an infra smoke build (not an app deploy) and a + cross-link to the Jenkins guide's deploy pipeline. +- **M4 (glossary) -- NEW clientdocs/glossary.md:** plain-language definitions of + every component across the pack (tenancy, accounts, networking, compute, + Kubernetes, access/trust), grouped by theme. Added to LEAK_FILES (leakage- + scanned), README Contents + Packaging (ships to every client), and + cross-linked from welcome.md and the Jenkins guide. Standard tokens only. +- **FINDING (operator, flag not fix): the delivered ~/devteam-package/ + handover-pack.md still contains literal {{CUSTODIAN_1}}/{{CUSTODIAN_2}}** -- + the custodian names were never filled at instantiation (consistent with + devteam's placeholder-custodian internal-test status, but a real handover + must fill them). Not touched -- operator's value to supply. +- Numbers consumed: DOCFIX-124. +REVERT: git checkout HEAD~ -- clientdocs tests/clientdocs-skill/run-tests.sh docs/session-ledger.md docs/v1-redeploy-changelog.md; rm clientdocs/glossary.md; then bash scripts/repo-lint.sh --record-clientdocs-sweep (re-pin receipt to 30 files). + +Next-free after this push (per scan, keep this line unwrapped): D-076, DOCFIX-125, BUNDLEFIX-012. diff --git a/tests/clientdocs-skill/run-tests.sh b/tests/clientdocs-skill/run-tests.sh index a1d2b9c..b181e60 100644 --- a/tests/clientdocs-skill/run-tests.sh +++ b/tests/clientdocs-skill/run-tests.sh @@ -67,6 +67,7 @@ LEAK_FILES=("${FILES[@]}") [[ -f "$REPO/clientdocs/ai-assistant-guide.md" ]] && LEAK_FILES+=("$REPO/clientdocs/ai-assistant-guide.md") [[ -f "$REPO/clientdocs/jenkins-kubernetes-guide.md" ]] && LEAK_FILES+=("$REPO/clientdocs/jenkins-kubernetes-guide.md") +[[ -f "$REPO/clientdocs/glossary.md" ]] && LEAK_FILES+=("$REPO/clientdocs/glossary.md") for s in "$REPO"/clientdocs/scripts/*.sh; do [[ -f "$s" ]] && LEAK_FILES+=("$s"); done LEAKS="$(grep -rniE "$LEAK_RX" "${LEAK_FILES[@]}" 2>/dev/null)" if [[ -z "$LEAKS" ]]; then