Model feedback from authoring the reference examples
Two fictional reference impact models (examples/intermediary and
examples/market-adoption) were written against the model to find what it
could not say, or said awkwardly. This page records each finding and what was
decided, so the reasoning outlives the conversation that produced it.
Decisions are done (implemented and tested), documented (a convention,
now written down), planned (assigned to a roadmap item), or declined
(with the reason).
Done
| Finding |
Decision |
| A network-wide roll-up or common-layer indicator has no single outcome to measure, so it was attached to an arbitrary one |
An indicator's measures may name a pathway. Validation accepts it, and a pathway-filtered view includes pathway-level indicators only for that pathway |
| Ordinal levels cannot be summed or averaged, so a "median level" lived only in formula text |
Added median and mode aggregations |
| No actor type for a government office; no external-factor kind for an opportunity (risks already had one) |
Added the government actor type and the opportunity factor kind |
| What may a restricted evidence record contain, and what do renderers show? |
A restricted record (or one with no sensitivity set) may carry a title, type, strength, and source. Its excerpt, summary, and URL are withheld by every renderer, since a URL can reveal where a confidential document lives |
A group's target is one outcome; nothing said what a nested group's target is |
A nested group targets the same outcome as the group containing it. Validation enforces it (VAL-GRP-004) |
| The coverage rule wanted an indicator on every owned outcome, which inflates indicator counts |
IMP-MEA-001 accepts coverage through another indicator's proxyFor |
Documented
| Finding |
Decision |
direction: increase is vague for a qualitative indicator whose rise is bad news |
direction states the desired direction. If a rising level is bad news, the direction is decrease; say why in the indicator's definition |
| Negative-polarity links and precondition logic |
A negative link is an inhibitor, not a precondition: it does not count toward all, any, or at_least logic or toward k. How an inhibitor lowers a pathway's status is decided with the roll-up algorithm (RMI-THEORYOFCHANGESPEC-018) |
| A competitor's momentum has no element type |
Model it as an outcome in the interest sphere with category respond, linked to the outcomes it inhibits. A first-class competitor-response element is deferred until a second example needs it |
Capability relation dependsOn is camelCase while every other enum is snake_case |
It comes from prism-core's shared CapabilityRef and is intentionally left alone so the PRISM modules stay interchangeable |
In YAML flow mappings ({a: b, c: d}), an unquoted comma inside a value silently splits the mapping |
Schema validation catches it. The authoring guide recommends block style, which fmt always produces |
provenance.decidedBy is free text, so nothing stops a personal name |
By convention it names a group or role. Detecting personal names is not something code can do reliably; the authoring guide and the review checklist say so |
| Responsibility (own, shared, partner) and a problem tree are not modelled |
Both are in RMI-THEORYOFCHANGESPEC-044. Until then the ceiling is a level and root causes are text |
Planned
| Finding |
Roadmap item |
A weighted_mean roll-up cannot be computed if the weight metric has no indicator |
Lint rule IMP-MET-003, in RMI-THEORYOFCHANGESPEC-014 |
pathway.outcomeIds and indicators' pathwayIds are two lists kept consistent by hand |
Lint rule IMP-PTH-003, in RMI-THEORYOFCHANGESPEC-014 |
| A group's members should each have a link into the group's target |
Already covered by IMP-STR-007, in RMI-THEORYOFCHANGESPEC-013 |
Assumption appliesTo and a link's assumptionIds can disagree |
A consistency lint rule, in RMI-THEORYOFCHANGESPEC-014 |
Declined (for now)
| Finding |
Reason |
A window field on metrics ("trailing twelve months") |
Useful, but it changes how observations and targets are compared, so it deserves its own design. It is recorded for a later minor version; until then the window is stated in the formula |
| One indicator measuring both an outcome and an assumption |
Two indicators are clearer and cost little. Revisit if authors keep hitting it |
| A "key outcome" or "monitored" flag on outcomes |
proxyFor already expresses "this indicator also stands in for that outcome" without a second mechanism |
A layer label on outcomes for two-layer impact |
Layer one versus layer two is already visible through sphere, the indicator claim, and the ceiling of accountability. A fourth signal would add overlap, not information |
changeType has no standardization |
That value describes what an intervention does, not the kind of change an outcome describes; the outcome's adoption or policy change type fits |