Skip to content

serialize_and_backoff does not serialize retries (no-op) #9

Description

@adrianhihi

Summary

The serialize_and_backoff strategy (Circle wallets-api-rate-limit) does not
serialize. In provider.ts it sets _helix_serialize / _helix_concurrency
override flags that no caller reads, sleeps once (~2s), then lets the wrap
layer retry — in parallel. Under real concurrency the retries land in the
same rate-limit window and 429 again.

Evidence

  • scripts/circle-bench/results/v1-serialize-and-backoff-anomaly.md — Bench 2.1
    (5×20-concurrent Arc Testnet): the ~5/20 calls that hit 429 engaged the
    strategy, retried, and all 429'd again ("permanently lost"). Repair recovery
    ~0% at 20-concurrent.

Impact (already shipped in 2.8.1)

  • wallets-api-rate-limit reclassified detection-only, q 0.76 → 0.50.
  • Inline KNOWN-BROKEN flags added at packages/core/src/engine/seed-genes.ts
    and packages/core/src/platforms/circle/strategies.ts (do not re-validate
    without fixing the mechanism first). See packages/core/KNOWN_ISSUES.md KI-1.

Fix direction

Implement real serialization — a per-wallet semaphore, or a wrap-layer
concurrency gate that consumes _helix_concurrency. Intended replacement is the
v2 chunk_concurrent path (scripts/circle-bench/).

Target: PR #4 (existing tracker, alongside the Gene Map multi-strategy /
v2 chunk_concurrent migration). Suggested label: known-broken.

Metadata

Metadata

Assignees

Labels

known-brokenKnown broken behavior, tracked for future fix

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions