Skip to content

v0.6.0 Release Notes

Release Date: 2026-05-10

Highlights

  • BREAKING: Three-Part Schema Taxonomy - Model, State, Plan workflow
  • Domain-Centric Examples - Organized by domain instead of document type
  • MaturityStateDocument Type - Formal Go type for state tracking
  • Consistent Schema Naming - prism-maturity-{model,state,plan}.schema.json
  • Model Lint Command - prism maturity model lint for identifying dashboard display issues
  • Enhanced Dashboard Display - Qualitative state, threshold gaps, and security methodology groupings

Breaking Changes

Schema File Renames

Old Name New Name
maturity.schema.json prism-maturity-model.schema.json
prism.schema.json prism-maturity-plan.schema.json
(new) prism-maturity-state.schema.json

Schema URLs

Update your $schema references:

Before (v0.5.0):

{
  "$schema": "https://github.com/grokify/prism/schema/maturity.schema.json"
}

After (v0.6.0):

{
  "$schema": "https://github.com/grokify/prism/schema/prism-maturity-model.schema.json"
}

Examples Directory Restructure

Before (v0.5.0):

examples/
├── maturity-models/
│   ├── operations/model.json
│   └── security/model.json
├── maturity-state/
│   ├── operations/state-q2-2026.json
│   └── security/state-q2-2026.json
└── prism-documents/
    └── *.json

After (v0.6.0):

examples/
├── operations/
│   ├── model.json
│   ├── state-q2-2026.json
│   └── plan.json
├── security/
│   ├── model.json
│   └── state-q2-2026.json
├── organization/
│   ├── model.json
│   └── state-q1-2026.json
├── quality/
│   └── plan.json
└── prism-documents/
    └── *.json (additional examples)

Added

Three-Part Schema Taxonomy

PRISM now uses three schemas representing the Model → State → Plan workflow:

Schema Purpose Question Answered
prism-maturity-model Definitions What does good look like?
prism-maturity-state Measurement Where are we now?
prism-maturity-plan Execution How do we get there?

MaturityStateDocument Type

New top-level document type for state tracking:

type MaturityStateDocument struct {
    Schema        string                `json:"$schema,omitempty"`
    Metadata      MaturityStateMetadata `json:"metadata"`
    SLOWindows    []string              `json:"sloWindows,omitempty"`
    SLIState      SLIStateMap           `json:"sliState,omitempty"`
    MaturityState MaturityStateMap      `json:"maturityState,omitempty"`
    EnablerState  EnablerStateMap       `json:"enablerState,omitempty"`
}

Schema Embedding Functions

// New functions
schema.MaturityModelSchemaJSON()
schema.MaturityStateSchemaJSON()
schema.MaturityPlanSchemaJSON()

// Constants
schema.MaturityModelSchemaID
schema.MaturityStateSchemaID
schema.MaturityPlanSchemaID

Model Lint Command

New prism maturity model lint command helps identify issues that affect dashboard display:

prism maturity model lint model.json
prism maturity model lint model.json --strict  # Treat warnings as errors

Checks performed:

Check Severity Description
Missing sliId Error Criteria won't appear in dashboard
Missing operator Error Threshold can't display
target=0 (quantitative) Warning May be unintentional
Qualitative without exists Warning Should use exists operator
Orphan SLIs Warning Defined but unused
Missing unit Info Affects threshold formatting
Missing sliType Info Affects methodology grouping
Threshold gaps Warning Missing levels between defined ones

Dashboard Enhancements

Qualitative Threshold Display:

  • Shows "Tracked" under maturity levels for qualitative SLIs using exists operator
  • Shows "-" for maturity levels without defined thresholds

Qualitative State in Subtitles:

  • Shows "Measured (M1)" or "Tracked (M1)" when state has qualitativeState
  • Shows "Not Tracked (M#)" for qualitative SLIs without state data

Security Methodology Groupings:

Dashboard now supports security-specific methodology categories:

Category SLI Type Description
Prevention prevention Security controls that prevent threats
Detection detection Monitoring and alerting capabilities
Response response Incident handling and remediation
AI Prevention ai_prevention AI/ML protection controls
AI Detection ai_detection AI/ML monitoring capabilities
AI Response ai_response AI/ML recovery procedures

Removed

The following deprecated items have been removed:

Schema Functions

