Replace implemented column with CMMI maturity level
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 <sacha@getprobo.com>
This commit is contained in:
@@ -248,12 +248,12 @@ func CreateControl(c *testutil.Client, frameworkID string, attrs ...Attrs) strin
|
||||
`
|
||||
|
||||
input := map[string]any{
|
||||
"frameworkId": frameworkID,
|
||||
"name": a.getString("name", SafeName("Control")),
|
||||
"description": a.getString("description", "Test control description"),
|
||||
"sectionTitle": a.getString("sectionTitle", fmt.Sprintf("Section %s", gofakeit.LetterN(3))),
|
||||
"bestPractice": a.getBool("bestPractice", true),
|
||||
"implemented": a.getString("implemented", "IMPLEMENTED"),
|
||||
"frameworkId": frameworkID,
|
||||
"name": a.getString("name", SafeName("Control")),
|
||||
"description": a.getString("description", "Test control description"),
|
||||
"sectionTitle": a.getString("sectionTitle", fmt.Sprintf("Section %s", gofakeit.LetterN(3))),
|
||||
"bestPractice": a.getBool("bestPractice", true),
|
||||
"maturityLevel": a.getString("maturityLevel", "INITIAL"),
|
||||
}
|
||||
|
||||
if justification := a.getStringPtr("notImplementedJustification"); justification != nil {
|
||||
@@ -502,8 +502,8 @@ func (b *ControlBuilder) WithBestPractice(bestPractice bool) *ControlBuilder {
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *ControlBuilder) WithImplemented(implemented string) *ControlBuilder {
|
||||
b.attrs["implemented"] = implemented
|
||||
func (b *ControlBuilder) WithMaturityLevel(maturityLevel string) *ControlBuilder {
|
||||
b.attrs["maturityLevel"] = maturityLevel
|
||||
return b
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user