UX-CAT-006 — Keep display timezone consistent with query semantics
| Field | Value |
|---|---|
| Status | Open finding; source-verified and product-reviewed |
| Severity | High |
| Affected surface | Catalog History, Sample values, SQL results, filtering, copy, and export |
| Implementation issue | oqullus #545 |
| Code-change repository | sparqd/oqullus |
Where the problem appears
Switch the History timezone, reload, and compare the network value with TIMESTAMP and TIMESTAMP WITH TIME ZONE values across Catalog and SQL results.
Concrete observed case
The selector changes only browser rendering for the History field named timestamp and resets on remount. Trino query/session semantics do not change. Extending the formatter to data grids would make displayed values disagree with filters, copies, and exports.
Expected condition
Use fixed UTC with an explicit offset for Delta History. Preserve Trino's typed values elsewhere and leave plain timestamps unchanged. Introduce a user timezone only together with explicit query/session, filtering, copy, export, sorting, and persistence semantics.
Cause and evidence
- The current selection is volatile React state.
- Changing it does not alter the request or Trino session.
- Plain TIMESTAMP has no timezone that can be safely converted as an instant.
Why it matters
Users can construct predicates from displayed values that the engine interprets differently, especially around daylight-saving boundaries.
Existing controls and workarounds
Use UTC with an explicit offset for History and do not infer SQL predicate semantics from Local display.
Alternatives considered
- Recommended interim: fixed UTC History and typed values elsewhere.
- One persisted display timezone plus original-value details — only after filter/copy/export semantics are designed.
- Independent per-grid selectors — rejected as redundant, volatile, and inconsistent.
Component involvement
- Product defines temporal semantics.
- Oqullus renders types and zones consistently.
- BFF/Trino integration carries explicit session semantics if configurable query timezone is introduced.
Reproduction and verification
Follow CAT-S023. Record the visible state, request outcome, effective identity, and recovery behavior relevant to this finding.
Resolution conditions
Close when displayed, filtered, sorted, copied, exported, and queried temporal values have one documented type-aware contract and survive navigation as intended.
Validation and blockers
Oqullus, BFF/Trino, product, and data owners must validate around offset and DST fixtures.