{"service":"adhivakta-kg-worker","description":"Citation Knowledge Graph (3D KG): D1 edges + recursive-CTE traversal, Vectorize find-similar, KV authority cache. Bounded GraphSliceResponse slices with the G1 treatment caveat.","endpoints":{"GET /health":"liveness probe","GET /kg/slice?focus=<nodeId>&hops=<1..3>&treatment=<csv>&asOf=<epochMs>&maxNodes=&maxEdges=":"bounded recursive-CTE slice around a node -> GraphSliceResponse","GET /kg/overview?kind=<csv>&court=<csv>&minYear=&maxYear=&treatment=<csv>&maxNodes=&maxEdges=":"full-corpus overview (most-connected nodes, capped) + induced edges, faceted -> GraphSliceResponse","GET /kg/search?q=<text>&limit=<n>":"relevance-ranked free-text search over the corpus (name/party/citation/number) -> { query, results: GraphNode[], truncated }","POST /kg/find-similar":"Vectorize seed: { vector:number[1024], topK?, namespace? } -> similar node ids","POST /kg/graph-for-query":"Research -> KG auto-link: { query, hops?, maxNodes?, maxEdges? } -> GraphForQueryResponse (focus resolved by citation match or in-region bge-m3 + Vectorize; matched:false when nothing matches)","POST /kg/retrieve":"Research graph-RAG: { query, topK? } -> { query, hits: KgRetrievalHit[], coverageNote } — top-K corpus TEXT spans (case summary/outcome/title + court/year + source URL) resolved HYBRIDLY (citation -> in-region bge-m3 semantic seed -> lexical) for the answer to ground + cite","POST /kg/negative-authority":"Pre-filing Negative-Authority Scan: { citations:string[], asOf? } -> per-citation worst adverse treatment (overruled/reversed/doubted/not-followed/distinguished) + treating authorities + verdict. Descriptive treatment-of-precedent only (G7); AI-suggested/unverified caveat (G1).","GET /kg/authority?focus=<nodeId>":"cached authority/centrality (in-degree + PageRank)","POST /kg/authority/recompute":"internal: recompute authority, persist in_degree + KV snapshot (daily Workflow seam)"},"rendering":"Client renders the same slice payload: 2D default (react-force-graph-2d) + 3D showcase (react-force-graph-3d), lazy-loaded. Node size = inDegree, colour = treatment (frontend workstream G)."}