Skip to main content
This document describes the resource-level search pipeline after the outcome state simplification.

Core Model

Searchability is not liveness. A resource is search eligible when both are true:
  • it has derived metadata: indexed = true
  • it has an active embedding for the configured resource embedding model
The main pipeline does not decide whether a resource is live. Runtime health is a separate monitor signal and can be used as a post-filter or operator warning, but it is not a prerequisite for enrichment, embedding, or search eligibility.

Base Flow

The stage historically named probe is now a schema loading step. Its only job is to load endpoint schema information from available specs and, when needed, from the payment challenge. It does not perform raw liveness checks and does not write live/error/timeout health state.

Terminal Outcomes

The durable terminal outcome is stored on catalog.indexed_resources:
  • pipeline_outcome
  • pipeline_outcome_reason
  • pipeline_outcome_at
  • pipeline_failure_kind

Lifecycle Fields

The pipeline state shown in admin is separate from terminal outcome: Work is needed when any of these are true:
  • both input and output schemas are missing and the resource has not already succeeded with other source metadata
  • latest outcome is failed
  • enrichment hash is stale
  • enriched spec hash differs from the current spec hash
  • embedding text hash is missing
  • active embedding is missing
Stale health probes are not a pipeline work trigger.

Schema Lookup Versus Health

These are intentionally different concepts: This means a resource can have a failed health check and still be enriched, embedded, and search eligible if schema/source metadata exists.

Live Search Meaning

Live semantic search joins active resource embeddings and requires indexed = true. It also requires normal search filters such as non-removed resource, non-dismissed origin, protocol match, score threshold, and usage filtering unless broad search is requested. It does not require:
  • probe_status = 'live'
  • last_live_at
  • consecutive probe failure grace
Autocomplete remains metadata based and requires indexed = true, non-removed resource, and non-dismissed origin. It does not require an active embedding.

Admin UI Reading

The Resources admin page separates three axes:
  • Search: metadata plus active embedding.
  • Pipeline: latest indexing outcome and queue state.
  • Health: runtime availability signal, separate from search and pipeline eligibility.
Use outcome filters to inspect terminal results:
  • success: metadata and active embedding exist.
  • failed: latest attempt failed and can retry.
  • dead: no source information for embedding; not scheduled.
  • unknown: not finalized under the new model yet.
Use health filters only to inspect runtime monitor behavior.