v0.17.0¶
Release Date: 2026-08-15
Highlights¶
- Optional MoSCoW on RoadmapItem: empty means "not yet prioritized" — enabling honest import of unprioritized items from external PM tools instead of a silent
should_havedefault - OKR objective/key-result linking:
RoadmapItemgainsObjectiveRefs/KeyResultRefs;RICEByObjectiverolls up RICE-scored work per OKR objective, andUnlinkedScoredItemssurfaces prioritized work not tied to any objective - v2mom and OST land in their canonical home: the v2mom family (vision, values, methods, obstacles, measures, alignment, summary) and the continuous-discovery opportunity-solution-tree template/rubric are now defined here, upstreamed from downstream local copies
- Rubric format canonicalization:
assumption-map,bmc, anddiscovery-snapshotmigrate from an intermediate flat format to nativestructured-evaluationrich format - RICE validation hardening: unrecognized (non-empty) impact/confidence values are now rejected instead of silently falling back to a default multiplier
Overview¶
The motivating use case for the MoSCoW change is external-tool import: the omniroadmap ecosystem converts Aha!/ProductBoard/Jira Product Discovery records into RoadmapItems, and most imported items arrive without prioritization data. Rather than fabricating a default priority, they now stay honestly unprioritized and validate cleanly — triage happens later in prism-roadmap's own tooling (splan rmi update --moscow ..., the MCP update_rmi tool).
The OKR linking work answers a planning question the RICE scoring alone couldn't: "how much prioritized effort is actually backing each objective?" RICEByObjective joins RoadmapItem.ObjectiveRefs against okr.Objective and returns one rollup per objective — including objectives with zero linked items, so coverage gaps stay visible rather than silently omitted.
The v2mom/OST and rubric-format work upstream content and fixes that had previously been authored or reapplied downstream (in specification-workflow-spec and its consumers) as local, upstream-candidate copies — this release makes prism-roadmap the actual source of truth for that content again, closing the gap tools/prism-sync's local replace directive was standing in for.
Changes¶
MoSCoW optional on rmi.RoadmapItem¶
Validate()accepts an empty MoSCoW; invalid non-empty values are still rejected.- The
moscowJSON field gainsomitempty— unset serializes as absent, not as"". IsActionable()continues to return false for unprioritized items (unchanged behavior; empty was already non-actionable).Service.Createno longer defaults an empty MoSCoW toshould_have— empty persists as unset. CLI behavior is unchanged —splan rmi create's--moscowflag still defaults toshould_have; pass--moscow=""explicitly to create an unprioritized item.prioritization.MoSCoWUnspecifiednames the zero value.
OKR objective/key-result linking¶
RoadmapItem.ObjectiveRefs/KeyResultRefswithAddObjectiveRef,AddKeyResultRef,SupportsObjective.rmi.RICEByObjective(items, objectives)— oneObjectiveRICEper objective (ScoredCount,TotalRICE,MeanRICE,TopRICE), ordered byTotalRICEdescending.rmi.UnlinkedScoredItems(items)— RICE-scored items with noObjectiveRefs.
RICE validation¶
ImpactLevel/ConfidenceLevelgainIsValid()andParseImpactLevel()/ParseConfidenceLevel().RICEScore.Validate()rejects a non-empty, unrecognized impact or confidence value instead of silently applying a default multiplier inMultiplier().
v2mom and OST templates/rubrics¶
New canonical templates and rubrics: v2mom-vision, v2mom-values, v2mom-methods, v2mom-obstacles, v2mom-measures, v2mom-alignment, v2mom-summary (template only — a rolled-up synthesis document, not independently rubric-scored), and the continuous-discovery ost (opportunity-solution-tree) template + rubric.
Rubric format canonicalization¶
assumption-map, bmc, and discovery-snapshot rubrics rewritten from the intermediate flat format (spec_type key, no id, no passCriteria) to native structured-evaluation rich format (id, passCriteria.maxFindingsSeverity).
Regenerated JSON schemas¶
Regeneration picked up pre-existing drift and the new fields above:
MarketSignal:idea_refsRoadmapItem:objective_refs,key_result_refs
Dependencies¶
plexusone/structured-evaluationbumped to v0.14.0 (layered-rubric schema, needed for the rubric format work above).
Compatibility¶
Two breaking changes, both loosening/reshaping rather than removing capability:
rmi.RoadmapItem.Validate()no longer rejects an emptyMoSCoW— code relying onValidate()to enforce MoSCoW presence needs an explicit check now.- The
assumption-map,bmc, anddiscovery-snapshotrubric YAML files changed shape (spec_type→id, newpassCriteriablock). Any consumer parsing these files directly by the old flat shape needs to move tostructured-evaluation'sRubricSet.
Everything else in this release is additive. Existing JSON documents are otherwise unaffected (the schema never marked moscow as required).