Skip to content

CoderMCPServer delete and RBAC test follow-ups #378

Open

Description

@ThomasK33

Follow-ups from the final assessments of #368 (CoderMCPServer delete path), #376 (test S9) and #377 (test S11). None blocks the activation. Line numbers refer to main after #368.

Delete path

  1. A marker-only object waits forever when its pinned Coder organization is deleted while the control plane lives. With only a create marker (no status.configID), the delete reads the organization's MCP server configs (findMCPServerSlug, internal/controller/codermcpserver_controller.go:492). Any list error, including Coder's own 404 for the deleted organization, gives CoderUnavailable, so the finalizer stays. Fix: treat Coder's own 404 on that list (isCoderResourceNotFound) as absence. A proxy 404 must still wait.
  2. Missing tests:
    • No operator access on delete: the wait branch at internal/controller/codermcpserver_delete.go:61.
    • A marker-only delete when the operator is not a site owner: internal/controller/codermcpserver_delete.go:107.
    • A marker-only delete when the config list fails.
  3. A manual finalizer removal leaves the object's sentCredentials entry in memory until the operator restarts. The entry holds only hashes, not values. The release path removes it, but a hand-removed finalizer skips that path.

RBAC test S9 (#376)

  1. S9 reads only config/rbac/role.yaml. It must scan every config/rbac/*.yaml for rules that reach core Secrets, and also pin config/rbac/clusterrolebinding.yaml, so a new Role or binding cannot widen Secret access without a golden-copy change.

Admission test S11 (#377)

  1. The comment of TestCoderMCPServerStatusPolicy says the policy "denies the status writes of every other test". It denies only status writes of CoderMCPServer objects. Correct the comment.

Refs #155


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

Activity

  1. self-assigned this
    on Oct 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions