@@ -7,18 +7,22 @@ When updating the semantic-search contract, update `sherlock-search` first and t
77This directory explains the ** Semantic Search** capability contract in plain English.
88
99## What this is
10+
1011This package defines a ** contract-only capability** : it specifies * interfaces* (schemas, RPC surface, topics, governance hooks),
1112but ** does not ship an implementation** . It’s like a “power outlet standard” — vendors can build compatible devices, but the
1213contract itself isn’t the device.
1314
1415## Why we do it this way
16+
1517We want capabilities that are:
18+
1619- ** Composable** : other capabilities can depend on this one without importing a specific engine.
1720- ** Auditable** : every call can be policy-guarded and emits evidence events.
1821- ** Replaceable** : Xapian/FAISS/AtomSpace/etc. are optional implementations behind the same stable interface.
1922- ** Linux-first** and open-source-only.
2023
2124## What’s in the contract package
25+
2226The capability contract is defined by these folders:
2327
2428- ` capd/ ` (if present): Capability descriptor (identity, version, requirements, compatibility rules).
@@ -28,19 +32,24 @@ The capability contract is defined by these folders:
2832- ` tools/validate_package.py ` : A local validator that ensures the contract package is structurally sane.
2933
3034## Governance requirements (non-negotiable)
35+
3136Every implementation of this contract MUST:
37+
32381 ) Enforce ** policy guards** (default deny) for ingest/query/delete.
33392 ) Emit ** evidence events** for every meaningful action (ingest accepted/rejected, query executed, results delivered, deletes).
34403 ) Support ** quota + identity hooks** (caller identity / tenant / namespace).
35414 ) Be compatible with triRPC request/response schema validation.
3642
3743## How to read the contract
44+
3845Start at:
46+
3947- ` rpc/semantic.search.v0.yaml ` — the canonical RPC surface
4048- ` schemas/query_request.schema.json ` and ` schemas/query_response.schema.json `
4149- ` schemas/evidence_event.schema.json ` — what we log as auditable evidence
4250- ` topics/semantic.search.topics.v0.yaml ` — pubsub surfaces
4351
4452## “BI” naming note
53+
4554If the folder is ` caps/semantic-search-bi ` , “bi” should mean * behavioral indexing* (or whatever we intended),
4655not “business intelligence”. If that’s not what we mean, we should rename now while it’s early.
0 commit comments