land: synapse-shape-compiling

Merged
AF
3d ago
+1341-15

Accepted agent delivery; branch-keyed search descriptor included.


Summary by cubic

Treats Synapse transient replies (shape_compiling, model_loading, deadline_exceeded, queue_full, engine_crashed, quarantined lanes) as lane pauses instead of model failures. A cold build or refresh now waits out the warm-up and resumes, keeping the semantic index and its status, where before it published Failed and cleared the index.

  • Background indexing waits max(retry hint, backoff) and resumes its checkpoint; unbind, lane changes, or a newer refusal with its own wait interrupt it.
  • Queries fall back to keyword search at once, with a "model is warming up" footer and an ETA when the reply names one; transient refusals never count toward the circuit breaker or timeouts.
  • A page refused with safe_to_retry_same_request: false is split in half before resending; a one-row page is resent under a fresh request_key, and refused rows are bounded (1,024 rows, 1 hour) so abandoned builds can't leak keys forever.
  • A transient reply naming another lane is a fingerprint mismatch, never a pause of this one; a worker's retry time extends only the recorded pause it waits on.
  • Retry hints outside 100 ms..120 min (or malformed ones) fall back to the normal worker backoff.

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; no new actionable issues were found.

Summary

Synapse transient replies now pause indexing instead of discarding the semantic index. Searches use keyword results while the model warms up.

  • Transient Synapse replies pause the embedding lane until it can try again.
  • Unsafe batch refusals lead to smaller pages or a fresh request key.
  • Background indexing waits out lane pauses and resumes its work.
  • Searches use keyword results and name the model warm-up when embedding pauses.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Synapse transient reply] --> B{Request type}
  B -->|Search| C[Return keyword results]
  C --> D[Show warm-up message when applicable]
  B -->|Background indexing| E[Keep index and checkpoint]
  E --> F[Wait for retry hint or backoff]
  F --> G{Still current?}
  G -->|No| H[Stop]
  G -->|Yes| I[Retry]
  I --> J{Same request unsafe?}
  J -->|Larger page| K[Split page]
  J -->|One row| L[Use fresh request key]
  J -->|No| M[Reuse request]

Reviews (2) · Last reviewed commit: "mason: bound the refused one-row request..." · Reviewed by Greptile