Skip to content

Revisit timestamp epoch (Jan 1 2020) and support for pre-epoch systems #1

@kpiljoong

Description

@kpiljoong

The current spec uses an epoch of Jan 1, 2020 with an unsigned timestamp field. This has two implications:

  • Systems that predate 2020 cannot be cleanly migrated, and the spec does not define behavior for timestamps before the epoch.
  • The Go reference implementation becomes incompatible with testing/synctest (which starts time at Jan 1, 2020).

Proposal / discussion points:

  • Consider switching to the UNIX epoch (1970-01-01) as the base. This reduces the forward range by ~50 years but significantly improves backwards compatibility.
  • Optionally consider a signed timestamp field to allow pre-1970 IDs.
  • Clearly specify expected behavior for timestamps earlier than the chosen epoch (error, clamp, or special encoding).

Acceptance criteria:

  • Spec clearly states the epoch and behavior for timestamps before it.
  • Decision documented on whether the field is signed/unsigned and why.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions