Canonical upstream for these contracts now lives in SocioProphet/sherlock-search.
This copy in SourceOS should be treated as a mirror/reference copy, not the contract owner.
When updating the semantic-search contract, update sherlock-search first and then mirror or point here deliberately.
This directory explains the Semantic Search capability contract in plain English.
This package defines a contract-only capability: it specifies interfaces (schemas, RPC surface, topics, governance hooks), but does not ship an implementation. It’s like a “power outlet standard” — vendors can build compatible devices, but the contract itself isn’t the device.
We want capabilities that are:
- Composable: other capabilities can depend on this one without importing a specific engine.
- Auditable: every call can be policy-guarded and emits evidence events.
- Replaceable: Xapian/FAISS/AtomSpace/etc. are optional implementations behind the same stable interface.
- Linux-first and open-source-only.
The capability contract is defined by these folders:
capd/(if present): Capability descriptor (identity, version, requirements, compatibility rules).rpc/: triRPC method surface (what methods exist, request/response schema bindings).schemas/: JSON Schemas for requests, responses, and evidence events.topics/: PubSub topics (events, indexing progress, query telemetry).tools/validate_package.py: A local validator that ensures the contract package is structurally sane.
Every implementation of this contract MUST:
- Enforce policy guards (default deny) for ingest/query/delete.
- Emit evidence events for every meaningful action (ingest accepted/rejected, query executed, results delivered, deletes).
- Support quota + identity hooks (caller identity / tenant / namespace).
- Be compatible with triRPC request/response schema validation.
Start at:
rpc/semantic.search.v0.yaml— the canonical RPC surfaceschemas/query_request.schema.jsonandschemas/query_response.schema.jsonschemas/evidence_event.schema.json— what we log as auditable evidencetopics/semantic.search.topics.v0.yaml— pubsub surfaces
If the folder is caps/semantic-search-bi, “bi” should mean behavioral indexing (or whatever we intended),
not “business intelligence”. If that’s not what we mean, we should rename now while it’s early.