memory-v1

Health Ready

Deep readiness check.

ready = database AND engine (the hard dependencies) → HTTP 503 when false, so an orchestrator healthcheck (Railway) refuses to promote a build whose startup failed (FAILURE-SURFACE P0-4: the old contract was HTTP 200 with ready: false in the body, which promoted broken builds).

checks.warm is reported to every caller: True when the warm-up is disabled, its readiness gate (Settings.concept_expander_warm_ready_gate_seconds, 0 = off by default) is 0, THIS process's warm run has finished, or the gate's time cap has elapsed. It turns ready false, and the answer into a 503, ONLY for the orchestrator's deploy healthcheck (_is_deploy_healthcheck: Railway probes from healthcheck.railway.app, at the start of a deployment only), because holding traffic promotion is the gate's one purpose. A process restarted after a crash takes traffic with no healthcheck at all, so every other reader is asking about a process that is already serving and gets ready: true with checks.warm: false. The wait is bounded by the cap in every case, including a warm run that never starts. See _resolve_warm_check.

checks.embedding is a LIVE vendor call (cached 60 s — see _probe_embedding). It does NOT gate ready: a dead embedding vendor yields HTTP 200 with degraded: true so the fix for a vendor outage can still be deployed during the outage, and external probes alert on degraded instead. Probes must assert ready && !degraded.

get/api/v1/health/ready

Request

  • Base URL: https://core.mnemoverse.com
  • URL: https://core.mnemoverse.com/api/v1/health/ready
  • Auth: none required

Response

Successful Response

readyboolean required

True when the hard dependencies (database, engine) are operational. For the orchestrator's deploy healthcheck only, also false while the bounded concept-expander warm-up gate is holding - see checks.warm. False is served as HTTP 503. Does NOT include the embedding probe — see degraded.

degradedboolean

True when ready is true but the live embedding probe failed (checks.embedding == false). Served as HTTP 200 so a vendor outage cannot block a deploy; probes must alert on it.

checksobject required

Per-subsystem status. database: live SELECT 1; engine: initialised; embedding: live embed call succeeded within the timeout (cached 60 s); warm: true when the concept-expander warm-up readiness gate is off (disabled, or CONCEPT_EXPANDER_WARM_READY_GATE_SECONDS == 0, the default), the warm-up has finished, or the gate's time cap has elapsed - false only while a gated warm-up is still inside its window (including a just-started instance whose warm run has not begun yet).

embedding_checked_atstring nullable

ISO-8601 UTC timestamp of the live embedding call behind checks.embedding (may be up to 60 s old — the probe is cached). None when the engine is not initialised.

embedding_errorstring nullable

Exception CLASS name of the last failed embedding probe (e.g. 'TimeoutError', 'HTTPStatusError'), or a short reason token ('embed_fn_not_wired'). Never the message — messages may carry URLs or credentials. None when the probe succeeded or the engine is not initialised.

versionstring required

Application version string.

git_shastring

Git commit SHA of the running build (injected at image build time; 'unknown' for local/dev). The post-deploy smoke compares this against the merged commit so a frozen OLD instance cannot report false-green.

Changes

No recorded changes to this operation across all 1 revision of this API.