Repository navigation
🤖 feat: complete the workspace pool how-to (#153 PR 16b) - #463
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Dogfood for plan row 16: Desktop (1440 px): Mobile (390 px). The cleanup table scrolls sideways, like the other tables on the site: |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9467893451
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review Both findings are fixed in fa794ec. The Autoscale section now says that the CRD refuses a |
|
Codex Review: Didn't find any major issues. Breezy! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review New commit: step 4's idle reaping warning now says that |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Change-Id: Ia92306597cb8a76928b2f01da4ceb55fa53915ef Signed-off-by: Thomas Kosiewski <tk@coder.com>
…on (#153) Change-Id: Ibc422eb3e3f495572d1c17c265b110f5ce259e6a Signed-off-by: Thomas Kosiewski <tk@coder.com>
… status notes (#153) Change-Id: I94d6734f86732c15b72c907b1c89de6a9177f019 Signed-off-by: Thomas Kosiewski <tk@coder.com>
…he workspaces of waiting claims (#153) Change-Id: Id3286f5c37357055045a339aed0bf88514b0f83d Signed-off-by: Thomas Kosiewski <tk@coder.com>
Change-Id: I003b16cd1e63aabf22fa728fcb5c4441387c0c2f Signed-off-by: Thomas Kosiewski <tk@coder.com>
#153) Change-Id: I22351fefbf75e89def0636b6351aafda7213817e Signed-off-by: Thomas Kosiewski <tk@coder.com>
4cbd241 to
166ec59
Compare
|
@codex review Rebased on main 8296834 (#464). New commit 166ec59: the |
|
Codex Review: Didn't find any major issues. Keep it up! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
…arning (#153) Change-Id: I3ac51852d7576c994eeb066f9b3934c7cd1f4c62 Signed-off-by: Thomas Kosiewski <tk@coder.com>
|
@codex review New commit 6e527b0 removes a wrong claim from step 4's idle reaping warning. Coder v2.37.3's agent stats path calls |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |









Summary
The workspace pool how-to is now the complete guide that plan row 16 of #153 asks for. It adds a section on autoscaling (
kubectl scale, HPA, KEDA scale to zero, and GitOps with an autoscaler), a cleanup table with one row per case, security notes, a link to troubleshooting, and the #451 warning for kept Share workspaces. This is plan PR 16b, the last PR of #153. PR 16a (#453) added the GitOps health rules and the troubleshooting section.Background
The how-to grew one PR at a time. Autoscaling had one paragraph inside "Create a pool", cleanup was four bullets, and threat notes were spread over several sections. Plan row 16 asks for autoscaling recipes, cost, cleanup behavior per case, and threat notes in one guide. #153 can close only when every item of the issue and every plan row is on
mainor is a tracked follow-up issue (checklist below).Implementation
Most changes are in
docs/how-to/workspace-pools.md. Steps 1 to 6 keep their headings, so existing links stay valid.kubectl scaleexample and 🤖 tests: pool Kind phases P10 to P12: scale to 0, KEDA cron autoscaling, active-version rollout (#153 PR 15b) #452's autoscaler paragraph with its Kind result. It also explains:Externalmetric and the target typeAverageValue, and why aValuetarget fails on the pool's selector,cooldownPeriodis 300 s by default), with acronScaledObject like the one that the Kind test runs,spec.replicasout of Git, or use Argo CDignoreDifferencestogether withRespectIgnoreDifferences=true(without that option, Argo CD writes the field back at each sync).maxWorkspacescounts per control plane (moved from the Share warning, because it holds for every mode), and links 🤖 perf: pool members read GET /api/v2/users/me on every workspace read, doubling the request budget #443.replicas, changing inputs, losing consent, idle reaping, a used member, a renamedkwp-workspace, and deleting the control plane. It ends with thekwp-audit. The namespace row adds that the control plane in that namespace is deleted too, so members that have not deleted their workspaces yet release without a Coder call.last_used_atis best-effort (plan section 16, line 783(d)), and step 3 points to it forUsed. Coder v2.37.3 drops a batch oflast_used_atupdates when its database write fails (coderd/workspacestats/tracker.go,flushclears the set before the write, every 60 s by default).AgentLostrow introubleshooting.mdnow says that while Coder is unreachable, the member waits: a failed read keepsAgentNotReadyand its 5 min, andAgentLostcomes with the first successful read after the 5 min (behavior from 🤖 fix: bound a stored bind target, and keep AgentNotReady across failed reads (#153 plan section 16) #464, wording from its verifier).troubleshooting.mdandgitops.md:dormantonly by default. One request with the owner's credentials counts as a use, for example a password login, or an API token request for a service account, which cannot log in. Step 1 of the how-to says the same.spec.replicasraises the generation.Readycondition's generation.#153 closure checklist
Issue items:
kubectl scale, HPA, and KEDA:CoderWorkspacePool(Design B), activated in 🤖 feat: activate CoderWorkspacePool, CoderWorkspacePoolMember, and CoderWorkspaceClaim (#153 PR 12) #441. KEDA is tested in Kind in 🤖 tests: pool Kind phases P10 to P12: scale to 0, KEDA cron autoscaling, active-version rollout (#153 PR 15b) #452.strategy: Prebuilds, tracked in 🤖 CoderWorkspacePool: strategy Prebuilds after an upstream per-preset count API #459.Plan rows (
workspace-13.mdsection 11):CoderWorkspacePooltypesCoderControlPlane.spec.workspacePoolsEarlier plan section 16 entries that the #463 verifier found open:
AgentLosttimer of a member withAgentNotReadylast_used_atis best-effortUsedstatus.bindExtendDeadlineto a freshnow + max(template default TTL, 30 min)before use (status.lastExtendTimeno longer decides an extension)Deferred items (plan section 16), one tracked issue each: #455 (per-user pools), #456 (owner token in a Secret), #457 (Prometheus metrics), #458 (
retainfor members), #459 (strategy: Prebuilds), #460 (claim wait timeout), #461 (dedicated provisioner recipe), #462 (shipped admission policy).Open follow-ups from the stack: #443, #444, #448, #449, #450, #451, #454.
Validation
make verify-vendor,make build,make lint,make test,nix develop -c make docs-check,markdownlint-cli2 "docs/**/*.md", andcspellwith the CI versions.make docs-serveand took agent-browser screenshots of the new sections at 390 px and 1440 px. They are in a comment below.Risks
Fixes #153
Generated with
xum• Model:anthropic:claude-opus-5-5• Thinking:xhigh