Skip to content

Remove ServiceClass user-facing surface (tools, CLI, scenarios) [1/4]#633

Merged
QuentinBisson merged 7 commits into
mainfrom
remove-sc-1-tools-cli
May 8, 2026
Merged

Remove ServiceClass user-facing surface (tools, CLI, scenarios) [1/4]#633
QuentinBisson merged 7 commits into
mainfrom
remove-sc-1-tools-cli

Conversation

@QuentinBisson
Copy link
Copy Markdown
Contributor

First of four PRs (see #632) for the full ServiceClass removal. After this PR, end users can no longer reach ServiceClass via MCP tools or CLI verbs, but the runtime, types, and CRD are still in place. The next stacked PR removes the runtime; the one after that removes the API types and CRD.

What's removed

MCP tools:

  • core_serviceclass_* (list/get/create/update/delete/available/validate)
  • core_service_create / _delete / _get / _validate

core_service_get overlapped with core_service_status on static services but also returned ServiceClass-only fields (Outputs, ServiceClassName, ServiceClassType). After this PR, core_service_status covers the remaining service inspection needs.

CLI subcommands:

  • muster create service ...
  • muster create serviceclass ...
  • muster check serviceclass ...
  • muster get serviceclass ...
  • muster list serviceclass ...
  • muster events --resource-type=serviceclass and --resource-type=service
  • muster test --concept=serviceclass

BDD scenarios:

  • 22 serviceclass-* scenarios (entirely about ServiceClass)
  • 19 service-create-* / service-delete* / service-get* / service-validate / service-lifecycle / service-persistence / service-restart / service-state-transitions / service-{start,stop}{,-already-*} scenarios — all required user-creatable service instances
  • 4 end-to-end scenarios that depended on ServiceClass: behavior-developer-onboarding-journey, example_with_mock, user-journey-platform-setup, workflow-conditional-service-check, workflow-run-with-serviceclass, reconciler-status-sync

Edits (not deletes):

  • Renamed service-get-non-existent.yamlservice-status-non-existent.yaml, switched to core_service_status
  • Four workflow-create*.yaml scenarios switched their probe step from core_serviceclass_list to core_workflow_list
  • mcpserver-service-management.yaml dropped its three core_service_get inspection steps (the equivalent core_service_status calls right after them already cover the same checks)

Out of scope (later PRs)

  • ServiceClass runtime (internal/serviceclass/, GenericServiceInstance, internal/reconciler/serviceclass_reconciler.go) — PR 2
  • ServiceClass API types and CRD (pkg/apis/muster/v1alpha1/serviceclass_types.go, helm/muster/crds/muster.giantswarm.io_serviceclasses.yaml) — PR 3
  • Helm RBAC narrowing — PR 3
  • Public docs sweep — PR 4

Verification

go build ./... && go vet ./... && gofmt -l .   # clean
make test                                       # green
muster test --parallel 50 --base-port 30000     # 118/118 passing
make helm-lint && make helm-test                # 44/44 passing

Closes part of #632.

QuentinBisson added a commit that referenced this pull request May 6, 2026
…tance, reconciler)

