Source: https://guthlabs.ai/docs/instruments/work-hours-timesheet-calculator/

instrument / verified-clean

# Work Hours / Timesheet Calculator

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/work-hours-timesheet-calculator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/work-hours-timesheet-calculator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/work-hours-timesheet-calculator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/work-hours-timesheet-calculator/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Everyday & Life

**Tranche**: tranche-5

**Evidence ID**: t5-029

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The instrument cannot PASS as written. At minimum, replace 40 with the supplied threshold, define regular hours and total-pay formulas, specify time and break units, and define overnight, overlap, validation, payroll-period, rounding, and overtime-premium rules.

### Formula and scope findings

- The overtime formula hardcodes 40 instead of using the supplied overtime threshold input.

- The specification does not define the regular-hours formula explicitly; it should be regular = max(0, total − overtime), or equivalently min(total, threshold).

- The claimed total pay output has no formula. Pay requires at least a base rate and a defined overtime multiplier, along with rules for whether overtime is paid at the multiplier.

- The expression Σ(clock_out−clock_in) is incomplete for overnight shifts unless timestamps include dates or an explicit next-day rule.

- The specification does not state how breaks are assigned to shifts or validated against worked intervals.

### Unit assumptions

- Clock times are interpreted as elapsed intervals using timestamps or an explicit overnight convention; plain clock times alone are ambiguous across midnight.

- Break durations are represented in minutes in the test vectors and converted to decimal hours by dividing by 60.

- Hours are decimal hours, not clock-format hours and minutes.

- The overtime threshold is measured in hours for the relevant overtime period, assumed to be a weekly threshold unless otherwise specified.

- The pay example assumes a base hourly rate applied uniformly to all hours; no overtime premium is assumed because none is specified.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

A missing clock-out produces an undefined duration unless the calculator validates and rejects the input. Overnight clock pairs without dates are also convention-ambiguous and can produce a negative duration if same-day subtraction is applied.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "shifts": [
      {
        "clock_in": "2025-01-06T09:00",
        "clock_out": "2025-01-06T17:00",
        "unpaid_break_minutes": 30
      },
      {
        "clock_in": "2025-01-07T09:00",
        "clock_out": "2025-01-07T17:00",
        "unpaid_break_minutes": 30
      },
      {
        "clock_in": "2025-01-08T09:00",
        "clock_out": "2025-01-08T17:00",
        "unpaid_break_minutes": 30
      },
      {
        "clock_in": "2025-01-09T09:00",
        "clock_out": "2025-01-09T17:00",
        "unpaid_break_minutes": 30
      },
      {
        "clock_in": "2025-01-10T09:00",
        "clock_out": "2025-01-10T17:00",
        "unpaid_break_minutes": 30
      }
    ],
    "overtime_threshold_hours": 40
  },
  "expected_outputs": {
    "total_hours": 37.5,
    "regular_hours": 37.5,
    "overtime_hours": 0
  },
  "working": "Each shift: 17:00 − 09:00 = 8 hours gross. Each break: 30 ÷ 60 = 0.5 hours. Each shift net: 8 − 0.5 = 7.5 hours. Weekly total: 5 × 7.5 = 37.5 hours. Overtime: max(0, 37.5 − 40) = max(0, −2.5) = 0 hours. Regular: 37.5 − 0 = 37.5 hours."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche5/tranche5-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
