From e1148f812e1eb413de39ac97ff3a87f07e0af105 Mon Sep 17 00:00:00 2001 From: Sacha Al Himdani Date: Mon, 20 Apr 2026 20:48:23 +0200 Subject: [PATCH] Replace implemented column with CMMI maturity level MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drop the boolean implemented/not-implemented state in favor of a mandatory CMMI maturity level enum (NONE, INITIAL, MANAGED, DEFINED, QUANTITATIVELY_MANAGED, OPTIMIZING) stored as a Postgres enum type. The migration backfills existing rows (NOT_IMPLEMENTED → NONE, IMPLEMENTED → INITIAL), makes the column NOT NULL, and drops the old implemented column and its enum type. - maturityLevel is required on CreateControlInput and non-nullable (!) in the GraphQL schema - CLI displays human-readable CMMI labels instead of raw enum tokens - SOA table and published document use a single Maturity column in place of the old Implemented + Maturity columns - Remove ControlImplementationState type and all implemented references across backend, frontend, CLI, MCP, n8n, and E2E tests Signed-off-by: Sacha Al Himdani --- .../form/ControlMaturityLevelOptions.tsx | 3 - .../console/src/hooks/graph/FrameworkGraph.ts | 1 - .../frameworks/FrameworkControlPage.tsx | 16 +- .../dialogs/FrameworkControlDialog.tsx | 54 ++---- .../AddApplicabilityStatementDialog.tsx | 1 - .../StatementOfApplicabilityControlsTab.tsx | 22 +-- .../main.go | 18 +- e2e/console/control_test.go | 162 ++++++++---------- e2e/console/mapping_test.go | 48 +++--- e2e/console/rbac_test.go | 6 +- e2e/internal/factory/factory.go | 16 +- .../Probo/actions/control/get.operation.ts | 1 - .../Probo/actions/control/getAll.operation.ts | 1 - pkg/cmd/control/create/create.go | 38 ++-- pkg/cmd/control/list/list.go | 12 +- pkg/cmd/control/update/update.go | 31 +--- pkg/cmd/control/view/view.go | 16 +- pkg/coredata/control.go | 44 ++--- pkg/coredata/control_implementation_state.go | 66 ------- pkg/coredata/control_maturity_level.go | 11 ++ pkg/coredata/migrations/20260419T172808Z.sql | 23 ++- pkg/docgen/generator.go | 10 +- pkg/probo/control_service.go | 68 ++------ pkg/probo/framework_service.go | 20 +-- pkg/probo/generated_document_service.go | 14 +- .../statement_of_applicability.json.tmpl | 38 ++-- .../api/console/v1/control_resolvers.go | 6 +- .../api/console/v1/graphql/control.graphql | 23 +-- pkg/server/api/console/v1/types/control.go | 1 - pkg/server/api/mcp/v1/schema.resolvers.go | 30 +--- pkg/server/api/mcp/v1/specification.yaml | 48 ++---- pkg/server/api/mcp/v1/types/control.go | 9 +- 32 files changed, 271 insertions(+), 586 deletions(-) delete mode 100644 pkg/coredata/control_implementation_state.go diff --git a/apps/console/src/components/form/ControlMaturityLevelOptions.tsx b/apps/console/src/components/form/ControlMaturityLevelOptions.tsx index cda11fae7..a3fad9a1b 100644 --- a/apps/console/src/components/form/ControlMaturityLevelOptions.tsx +++ b/apps/console/src/components/form/ControlMaturityLevelOptions.tsx @@ -19,14 +19,11 @@ import { import { useTranslate } from "@probo/i18n"; import { Option } from "@probo/ui"; -export const MATURITY_LEVEL_UNSET = "__unset__" as const; - export function ControlMaturityLevelOptions() { const { __ } = useTranslate(); return ( <> - {controlMaturityLevels.map(level => (