Skip to content

[Strict readiness] Honor optional caller deadlines #171

Description

@samchon

Problem

IBuildGraphOptions.lspReadyTimeoutMs states that an undefined value keeps
waiting while a server reports progress. The Rust and C/C++ strict clients
silently replace undefined with a private 300,000 ms default instead.

Run 33377586947 shows the consequence on Redis. clangd-snapshot was making
measurable progress: the not-ready count fell from 126 translation units to 22.
At exactly 300,000 ms the client abandoned that compiler generation and
published the scip-clang fallback, which has no defensible edge family for C.
The outer measurement still had more than twenty minutes available.

RustGraphClient has the same constant and constructor substitution. The
generic LSP lane and the public option contract already distinguish an absent
deadline from an explicit finite one.

Consequence surface

Approach

Represent the readiness deadline as optional in both clients. An explicit
finite value keeps the current bounded behavior and clamped sleep. Undefined
continues through retryable not-ready responses until success, cancellation,
shutdown, or a non-retryable producer error. Do not fix the witness by raising
one corpus-specific constant.

Acceptance and verification

  • Undefined readiness has no hidden wall-clock deadline in either strict
    client and remains immediately abortable.
  • Explicit deadlines still reject at their stated bound without an extra
    backoff overshoot.
  • Content movement resets backoff and not-ready progress does not send spurious
    input-change notifications.
  • Positive, explicit-timeout, undefined-retry-success, cancellation, movement,
    and unrelated-error cases cover both clients.
  • The Redis strict-intent index-time row waits for the progressing producer and
    is served by clangd-snapshot, or reports a different primary-evidence
    failure rather than the removed private ceiling.
  • Focused Rust/C++ client tests, relevant real experiments, pnpm build,
    pnpm test, and pnpm coverage pass.

Coordination

Workflow and experiment callers may retain explicit outer budgets. This issue
does not waive #73's no-op/edit performance targets or turn an actual stalled
producer into success.

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

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions