Skip to content

State that timers and retry intervals have one-second resolution #361

Closed

Description

@rmcdaniel

Problem

Timer delays and retry intervals have one-second resolution, but no docs page says so. SDKs that accept finer values round them up silently, so a 100 ms retry interval waits a full second.

Source-verified, not reproduced.

Acceptance criteria

  • The timers and retry documentation state that timer delays and retry intervals resolve to whole seconds, and that a fractional interval is rounded up to the next second.
  • The Python and Rust retry-policy references state the same rounding at the parameter that accepts fractional values.
  • The testing guidance says how to keep retry-heavy tests fast without relying on sub-second intervals.

Activity

  1. added
    documentationImprovements or additions to documentation
    priority:P3Lower-priority product improvement
    intake:approvedCurrent issue title and body revision is approved for authority intake
    status:readyReady for implementation
    repo:documentationOwned by the public documentation repository
    kind:cross-repositoryWork spans more than one public repository
    authority:githubGitHub is the authoritative lifecycle record for this work
    completion:evidence-requiredClose only after all explicit acceptance and operational evidence is public
    on Oct 22, 2026
  2. rmcdaniel commented on Oct 22, 2026

    @rmcdaniel
    MemberAuthor

    Accepted as P3 documentation work, owned by General. Source review confirms
    whole-second durable timer commands and activity retry backoff. Python's
    generated fractional retry intervals use ceiling; Rust rounds positive
    fractional Duration values up, including durable timers. The Rust timer API
    already documents this; its retry parameter reference and the website need
    equally explicit guidance.

    The documentation must distinguish those conversions from APIs typed as integer
    seconds. It must not promise that every runtime accepts fractional timers or
    that explicit integer backoff lists perform the same conversion. A 100 ms
    generated retry interval becomes one second; scheduling and worker load can
    make actual execution later. Whole-second resolution is not a precision or
    latency guarantee.

    No sub-second timer feature is needed to correct this documentation gap. If
    implementation work reveals inconsistent validation or conversion, record and
    fix that as product work rather than describing it as intended behavior.

    Next action after the current P1 image follow-through and Python #199 delivery:
    update the timer, retry and testing guides in all eight website languages,
    with their source hashes, plus the Python/Rust retry-policy parameter references.
    Keep retry-heavy tests fast with the existing virtual-time/mocked test tools
    where supported, or zero-delay bounded retry fixtures where that is the actual
    contract; do not invent sub-second wall-clock guarantees.

  3. rmcdaniel commented on Oct 23, 2026

    @rmcdaniel
    MemberAuthor

    Implementation is now in three draft PRs:

    • Website #362,
      68c775a395: timer, retry and fast-testing guidance in English, German,
      Spanish, French, Brazilian Portuguese, Ukrainian, Japanese and Simplified
      Chinese. All three reviewed source hashes are updated for each translation.
    • Python #201,
      2cf90bf: class/parameter and generated reference documentation, distinguishing
      generated fractional intervals from integer backoff lists and HTTP retries.
    • Rust #124,
      8f6f4b1: rounding documented directly on both retry-policy builder methods.

    All 105 current-guide translation/hash checks pass locally, with existing code
    example parity. Python's executable AST is unchanged after removing docstrings.
    The clean local checkout could not start the separate Docusaurus link check
    without dependencies; the normal hosted install, link/build and SDK checks are
    running independently. No local build, application, database or paid host is
    needed for this documentation change.

    No runtime, package release, version, schema or precision feature is changed.
    Next: finish exact candidate review/checks, merge, then verify all eight public
    guide paths and the actual Python/Rust parameter references before closing.

  4. rmcdaniel commented on Oct 23, 2026

    @rmcdaniel
    MemberAuthor

    Delivered and verified on the public documentation sites.

    • Website #362
      merged as 258e2cf72ec5338fd789eebac928c884d7136879, exact qualified tree
      dd602332. All nine candidate checks pass. Deployment
      39887651069
      passes. All 24 actual public timer/retry/testing page checks pass across
      English, German, Spanish, French, Brazilian Portuguese, Ukrainian, Japanese
      and Simplified Chinese, with their own localized headings and no English
      fallback. All 105 guide translation/hash and existing code-parity checks pass.
    • Python #201
      merged as 3dd5cf5f10c1bfbe31ebd6e4ce5bc04732e0aab6, tree dc2cd53b.
      All 18 candidate checks pass. Portal
      39887915660
      passes, and the actual deployment audit binds that exact source. The public
      parameter table and generated class documentation both contain the conversion.
    • Rust #124
      merged as 72aa2810042d4735aab42d13c72a0c4de60cd0e8, tree 20d7d069.
      Seventeen candidate checks pass with two explicit worker-qualification skips.
      Documentation deployment
      39887556469
      passes. Both actual public retry builder methods show the rounding contract.

    All three PR issue APIs report zero OPEN/CONFIRMED Sonar findings. Completed
    remote branches are deleted and verified absent.

    The guides distinguish integer-second APIs from fractional values that are
    rounded up, and explain that eligibility is not an exact execution-time
    guarantee. Tests use controlled time or finite zero-delay fixtures rather than
    assuming sub-second durable intervals. Runtime behavior, dependencies and
    package versions do not change. Python's portal manifest says 2.9.1; this docs
    deployment does not publish the still-pending PyPI package.

    Public references: timers,
    retries,
    fast delay tests,
    Python parameters,
    and Rust builder methods.

  5. added
    completion:evidence-verifiedAcceptance, fixed version, and required operational evidence are publicly verified
    status:doneDerived from the authoritative closed issue state
    and removed
    status:readyReady for implementation
    completion:evidence-requiredClose only after all explicit acceptance and operational evidence is public
    on Oct 23, 2026
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

    authority:githubGitHub is the authoritative lifecycle record for this workcompletion:evidence-verifiedAcceptance, fixed version, and required operational evidence are publicly verifieddocumentationImprovements or additions to documentationintake:approvedCurrent issue title and body revision is approved for authority intakekind:cross-repositoryWork spans more than one public repositorypriority:P3Lower-priority product improvementrepo:documentationOwned by the public documentation repositorystatus:doneDerived from the authoritative closed issue state

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions