Cleanup follow-ups after #419: display-name delete proofs, legacy backfill, reason wording

クローズ
#422 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
22/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
go, kubernetes

調査の方向性

Read the #419 diff first: it is the precedent for every item here. For item 1, follow the CoderAIProvider sweep for records without a provider ID and the CoderMCPServer live delete path; they should stop deleting on a display-name match and instead keep the record, emit coder_k8s_cleanup_records_unmatched and a ManualCleanupNeeded Event. Item 4 copies the MCP database-switch check so CoderAIProvider reports CoderDeploymentChanged rather than DeletedExternally. Items 2, 3 and 5 need the record/config linking logic before they can be scoped; item 6 is closed, so don't touch it.

索引モデルが issue の本文から書いたものです。

説明

Cleanup gaps that remain after #419 (which fixes #353). Each one exists on main before #419 or is a documented limit of it. An independent verifier reproduced items 1 and 3 on main.

  1. Display-name proofs on delete. The CoderAIProvider sweep (for a record without a provider ID) and the CoderMCPServer live delete path still remove a resource whose display name matches the operator's temporary display name. Display names are editable in Coder, so a resource that a person renamed to that pattern can be removed. #413 and #419 adopted the rule "a record without a recorded ID never deletes" for provisioner keys and the MCP sweep. Apply the same rule here: keep the record, surface it (coder_k8s_cleanup_records_unmatched, ManualCleanupNeeded Event), and document manual cleanup.
  2. An MCP config whose slug and display name were both edited after a lost create answer has nothing left that links it to its record. The sweep drops the record and the config stays in Coder.
  3. Legacy-config backfill. A config made by an older operator version can end up without a record. This happens when the buildinfo read or the record write fails, and then the DELETE fails during the one bounded delete attempt while the control plane is being deleted. Codex thread: https://github.com/coder/coder-k8s/pull/419#discussion_r4427958297
  4. CoderAIProvider reports DeletedExternally after a database switch, where CoderMCPServer now reports CoderDeploymentChanged. Nothing leaks, but the reason misleads. Copy the MCP check.
  5. An MCP server whose status lost its config ID stalls with SlugConflict on its own config. Its delete still uses the recorded ID.
  6. #362 items 1 and 4 are closed by decision: the control plane hold never ends early, because no signal proves that no dependent cleanup is in flight. Two attempts in #410 were rejected for this reason. Reopen only with such a signal.

Refs #353, #419, #410


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high

主要言語
Go
スター
5
フォーク
3
平均マージ
2時間 49分
マージ済み PR(30日)
206

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

coder/coder-k8s のほかの issue

coder/coder-k8s の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。