Engine 19.0.0rc597 · Reader 9.0.0rc656 · Development snapshot
Earned time adds the configured target seconds for the process events attributed to a person, team or operation. It expresses the recorded activity count in the time units chosen by the configuration. Ghost Observatory stores it as person_days.earned_time_sec.
Formula and target coverage
Let Ps be the admitted process events attributed to subject s in a day or analysis window. Let ae be the activity on event e, and t(a) its configured STANDARD_WORK_SECONDS target.
Es = Σe ∈ Ps t(ae)
Every attributed process event contributes its activity's target, including a repeated event. The calculation does not time the event or infer how much effort it took. The targets are values supplied in the configuration; the program does not establish that they are engineered labour standards.
Three events produce four earned minutes
Suppose a person has two Review events and one Close event. The configuration assigns Review a target of 120 seconds and leaves Close without a target. The table applies those configured targets to the three events.
| Activity | Process events | Target per event | Contribution |
|---|---|---|---|
| Review | 2 | 120 seconds | 240 seconds |
| Close | 1 | Not configured | 0 seconds |
| Total | 3 | — | 240 seconds |
The result is 2 × 120 + 1 × 0 = 240 seconds, or four earned minutes. output_event_count is three. If the source contains no work-time records for this person, work_sec is NULL. A configured earned value does not supply the missing work observation.
Who receives the events?
The table has separate subject_kind values for person, team and operation. These describe overlapping populations. In this example, one person, their representative team and the operation can each have three events and 240 earned seconds. Adding all three rows would count the same events three times.
Team totals group each person under the team label appearing most often on that person's admitted analytical events; ties use the smallest label. This is a representative grouping from event evidence, not a staffing history. Operation totals also include process events without an identified person. Those events enter the no-team pool, so person totals need not add to the operation total.
Day attribution uses the event's work_date in run.timezone. A whole-window row has work_date = NULL and includes the window's undated evidence. Compare like periods and subject kinds; do not combine day rows with their already-published window total.
When the value is zero or missing
With targets configured and a known event count, a subject whose activities have no matching targets can have zero earned time. With no targets configured, the result is NULL. Output counts are also withheld when the run has no process events or rejected process evidence prevents complete attribution in that period; the related earned value is then withheld too. These are evidence and configuration rules, rather than a minimum-sample threshold.
Reading earned time beside recorded work
Open People → Earned time, route #people/standard. Reader draws earned time as a wide track and work_sec as a narrower bar on the same time scale, sorted by earned time. The two quantities have different coverage: earned time covers activities with configured targets, while work time covers admitted work records from all work sources, with overlaps counted once.
The Engine does not publish an earned-time/work-time productivity ratio. A difference between the bars can reflect missing targets, activity mix, source coverage or the chosen targets. To interpret it, check those inputs and the underlying records. The bars alone do not establish efficiency, effort or quality.
Published results
These results are published in person_days. The STANDARD_WORK_SECONDS setting supplies the declared standards used in this measure.