Removed Use Instead
PRISMSchemaJSON() MaturityPlanSchemaJSON()
PRISMSchemaMap() MaturityPlanSchemaMap()
SchemaID() MaturityPlanSchemaID

Maturity Model Types

Removed Type Migration
KPIThreshold Use SLI definitions with criteria targets
LevelThresholds Use Level.Criteria with SLI references
DomainAssessment Use PRISM Maturity State documents

Maturity Model Fields

Removed Field Migration
Spec.KPIThresholds Define SLIs in Spec.SLIs and reference via Criterion.SLIID
Spec.Assessments Use separate PRISM Maturity State documents

Migration Guide

Step 1: Update Schema References

In your maturity model files:

- "$schema": "https://github.com/grokify/prism/schema/maturity.schema.json"
+ "$schema": "https://github.com/grokify/prism/schema/prism-maturity-model.schema.json"

In your state files:

- "$schema": "https://github.com/grokify/prism/schema/prism-maturity-state.schema.json"
+ "$schema": "https://github.com/grokify/prism/schema/prism-maturity-state.schema.json"
(State schema URL unchanged)

In your plan/document files:

- "$schema": "https://github.com/grokify/prism/schema/prism.schema.json"
+ "$schema": "https://github.com/grokify/prism/schema/prism-maturity-plan.schema.json"

Step 2: Update Go Code

- schemaBytes := schema.PRISMSchemaJSON()
+ schemaBytes := schema.MaturityPlanSchemaJSON()

Step 3: Update File Paths

If you reference example files in your code or tests:

- "examples/maturity-models/operations/model.json"
+ "examples/operations/model.json"

Step 4: Migrate KPIThresholds to SLIs

If you were using embedded kpiThresholds, migrate to the SLI-based approach:

Before (v0.5.0):

{
  "kpiThresholds": {
    "availability": [
      {"level": 1, "min": 0, "max": 95},
      {"level": 2, "min": 95, "max": 99},
      {"level": 3, "min": 99, "max": 99.9}
    ]
  }
}

After (v0.6.0):

{
  "slis": {
    "sli-availability": {
      "id": "sli-availability",
      "name": "Service Availability",
      "metricName": "availability_pct",
      "unit": "%",
      "type": "quantitative"
    }
  },
  "domains": {
    "operations": {
      "levels": [
        {
          "level": 1,
          "criteria": [
            {"id": "avail-l1", "sliId": "sli-availability", "operator": ">=", "target": 95}
          ]
        }
      ]
    }
  }
}

Step 5: Migrate Assessments to State Documents

If you were using embedded assessments, create a separate PRISM Maturity State document:

Before (embedded in model):

{
  "assessments": {
    "security": {
      "currentLevel": 2,
      "sliValues": {
        "sli-vuln-count": 45
      }
    }
  }
}

After (separate state document):

{
  "$schema": "https://github.com/grokify/prism/schema/prism-maturity-state.schema.json",
  "metadata": {
    "name": "Security State Q2 2026",
    "maturityModelRef": "./model.json"
  },
  "maturityState": {
    "security": {
      "currentLevel": 2
    }
  },
  "sliState": {
    "sli-vuln-count": {
      "currentValue": 45
    }
  }
}

This separation enables:

  • Versioned state snapshots without modifying the model
  • Multiple state documents for different time periods
  • Clear separation of "what good looks like" vs "where we are"

Document Relationships

┌─────────────────────────────────────────────────────────────────┐
│                    prism-maturity-model                         │
│              "What does M4 availability mean?"                  │
│         SLIs, domains, levels, criteria, enablers               │
└─────────────────────────────────────────────────────────────────┘
                              │ references (maturityModelRef)
┌─────────────────────────────┴───────────────────────────────────┐
│                    prism-maturity-state                         │
│              "We're at M3, availability is 99.7%"               │
│       Current values, temporal windows, history, gaps           │
└─────────────────────────────────────────────────────────────────┘
                              │ references (maturityStateRef)
┌─────────────────────────────┴───────────────────────────────────┐
│                    prism-maturity-plan                          │
│              "Reach M4 by Q4 via these initiatives"             │
│         Goals, phases, initiatives, teams, roadmap              │
└─────────────────────────────────────────────────────────────────┘

Bug Fixes

  • Dashboard threshold display for models without sliType - flat bullet list now correctly includes thresholds

See Also