Skip to content

Release Notes v0.4.0

Released: 2026-11-01

Two strategy and improvement formats join the projections of an impact model. A V2MOM is drawn from the model's vision, values, and pathways, and a DMAIC metrics document from the programs measured often enough to improve with statistics. The README now says what the format is: a causal model that states which interventions should change which outcomes, and why.

This release is additive for documents and the command line. One Go function, prismx.ToOKR, returns a type from a different module; see Upgrading.

Highlights

  • V2MOM. export v2mom writes the vision and values from the context, one method per pathway with its interventions as projects, measures from each pathway's North Star and guardrails, and obstacles from risks and the assumptions not yet shown to hold.
  • DMAIC. Mark a pathway projections: [dmaic], and lint checks that its indicators are measured often enough and from enough people. export dmaic writes each indicator as a metric with its observations, control limits once there are enough points, root causes, improvement initiatives, and a phase.
  • A course catalog example. A fictional nonprofit's free on-demand courses, run with DMAIC on weekly completion with a post-course survey as guardrail.

New Features

V2MOM projection

impact-model export v2mom impact-model.yaml -O observations.yaml -o v2mom.json
V2MOM From the impact model
Vision context.vision
Values context.values, new in this release, in order
Methods one per pathway; its interventions are the method's projects
Measures each pathway's North Star, one metric that matters, and guardrails
Obstacles risks, and high or critical assumptions not yet shown to hold, by their assessed status with -O

A model without a vision, values, or a pathway is refused with a message naming what to add. The V2MOM guide maps each part and follows one pathway from the model to the V2MOM.

DMAIC projection

pathways:
  - id: pw-catalog
    projections:
      - dmaic
impact-model lint impact-model.yaml
impact-model export dmaic impact-model.yaml -O observations.yaml -o dmaic.json

Three new lint rules check the indicators of a pathway marked for DMAIC, and only those:

  • IMP-DMA-001: it states a frequency and a data source
  • IMP-DMA-002: it is measured at least 20 times a year
  • IMP-DMA-003: a survey indicator gets at least 30 responses per measurement

The export makes each marked pathway a category and each indicator with a numeric baseline and target a metric. Observations become data points, without disaggregated slices, and control limits are those of an individuals chart, computed only from 20 or more points. Root causes come from the problem tree, initiatives from the pathway's interventions, and the phase is derived by a documented convention. Process capability is not filled, because an impact model records targets and not specification limits. The DMAIC guide explains each part.

Model additions

  • context.values: the principles that guide how the organization works, most important first. A value needs a name (VAL-DOC-006), and names are unique (VAL-DOC-007).
  • pathway.projections: what else a pathway is meant for. Its one value is dmaic. An unknown or repeated projection is reported (VAL-PTH-007).

Examples

examples/course-catalog is new: a pathway marked for DMAIC, weekly platform, survey, and forum indicators, and 24 weeks of observations. Some indicators are flagged by the DMAIC lint rules on purpose. The intermediary example gains values, so it exports as a V2MOM.

Documentation

  • The README and the docs index describe the impact model as a causal model, and show V2MOM and DMAIC as available projections.
  • New V2MOM and DMAIC guides, written for readers who already know those formats.
  • The glossary says how each projection names an intervention: an activity in the logic model and a project in V2MOM, delivered by initiatives linked through initiativeRefs.

Installation

go install github.com/ProductBuildersHQ/impact-model/cmd/[email protected]

Go 1.26.5 or later. The optional programs are the same as in v0.3.0.

Upgrading

Documents and the command line

Nothing to change. Every new field is optional, specVersion stays "0.1", and the OKR export writes the same JSON as before. A model that was GO stays GO: the new lint rules only check pathways marked for DMAIC.

Go code that calls prismx.ToOKR

The OKR types moved from structured-goals into prism-roadmap, where the other PRISM tools use them, and structured-goals is deprecated. ToOKR now returns *okr.OKRDocument from the new package. Change the import:

// was: import "github.com/grokify/structured-goals/okr"
import "github.com/grokify/prism-roadmap/goals/okr"

The fields and the JSON they write are the same.

Compatibility

An API comparison against v0.3.0 reports the new types and functions above as compatible changes, and one incompatible change: the result type of prismx.ToOKR. Dependencies: prism-roadmap v0.22.0 and prism-core v0.6.0, and structured-goals is no longer used.

Known Limitations

  • Disaggregated observations. The status of an indicator can take a disaggregated observation, one for a single group, as its latest overall value. This affects reports and the OKR and V2MOM exports; the DMAIC export leaves such observations out. What a disaggregated observation means for the overall status is not yet specified.
  • V2MOM dates. A model with no created or updated date exports them as the zero time, because the V2MOM format does not omit an empty date.
  • DMAIC phases are derived by convention; the model does not record them.
  • The limitations of v0.3.0 still apply.