Skip to content

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

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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