Specify the outcome to count
A metric starts with a business question. “Are requests resolved in time?” does not yet define an executable measure. In a fictional service, choose a unique request as the unit, admission as the start and completion as the relevant end state. The teaching commitment is four hours, including the exact boundary. Define the population too: requests admitted by the observation instant whose full four-hour window has elapsed. The measure checks whether the request is complete at that instant and completion occurred within the window. This last rule matters when requests reopen. It is not a universal SLA definition. Before applying a similar rule at work, confirm meaning with business, operations and data owners. Record exceptions, calendar, version and purpose so teams do not calculate different numbers under one name.
Give requests the same observation opportunity
At hour twelve, a request admitted at hour eleven has had only one hour to finish. Calling it late under a four-hour measure would be premature. In the exercise, I, J and K have not had the full window and remain in an explicit category. I has already finished but stays outside the main denominator so selection does not include only quick successes among recent requests. This does not require hiding the completion: the report retains each request’s state and can separately show preliminary outcomes. H arrived at hour eight and finishes at hour twelve; its window has elapsed and the inclusive boundary allows the result. At work, distinguish elapsed time, working hours and service calendars. The exercise uses whole elapsed hours to make decisions inspectable.
Handle reopening without silently restarting the clock
C arrives at hour two, completes at hour three and reopens at hour four. In the hour-twelve report it is open despite historical completion. The supplied rule retains original admission, so ten hours have elapsed. It completes again at hour fourteen, twelve hours after entry. Another organization may measure first response, first resolution and stable resolution as separate indicators. The mistake is switching definitions without informing people using the result. Preserve events rather than storing only the latest current state because you need to reconstruct the analyzed instant. Reopening can reflect poor quality, a new need or incorrect classification. The metric signals the condition; identifying its cause requires investigation before recommending a change.
Read the mean alongside who was excluded
Of the eight requests with a complete window at hour twelve, six are complete. Their durations total twenty-six hours, producing a mean of about 4.33 hours. That mean describes only those six completed requests. C and E remain open and have accumulated ten and eight hours respectively. Combining time to completion for closed requests with current age for open ones gives forty-four hours divided by eight, or 5.5 hours. This is a different measure and should not be called mean final completion duration. Nor does it predict when pending requests will finish. Present case counts, inclusion rules and pending-work age. A completed-only mean can improve while a forgotten queue continues to age.
Validate data before trusting precision
The script rejects duplicate request identity, conflicting content under one event identity, unknown states and impossible temporal transitions. An identical retransmission of the same event does not duplicate the request. These rules detect problems in the modeled contract but do not prove every actual event reached the system. A log can arrive late, a team can work outside the tool and two clocks may differ. Confirm source coverage and freshness with its owner. When completion evidence is missing, distinguish “no record exists” from “we know completion did not happen.” In the synthetic dataset, completeness is an explicit construction condition. Transferring that condition to production without evidence can turn uncertainty into apparent noncompliance.
Original exercise: events and question
Admission by request, in hours from start: A=0, B=1, C=2, D=3, E=4, F=5, G=6, H=8, I=9, J=10, K=11, L=13. Events: A completes at 3; B at 7; C completes at 3, reopens at 4 and completes at 14; D completes at 8; E has no completion; F at 8; G at 11; H at 12; I at 11; J at 14; K at 16. L has no events yet. The window is four elapsed hours, inclusive, from admission. Completion must be the current state at the observed instant. The dataset is fictional and complete by construction. Before running: at hour twelve, identify requests with complete windows, those meeting the deadline, late completions and still-open requests. Calculate the completed-only mean and mean time to completion or observation. Explain why they are different measures.
Sample analysis and limitations
Sample analysis: A through H have complete windows. A, F and H meet the rule; B, D and G completed late; C and E remain open. Result: 3/8 = 37.5%. The six completed requests total 26 hours, mean 26/6 = about 4.33 hours. C and E add 18 elapsed hours at observation, giving 44/8 = 5.5 hours for the mixed elapsed-time measure. I, J and K are recent; L has not yet arrived. Do not use K’s future completion in the hour-twelve report. The script provides 36 checks of these rules and invalid inputs.
python3 content/labs/cbap-outcome-windows/run.py --output /tmp/cbap-outcomes.json
# Inspect observations.at12 and each request outcome.At hour twelve, A, F and H meet the rule among eight requests with complete windows: 3/8 = 37.5%. I is complete but does not yet belong to that population.
Common pitfalls
Counting recent successes without the other recent requests; restarting the clock on reopening; calling a completed-only mean an overall mean; assuming missing logs prove failure.
Related topics: Metrics and acceptance criteria · Data quality · Solution limitations
A result is interpretable only with explicit population, window, state, provenance and limitations. Precise division does not repair an incorrect definition.
Reference: CBAP competencies · CBAP six-knowledge-area blueprint, May 2026 handbook