Guth
NewsDocs
Page actions
View as Markdown ↗
Explore MCP tools ↗

instrument mechanism / verified-clean

Work Hours / Timesheet Calculator mechanism

The inspectable method record for Work Hours / Timesheet Calculator, kept separate from implementation and qualification.

Status: VERIFIED_CLEANLifecycle: verified-clean

Model scope

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.

  • 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.

Units and conventions

  • 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.

Inspectable vector

One of 4 source-bound review vectors:

{
  "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."
}

Failure boundary

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.

Other records

Sources and evidence

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

  • VERIFIED_LEDGER.json
  • evidence-tranche5/tranche5-results.json
  • BOUNDARY_HAZARD_CATALOG.json