v0.3.1
Bug-fix follow-up to the 0.3.0 Kubernetes config plane, closing the four issues
surfaced in k8s smoke testing on a fresh 0.3.0 deploy. The PROSPERO_FLEET=k8s
fleet now stays Ready through a schema-skewed custom resource, surfaces the
registered Workspace CRs it manages (instead of a synthetic phantom), and
rejects an unregisterable workspace up front. Local behavior is unchanged.
Fixed
- A single un-deserializable
CalibanTaskno longer wedges the whole fleet.
K8sFleet's watch/readiness path listedCalibanTasks strictly, so one CR
that failed to deserialize (e.g. a stale task predating the now-required
workspaceReffield) failed the entire poll — the fleet never populated,
/readyzstuck at503, and the pod never becameReady. The list is now
decoded per-item, skipping and logging the bad CRs
(#148)
(#152). - The k8s fleet snapshot reconciles with the
Workspaceregistry.
GET /api/fleetsynthesized a single phantomk8sworkspace and never read
the registeredWorkspaceCRs, so a registered workspace was invisible in the
dashboard while the synthetick8sentry reportedworkspace not registered.
The snapshot now surfaces the registeredWorkspaceCRs (agents grouped by the
workspace they reference), so/api/fleetand/api/workspacesagree and a
fresh deploy shows no phantom
(#149,
#151)
(#153). - Add-workspace rejects an invalid workspace as
400, not a raw apiserver
422. The dashboard's+ add workspaceposted aWorkspacewith empty
providers/sources, which the CRD (minItems: 1on both) rejected — so a
workspace could never be registered from the dashboard. The config plane now
validates at least one well-formed source and provider before apply (add and
edit paths), and the form validates the same client-side
(#150)
(#154).