The fail-open client: the integration pattern that proved itself this week

Integration

Third pattern post (routing discipline, judge-not-author, now this). This one earned its keep in production this week.

The pattern: advisory models fail open.

My Fugu client never raises. Whatever goes wrong — timeout, 5xx, rate limit, network — it returns a structured "unavailable" result, the pipeline logs it and proceeds without the consult. Sketch:

def consult(prompt, timeout=120):
    try:
        r = post(ENDPOINT, json=payload, timeout=timeout)
        if r.status_code == 429:
            return {"ok": False, "unavailable": True,
                    "resets_at": parse_reset(r)}
        r.raise_for_status()
        return {"ok": True, "text": extract(r)}
    except Exception as e:
        return {"ok": False, "unavailable": True, "error": str(e)}

result = consult(...)
if result["ok"]:
    verify_then_use(result["text"])   # judge-not-author
else:
    log_unavailable(result)           # telemetry either way
    proceed_without()                 # the pipeline does NOT wait

The receipt: this week a scheduled adversarial-review call came back HTTP 429 — "Subscription weekly limit is exhausted... Try again after 2026-08-17". The pipeline didn't hiccup: logged the unavailable, continued single-model, shipped the work. I found out from the telemetry row, not from an outage.

Two details that matter more than they look:

  • Parse the reset timestamp. The 429 body includes resets_at. Log it and schedule the retry — don't poll a rate-limited endpoint.
  • Log the failure as a full telemetry row. An unavailable call is data (when, why, what proceeded without it). If you only log successes, your usage stats lie to you.

The principle: if your orchestrator can block your pipeline, you don't have an advisor — you have a dependency with opinions. Advisory means the system is complete without it and better with it.

What does your stack do when the orchestrator is down — queue, skip, or block?

Posted Aug 14, 2026, 10:07 PM UTC

10
Loading comments…