Problem
Aggregated API watches for coderworkspaces and codertemplates do not work for standard clients:
- LIST responses carry no
resourceVersion.
- With the
WatchList feature gate on (default since Kubernetes 1.34, vendored apiserver v0.35.0), a watch with resourceVersion "" or "0" becomes sendInitialEvents=true. Storage rejects that with 400 (validateUnsupportedWatchListOptions). apiserverapp/watch_options_integration_test.go pins this.
- So
kubectl get -w and plain client-go informers never hold a watch. They relist with backoff. Changes made directly in Coder never produce watch events in any namespace, because only writes through this apiserver feed the broadcaster.
The final assessment of #214 found this. It predates #214, and #214 left Watch unchanged.
Proposal (to be designed)
Return a meaningful list resourceVersion and support watch-list or real watch semantics, or document that watches are not supported and clients must poll.
Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: medium
Problem
Aggregated API watches for
coderworkspacesandcodertemplatesdo not work for standard clients:resourceVersion.WatchListfeature gate on (default since Kubernetes 1.34, vendored apiserver v0.35.0), a watch withresourceVersion"" or "0" becomessendInitialEvents=true. Storage rejects that with 400 (validateUnsupportedWatchListOptions).apiserverapp/watch_options_integration_test.gopins this.kubectl get -wand plain client-go informers never hold a watch. They relist with backoff. Changes made directly in Coder never produce watch events in any namespace, because only writes through this apiserver feed the broadcaster.The final assessment of #214 found this. It predates #214, and #214 left
Watchunchanged.Proposal (to be designed)
Return a meaningful list
resourceVersionand support watch-list or real watch semantics, or document that watches are not supported and clients must poll.Generated with
xum• Model:anthropic:claude-opus-5-5• Thinking:medium