Skip to content

Make history time-window tests portable across non-hour UTC offsets #1975

Description

@codeforester

Goal

Make the Base history test suite pass in every supported host timezone, including zones with half-hour or quarter-hour offsets.

Background

parse_history_bound correctly treats naive short timestamps as host-local time and converts them to UTC. The regression test only asserts that the converted minute remains 15, which is false in Asia/Kolkata: 2026-06-10 10:15 local correctly becomes 04:45 UTC.

The focused test passes under TZ=UTC and fails under TZ=Asia/Kolkata. This causes the supported ./bin/base-test path to fail locally while hosted UTC CI remains green.

Relevant code:

Related issue:

Scope

  • Replace the UTC-biased assertion with a deterministic host-timezone expectation.
  • Add explicit coverage for a non-whole-hour UTC offset.
  • Preserve the public rule that naive short forms use host-local time and explicit offsets take precedence.
  • Keep canonical JSON timestamps in UTC.

Acceptance Criteria

  • The focused test passes under UTC, Asia/Kolkata, and at least one negative UTC offset.
  • Tests assert the complete expected instant rather than one coincidentally stable field.
  • Explicit Z and offset-bearing inputs remain unchanged.
  • The full supported test harness passes in the host timezone.

Validation

  • Run the focused test under TZ=UTC.
  • Run the focused test under TZ=Asia/Kolkata.
  • Run the complete base_history test module.
  • env -u BASE_HOME ./bin/base-test
  • git diff --check

Non-Goals

  • Do not change the documented parsing semantics.
  • Do not force all users to enter UTC.
  • Do not change timestamp rendering options.

Project Fields

  • Status: Ready
  • Priority: P2
  • Area: Python
  • Initiative: Contract Hardening
  • Size: S

Agent Assignment

  • Assignee: codeforester

Metadata

Metadata

Assignees

Labels

bugSomething is not working

Type

No type

Projects

Status
Ready

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions