Direct answer
The goal of the half-day (240 minutes) is to leave with one written definition, one canonical query and one named owner for each contested metric, plus a lightweight process for changing them later. I would make the disagreement concrete before debating it: have all 8 teams compute the metric on the same handful of sample accounts and compare answers. Definitions argued in the abstract produce vague compromises; definitions tested against real cases expose exactly where teams differ. A canonical query is the one agreed piece of code or logic that every report must reuse for that metric.
Structured elaboration
Pre-work (one week before): each team submits the definition and query it uses for its top 3 metrics and nominates one person with authority to agree for that team. The facilitator then groups the up to 24 submissions (8 teams x 3 metrics) by metric name and picks the six to resolve live: the ones where at least two teams give different definitions and the number reaches executives or customers. The rest are settled in writing afterwards, using whatever the session decides.
| Minutes | Block | Technique |
|---|
| 15 | Frame: goal, rules, decision rule | Decision rule stated first: try consent (nobody has a reasoned objection), then the named metric owner decides |
| 30 | Metric map: each team shows its metric, definition, source table and owner | Scribe fills one shared map |
| 45 | Sample-case exercise: teams classify the same accounts independently, then reveal | Silent answers first, then reveal together |
| 15 | Break | |
| 60 | Resolve the six pre-selected metrics, about 10 minutes each | Options on screen, fist-to-five (hold up a closed fist for "I block this" or one to five fingers for increasing support, so anyone showing fewer than three is asked what change would raise their number) |
| 30 | Write canonical definitions, glossary entries with worked examples | Pairs draft, room edits |
| 30 | Design governance for future changes | Agree owner, change process, enforcement |
| 15 | Commitments read-back | Each team states what it will change and by when |
The blocks sum to 240 minutes.
Worked example: "churned customer" on six sample accounts, as of 31 March
Three definitions are in use: Finance counts a customer as churned if the subscription ended in March; Product counts a customer as churned if there has been no login for 30 days or more; Customer Success counts customers who gave notice in March.
| Account | Notice | Subscription ends | Days since login | Finance | Product | CS |
|---|
| A | Mar 3 | Mar 3 | 30 | yes | yes | yes |
| B | Mar 10 | Apr 10 | 22 | no | no | yes |
| C | none | none | 39 | no | yes | no |
| D | Mar 20 | Mar 31 | 12 | yes | no | yes |
| E | Feb 25 | Mar 25 | 7 | yes | no | no |
| F | none | none | 1 | no | no | no |
Finance counts 3 (A, D, E), Product counts 2 (A, C), CS counts 3 (A, B, D). Totals alone hide that the sets differ. The agreed outcome: churn = subscription end date within the month, owned by Finance; "dormant" (no login 30 days) and "notice given" become separately named leading indicators owned by Product and CS. The disagreement is resolved by giving each idea its own name.
Escalation policy: if a metric is not agreed within its 10 minutes, the named metric owner decides at the end of the session; if the owner is contested, the head of data governance (the person accountable for company-wide data rules) decides within 48 hours.
Governance so decisions stick
- Every metric has one owner, a version number and a change request (a short form asking to change a definition). A filled-in example:
text
Metric: churned customer Current version: v1.0
Requested change: count a customer as churned when the subscription end date falls in the month (v2.0)
Why: Finance and Product report different churn counts for the same month
Affected: board dashboard, CS weekly report, 2 forecasting models
Expected effect: March count moves from 2 (login-based) to 3
Owner: Finance Decision date: 15 April
- Changes are reviewed on a fixed monthly cadence. A breaking change is one that moves a number people already publish (like the churn example above), so it gets a notice period and the old name is kept as a labelled alias: the old metric name still works but is tagged "deprecated, now means v2.0" until dashboards are migrated.
- Enforcement in the pipelines: dashboards read from the canonical query or a shared metrics layer (one governed place where each metric is defined once, so every dashboard asks that place instead of writing its own query). An automated reconciliation test recomputes the metric from the canonical query each night and compares it with the number each report shows. Example result: canonical churn for March is 3; the Product retention dashboard shows 2 (it uses the login-based definition, which the six-account table counts as A and C), so the test flags that dashboard as drifted and names its owner. The CS report, which counts notices given, also shows 3, the same total as canonical churn, so a test that compares only the totals would pass it even though its set (A, B, D) differs from the canonical set (A, D, E). That is why the test should also compare the account lists (which accounts are counted), not just the totals: it would then flag the CS report as measuring a different thing and it would be renamed to the "notice given" indicator.
- The glossary lives next to the code, with the six-account table above kept as the worked example.
Trade-offs and pitfalls
- Eight teams means eight vetoes. Pre-agree the decision rule or the day becomes a negotiation.
- Do not redefine metrics silently afterward; restated history needs an announcement.
- Skipping the sample-case step produces definitions that read fine and still disagree on edge cases.