Second of four PRs (see #632). Builds on #633 (PR 1). After this PR the
ServiceClass runtime is gone — `GenericServiceInstance`, the
`internal/serviceclass` adapter, the `ServiceClass` reconciler, the
ServiceClass event generators, and the supporting test infrastructure
all leave the tree. The API types (`internal/api/serviceclass.go`,
`internal/api/serviceinstance.go`) and the CRD itself are still in
place; PR 3 takes those out.

Deleted:
- internal/serviceclass/ (entire package)
- internal/services/instance.go (GenericServiceInstance)
- internal/services/response_processor.go
- internal/reconciler/serviceclass_reconciler.go + test
- .muster/serviceclasses/*.yaml.example
- examples/serviceclass-*.yaml

Edited:
- internal/app/services.go: drop the ServiceClass adapter and
  reconciler registration (and the serviceclass import).
- internal/orchestrator/orchestrator.go: rewrite to remove
  CreateServiceClassInstance / DeleteServiceClassInstance /
  GetServiceClassInstance / ListServiceClassInstances /
  SubscribeToServiceInstanceEvents / generateServiceInstanceEvent /
  buildServiceInstanceEventMessage, the `instances` map and
  `instanceEvents` slice, `CreateServiceRequest`,
  `ServiceInstanceInfo`, `ServiceInstanceEvent`,
  `processServiceClassRequirements` (replaced with the slim
  `processAutoStartMCPServers`), and the dead `ToolCaller` field +
  Config.ToolCaller + Set/GetToolCaller (no remaining callers; the
  toolCaller value flows directly into the workflow adapter from
  internal/app/services.go).
- internal/orchestrator/api_adapter.go: rewrite. Drop
  convertToAPIServiceInstance, the ServiceClassInstance methods, and
  the ServiceClass-specific tool handlers; keep only the static-service
  surface.
- internal/orchestrator/doc.go: tight rewrite (was a 200-line
  ServiceClass-era artifact).
- internal/api/service.go: trim ServiceManagerHandler to the static-
  service surface (StartService / StopService / RestartService /
  GetServiceStatus / GetAllServices / SubscribeToStateChanges +
  ToolProvider). The CreateService / DeleteService / GetService /
  SubscribeToServiceInstanceEvents members are gone.
- internal/events/types.go, templates.go, generator.go: drop the
  ServiceClass and ServiceInstance event reasons / templates /
  generator + the `ServiceClass` field on EventData.
- internal/events/api_adapter.go: fix the user-visible
  resourceType description ("Filter by resource type (MCPServer,
  ServiceClass, Workflow, ServiceInstance)" → "... (MCPServer,
  Workflow)").
- internal/events/generator_test.go: drop the
  TestEventGenerator_ServiceInstanceEvent test (its target is gone).
- internal/testing/types.go: drop ConceptServiceClass,
  ServiceClassConfig, the ServiceClasses field on
  MusterPreConfiguration, and ExpectedServiceClasses on MusterInstance.
- internal/testing/muster_manager.go: drop
  extractExpectedServiceClasses{,FromInstance},
  checkServiceClassAvailability, the
  convertServiceClassConfigToCRDSpec chain, and the ServiceClass CRD
  generation block. Also drop checkServiceAvailability (calls
  now-nonexistent core_service_get) and
  extractExpectedServicesFromInstance (always returned empty), and the
  matching readiness-loop block.
- internal/testing/test_reporter.go: drop the ServiceClass section in
  the reporter.
- internal/testing/logger.go: drop the "serviceclass-" prefix trim in
  GenerateScenarioPrefix.
- internal/agent/test_mcp_handlers.go: drop the
  case "serviceclass" branches; align error message.
- internal/agent/test_mcp_server.go: drop "serviceclass" from concept
  flag descriptions.
- internal/agent/client.go: fix the CallToolJSON doc-comment example
  (was core_service_get — gone — now uses core_service_status).
- internal/agent/doc.go: fix the doc-comment examples (core_service_create,
  core_serviceclass_list — both gone) to use core_workflow_run /
  core_workflow_list.
- internal/workflow/executor.go: drop the
  "// This follows the same pattern as ServiceClass.ValidateServiceArgs"
  narrative comment.

Build, vet, gofmt, helm-lint all clean. muster test 118/118.
@QuentinBisson QuentinBisson force-pushed the remove-sc-1-tools-cli branch 2 times, most recently from d41f708 to e74fa98 Compare May 6, 2026 22:24
QuentinBisson added a commit that referenced this pull request May 6, 2026
…tance, reconciler)

Second of four PRs (see #632). Builds on #633 (PR 1). After this PR the
ServiceClass runtime is gone — `GenericServiceInstance`, the
`internal/serviceclass` adapter, the `ServiceClass` reconciler, the
ServiceClass event generators, and the supporting test infrastructure
all leave the tree. The API types (`internal/api/serviceclass.go`,
`internal/api/serviceinstance.go`) and the CRD itself are still in
place; PR 3 takes those out.

Deleted:
- internal/serviceclass/ (entire package)
- internal/services/instance.go (GenericServiceInstance)
- internal/services/response_processor.go
- internal/reconciler/serviceclass_reconciler.go + test
- .muster/serviceclasses/*.yaml.example
- examples/serviceclass-*.yaml

Edited:
- internal/app/services.go: drop the ServiceClass adapter and
  reconciler registration (and the serviceclass import).
- internal/orchestrator/orchestrator.go: rewrite to remove
  CreateServiceClassInstance / DeleteServiceClassInstance /
  GetServiceClassInstance / ListServiceClassInstances /
  SubscribeToServiceInstanceEvents / generateServiceInstanceEvent /
  buildServiceInstanceEventMessage, the `instances` map and
  `instanceEvents` slice, `CreateServiceRequest`,
  `ServiceInstanceInfo`, `ServiceInstanceEvent`,
  `processServiceClassRequirements` (replaced with the slim
  `processAutoStartMCPServers`), and the dead `ToolCaller` field +
  Config.ToolCaller + Set/GetToolCaller (no remaining callers; the
  toolCaller value flows directly into the workflow adapter from
  internal/app/services.go).
- internal/orchestrator/api_adapter.go: rewrite. Drop
  convertToAPIServiceInstance, the ServiceClassInstance methods, and
  the ServiceClass-specific tool handlers; keep only the static-service
  surface.
- internal/orchestrator/doc.go: tight rewrite (was a 200-line
  ServiceClass-era artifact).
- internal/api/service.go: trim ServiceManagerHandler to the static-
  service surface (StartService / StopService / RestartService /
  GetServiceStatus / GetAllServices / SubscribeToStateChanges +
  ToolProvider). The CreateService / DeleteService / GetService /
  SubscribeToServiceInstanceEvents members are gone.
- internal/events/types.go, templates.go, generator.go: drop the
  ServiceClass and ServiceInstance event reasons / templates /
  generator + the `ServiceClass` field on EventData.
- internal/events/api_adapter.go: fix the user-visible
  resourceType description ("Filter by resource type (MCPServer,
  ServiceClass, Workflow, ServiceInstance)" → "... (MCPServer,
  Workflow)").
- internal/events/generator_test.go: drop the
  TestEventGenerator_ServiceInstanceEvent test (its target is gone).
- internal/testing/types.go: drop ConceptServiceClass,
  ServiceClassConfig, the ServiceClasses field on
  MusterPreConfiguration, and ExpectedServiceClasses on MusterInstance.
- internal/testing/muster_manager.go: drop
  extractExpectedServiceClasses{,FromInstance},
  checkServiceClassAvailability, the
  convertServiceClassConfigToCRDSpec chain, and the ServiceClass CRD
  generation block. Also drop checkServiceAvailability (calls
  now-nonexistent core_service_get) and
  extractExpectedServicesFromInstance (always returned empty), and the
  matching readiness-loop block.
- internal/testing/test_reporter.go: drop the ServiceClass section in
  the reporter.
- internal/testing/logger.go: drop the "serviceclass-" prefix trim in
  GenerateScenarioPrefix.
- internal/agent/test_mcp_handlers.go: drop the
  case "serviceclass" branches; align error message.
- internal/agent/test_mcp_server.go: drop "serviceclass" from concept
  flag descriptions.
- internal/agent/client.go: fix the CallToolJSON doc-comment example
  (was core_service_get — gone — now uses core_service_status).
- internal/agent/doc.go: fix the doc-comment examples (core_service_create,
  core_serviceclass_list — both gone) to use core_workflow_run /
  core_workflow_list.
- internal/workflow/executor.go: drop the
  "// This follows the same pattern as ServiceClass.ValidateServiceArgs"
  narrative comment.

Build, vet, gofmt, helm-lint all clean. muster test 118/118.
@QuentinBisson QuentinBisson marked this pull request as ready for review May 7, 2026 06:54
@QuentinBisson QuentinBisson requested a review from a team as a code owner May 7, 2026 06:54
First of four PRs (see #632) for the full ServiceClass removal. After
this PR, end users can no longer reach ServiceClass via MCP tools or
CLI verbs, but the runtime, types, and CRD are still in place. The
next PR removes the runtime; the one after that removes the API types
and CRD.

MCP tools removed:
- core_serviceclass_* (list/get/create/update/delete/available/validate)
- core_service_create / _delete / _get / _validate

  core_service_get and core_service_status overlapped on static services
  but core_service_get also returned ServiceClass-only fields (Outputs,
  ServiceClassName, ServiceClassType). After this PR, core_service_status
  covers the remaining service inspection needs.

CLI subcommands removed:
- muster create service ...
- muster create serviceclass ...
- muster check serviceclass ...
- muster get serviceclass ...
- muster list serviceclass ...
- muster events --resource-type=serviceclass and --resource-type=service
- muster test --concept=serviceclass

BDD scenarios:
- Deleted 22 serviceclass-* scenarios (entirely about ServiceClass)
- Deleted 19 service-create-* / service-delete* / service-get* /
  service-validate / service-lifecycle / service-persistence /
  service-restart / service-state-transitions /
  service-{start,stop}{,-already-*} scenarios — all required
  user-creatable service instances
- Renamed service-get-non-existent.yaml -> service-status-non-existent.yaml
  and switched the tool to core_service_status
- Edited four workflow-create*.yaml scenarios to use core_workflow_list
  instead of core_serviceclass_list as a probe step
- Edited mcpserver-service-management.yaml to drop the three core_service_get
  inspection steps; the equivalent core_service_status calls right after
  them already cover the same checks
- Deleted four end-to-end scenarios that depended on ServiceClass:
  behavior-developer-onboarding-journey, example_with_mock,
  user-journey-platform-setup, workflow-conditional-service-check,
  workflow-run-with-serviceclass, reconciler-status-sync

CHANGELOG: ### Removed entry under [Unreleased] documenting the
user-visible surface change.

Build, vet, gofmt, helm-lint, helm-test all green. muster test runs
118 scenarios at 100%.
@QuentinBisson QuentinBisson force-pushed the remove-sc-1-tools-cli branch from e74fa98 to 1ef1763 Compare May 7, 2026 07:15
QuentinBisson added a commit that referenced this pull request May 7, 2026
…tance, reconciler)

Second of four PRs (see #632). Builds on #633 (PR 1). After this PR the
ServiceClass runtime is gone — `GenericServiceInstance`, the
`internal/serviceclass` adapter, the `ServiceClass` reconciler, the
ServiceClass event generators, and the supporting test infrastructure
all leave the tree. The API types (`internal/api/serviceclass.go`,
`internal/api/serviceinstance.go`) and the CRD itself are still in
place; PR 3 takes those out.

Deleted:
- internal/serviceclass/ (entire package)
- internal/services/instance.go (GenericServiceInstance)
- internal/services/response_processor.go
- internal/reconciler/serviceclass_reconciler.go + test
- .muster/serviceclasses/*.yaml.example
- examples/serviceclass-*.yaml

Edited:
- internal/app/services.go: drop the ServiceClass adapter and
  reconciler registration (and the serviceclass import).
- internal/orchestrator/orchestrator.go: rewrite to remove
  CreateServiceClassInstance / DeleteServiceClassInstance /
  GetServiceClassInstance / ListServiceClassInstances /
  SubscribeToServiceInstanceEvents / generateServiceInstanceEvent /
  buildServiceInstanceEventMessage, the `instances` map and
  `instanceEvents` slice, `CreateServiceRequest`,
  `ServiceInstanceInfo`, `ServiceInstanceEvent`,
  `processServiceClassRequirements` (replaced with the slim
  `processAutoStartMCPServers`), and the dead `ToolCaller` field +
  Config.ToolCaller + Set/GetToolCaller (no remaining callers; the
  toolCaller value flows directly into the workflow adapter from
  internal/app/services.go).
- internal/orchestrator/api_adapter.go: rewrite. Drop
  convertToAPIServiceInstance, the ServiceClassInstance methods, and
  the ServiceClass-specific tool handlers; keep only the static-service
  surface.
- internal/orchestrator/doc.go: tight rewrite (was a 200-line
  ServiceClass-era artifact).
- internal/api/service.go: trim ServiceManagerHandler to the static-
  service surface (StartService / StopService / RestartService /
  GetServiceStatus / GetAllServices / SubscribeToStateChanges +
  ToolProvider). The CreateService / DeleteService / GetService /
  SubscribeToServiceInstanceEvents members are gone.
- internal/events/types.go, templates.go, generator.go: drop the
  ServiceClass and ServiceInstance event reasons / templates /
  generator + the `ServiceClass` field on EventData.
- internal/events/api_adapter.go: fix the user-visible
  resourceType description ("Filter by resource type (MCPServer,
  ServiceClass, Workflow, ServiceInstance)" → "... (MCPServer,
  Workflow)").
- internal/events/generator_test.go: drop the
  TestEventGenerator_ServiceInstanceEvent test (its target is gone).
- internal/testing/types.go: drop ConceptServiceClass,
  ServiceClassConfig, the ServiceClasses field on
  MusterPreConfiguration, and ExpectedServiceClasses on MusterInstance.
- internal/testing/muster_manager.go: drop
  extractExpectedServiceClasses{,FromInstance},
  checkServiceClassAvailability, the
  convertServiceClassConfigToCRDSpec chain, and the ServiceClass CRD
  generation block. Also drop checkServiceAvailability (calls
  now-nonexistent core_service_get) and
  extractExpectedServicesFromInstance (always returned empty), and the
  matching readiness-loop block.
- internal/testing/test_reporter.go: drop the ServiceClass section in
  the reporter.
- internal/testing/logger.go: drop the "serviceclass-" prefix trim in
  GenerateScenarioPrefix.
- internal/agent/test_mcp_handlers.go: drop the
  case "serviceclass" branches; align error message.
- internal/agent/test_mcp_server.go: drop "serviceclass" from concept
  flag descriptions.
- internal/agent/client.go: fix the CallToolJSON doc-comment example
  (was core_service_get — gone — now uses core_service_status).
- internal/agent/doc.go: fix the doc-comment examples (core_service_create,
  core_serviceclass_list — both gone) to use core_workflow_run /
  core_workflow_list.
- internal/workflow/executor.go: drop the
  "// This follows the same pattern as ServiceClass.ValidateServiceArgs"
  narrative comment.

Build, vet, gofmt, helm-lint all clean. muster test 118/118.
QuentinBisson added a commit that referenced this pull request May 7, 2026
…tance, reconciler)

Second of four PRs (see #632). Builds on #633 (PR 1). After this PR the
ServiceClass runtime is gone — `GenericServiceInstance`, the
`internal/serviceclass` adapter, the `ServiceClass` reconciler, the
ServiceClass event generators, and the supporting test infrastructure
all leave the tree. The API types (`internal/api/serviceclass.go`,
`internal/api/serviceinstance.go`) and the CRD itself are still in
place; PR 3 takes those out.

Deleted:
- internal/serviceclass/ (entire package)
- internal/services/instance.go (GenericServiceInstance)
- internal/services/response_processor.go
- internal/reconciler/serviceclass_reconciler.go + test
- .muster/serviceclasses/*.yaml.example
- examples/serviceclass-*.yaml

Edited:
- internal/app/services.go: drop the ServiceClass adapter and
  reconciler registration (and the serviceclass import).
- internal/orchestrator/orchestrator.go: rewrite to remove
  CreateServiceClassInstance / DeleteServiceClassInstance /
  GetServiceClassInstance / ListServiceClassInstances /
  SubscribeToServiceInstanceEvents / generateServiceInstanceEvent /
  buildServiceInstanceEventMessage, the `instances` map and
  `instanceEvents` slice, `CreateServiceRequest`,
  `ServiceInstanceInfo`, `ServiceInstanceEvent`,
  `processServiceClassRequirements` (replaced with the slim
  `processAutoStartMCPServers`), and the dead `ToolCaller` field +
  Config.ToolCaller + Set/GetToolCaller (no remaining callers; the
  toolCaller value flows directly into the workflow adapter from
  internal/app/services.go).
- internal/orchestrator/api_adapter.go: rewrite. Drop
  convertToAPIServiceInstance, the ServiceClassInstance methods, and
  the ServiceClass-specific tool handlers; keep only the static-service
  surface.
- internal/orchestrator/doc.go: tight rewrite (was a 200-line
  ServiceClass-era artifact).
- internal/api/service.go: trim ServiceManagerHandler to the static-
  service surface (StartService / StopService / RestartService /
  GetServiceStatus / GetAllServices / SubscribeToStateChanges +
  ToolProvider). The CreateService / DeleteService / GetService /
  SubscribeToServiceInstanceEvents members are gone.
- internal/events/types.go, templates.go, generator.go: drop the
  ServiceClass and ServiceInstance event reasons / templates /
  generator + the `ServiceClass` field on EventData.
- internal/events/api_adapter.go: fix the user-visible
  resourceType description ("Filter by resource type (MCPServer,
  ServiceClass, Workflow, ServiceInstance)" → "... (MCPServer,
  Workflow)").
- internal/events/generator_test.go: drop the
  TestEventGenerator_ServiceInstanceEvent test (its target is gone).
- internal/testing/types.go: drop ConceptServiceClass,
  ServiceClassConfig, the ServiceClasses field on
  MusterPreConfiguration, and ExpectedServiceClasses on MusterInstance.
- internal/testing/muster_manager.go: drop
  extractExpectedServiceClasses{,FromInstance},
  checkServiceClassAvailability, the
  convertServiceClassConfigToCRDSpec chain, and the ServiceClass CRD
  generation block. Also drop checkServiceAvailability (calls
  now-nonexistent core_service_get) and
  extractExpectedServicesFromInstance (always returned empty), and the
  matching readiness-loop block.
- internal/testing/test_reporter.go: drop the ServiceClass section in
  the reporter.
- internal/testing/logger.go: drop the "serviceclass-" prefix trim in
  GenerateScenarioPrefix.
- internal/agent/test_mcp_handlers.go: drop the
  case "serviceclass" branches; align error message.
- internal/agent/test_mcp_server.go: drop "serviceclass" from concept
  flag descriptions.
- internal/agent/client.go: fix the CallToolJSON doc-comment example
  (was core_service_get — gone — now uses core_service_status).
- internal/agent/doc.go: fix the doc-comment examples (core_service_create,
  core_serviceclass_list — both gone) to use core_workflow_run /
  core_workflow_list.
- internal/workflow/executor.go: drop the
  "// This follows the same pattern as ServiceClass.ValidateServiceArgs"
  narrative comment.

Build, vet, gofmt, helm-lint all clean. muster test 118/118.
paurosello added 2 commits May 7, 2026 17:41
Removes the 22 stale entries for core_service_* and core_serviceclass_*
tools that no longer exist after the user-facing surface removal.
Copy link
Copy Markdown
Contributor

@paurosello paurosello left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Schema regenerated and pre-commit clean. Scope discipline good — runtime/CRD/types untouched as advertised. Note: my earlier review flagged ConceptServiceClass as dead, but it's still used in internal/agent/test_mcp_handlers.go to map MCP-exposed concept: serviceclass test calls; left in place since stripping that handler arm is arguably part 2/4 territory.

…tate

The ServiceClass-based scenarios deleted in this PR bundled coverage of
ServiceClass-instance lifecycle with workflow-engine and orchestrator
behavior that survives the removal. Two new scenarios pin that
surviving coverage to a static MCPServer service substrate:

- workflow-conditional-static.yaml: inline tool conditions, from_step,
  allow_failure, expect_not, condition_evaluation, and step skipping.
  Replaces the workflow-engine assertions previously in
  workflow-conditional-service-check.yaml.

- service-state-static.yaml: core_service_restart happy-path and
  start/stop idempotency ("already running", "already stopped").
  Replaces the orchestrator state-machine assertions previously in
  service-restart.yaml, service-start-already-running.yaml, and
  service-stop-already-stopped.yaml.
QuentinBisson added a commit that referenced this pull request May 7, 2026
…tance, reconciler)

Second of four PRs (see #632). Builds on #633 (PR 1). After this PR the
ServiceClass runtime is gone — `GenericServiceInstance`, the
`internal/serviceclass` adapter, the `ServiceClass` reconciler, the
ServiceClass event generators, and the supporting test infrastructure
all leave the tree. The API types (`internal/api/serviceclass.go`,
`internal/api/serviceinstance.go`) and the CRD itself are still in
place; PR 3 takes those out.

Deleted:
- internal/serviceclass/ (entire package)
- internal/services/instance.go (GenericServiceInstance)
- internal/services/response_processor.go
- internal/reconciler/serviceclass_reconciler.go + test
- .muster/serviceclasses/*.yaml.example
- examples/serviceclass-*.yaml

Edited:
- internal/app/services.go: drop the ServiceClass adapter and
  reconciler registration (and the serviceclass import).
- internal/orchestrator/orchestrator.go: rewrite to remove
  CreateServiceClassInstance / DeleteServiceClassInstance /
  GetServiceClassInstance / ListServiceClassInstances /
  SubscribeToServiceInstanceEvents / generateServiceInstanceEvent /
  buildServiceInstanceEventMessage, the `instances` map and
  `instanceEvents` slice, `CreateServiceRequest`,
  `ServiceInstanceInfo`, `ServiceInstanceEvent`,
  `processServiceClassRequirements` (replaced with the slim
  `processAutoStartMCPServers`), and the dead `ToolCaller` field +
  Config.ToolCaller + Set/GetToolCaller (no remaining callers; the
  toolCaller value flows directly into the workflow adapter from
  internal/app/services.go).
- internal/orchestrator/api_adapter.go: rewrite. Drop
  convertToAPIServiceInstance, the ServiceClassInstance methods, and
  the ServiceClass-specific tool handlers; keep only the static-service
  surface.
- internal/orchestrator/doc.go: tight rewrite (was a 200-line
  ServiceClass-era artifact).
- internal/api/service.go: trim ServiceManagerHandler to the static-
  service surface (StartService / StopService / RestartService /
  GetServiceStatus / GetAllServices / SubscribeToStateChanges +
  ToolProvider). The CreateService / DeleteService / GetService /
  SubscribeToServiceInstanceEvents members are gone.
- internal/events/types.go, templates.go, generator.go: drop the
  ServiceClass and ServiceInstance event reasons / templates /
  generator + the `ServiceClass` field on EventData.
- internal/events/api_adapter.go: fix the user-visible
  resourceType description ("Filter by resource type (MCPServer,
  ServiceClass, Workflow, ServiceInstance)" → "... (MCPServer,
  Workflow)").
- internal/events/generator_test.go: drop the
  TestEventGenerator_ServiceInstanceEvent test (its target is gone).
- internal/testing/types.go: drop ConceptServiceClass,
  ServiceClassConfig, the ServiceClasses field on
  MusterPreConfiguration, and ExpectedServiceClasses on MusterInstance.
- internal/testing/muster_manager.go: drop
  extractExpectedServiceClasses{,FromInstance},
  checkServiceClassAvailability, the
  convertServiceClassConfigToCRDSpec chain, and the ServiceClass CRD
  generation block. Also drop checkServiceAvailability (calls
  now-nonexistent core_service_get) and
  extractExpectedServicesFromInstance (always returned empty), and the
  matching readiness-loop block.
- internal/testing/test_reporter.go: drop the ServiceClass section in
  the reporter.
- internal/testing/logger.go: drop the "serviceclass-" prefix trim in
  GenerateScenarioPrefix.
- internal/agent/test_mcp_handlers.go: drop the
  case "serviceclass" branches; align error message.
- internal/agent/test_mcp_server.go: drop "serviceclass" from concept
  flag descriptions.
- internal/agent/client.go: fix the CallToolJSON doc-comment example
  (was core_service_get — gone — now uses core_service_status).
- internal/agent/doc.go: fix the doc-comment examples (core_service_create,
  core_serviceclass_list — both gone) to use core_workflow_run /
  core_workflow_list.
- internal/workflow/executor.go: drop the
  "// This follows the same pattern as ServiceClass.ValidateServiceArgs"
  narrative comment.

Build, vet, gofmt, helm-lint all clean. muster test 118/118.
QuentinBisson added a commit that referenced this pull request May 8, 2026
…tance, reconciler)

Second of four PRs (see #632). Builds on #633 (PR 1). After this PR the
ServiceClass runtime is gone — `GenericServiceInstance`, the
`internal/serviceclass` adapter, the `ServiceClass` reconciler, the
ServiceClass event generators, and the supporting test infrastructure
all leave the tree. The API types (`internal/api/serviceclass.go`,
`internal/api/serviceinstance.go`) and the CRD itself are still in
place; PR 3 takes those out.

Deleted:
- internal/serviceclass/ (entire package)
- internal/services/instance.go (GenericServiceInstance)
- internal/services/response_processor.go
- internal/reconciler/serviceclass_reconciler.go + test
- .muster/serviceclasses/*.yaml.example
- examples/serviceclass-*.yaml

Edited:
- internal/app/services.go: drop the ServiceClass adapter and
  reconciler registration (and the serviceclass import).
- internal/orchestrator/orchestrator.go: rewrite to remove
  CreateServiceClassInstance / DeleteServiceClassInstance /
  GetServiceClassInstance / ListServiceClassInstances /
  SubscribeToServiceInstanceEvents / generateServiceInstanceEvent /
  buildServiceInstanceEventMessage, the `instances` map and
  `instanceEvents` slice, `CreateServiceRequest`,
  `ServiceInstanceInfo`, `ServiceInstanceEvent`,
  `processServiceClassRequirements` (replaced with the slim
  `processAutoStartMCPServers`), and the dead `ToolCaller` field +
  Config.ToolCaller + Set/GetToolCaller (no remaining callers; the
  toolCaller value flows directly into the workflow adapter from
  internal/app/services.go).
- internal/orchestrator/api_adapter.go: rewrite. Drop
  convertToAPIServiceInstance, the ServiceClassInstance methods, and
  the ServiceClass-specific tool handlers; keep only the static-service
  surface.
- internal/orchestrator/doc.go: tight rewrite (was a 200-line
  ServiceClass-era artifact).
- internal/api/service.go: trim ServiceManagerHandler to the static-
  service surface (StartService / StopService / RestartService /
  GetServiceStatus / GetAllServices / SubscribeToStateChanges +
  ToolProvider). The CreateService / DeleteService / GetService /
  SubscribeToServiceInstanceEvents members are gone.
- internal/events/types.go, templates.go, generator.go: drop the
  ServiceClass and ServiceInstance event reasons / templates /
  generator + the `ServiceClass` field on EventData.
- internal/events/api_adapter.go: fix the user-visible
  resourceType description ("Filter by resource type (MCPServer,
  ServiceClass, Workflow, ServiceInstance)" → "... (MCPServer,
  Workflow)").
- internal/events/generator_test.go: drop the
  TestEventGenerator_ServiceInstanceEvent test (its target is gone).
- internal/testing/types.go: drop ConceptServiceClass,
  ServiceClassConfig, the ServiceClasses field on
  MusterPreConfiguration, and ExpectedServiceClasses on MusterInstance.
- internal/testing/muster_manager.go: drop
  extractExpectedServiceClasses{,FromInstance},
  checkServiceClassAvailability, the
  convertServiceClassConfigToCRDSpec chain, and the ServiceClass CRD
  generation block. Also drop checkServiceAvailability (calls
  now-nonexistent core_service_get) and
  extractExpectedServicesFromInstance (always returned empty), and the
  matching readiness-loop block.
- internal/testing/test_reporter.go: drop the ServiceClass section in
  the reporter.
- internal/testing/logger.go: drop the "serviceclass-" prefix trim in
  GenerateScenarioPrefix.
- internal/agent/test_mcp_handlers.go: drop the
  case "serviceclass" branches; align error message.
- internal/agent/test_mcp_server.go: drop "serviceclass" from concept
  flag descriptions.
- internal/agent/client.go: fix the CallToolJSON doc-comment example
  (was core_service_get — gone — now uses core_service_status).
- internal/agent/doc.go: fix the doc-comment examples (core_service_create,
  core_serviceclass_list — both gone) to use core_workflow_run /
  core_workflow_list.
- internal/workflow/executor.go: drop the
  "// This follows the same pattern as ServiceClass.ValidateServiceArgs"
  narrative comment.

Build, vet, gofmt, helm-lint all clean. muster test 118/118.
QuentinBisson added a commit that referenced this pull request May 8, 2026
…tance, reconciler)

Second of four PRs (see #632). Builds on #633 (PR 1). After this PR the
ServiceClass runtime is gone — `GenericServiceInstance`, the
`internal/serviceclass` adapter, the `ServiceClass` reconciler, the
ServiceClass event generators, and the supporting test infrastructure
all leave the tree. The API types (`internal/api/serviceclass.go`,
`internal/api/serviceinstance.go`) and the CRD itself are still in
place; PR 3 takes those out.

Deleted:
- internal/serviceclass/ (entire package)
- internal/services/instance.go (GenericServiceInstance)
- internal/services/response_processor.go
- internal/reconciler/serviceclass_reconciler.go + test
- .muster/serviceclasses/*.yaml.example
- examples/serviceclass-*.yaml

Edited:
- internal/app/services.go: drop the ServiceClass adapter and
  reconciler registration (and the serviceclass import).
- internal/orchestrator/orchestrator.go: rewrite to remove
  CreateServiceClassInstance / DeleteServiceClassInstance /
  GetServiceClassInstance / ListServiceClassInstances /
  SubscribeToServiceInstanceEvents / generateServiceInstanceEvent /
  buildServiceInstanceEventMessage, the `instances` map and
  `instanceEvents` slice, `CreateServiceRequest`,
  `ServiceInstanceInfo`, `ServiceInstanceEvent`,
  `processServiceClassRequirements` (replaced with the slim
  `processAutoStartMCPServers`), and the dead `ToolCaller` field +
  Config.ToolCaller + Set/GetToolCaller (no remaining callers; the
  toolCaller value flows directly into the workflow adapter from
  internal/app/services.go).
- internal/orchestrator/api_adapter.go: rewrite. Drop
  convertToAPIServiceInstance, the ServiceClassInstance methods, and
  the ServiceClass-specific tool handlers; keep only the static-service
  surface.
- internal/orchestrator/doc.go: tight rewrite (was a 200-line
  ServiceClass-era artifact).
- internal/api/service.go: trim ServiceManagerHandler to the static-
  service surface (StartService / StopService / RestartService /
  GetServiceStatus / GetAllServices / SubscribeToStateChanges +
  ToolProvider). The CreateService / DeleteService / GetService /
  SubscribeToServiceInstanceEvents members are gone.
- internal/events/types.go, templates.go, generator.go: drop the
  ServiceClass and ServiceInstance event reasons / templates /
  generator + the `ServiceClass` field on EventData.
- internal/events/api_adapter.go: fix the user-visible
  resourceType description ("Filter by resource type (MCPServer,
  ServiceClass, Workflow, ServiceInstance)" → "... (MCPServer,
  Workflow)").
- internal/events/generator_test.go: drop the
  TestEventGenerator_ServiceInstanceEvent test (its target is gone).
- internal/testing/types.go: drop ConceptServiceClass,
  ServiceClassConfig, the ServiceClasses field on
  MusterPreConfiguration, and ExpectedServiceClasses on MusterInstance.
- internal/testing/muster_manager.go: drop
  extractExpectedServiceClasses{,FromInstance},
  checkServiceClassAvailability, the
  convertServiceClassConfigToCRDSpec chain, and the ServiceClass CRD
  generation block. Also drop checkServiceAvailability (calls
  now-nonexistent core_service_get) and
  extractExpectedServicesFromInstance (always returned empty), and the
  matching readiness-loop block.
- internal/testing/test_reporter.go: drop the ServiceClass section in
  the reporter.
- internal/testing/logger.go: drop the "serviceclass-" prefix trim in
  GenerateScenarioPrefix.
- internal/agent/test_mcp_handlers.go: drop the
  case "serviceclass" branches; align error message.
- internal/agent/test_mcp_server.go: drop "serviceclass" from concept
  flag descriptions.
- internal/agent/client.go: fix the CallToolJSON doc-comment example
  (was core_service_get — gone — now uses core_service_status).
- internal/agent/doc.go: fix the doc-comment examples (core_service_create,
  core_serviceclass_list — both gone) to use core_workflow_run /
  core_workflow_list.
- internal/workflow/executor.go: drop the
  "// This follows the same pattern as ServiceClass.ValidateServiceArgs"
  narrative comment.

Build, vet, gofmt, helm-lint all clean. muster test 118/118.
@QuentinBisson QuentinBisson merged commit 7d0d927 into main May 8, 2026
9 checks passed
@QuentinBisson QuentinBisson deleted the remove-sc-1-tools-cli branch May 8, 2026 07:54
QuentinBisson added a commit that referenced this pull request May 11, 2026
The docs sweep targeted docs/ only; the package doc-comment for
internal/template still mentioned ServiceClass tool calls. After
PRs #633-#635, only workflow steps remain as a consumer.
QuentinBisson added a commit that referenced this pull request May 11, 2026
…tance, reconciler)

Second of four PRs (see #632). Builds on #633 (PR 1). After this PR the
ServiceClass runtime is gone — `GenericServiceInstance`, the
`internal/serviceclass` adapter, the `ServiceClass` reconciler, the
ServiceClass event generators, and the supporting test infrastructure
all leave the tree. The API types (`internal/api/serviceclass.go`,
`internal/api/serviceinstance.go`) and the CRD itself are still in
place; PR 3 takes those out.

Deleted:
- internal/serviceclass/ (entire package)
- internal/services/instance.go (GenericServiceInstance)
- internal/services/response_processor.go
- internal/reconciler/serviceclass_reconciler.go + test
- .muster/serviceclasses/*.yaml.example
- examples/serviceclass-*.yaml

Edited:
- internal/app/services.go: drop the ServiceClass adapter and
  reconciler registration (and the serviceclass import).
- internal/orchestrator/orchestrator.go: rewrite to remove
  CreateServiceClassInstance / DeleteServiceClassInstance /
  GetServiceClassInstance / ListServiceClassInstances /
  SubscribeToServiceInstanceEvents / generateServiceInstanceEvent /
  buildServiceInstanceEventMessage, the `instances` map and
  `instanceEvents` slice, `CreateServiceRequest`,
  `ServiceInstanceInfo`, `ServiceInstanceEvent`,
  `processServiceClassRequirements` (replaced with the slim
  `processAutoStartMCPServers`), and the dead `ToolCaller` field +
  Config.ToolCaller + Set/GetToolCaller (no remaining callers; the
  toolCaller value flows directly into the workflow adapter from
  internal/app/services.go).
- internal/orchestrator/api_adapter.go: rewrite. Drop
  convertToAPIServiceInstance, the ServiceClassInstance methods, and
  the ServiceClass-specific tool handlers; keep only the static-service
  surface.
- internal/orchestrator/doc.go: tight rewrite (was a 200-line
  ServiceClass-era artifact).
- internal/api/service.go: trim ServiceManagerHandler to the static-
  service surface (StartService / StopService / RestartService /
  GetServiceStatus / GetAllServices / SubscribeToStateChanges +
  ToolProvider). The CreateService / DeleteService / GetService /
  SubscribeToServiceInstanceEvents members are gone.
- internal/events/types.go, templates.go, generator.go: drop the
  ServiceClass and ServiceInstance event reasons / templates /
  generator + the `ServiceClass` field on EventData.
- internal/events/api_adapter.go: fix the user-visible
  resourceType description ("Filter by resource type (MCPServer,
  ServiceClass, Workflow, ServiceInstance)" → "... (MCPServer,
  Workflow)").
- internal/events/generator_test.go: drop the
  TestEventGenerator_ServiceInstanceEvent test (its target is gone).
- internal/testing/types.go: drop ConceptServiceClass,
  ServiceClassConfig, the ServiceClasses field on
  MusterPreConfiguration, and ExpectedServiceClasses on MusterInstance.
- internal/testing/muster_manager.go: drop
  extractExpectedServiceClasses{,FromInstance},
  checkServiceClassAvailability, the
  convertServiceClassConfigToCRDSpec chain, and the ServiceClass CRD
  generation block. Also drop checkServiceAvailability (calls
  now-nonexistent core_service_get) and
  extractExpectedServicesFromInstance (always returned empty), and the
  matching readiness-loop block.
- internal/testing/test_reporter.go: drop the ServiceClass section in
  the reporter.
- internal/testing/logger.go: drop the "serviceclass-" prefix trim in
  GenerateScenarioPrefix.
- internal/agent/test_mcp_handlers.go: drop the
  case "serviceclass" branches; align error message.
- internal/agent/test_mcp_server.go: drop "serviceclass" from concept
  flag descriptions.
- internal/agent/client.go: fix the CallToolJSON doc-comment example
  (was core_service_get — gone — now uses core_service_status).
- internal/agent/doc.go: fix the doc-comment examples (core_service_create,
  core_serviceclass_list — both gone) to use core_workflow_run /
  core_workflow_list.
- internal/workflow/executor.go: drop the
  "// This follows the same pattern as ServiceClass.ValidateServiceArgs"
  narrative comment.

Build, vet, gofmt, helm-lint all clean. muster test 118/118.
QuentinBisson added a commit that referenced this pull request May 11, 2026
The docs sweep targeted docs/ only; the package doc-comment for
internal/template still mentioned ServiceClass tool calls. After
PRs #633-#635, only workflow steps remain as a consumer.
QuentinBisson added a commit that referenced this pull request May 12, 2026
* chore: regenerate schema.json after ServiceClass tool removal

Removes the 22 stale entries for core_service_* and core_serviceclass_*
tools that no longer exist after the user-facing surface removal.

* chore: add trailing newline to schema.json (pre-commit fix)

* Remove ServiceClass runtime (internal/serviceclass, GenericServiceInstance, reconciler)

Second of four PRs (see #632). Builds on #633 (PR 1). After this PR the
ServiceClass runtime is gone — `GenericServiceInstance`, the
`internal/serviceclass` adapter, the `ServiceClass` reconciler, the
ServiceClass event generators, and the supporting test infrastructure
all leave the tree. The API types (`internal/api/serviceclass.go`,
`internal/api/serviceinstance.go`) and the CRD itself are still in
place; PR 3 takes those out.

Deleted:
- internal/serviceclass/ (entire package)
- internal/services/instance.go (GenericServiceInstance)
- internal/services/response_processor.go
- internal/reconciler/serviceclass_reconciler.go + test
- .muster/serviceclasses/*.yaml.example
- examples/serviceclass-*.yaml

Edited:
- internal/app/services.go: drop the ServiceClass adapter and
  reconciler registration (and the serviceclass import).
- internal/orchestrator/orchestrator.go: rewrite to remove
  CreateServiceClassInstance / DeleteServiceClassInstance /
  GetServiceClassInstance / ListServiceClassInstances /
  SubscribeToServiceInstanceEvents / generateServiceInstanceEvent /
  buildServiceInstanceEventMessage, the `instances` map and
  `instanceEvents` slice, `CreateServiceRequest`,
  `ServiceInstanceInfo`, `ServiceInstanceEvent`,
  `processServiceClassRequirements` (replaced with the slim
  `processAutoStartMCPServers`), and the dead `ToolCaller` field +
  Config.ToolCaller + Set/GetToolCaller (no remaining callers; the
  toolCaller value flows directly into the workflow adapter from
  internal/app/services.go).
- internal/orchestrator/api_adapter.go: rewrite. Drop
  convertToAPIServiceInstance, the ServiceClassInstance methods, and
  the ServiceClass-specific tool handlers; keep only the static-service
  surface.
- internal/orchestrator/doc.go: tight rewrite (was a 200-line
  ServiceClass-era artifact).
- internal/api/service.go: trim ServiceManagerHandler to the static-
  service surface (StartService / StopService / RestartService /
  GetServiceStatus / GetAllServices / SubscribeToStateChanges +
  ToolProvider). The CreateService / DeleteService / GetService /
  SubscribeToServiceInstanceEvents members are gone.
- internal/events/types.go, templates.go, generator.go: drop the
  ServiceClass and ServiceInstance event reasons / templates /
  generator + the `ServiceClass` field on EventData.
- internal/events/api_adapter.go: fix the user-visible
  resourceType description ("Filter by resource type (MCPServer,
  ServiceClass, Workflow, ServiceInstance)" → "... (MCPServer,
  Workflow)").
- internal/events/generator_test.go: drop the
  TestEventGenerator_ServiceInstanceEvent test (its target is gone).
- internal/testing/types.go: drop ConceptServiceClass,
  ServiceClassConfig, the ServiceClasses field on
  MusterPreConfiguration, and ExpectedServiceClasses on MusterInstance.
- internal/testing/muster_manager.go: drop
  extractExpectedServiceClasses{,FromInstance},
  checkServiceClassAvailability, the
  convertServiceClassConfigToCRDSpec chain, and the ServiceClass CRD
  generation block. Also drop checkServiceAvailability (calls
  now-nonexistent core_service_get) and
  extractExpectedServicesFromInstance (always returned empty), and the
  matching readiness-loop block.
- internal/testing/test_reporter.go: drop the ServiceClass section in
  the reporter.
- internal/testing/logger.go: drop the "serviceclass-" prefix trim in
  GenerateScenarioPrefix.
- internal/agent/test_mcp_handlers.go: drop the
  case "serviceclass" branches; align error message.
- internal/agent/test_mcp_server.go: drop "serviceclass" from concept
  flag descriptions.
- internal/agent/client.go: fix the CallToolJSON doc-comment example
  (was core_service_get — gone — now uses core_service_status).
- internal/agent/doc.go: fix the doc-comment examples (core_service_create,
  core_serviceclass_list — both gone) to use core_workflow_run /
  core_workflow_list.
- internal/workflow/executor.go: drop the
  "// This follows the same pattern as ServiceClass.ValidateServiceArgs"
  narrative comment.

Build, vet, gofmt, helm-lint all clean. muster test 118/118.

---------

Co-authored-by: Pau Rosello <pau@giantswarm.io>
QuentinBisson added a commit that referenced this pull request May 12, 2026
* chore: regenerate schema.json after ServiceClass tool removal

Removes the 22 stale entries for core_service_* and core_serviceclass_*
tools that no longer exist after the user-facing surface removal.

* chore: add trailing newline to schema.json (pre-commit fix)

* Remove ServiceClass runtime (internal/serviceclass, GenericServiceInstance, reconciler)

Second of four PRs (see #632). Builds on #633 (PR 1). After this PR the
ServiceClass runtime is gone — `GenericServiceInstance`, the
`internal/serviceclass` adapter, the `ServiceClass` reconciler, the
ServiceClass event generators, and the supporting test infrastructure
all leave the tree. The API types (`internal/api/serviceclass.go`,
`internal/api/serviceinstance.go`) and the CRD itself are still in
place; PR 3 takes those out.

Deleted:
- internal/serviceclass/ (entire package)
- internal/services/instance.go (GenericServiceInstance)
- internal/services/response_processor.go
- internal/reconciler/serviceclass_reconciler.go + test
- .muster/serviceclasses/*.yaml.example
- examples/serviceclass-*.yaml

Edited:
- internal/app/services.go: drop the ServiceClass adapter and
  reconciler registration (and the serviceclass import).
- internal/orchestrator/orchestrator.go: rewrite to remove
  CreateServiceClassInstance / DeleteServiceClassInstance /
  GetServiceClassInstance / ListServiceClassInstances /
  SubscribeToServiceInstanceEvents / generateServiceInstanceEvent /
  buildServiceInstanceEventMessage, the `instances` map and
  `instanceEvents` slice, `CreateServiceRequest`,
  `ServiceInstanceInfo`, `ServiceInstanceEvent`,
  `processServiceClassRequirements` (replaced with the slim
  `processAutoStartMCPServers`), and the dead `ToolCaller` field +
  Config.ToolCaller + Set/GetToolCaller (no remaining callers; the
  toolCaller value flows directly into the workflow adapter from
  internal/app/services.go).
- internal/orchestrator/api_adapter.go: rewrite. Drop
  convertToAPIServiceInstance, the ServiceClassInstance methods, and
  the ServiceClass-specific tool handlers; keep only the static-service
  surface.
- internal/orchestrator/doc.go: tight rewrite (was a 200-line
  ServiceClass-era artifact).
- internal/api/service.go: trim ServiceManagerHandler to the static-
  service surface (StartService / StopService / RestartService /
  GetServiceStatus / GetAllServices / SubscribeToStateChanges +
  ToolProvider). The CreateService / DeleteService / GetService /
  SubscribeToServiceInstanceEvents members are gone.
- internal/events/types.go, templates.go, generator.go: drop the
  ServiceClass and ServiceInstance event reasons / templates /
  generator + the `ServiceClass` field on EventData.
- internal/events/api_adapter.go: fix the user-visible
  resourceType description ("Filter by resource type (MCPServer,
  ServiceClass, Workflow, ServiceInstance)" → "... (MCPServer,
  Workflow)").
- internal/events/generator_test.go: drop the
  TestEventGenerator_ServiceInstanceEvent test (its target is gone).
- internal/testing/types.go: drop ConceptServiceClass,
  ServiceClassConfig, the ServiceClasses field on
  MusterPreConfiguration, and ExpectedServiceClasses on MusterInstance.
- internal/testing/muster_manager.go: drop
  extractExpectedServiceClasses{,FromInstance},
  checkServiceClassAvailability, the
  convertServiceClassConfigToCRDSpec chain, and the ServiceClass CRD
  generation block. Also drop checkServiceAvailability (calls
  now-nonexistent core_service_get) and
  extractExpectedServicesFromInstance (always returned empty), and the
  matching readiness-loop block.
- internal/testing/test_reporter.go: drop the ServiceClass section in
  the reporter.
- internal/testing/logger.go: drop the "serviceclass-" prefix trim in
  GenerateScenarioPrefix.
- internal/agent/test_mcp_handlers.go: drop the
  case "serviceclass" branches; align error message.
- internal/agent/test_mcp_server.go: drop "serviceclass" from concept
  flag descriptions.
- internal/agent/client.go: fix the CallToolJSON doc-comment example
  (was core_service_get — gone — now uses core_service_status).
- internal/agent/doc.go: fix the doc-comment examples (core_service_create,
  core_serviceclass_list — both gone) to use core_workflow_run /
  core_workflow_list.
- internal/workflow/executor.go: drop the
  "// This follows the same pattern as ServiceClass.ValidateServiceArgs"
  narrative comment.

Build, vet, gofmt, helm-lint all clean. muster test 118/118.

* Remove ServiceClass API types, CRD, and Helm RBAC

Third of four PRs (see #632). Stacked on top of #634 (PR 2). After
this PR the ServiceClass surface is gone end-to-end: API types, the
ServiceClass CRD, the related client and reconciler interface methods,
and the Helm RBAC entry. Public docs still reference ServiceClass and
will be cleaned up in PR 4.

**Operational note (REQUIRED before upgrading past this PR):** delete
any ServiceClass custom resources in your cluster before upgrading;
otherwise they will be orphaned when the CRD is removed:

    kubectl delete serviceclasses.muster.giantswarm.io --all -A

MCPServer and Workflow CRs are unaffected.

Deleted:
- pkg/apis/muster/v1alpha1/serviceclass_types.go
- internal/api/serviceclass.go (ArgDefinition promoted to types.go)
- internal/api/serviceinstance.go
- helm/muster/crds/muster.giantswarm.io_serviceclasses.yaml

Edited:
- pkg/apis/muster/v1alpha1/workflow_types.go: promote ArgDefinition
  here (kubebuilder markers preserved).
- pkg/apis/muster/v1alpha1/zz_generated.deepcopy.go: regenerated with
  controller-gen v0.21.0; drop ServiceClass*, LifecycleTools, ToolCall,
  HealthCheckConfig, HealthCheckExpectation, HealthCheckToolCall,
  TimeoutConfig, ServiceConfig deepcopies.
- helm/muster/crds: regenerated with controller-gen v0.21.0 (matches CI).
- internal/api/types.go: promote api.ArgDefinition (was in
  serviceclass.go); drop ServiceClass / ServiceInstance / ServiceConfig
  / lifecycle types.
- internal/api/requests.go: drop ServiceClassCreateRequest /
  ServiceClassUpdateRequest / ServiceClassValidateRequest /
  ServiceValidateRequest.
- internal/api/handlers.go: drop ServiceClassManagerHandler interface,
  RegisterServiceClassManager, GetServiceClassManager, the
  serviceClassManagerHandler var; gofmt the var block.
- internal/api/orchestrator_test.go: drop the ServiceClass mock
  handler methods.
- internal/client/{filesystem,kubernetes,muster}_client.go: drop the
  ServiceClass interface methods and implementations; drop the
  *musterv1alpha1.ServiceClass switch arms.
- internal/client/doc.go: trim ServiceClass mentions.
- internal/reconciler/types.go: drop GetServiceClass and
  UpdateServiceClassStatus from StatusUpdater.
- internal/reconciler/kubernetes_detector.go: drop the
  case ResourceTypeServiceClass informer setup.
- internal/reconciler/test_helpers_test.go: drop the
  MockStatusUpdater.ServiceClasses field and supporting tracking
  methods.
- internal/events/generator.go: drop ServiceClassEvent (its caller is
  gone in PR 2).
- internal/events/generator_test.go: drop the matching mock
  ServiceClass methods on mockMusterClient.
- internal/config/{types,storage,storage_test}.go: drop ServiceClass
  mentions; drop the storage_test entry that exercised the removed
  serviceclasses entityType.
- helm/muster/templates/rbac.yaml,
  helm/muster/tests/rbac_test.yaml,
  helm/muster/values.yaml: narrow the muster ClusterRole to just
  mcpservers + workflows (and matching /status subresources). Drop
  the ServiceClass mentions from the comments.
- schema.json: regenerated via 'muster test --generate-schema'.
- CHANGELOG: ### Removed entry under [Unreleased] documenting the
  CR cleanup step operators must run before upgrading past this PR.

Build, vet, gofmt, helm-lint, helm-test (44/44), make generate-crds
(no diff) all clean. muster test 118/118.

* fix(deepcopy): add explicit v1 alias for meta/v1 import to satisfy goimports

---------

Co-authored-by: Pau Rosello <pau@giantswarm.io>
QuentinBisson added a commit that referenced this pull request May 12, 2026
The docs sweep targeted docs/ only; the package doc-comment for
internal/template still mentioned ServiceClass tool calls. After
PRs #633-#635, only workflow steps remain as a consumer.
QuentinBisson added a commit that referenced this pull request May 12, 2026
* Sweep ServiceClass references from public docs [4/4]

Removes ServiceClass mentions, examples, and configuration from the public
docs alongside dangling references to deleted MCP tools (core_service_create,
_delete, _get, _validate). Strict delete-and-trim approach: SC paragraphs,
sections, and code blocks are removed without synthesizing replacement
Workflow/MCPServer examples that would duplicate content already in the
dedicated workflow / MCPServer guides.

ADR 007 (CRD status reconciliation) is marked Status: Partially superseded
with the historical body intact.

Refs #632.

* Drop dead Service Instance Health scenario and Instantiation lifecycle bullet

* Drop ServiceClass mention from internal/template package doc

The docs sweep targeted docs/ only; the package doc-comment for
internal/template still mentioned ServiceClass tool calls. After
PRs #633-#635, only workflow steps remain as a consumer.

* refactor(client): collapse per-CRD duplication via client.Object helpers (#627)

Adds internal/client/{filesystem,kubernetes}/store.go with shared
helpers parameterised over the controller-runtime client.Object /
client.ObjectList interfaces. Per-CRD files shrink from ~165 LOC
(filesystem) / ~70 LOC (kubernetes) to ~40 LOC of thin wrappers.

Side-effects of the consolidation:
  - Filesystem ListXxx now sets list.Items via meta.SetList rather than
    appending to a typed slice. Equivalent end state for callers.
  - Kubernetes ListXxx uniformly guards against an empty namespace
    (previously inconsistent across CRDs — InNamespace("") was a no-op
    so behaviour was already equivalent, just cleaner).
  - All five kubernetes verbs now wrap returned errors with a
    'failed to <verb> %s %s/%s' prefix; previously workflow.go did not
    wrap. errors.Is/As against k8s sentinels still works through %w.
  - kubernetes CreateEventForCRD double switch (kind→GVK + kind→Get)
    collapses to a single crdFactories map keyed on CRD kind.

No public method signatures change; no behaviour change at the
MusterClient interface boundary.

Refs #140.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants