KPI relationship map — working trial 7.4
A native diagnostic for 12 fictional KPI definitions, 23 source fields and five metric-to-metric relationships. Six objective groups organise the dictionary. Infrastructure, passenger-operator, freight-operator and station-user boundaries are explicit. State is local and independent of other trials.
Implemented
- Switch the metric network and objective-group hierarchy. Group links perform no arithmetic.
- Inspect a complete KPI dictionary: owner, formula, output unit, denominator, actor, project, refresh period and definition.
- Select a KPI to inspect its upstream numerator/denominator field links and source period/unit/value.
- Edit source observations (blank means unknown), units and period. Edit ownership, formula field references/multiplier, output unit, refresh period, definition and objective group.
- Add an aggregation claim or causal hypothesis with a rationale; these relations are diagnosed, never used to calculate or propagate values.
- Show missing ownership/source data, zero denominator, source actor/project or period mismatch, formula-unit mismatch, incompatible aggregation and untested causal links.
- Formula evaluation is a safe explicit numerator ÷ denominator × multiplier (or identity × multiplier); no expression evaluation or arbitrary code. Nonfinite results remain unknown.
- Shared shell supplies independent save/load/import/export/reset. Tables accompany graph projections and source inspection.
Reference checks
Run node --test apps/kpi-map/app.test.mjs. Eight tests check the hand-calculated fixture, unknown/zero-denominator semantics, isolated source edits, seeded findings, relationship-type distinctions, import failures, escaped accessible form controls and hostile presentation extras.
Reference values: asset availability = 930 / 1000 × 100 = 93%; decision waiting = 42 / 7 = 6 days/decision; unowned action count = 3; material reuse = 18 / 60 × 100 = 30%. Evidence freshness is unknown because its numerator is null; entering 15 produces 75%. BVR-K4 has no owner. BVR-KL1 proposes an incompatible percentage-to-days aggregation. BVR-KL4 incorrectly proposes combining passenger and freight ratios with different actors and denominators. Three causal links remain explicitly untested.
Limits and simpler practice
These are scenario-specific metric definitions, not official railway performance measures or a balanced-scorecard recommendation. Compatible-looking units do not establish valid aggregation; no metric-to-metric link combines values. Formula units are checked by stated unit strings and boundary identifiers, not by a general dimensional-analysis engine. Source data is fictional and manually entered; there are no live organisational feeds or causal predictions. A KPI dictionary table may be sufficient; the network adds visibility of assumed relationships. Practical diagnostic usefulness has not been measured.
Graph rendering uses a closed projection of known text fields and computed finite coordinates. Imported fill/style/stroke or extra relationship-label objects are never coerced or copied into SVG.