# Reproduce the shared-office-hours model

SYNCDATE calculated this model on 30 October 2026. It uses public time-zone rules and fixed office hours. It contains no personal data.

## Run

Use Python 3.9 or later with the seven IANA zones available to `zoneinfo`. The recorded run used Python 3.14.6 and system database 2026e.

From this directory, run:

```bash
python3 calculate_overlap.py
python3 calculate_overlap.py --check
```

The first command regenerates the CSV/JSON outputs and the complete ZIP package beside the script. The second checks them without writing files. Both compare all 180 rows with the retained pilot. Both check every interval against a separate fixed-offset calculation.

Run `--check` first when you want to preserve the recorded outputs. It compares the saved model and data hashes. It permits a different runtime environment if all outputs match. A later time-zone rule change can make the check fail. Investigate such differences before you regenerate published results.

The script needs no network, credentials, calendars or third-party Python packages. If system time-zone data is absent, Python needs the `tzdata` package. The [Python documentation](https://docs.python.org/3/library/zoneinfo.html) explains that fallback. The script records the source and hashes actually used.

## Files

The complete research-package.zip contains all eight files below, including the two pilot inputs. Extract it into one directory before running the calculation.

| File | Contents |
| --- | --- |
| [modeled-work-hours.csv](modeled-work-hours.csv) | Complete 180-row result, one pair per weekday |
| [results-summary.csv](results-summary.csv) | Twelve pairs, three periods, daily overlap and change |
| [modeled-work-hours.json](modeled-work-hours.json) | Method, exclusions, provenance, verification and data hashes |
| [calculate_overlap.py](calculate_overlap.py) | Calculation, independent checks and export commands |
| [pilot/modeled-work-hours.csv](pilot/modeled-work-hours.csv) | Unchanged original pilot input |
| [pilot/modeled-work-hours.json](pilot/modeled-work-hours.json) | Unchanged original pilot notes and examples |
| [primary-sources.txt](primary-sources.txt) | Dated primary-source checks and access limits |

## Data dictionary

All files use UTF-8. CSV files contain a header row. The generated CSV files use LF line endings and a decimal point.

| Field | Meaning |
| --- | --- |
| `date` | Shared local calendar date, ISO 8601 |
| `europe_city`, `us_city` | Selected city labels |
| `europe_zone`, `us_zone` | IANA zone identifiers |
| `overlap_hours` | Modeled shared office hours for this pair and weekday |
| `overlap_start_utc`, `overlap_end_utc` | ISO 8601 UTC timestamps with `+00:00`; empty when overlap is zero |

Summary columns give hours **per weekday**, not weekly totals. For each pair, the value is constant across all five weekdays in each period. `change_during_gap_hours_per_day` subtracts 19–23 October from 26–30 October.

The JSON unit is one modeled city-pair weekday. These rows are not people, meetings or observed opportunities. Adding rows across pairs would count different pairwise comparisons, not company working time.

## Definitions

Each local office window runs from 09:00 up to 17:00. Both windows use the same listed date. The script converts each endpoint to UTC before calculating the intersection. Windows that touch only at an endpoint have zero overlap.

The model covers all Monday–Friday dates from 19 October through 6 November 2026. It does not remove holidays. It excludes lunch, part-time schedules, actual events and personal availability.

The fixed-offset check uses the UK/EU transition on 25 October and the US transition on 1 November. It uses European summer offsets of +01:00 for Lisbon/London and +02:00 for Berlin. Winter offsets are +00:00 and +01:00. US summer offsets range from −04:00 to −07:00 in the selected cities. Winter offsets range from −05:00 to −08:00.

## Reuse

Suggested attribution: “Source: SYNCDATE, modeled shared office hours, 2026; 09:00–17:00 local workdays, Monday–Friday.” Keep the assumptions with any excerpt. Article URL: https://syncdate.app/blog/clock-changes-shared-working-hours-2026. The article describes the assumptions, results and limitations. These downloads contain the complete reproducible model.
