Tracking Working-Day Contract Time with Computed Federal Holidays

The Problem

On a working-day contract, time isn't measured in calendar days — it's measured in charged working days, and the count is a running argument with the resident engineer. Weekends don't count. Holidays don't count. Weather days and suspensions don't count, if you logged them. Reconstruct that list at month nine and it's worth a fraction of a contemporaneous record. I wanted a tracker that walks the calendar honestly and keeps a persistent log of the no-work days as they happen.

The Approach

The tracker walks day by day from notice-to-proceed to today. A date is charged if it's Monday–Friday, not an observed federal holiday (toggleable), and not in the no-work log. Days remaining is duration minus charged, and the projected completion date walks forward from today counting future weekdays until the remaining count runs out. It can't foresee future weather days, so the projected date honestly drifts later every time you log one — which is the correct behavior, not a bug.

Computing the holidays instead of hardcoding them

The one implementation detail I'm a little proud of: there's no holiday lookup table to go stale. All eleven federal holidays are generated for any year the calendar walk touches. The fixed-date ones — New Year's, Juneteenth, Independence Day, Veterans Day, Christmas — get the standard observation shift (Saturday falls back to Friday, Sunday bumps to Monday). The floating ones are computed from their rule:

MLK Day            3rd Monday in January
Washington's Bday  3rd Monday in February
Memorial Day       last Monday in May
Labor Day          1st Monday in September
Columbus Day       2nd Monday in October
Thanksgiving       4th Thursday in November

A multi-year job crossing 2026 into 2027 gets the right dates for both years with no maintenance, and a job that runs into 2030 will too [2].

Tracker showing charged days, days remaining, projected completion date, and a log of non-charged weather days
Figure 1: Charged days and projected completion, with the running no-work log that drives the count.
Why the day-of logging habit matters
  • Weather-day disputes are won with contemporaneous records — your daily report, photos of standing water, and a log entry dated that day.
  • If your count and the RE's diverge, the earlier you catch it the smaller the argument. Compare at every pay application.
  • A weather day is usually only non-chargeable if it actually stopped the controlling operation. A rainout on a day you were doing interior electrical may still be charged — log the note field with what was prevented.

The contract's General Conditions are still the governing document for what “working day” and “chargeable” mean and which holidays are in the list — this just does the arithmetic and remembers the log. Single file, vanilla JS, everything persisted in localStorage and nothing leaving the browser.

The tool: Working Day Contract Time Tracker.

References

  1. [1] Contract General Conditions — definition of working day, chargeable day, and the holiday list (governing document).
  2. [2] 5 U.S.C. § 6103 — federal holidays. https://www.law.cornell.edu/uscode/text/5/6103