samchon / samchon/compiler-knowledge-graph
[Strict readiness] Honor optional caller deadlines
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 6
- Forks
- 3
- PR merge metrics
- No merged PRs in 30d
Description
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
- Initial and resident Rust, C, C++, and mixed C/C++ strict-provider loads.
- Explicit experiment deadlines and their exact error messages.
- Abort, shutdown, content-movement retry, exponential backoff, and fallback.
- Index-time strict-route selection and #72/#73 performance evidence.
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 byclangd-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, andpnpm coveragepass.
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.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at IBuildGraphOptions.lspReadyTimeoutMs and the RustGraphClient, then locate the corresponding Rust and C/C++ strict-client readiness paths and focused tests. Run the readiness, cancellation, movement, and unrelated-error cases before checking the Redis strict-intent experiment. Done means undefined deadlines wait without a hidden ceiling, explicit deadlines retain their bound, and the listed build, test, coverage, and experiment checks pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, cpp, rust, typescript
- Domain
- devtools, testing-qa, tooling
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100