Skip to content

Metrics dashboard

This folder holds the generated process metrics for the project. Nothing here is hand-edited; everything is produced by scripts/lss_metrics.py. The KPI definitions are in ../KPIS.md.

Contents

Path What it is
DASHBOARD.md Human-readable summary: sprint table, KPI vs target with status, contribution table, open blockers, run-rule signals, open PRs waiting for review
history.csv One row per snapshot date with the headline KPI values; the source for trend questions at retrospectives
snapshots/YYYY-MM-DD.json Full output of summarize() for that date, including every per-issue and per-PR data point used
charts/cycle_time_xmr.png XmR chart of issue cycle time in closure order
charts/pr_first_review_xmr.png XmR chart of PR first-review turnaround in PR creation order

How it is generated

Automatically. The workflow .github/workflows/lss-metrics.yml runs every Sunday at 06:00 UTC (and on demand from the Actions tab). It runs the script against this repository and opens a pull request on branch metrics/weekly. The Scrum Master reviews and merges it on Monday. The PR is labeled type:process and kaizen.

Manually.

pip install -e ".[dev]"
export GITHUB_TOKEN=<token with repo read access>     # PowerShell: $env:GITHUB_TOKEN = "<token>"
python scripts/lss_metrics.py --repo jeraddunne/csc580-group9-msr2027

Options:

Flag Meaning Default
--repo owner/name repo in project.yml
--out Output folder docs/lean-six-sigma/metrics
--since ISO date; ignore issues, PRs, runs, and commits created before it formation start in project.yml
--token GitHub token GITHUB_TOKEN environment variable
--offline-fixture Path to a JSON file with issues, prs, reviews, runs, commits in the normalized shape; no network access none

The fixture format is the same as what the script writes under snapshots/*.json in the inputs key, so a snapshot can be replayed offline.

How to read the XmR charts

An XmR chart (individuals and moving range) shows one dot per item in time order with a centre line and two limits.

  • Centre line (X-bar). The mean of all values.
  • Moving range (mR). The absolute difference between each value and the previous one. mR-bar is the mean of those.
  • Upper natural process limit (UNPL). X-bar + 2.66 x mR-bar.
  • Lower natural process limit (LNPL). X-bar - 2.66 x mR-bar, floored at 0 because time cannot be negative.
  • Upper range limit (URL). 3.267 x mR-bar, used on the moving range panel.

The limits are not targets. They describe what the process is currently capable of. The target (for example 5 days) is drawn as a dashed line so the team can see whether the process, as it is, can meet the target at all. If the whole band sits above the target, no amount of trying harder will fix it; the process has to change.

Run rules (signals)

The script flags three patterns. Each becomes a row in the dashboard under "Signals" with the item numbers involved.

Rule Pattern Meaning
beyond_limits A single point above UNPL or below LNPL Something unusual happened to that specific item; ask what
eight_same_side Eight or more consecutive points on the same side of the centre line The process has shifted; the centre line is no longer representative
six_trending Six or more consecutive points each higher (or each lower) than the previous A steady drift; find what is changing over time

Reaction: a signal is discussed at the next Thursday check-in. If it repeats the following week, the Scrum Master opens a 5 Whys using ../ROOT_CAUSE_TEMPLATE.md.

With fewer than 6 points the chart is drawn without limits and no rules are evaluated; the dashboard says so.

Status column

Status Meaning
ok Value meets the target in project.yml
warn Value misses the target
info No target; trend only
nodata Not enough data yet

First run

Before the first PR and closed issue exist, the dashboard will say "no data yet" for most rows. That is expected during Formation.