{"claims":[{"basis":"diagram-fields-only","condition":"Console request succeeds","confidence":"asserted","id":"relation-web-nginx","object":{"direction":"forward","from":"web","kind":"http","to":"nginx"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-web","src-file","src-nginx"],"status":"pending","subject":"web-nginx"},{"basis":"diagram-fields-only","condition":"Basic CHAT; streaming response mode","confidence":"asserted","id":"relation-caller-nginx","object":{"direction":"bidirectional","from":"caller","kind":"http","to":"nginx"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-nginx","src-chat-api"],"status":"pending","subject":"caller-nginx"},{"basis":"diagram-fields-only","condition":"Console API or /v1 route","confidence":"asserted","id":"relation-nginx-api","object":{"direction":"bidirectional","from":"nginx","kind":"http","to":"api"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-nginx","src-chat-api"],"status":"pending","subject":"nginx-api"},{"basis":"diagram-fields-only","condition":"Local uploaded text file; validation succeeds","confidence":"asserted","id":"relation-api-files","object":{"direction":"forward","from":"api","kind":"storage-access","to":"files"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-file"],"status":"pending","subject":"api-files"},{"basis":"diagram-fields-only","condition":"Upload and document creation succeed","confidence":"asserted","id":"relation-api-sql","object":{"direction":"forward","from":"api","kind":"database-access","to":"sql"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-file","src-document"],"status":"pending","subject":"api-sql"},{"basis":"diagram-fields-only","condition":"Index dispatch after document commit; query embedding cache access on semantic retrieval","confidence":"asserted","id":"relation-api-redis","object":{"direction":"forward","from":"api","kind":"dependency","to":"redis"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-document","src-task-proxy","src-task-policy","src-broker","src-broker-default","src-query-embedding"],"status":"pending","subject":"api-redis"},{"basis":"diagram-fields-only","condition":"Worker consumes Celery broker; self-hosted priority_dataset queue","confidence":"asserted","id":"relation-redis-worker","object":{"direction":"forward","from":"redis","kind":"task-delivery","to":"worker"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-broker","src-task-policy","src-task","src-task-run"],"status":"pending","subject":"redis-worker"},{"basis":"diagram-fields-only","condition":"FILE source in extraction","confidence":"asserted","id":"relation-worker-files","object":{"direction":"forward","from":"worker","kind":"storage-access","to":"files"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-task-run","src-index","src-extract"],"status":"pending","subject":"worker-files"},{"basis":"diagram-fields-only","condition":"Successful paragraph indexing","confidence":"asserted","id":"relation-worker-sql","object":{"direction":"forward","from":"worker","kind":"database-access","to":"sql"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-index","src-doc-embedding"],"status":"pending","subject":"worker-sql"},{"basis":"diagram-fields-only","condition":"high_quality paragraph indexing; embedding succeeds","confidence":"asserted","id":"relation-worker-vector","object":{"direction":"forward","from":"worker","kind":"vector-access","to":"vector"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-index","src-paragraph","src-vector-create"],"status":"pending","subject":"worker-vector"},{"basis":"diagram-fields-only","condition":"Dataset configured and selected; internal high_quality semantic retrieval; filters permit results","confidence":"asserted","id":"relation-api-vector","object":{"direction":"forward","from":"api","kind":"vector-access","to":"vector"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-chat","src-retrieval","src-search","src-vector-query"],"status":"pending","subject":"api-vector"},{"basis":"diagram-fields-only","condition":"Document embedding cache miss; model configured","confidence":"asserted","id":"relation-worker-plugin","object":{"direction":"forward","from":"worker","kind":"model-invocation","to":"plugin"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-vector-create","src-doc-embedding","src-model","src-plugin-embedding","src-plugin-base"],"status":"pending","subject":"worker-plugin"},{"basis":"diagram-fields-only","condition":"Query embedding cache miss and/or LLM invocation; validated normal CHAT path","confidence":"asserted","id":"relation-api-plugin","object":{"direction":"forward","from":"api","kind":"model-invocation","to":"plugin"},"predicate":"relation","reason":"Authored fields match; source causality still requires independent review.","required":true,"source_refs":["src-chat","src-query-embedding","src-model","src-plugin-runtime","src-plugin-llm","src-plugin-embedding","src-plugin-base"],"status":"pending","subject":"api-plugin"},{"basis":"source-review-required","condition":"","confidence":"asserted","id":"thread-not-celery","object":"基础 CHAT 的 ChatAppGenerator 创建 threading.Thread 并调用 ChatAppRunner；这里的 worker 是 API 内线程，不是 Celery Worker。","predicate":"behavior","reason":"References do not establish behavioral meaning.","required":true,"source_refs":["src-dispatch","src-thread","src-chat"],"status":"pending","subject":"api"},{"basis":"source-review-required","condition":"","confidence":"asserted","id":"separate-storage","object":"上传文件内容由 storage.save 保存，SQL 保存 UploadFile 元数据。","predicate":"behavior","reason":"References do not establish behavioral meaning.","required":true,"source_refs":["src-file"],"status":"pending","subject":"files"},{"basis":"source-review-required","condition":"","confidence":"asserted","id":"commit-before-queue","object":"创建文档先提交 SQL，再通过 DocumentIndexingTaskProxy.delay 投递索引任务。","predicate":"behavior","reason":"References do not establish behavioral meaning.","required":true,"source_refs":["src-document","src-task-policy","src-task-proxy"],"status":"pending","subject":"api-redis"},{"basis":"source-review-required","condition":"","confidence":"asserted","id":"cache-condition","object":"查询 Embedding 命中 Redis 缓存时直接使用缓存，不是每次检索都调用 Embedding 模型。","predicate":"behavior","reason":"References do not establish behavioral meaning.","required":true,"source_refs":["src-query-embedding"],"status":"pending","subject":"api-plugin"},{"basis":"source-review-required","condition":"","confidence":"asserted","id":"retrieval-condition","object":"本图检索发生于已配置且选中的内部知识库；单知识库路由也可能先调用 LLM，主图不是严格时序。","predicate":"behavior","reason":"References do not establish behavioral meaning.","required":true,"source_refs":["src-chat","src-retrieval"],"status":"pending","subject":"api-vector"},{"basis":"source-review-required","condition":"","confidence":"asserted","id":"plugin-boundary","object":"主仓库用 HTTP 调用 Plugin Daemon 的模型接口；本次审阅没有覆盖插件服务实现与具体模型供应商。","predicate":"behavior","reason":"References do not establish behavioral meaning.","required":true,"source_refs":["src-plugin-base","src-plugin-llm","src-plugin-embedding"],"status":"pending","subject":"plugin"},{"basis":"python-ast","condition":"","confidence":"asserted","id":"definition-file","object":{"path":"api/services/file_service.py","symbol":"FileService.upload_file"},"predicate":"python-definition","reason":"Definition found in pinned blob at lines 50–125.","required":true,"source_refs":["src-file"],"status":"supported","subject":"files"},{"basis":"python-ast","condition":"","confidence":"asserted","id":"definition-index","object":{"path":"api/core/indexing_runner.py","symbol":"IndexingRunner.run"},"predicate":"python-definition","reason":"Definition found in pinned blob at lines 81–165.","required":true,"source_refs":["src-index"],"status":"supported","subject":"worker"},{"basis":"python-ast","condition":"","confidence":"asserted","id":"definition-vector-query","object":{"path":"api/core/rag/datasource/vdb/vector_factory.py","symbol":"Vector.search_by_vector"},"predicate":"python-definition","reason":"Definition found in pinned blob at lines 252–254.","required":true,"source_refs":["src-vector-query"],"status":"supported","subject":"vector"},{"basis":"python-ast","condition":"","confidence":"asserted","id":"definition-plugin-llm","object":{"path":"api/core/plugin/impl/model.py","symbol":"PluginModelClient.invoke_llm"},"predicate":"python-definition","reason":"Definition found in pinned blob at lines 170–218.","required":true,"source_refs":["src-plugin-llm"],"status":"supported","subject":"plugin"}],"coverage":{"completeness":"not-assessed","provided_claims":23,"required_claims":23},"facts_sha256":"bb85bca1c8d1ebaa797efadb2d7038414019f3ed2680086bdebbb8a9acd464eb","gates":{"rendered_readability":"not-checked","semantic_review":"pending","source_references":"verified"},"limits":"AST proves lexical definitions only; matching diagram fields is not source causality. Review records are assertions, not authenticated independent proof. No target code is executed.","ok":false,"ready":false,"reviewer":null,"schema":{"name":"AniDiagramAccuracyCheck","version":"0.1"},"specification_sha256":"bd1b0a168d5a232650f67df5cd9bfb3092c6c5f960db9d63fb147da5f5a495c9","status":"needs-review","strict":true}
