PRD: PRISM Schema Restructure (v0.6.0)
Status: Planned Target Version: v0.6.0 Author: PRISM Team Created: 2026-05-10
Overview
Restructure PRISM schemas into a clear three-part taxonomy: Model, State, and Plan. This creates a unified naming convention and clarifies the purpose of each document type.
Problem Statement
Current schema naming is inconsistent:
maturity.schema.json- Maturity model definitionsprism.schema.json- Mix of metrics, goals, phases, initiatives
The relationship between document types is unclear, and the naming doesn't reflect the Model → State → Plan workflow.
Proposed Solution
Schema Taxonomy
| Schema | Purpose | Focus | Question Answered |
|---|---|---|---|
prism-maturity-model.schema.json |
Definitions | What does good look like? | "M4 availability means ≥99.9%" |
prism-maturity-state.schema.json |
Measurement | Where are we now? | "Current availability is 99.7%" |
prism-maturity-plan.schema.json |
Execution | How do we get there? | "Reach M4 by Q4 via these initiatives" |
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 │
└─────────────────────────────────────────────────────────────────┘
Schema Contents
prism-maturity-model.schema.json
Defines what maturity levels mean. No current state.
{
"$schema": "prism-maturity-model.schema.json",
"metadata": { "name": "Operations Maturity Model" },
"slis": {
"sli-availability": {
"name": "Service Availability",
"unit": "%",
"sliType": "availability",
"measurementType": "quantitative"
}
},
"domains": {
"reliability": {
"levels": [
{ "level": 1, "criteria": [...] },
{ "level": 2, "criteria": [...] }
]
}
}
}
prism-maturity-state.schema.json
Tracks current state with temporal windows. References a model.
{
"$schema": "prism-maturity-state.schema.json",
"metadata": {
"name": "Operations State Q2 2026",
"maturityModelRef": "./model.json"
},
"sloWindows": ["7d", "30d", "90d", "quarterly"],
"sliState": {
"sli-availability": {
"windows": {
"30d": { "value": 99.7, "timestamp": "2026-05-10T00:00:00Z" }
},
"history": [...]
}
},
"maturityState": {
"reliability": {
"currentLevel": 3,
"targetLevel": 4
}
}
}
prism-maturity-plan.schema.json
Defines improvement roadmap. References state (and transitively, model).
{
"$schema": "prism-maturity-plan.schema.json",
"metadata": {
"name": "Operations Improvement Plan 2026",
"maturityStateRef": "./state-q2-2026.json"
},
"goals": [
{
"id": "goal-reliability",
"name": "Achieve High Reliability",
"targetLevel": 4,
"targetDate": "2026-12-31"
}
],
"phases": [
{
"id": "phase-q2-2026",
"name": "Q2 2026",
"goalTargets": [...]
}
],
"initiatives": [
{
"id": "init-observability",
"name": "Observability Platform",
"phaseId": "phase-q2-2026",
"goalIds": ["goal-reliability"]
}
],
"teams": [...],
"services": [...]
}
Examples Directory Restructure
Current Structure (by type)
examples/
├── prism-documents/
│ ├── operations-metrics.json
│ ├── operations-layers.json
│ └── goal-roadmap.json
├── maturity-models/
│ ├── operations/model.json
│ └── security/model.json
└── maturity-state/
├── operations/state-q2-2026.json
└── security/state-q2-2026.json
Proposed Structure (by domain)
examples/
├── operations/
│ ├── model.json # prism-maturity-model
│ ├── state-q2-2026.json # prism-maturity-state
│ └── plan-2026.json # prism-maturity-plan
├── security/
│ ├── model.json
│ ├── state-q2-2026.json
│ └── plan-2026.json
├── organization/
│ ├── model.json
│ └── state-q1-2026.json
└── README.md
Migration Path
Schema File Changes
| Current | New |
|---|---|
maturity.schema.json |
prism-maturity-model.schema.json |
prism.schema.json |
prism-maturity-plan.schema.json |
| (new) | prism-maturity-state.schema.json |
Code Changes
- Schema generation - Update
schema/generate*.gofiles - Schema embedding - Update
schema/embed.gowith new file names - CLI commands - Update
$schemareferences in scaffolds - Validation - Update schema validation logic
- Examples - Restructure and update
$schemareferences
Breaking Changes
$schemaURLs change for all document types- Example file paths change
- CLI output may reference new schema names
Implementation Phases
Phase 1: Schema Files
- Create
prism-maturity-model.schema.json(rename frommaturity.schema.json) - Create
prism-maturity-state.schema.json(formalize existing state format) - Create
prism-maturity-plan.schema.json(rename fromprism.schema.json) - Update
schema/embed.gowith new embeddings
Phase 2: Go Types
- Review and update Go types to match new schema organization
- Add
MaturityStateRefandMaturityModelReffields - Update validation functions
Phase 3: Examples
- Restructure
examples/to domain-centric layout - Update all
$schemareferences - Create missing state and plan files for each domain
Phase 4: CLI
- Update
prism initto generate new schema references - Update
prism validateto recognize all three schema types - Consider new commands:
prism model,prism state,prism plan
Phase 5: Documentation
- Update README with new schema taxonomy
- Update MkDocs site with new structure
- Add migration guide for v0.5.0 → v0.6.0
Success Criteria
- All three schemas are formally defined and generated from Go types
- Examples demonstrate the Model → State → Plan workflow
- CLI commands work with all three document types
- Documentation clearly explains the taxonomy
- Migration guide helps users upgrade
Timeline
| Phase | Description | Estimate |
|---|---|---|
| 1 | Schema files | - |
| 2 | Go types | - |
| 3 | Examples | - |
| 4 | CLI | - |
| 5 | Documentation | - |
Open Questions
- Should Plan reference State directly, or should it reference Model and State separately?
- Should we support inline state in Plan documents for simpler use cases?
- How should CLI commands be organized? (
prism model,prism state,prism planvs. current structure) - Should we add a
prism migratecommand to help users upgrade?
References
- v0.5.0 Release Notes - Model/State separation
- REFACTOR_MATURITY_STATE.md - Initial separation design
- Core PRD - Overall PRISM vision