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 lintfor 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):
After (v0.6.0):
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
existsoperator - 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"
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
Step 3: Update File Paths
If you reference example files in your code or tests:
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):
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