Repository navigation
docs(deploy): flag split-layout upgrades and fix routing namespace notes - #1415
Conversation
Dogfood upgrade from a split-layout install to a release with the shared tenant namespace: the k3d upgrade guide never sends the operator to the split-layout check, and the image helper's startup preflight does not run Compute preflight, so it stops OCC before the new API and worker refuse to start. Add that warning, say how to read the reference's inspection output, place dedicated Gateway routes in the tenant namespace (two-cluster keeps oce-gateways-<hash>), replace the unverified Envoy Gateway v1.9 requirement with the pinned v1.6.7, and name auth:maintain externalMethods keys as provider instances.
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs maintainer review before merge. Reviewed October 5, 2026, 4:23 PM ET / 20:23 UTC. ClawSweeper reviewWhat this changesThe PR adds a split-layout upgrade warning and corrects deployment documentation about Gateway namespaces, the tested Envoy version, and authentication provider-instance counts. Merge readiness✅ Ready for maintainer review Keep open: these focused corrections remain useful after the shared-namespace implementation merged; no actionable introduced defect was found. Likely related people: Kimiyu-186 and freeqaz, based on relevant merged source history. Priority: P3 Review scores
Verification
How this fits togetherOpenClaw Enterprise’s deployment guides help operators upgrade its control plane and configure private access to Agent workspaces. Kubernetes Compute determines workload placement and startup eligibility, while Envoy routes authorized requests to each Agent. flowchart TB
A[Operator prepares upgrade] --> B[Inspect tenant layout]
B -->|Split layout| C[Retain existing release]
B -->|Supported layout| D[Upgrade control plane]
D --> E[Kubernetes Compute]
E --> F[Agent tenant namespace]
G[Authorized workspace request] --> H[Private Envoy routing]
H --> F
Before mergeNone. Agent review detailsSecurityNone. Review metricsNone. Technical reviewBest possible solution: Keep upgrade stop conditions beside preparation steps and align routing and maintenance terminology with the existing runtime contracts. Do we have a high-confidence way to reproduce the issue? Not applicable to this documentation-only patch; the corrected claims are verifiable against current source, and no runtime reproduction was executed during this read-only review. Is this the best way to solve the issue? Yes: concise corrections in the existing operator guides and owning references address the observed documentation gaps without changing platform behavior. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 2442441f4c78. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
|
Problem
A dogfood upgrade of a launcher-built k3d install (main
ed6ade59c→2442441f4, which includes #925) and walks of the routing and auth-maintenance guides found these gaps:local-k3d-image-upgrade.mdnever sends the operator to the split-layout check in the Kubernetes Compute reference. The image helper's startup preflight only loads the Installation; it does not run Compute preflight. On an install that still hasoce-gateways-<hash>tenants, the helper would scale the API and worker to zero, and the new API and worker would then refuse to start.NAMESPACEcolumn; the new tenant's column was filled.workspace-routing.mdandreference/gateway-routing.mdstill place a dedicated Agent's HTTPRoute and gateway Service in a separate Gateway runtime namespace. After Share the tenant namespace for single-cluster Gateways #925, a single-cluster install keeps them in the tenant namespace. This was verified live: the dedicated Codex Agent'sgateway-<hash>Service and both HTTPRoutes were inoce-<hash15>. Only the two-cluster profile keepsoce-gateways-<hash>, in the control cluster (gatewayNamespace()in the Kubernetes Compute Driver).workspace-routing.mdrequires "Envoy Gateway v1.9". The launcher (internal/occdev/gateway_k3d.go), CI and the routing reference pin and test v1.6.7. The dogfood install runs v1.6.7, and private routing works there.auth-maintenance.mddescribes theexternalMethodsoutput as "per provider". The keys are actually provider instances, such asgithub:<hash>and severaloidc:<hash>keys on one install. The authentication reference calls theseproviderId.Change
local-k3d-image-upgrade.md: a prepare step that runs the split-layout check and says to keep the existing release when it finds split-layout tenants. It also states why the script cannot catch this.reference/drivers/kubernetes-compute.md: one sentence on how to read the inspection output.workspace-routing.mdandreference/gateway-routing.md: the tenant namespace, or for a dedicated Agent in the two-cluster profile, itsoce-gateways-<hash>namespace in the control cluster.workspace-routing.md: Envoy Gateway "tested with v1.6.7" replaces "v1.9".auth-maintenance.md:externalMethodsis keyed byproviderId. The rest of that diff is Prettier re-aligning the table.The same split-layout warning belongs in
upgrade-checklist.mdorproduction-upgrade.mdas well. Both are at the 2,500-word limit (2,499 and 2,500), so that is left for a split.Verification
scripts/upgrade-production-images:/readyzgap 18.3 s.2442441f4…. API and worker run the new digest.oce-gateways-*rows with an emptyNAMESPACEcolumn. The old tenants were deleted through OCC first. Afterwards the command lists one shared tenant with the column filled.workspace-routing.md:jqchecks passed. The two patches ran with--dry-run=serverand were no-ops.Accepted/Programmed/Ready.x-occ-identity(with and without a wrong key) got401. A valid key got200.auth-maintenance.md:statusfrom the installed controller image changed nothing (exit 0).purge-sessions --user <member> --writers-stoppedwhile writers ran: exit 2, nothing changed.purge-sessions --user <member>exited 0 and wrote anauthentication.sessions.purgeaudit row attributed tomaintenance:occ_migrator. Sign-in worked after scaling back up.node scripts/docs-site/word-count.mjs: no page over the hard limit (kubernetes-compute.md2,497).node scripts/docs-site/build.mjs --check: 241 pages, 3,739 links. Prettier passes on the touched files. Per the repository rules, no tests were run for a docs-only change.git merge-treeof each open PR touching these files against main and against this head): build(runtime): adopt paired-node Skill lifecycle and Codex 0.160.0 #1414, Support OpenAI-compatible Codex model endpoints #913, feat: assign configured OpenClaw roles to Agent users #906, Add an internal conditional event operation plan adapter #662, feat: authorize Agent OAuth before Kubernetes activation #252 and fix: recover production cutovers and protect email sign-in #14 have the same conflicted files and hunks either way. No new conflicts.Risks
Documentation only. The two-cluster wording follows the code. It was not exercised live, because that profile is experimental and not running here.