From a24df8e990acf22b7b28061b9af48714f5fbc1d0 Mon Sep 17 00:00:00 2001 From: cybermaggedon Date: Tue, 21 Apr 2026 16:30:02 +0100 Subject: [PATCH] release/v2.3 -> master (#837) --- docs/tech-specs/{ => ar}/__TEMPLATE.ar.md | 0 .../{ => ar}/agent-explainability.ar.md | 0 .../{ => ar}/architecture-principles.ar.md | 0 .../{ => ar}/cassandra-consolidation.ar.md | 0 .../cassandra-performance-refactor.ar.md | 0 .../{ => ar}/collection-management.ar.md | 0 .../document-embeddings-chunk-id.ar.md | 0 .../embeddings-batch-processing.ar.md | 0 .../{ => ar}/entity-centric-graph.ar.md | 0 .../{ => ar}/explainability-cli.ar.md | 0 .../{ => ar}/extraction-flows.ar.md | 0 .../extraction-provenance-subgraph.ar.md | 0 .../{ => ar}/extraction-time-provenance.ar.md | 0 .../{ => ar}/flow-class-definition.ar.md | 0 .../flow-configurable-parameters.ar.md | 0 docs/tech-specs/{ => ar}/graph-contexts.ar.md | 0 docs/tech-specs/{ => ar}/graphql-query.ar.md | 0 .../graphrag-performance-optimization.ar.md | 0 .../import-export-graceful-shutdown.ar.md | 0 .../{ => ar}/jsonl-prompt-output.ar.md | 0 .../{ => ar}/large-document-loading.ar.md | 0 .../{ => ar}/logging-strategy.ar.md | 0 .../{ => ar}/mcp-tool-arguments.ar.md | 0 .../{ => ar}/mcp-tool-bearer-token.ar.md | 0 .../{ => ar}/minio-to-s3-migration.ar.md | 0 .../tech-specs/{ => ar}/more-config-cli.ar.md | 0 .../{ => ar}/multi-tenant-support.ar.md | 0 .../neo4j-user-collection-isolation.ar.md | 0 .../{ => ar}/ontology-extract-phase-2.ar.md | 0 docs/tech-specs/{ => ar}/ontology.ar.md | 0 docs/tech-specs/{ => ar}/ontorag.ar.md | 0 docs/tech-specs/{ => ar}/openapi-spec.ar.md | 0 docs/tech-specs/{ => ar}/pubsub.ar.md | 0 .../{ => ar}/python-api-refactor.ar.md | 0 .../{ => ar}/query-time-explainability.ar.md | 0 .../{ => ar}/rag-streaming-support.ar.md | 0 .../schema-refactoring-proposal.ar.md | 0 .../{ => ar}/streaming-llm-responses.ar.md | 0 .../{ => ar}/structured-data-2.ar.md | 0 .../{ => ar}/structured-data-descriptor.ar.md | 0 .../{ => ar}/structured-data-schemas.ar.md | 0 .../tech-specs/{ => ar}/structured-data.ar.md | 0 .../{ => ar}/structured-diag-service.ar.md | 0 docs/tech-specs/{ => ar}/tool-group.ar.md | 0 docs/tech-specs/{ => ar}/tool-services.ar.md | 0 .../{ => ar}/universal-decoder.ar.md | 0 .../{ => ar}/vector-store-lifecycle.ar.md | 0 docs/tech-specs/{ => es}/__TEMPLATE.es.md | 0 .../{ => es}/agent-explainability.es.md | 0 .../{ => es}/architecture-principles.es.md | 0 .../{ => es}/cassandra-consolidation.es.md | 0 .../cassandra-performance-refactor.es.md | 0 .../{ => es}/collection-management.es.md | 0 .../document-embeddings-chunk-id.es.md | 0 .../embeddings-batch-processing.es.md | 0 .../{ => es}/entity-centric-graph.es.md | 0 .../{ => es}/explainability-cli.es.md | 0 .../{ => es}/extraction-flows.es.md | 0 .../extraction-provenance-subgraph.es.md | 0 .../{ => es}/extraction-time-provenance.es.md | 0 .../{ => es}/flow-class-definition.es.md | 0 .../flow-configurable-parameters.es.md | 0 docs/tech-specs/{ => es}/graph-contexts.es.md | 0 docs/tech-specs/{ => es}/graphql-query.es.md | 0 .../graphrag-performance-optimization.es.md | 0 .../import-export-graceful-shutdown.es.md | 0 .../{ => es}/jsonl-prompt-output.es.md | 0 .../{ => es}/large-document-loading.es.md | 0 .../{ => es}/logging-strategy.es.md | 0 .../{ => es}/mcp-tool-arguments.es.md | 0 .../{ => es}/mcp-tool-bearer-token.es.md | 0 .../{ => es}/minio-to-s3-migration.es.md | 0 .../tech-specs/{ => es}/more-config-cli.es.md | 0 .../{ => es}/multi-tenant-support.es.md | 0 .../neo4j-user-collection-isolation.es.md | 0 .../{ => es}/ontology-extract-phase-2.es.md | 0 docs/tech-specs/{ => es}/ontology.es.md | 0 docs/tech-specs/{ => es}/ontorag.es.md | 0 docs/tech-specs/{ => es}/openapi-spec.es.md | 0 docs/tech-specs/{ => es}/pubsub.es.md | 0 .../{ => es}/python-api-refactor.es.md | 0 .../{ => es}/query-time-explainability.es.md | 0 .../{ => es}/rag-streaming-support.es.md | 0 .../schema-refactoring-proposal.es.md | 0 .../{ => es}/streaming-llm-responses.es.md | 0 .../{ => es}/structured-data-2.es.md | 0 .../{ => es}/structured-data-descriptor.es.md | 0 .../{ => es}/structured-data-schemas.es.md | 0 .../tech-specs/{ => es}/structured-data.es.md | 0 .../{ => es}/structured-diag-service.es.md | 0 docs/tech-specs/{ => es}/tool-group.es.md | 0 docs/tech-specs/{ => es}/tool-services.es.md | 0 .../{ => es}/universal-decoder.es.md | 0 .../{ => es}/vector-store-lifecycle.es.md | 0 docs/tech-specs/{ => he}/__TEMPLATE.he.md | 0 .../{ => he}/agent-explainability.he.md | 0 .../{ => he}/architecture-principles.he.md | 0 .../{ => he}/cassandra-consolidation.he.md | 0 .../cassandra-performance-refactor.he.md | 0 .../{ => he}/collection-management.he.md | 0 .../document-embeddings-chunk-id.he.md | 0 .../embeddings-batch-processing.he.md | 0 .../{ => he}/entity-centric-graph.he.md | 0 .../{ => he}/explainability-cli.he.md | 0 .../{ => he}/extraction-flows.he.md | 0 .../extraction-provenance-subgraph.he.md | 0 .../{ => he}/extraction-time-provenance.he.md | 0 .../{ => he}/flow-class-definition.he.md | 0 .../flow-configurable-parameters.he.md | 0 docs/tech-specs/{ => he}/graph-contexts.he.md | 0 docs/tech-specs/{ => he}/graphql-query.he.md | 0 .../graphrag-performance-optimization.he.md | 0 .../import-export-graceful-shutdown.he.md | 0 .../{ => he}/jsonl-prompt-output.he.md | 0 .../{ => he}/large-document-loading.he.md | 0 .../{ => he}/logging-strategy.he.md | 0 .../{ => he}/mcp-tool-arguments.he.md | 0 .../{ => he}/mcp-tool-bearer-token.he.md | 0 .../{ => he}/minio-to-s3-migration.he.md | 0 .../tech-specs/{ => he}/more-config-cli.he.md | 0 .../{ => he}/multi-tenant-support.he.md | 0 .../neo4j-user-collection-isolation.he.md | 0 .../{ => he}/ontology-extract-phase-2.he.md | 0 docs/tech-specs/{ => he}/ontology.he.md | 0 docs/tech-specs/{ => he}/ontorag.he.md | 0 docs/tech-specs/{ => he}/openapi-spec.he.md | 0 docs/tech-specs/{ => he}/pubsub.he.md | 0 .../{ => he}/python-api-refactor.he.md | 0 .../{ => he}/query-time-explainability.he.md | 0 .../{ => he}/rag-streaming-support.he.md | 0 .../schema-refactoring-proposal.he.md | 0 .../{ => he}/streaming-llm-responses.he.md | 0 .../{ => he}/structured-data-2.he.md | 0 .../{ => he}/structured-data-descriptor.he.md | 0 .../{ => he}/structured-data-schemas.he.md | 0 .../tech-specs/{ => he}/structured-data.he.md | 0 .../{ => he}/structured-diag-service.he.md | 0 docs/tech-specs/{ => he}/tool-group.he.md | 0 docs/tech-specs/{ => he}/tool-services.he.md | 0 .../{ => he}/universal-decoder.he.md | 0 .../{ => he}/vector-store-lifecycle.he.md | 0 docs/tech-specs/{ => hi}/__TEMPLATE.hi.md | 0 .../{ => hi}/agent-explainability.hi.md | 0 .../{ => hi}/architecture-principles.hi.md | 0 .../{ => hi}/cassandra-consolidation.hi.md | 0 .../cassandra-performance-refactor.hi.md | 0 .../{ => hi}/collection-management.hi.md | 0 .../document-embeddings-chunk-id.hi.md | 0 .../embeddings-batch-processing.hi.md | 0 .../{ => hi}/entity-centric-graph.hi.md | 0 .../{ => hi}/explainability-cli.hi.md | 0 .../{ => hi}/extraction-flows.hi.md | 0 .../extraction-provenance-subgraph.hi.md | 0 .../{ => hi}/extraction-time-provenance.hi.md | 0 .../{ => hi}/flow-class-definition.hi.md | 0 .../flow-configurable-parameters.hi.md | 0 docs/tech-specs/{ => hi}/graph-contexts.hi.md | 0 docs/tech-specs/{ => hi}/graphql-query.hi.md | 0 .../graphrag-performance-optimization.hi.md | 0 .../import-export-graceful-shutdown.hi.md | 0 .../{ => hi}/jsonl-prompt-output.hi.md | 0 .../{ => hi}/large-document-loading.hi.md | 0 .../{ => hi}/logging-strategy.hi.md | 0 .../{ => hi}/mcp-tool-arguments.hi.md | 0 .../{ => hi}/mcp-tool-bearer-token.hi.md | 0 .../{ => hi}/minio-to-s3-migration.hi.md | 0 .../tech-specs/{ => hi}/more-config-cli.hi.md | 0 .../{ => hi}/multi-tenant-support.hi.md | 0 .../neo4j-user-collection-isolation.hi.md | 0 .../{ => hi}/ontology-extract-phase-2.hi.md | 0 docs/tech-specs/{ => hi}/ontology.hi.md | 0 docs/tech-specs/{ => hi}/ontorag.hi.md | 0 docs/tech-specs/{ => hi}/openapi-spec.hi.md | 0 docs/tech-specs/{ => hi}/pubsub.hi.md | 0 .../{ => hi}/python-api-refactor.hi.md | 0 .../{ => hi}/query-time-explainability.hi.md | 0 .../{ => hi}/rag-streaming-support.hi.md | 0 .../schema-refactoring-proposal.hi.md | 0 .../{ => hi}/streaming-llm-responses.hi.md | 0 .../{ => hi}/structured-data-2.hi.md | 0 .../{ => hi}/structured-data-descriptor.hi.md | 0 .../{ => hi}/structured-data-schemas.hi.md | 0 .../tech-specs/{ => hi}/structured-data.hi.md | 0 .../{ => hi}/structured-diag-service.hi.md | 0 docs/tech-specs/{ => hi}/tool-group.hi.md | 0 docs/tech-specs/{ => hi}/tool-services.hi.md | 0 .../{ => hi}/universal-decoder.hi.md | 0 .../{ => hi}/vector-store-lifecycle.hi.md | 0 docs/tech-specs/{ => pt}/__TEMPLATE.pt.md | 0 .../{ => pt}/agent-explainability.pt.md | 0 .../{ => pt}/architecture-principles.pt.md | 0 .../{ => pt}/cassandra-consolidation.pt.md | 0 .../cassandra-performance-refactor.pt.md | 0 .../{ => pt}/collection-management.pt.md | 0 .../document-embeddings-chunk-id.pt.md | 0 .../embeddings-batch-processing.pt.md | 0 .../{ => pt}/entity-centric-graph.pt.md | 0 .../{ => pt}/explainability-cli.pt.md | 0 .../{ => pt}/extraction-flows.pt.md | 0 .../extraction-provenance-subgraph.pt.md | 0 .../{ => pt}/extraction-time-provenance.pt.md | 0 .../{ => pt}/flow-class-definition.pt.md | 0 .../flow-configurable-parameters.pt.md | 0 docs/tech-specs/{ => pt}/graph-contexts.pt.md | 0 docs/tech-specs/{ => pt}/graphql-query.pt.md | 0 .../graphrag-performance-optimization.pt.md | 0 .../import-export-graceful-shutdown.pt.md | 0 .../{ => pt}/jsonl-prompt-output.pt.md | 0 .../{ => pt}/large-document-loading.pt.md | 0 .../{ => pt}/logging-strategy.pt.md | 0 .../{ => pt}/mcp-tool-arguments.pt.md | 0 .../{ => pt}/mcp-tool-bearer-token.pt.md | 0 .../{ => pt}/minio-to-s3-migration.pt.md | 0 .../tech-specs/{ => pt}/more-config-cli.pt.md | 0 .../{ => pt}/multi-tenant-support.pt.md | 0 .../neo4j-user-collection-isolation.pt.md | 0 .../{ => pt}/ontology-extract-phase-2.pt.md | 0 docs/tech-specs/{ => pt}/ontology.pt.md | 0 docs/tech-specs/{ => pt}/ontorag.pt.md | 0 docs/tech-specs/{ => pt}/openapi-spec.pt.md | 0 docs/tech-specs/{ => pt}/pubsub.pt.md | 0 .../{ => pt}/python-api-refactor.pt.md | 0 .../{ => pt}/query-time-explainability.pt.md | 0 .../{ => pt}/rag-streaming-support.pt.md | 0 .../schema-refactoring-proposal.pt.md | 0 .../{ => pt}/streaming-llm-responses.pt.md | 0 .../{ => pt}/structured-data-2.pt.md | 0 .../{ => pt}/structured-data-descriptor.pt.md | 0 .../{ => pt}/structured-data-schemas.pt.md | 0 .../tech-specs/{ => pt}/structured-data.pt.md | 0 .../{ => pt}/structured-diag-service.pt.md | 0 docs/tech-specs/{ => pt}/tool-group.pt.md | 0 docs/tech-specs/{ => pt}/tool-services.pt.md | 0 .../{ => pt}/universal-decoder.pt.md | 0 .../{ => pt}/vector-store-lifecycle.pt.md | 0 docs/tech-specs/{ => ru}/__TEMPLATE.ru.md | 0 .../{ => ru}/agent-explainability.ru.md | 0 .../{ => ru}/architecture-principles.ru.md | 0 .../{ => ru}/cassandra-consolidation.ru.md | 0 .../cassandra-performance-refactor.ru.md | 0 .../{ => ru}/collection-management.ru.md | 0 .../document-embeddings-chunk-id.ru.md | 0 .../embeddings-batch-processing.ru.md | 0 .../{ => ru}/entity-centric-graph.ru.md | 0 .../{ => ru}/explainability-cli.ru.md | 0 .../{ => ru}/extraction-flows.ru.md | 0 .../extraction-provenance-subgraph.ru.md | 0 .../{ => ru}/extraction-time-provenance.ru.md | 0 .../{ => ru}/flow-class-definition.ru.md | 0 .../flow-configurable-parameters.ru.md | 0 docs/tech-specs/{ => ru}/graph-contexts.ru.md | 0 docs/tech-specs/{ => ru}/graphql-query.ru.md | 0 .../graphrag-performance-optimization.ru.md | 0 .../import-export-graceful-shutdown.ru.md | 0 .../{ => ru}/jsonl-prompt-output.ru.md | 0 .../{ => ru}/large-document-loading.ru.md | 0 .../{ => ru}/logging-strategy.ru.md | 0 .../{ => ru}/mcp-tool-arguments.ru.md | 0 .../{ => ru}/mcp-tool-bearer-token.ru.md | 0 .../{ => ru}/minio-to-s3-migration.ru.md | 0 .../tech-specs/{ => ru}/more-config-cli.ru.md | 0 .../{ => ru}/multi-tenant-support.ru.md | 0 .../neo4j-user-collection-isolation.ru.md | 0 .../{ => ru}/ontology-extract-phase-2.ru.md | 0 docs/tech-specs/{ => ru}/ontology.ru.md | 0 docs/tech-specs/{ => ru}/ontorag.ru.md | 0 docs/tech-specs/{ => ru}/openapi-spec.ru.md | 0 docs/tech-specs/{ => ru}/pubsub.ru.md | 0 .../{ => ru}/python-api-refactor.ru.md | 0 .../{ => ru}/query-time-explainability.ru.md | 0 .../{ => ru}/rag-streaming-support.ru.md | 0 .../schema-refactoring-proposal.ru.md | 0 .../{ => ru}/streaming-llm-responses.ru.md | 0 .../{ => ru}/structured-data-2.ru.md | 0 .../{ => ru}/structured-data-descriptor.ru.md | 0 .../{ => ru}/structured-data-schemas.ru.md | 0 .../tech-specs/{ => ru}/structured-data.ru.md | 0 .../{ => ru}/structured-diag-service.ru.md | 0 docs/tech-specs/{ => ru}/tool-group.ru.md | 0 docs/tech-specs/{ => ru}/tool-services.ru.md | 0 .../{ => ru}/universal-decoder.ru.md | 0 .../{ => ru}/vector-store-lifecycle.ru.md | 0 docs/tech-specs/{ => sw}/__TEMPLATE.sw.md | 0 .../{ => sw}/agent-explainability.sw.md | 0 .../{ => sw}/architecture-principles.sw.md | 0 .../{ => sw}/cassandra-consolidation.sw.md | 0 .../cassandra-performance-refactor.sw.md | 0 .../{ => sw}/collection-management.sw.md | 0 .../document-embeddings-chunk-id.sw.md | 0 .../embeddings-batch-processing.sw.md | 0 .../{ => sw}/entity-centric-graph.sw.md | 0 .../{ => sw}/explainability-cli.sw.md | 0 .../{ => sw}/extraction-flows.sw.md | 0 .../extraction-provenance-subgraph.sw.md | 0 .../{ => sw}/extraction-time-provenance.sw.md | 0 .../{ => sw}/flow-class-definition.sw.md | 0 .../flow-configurable-parameters.sw.md | 0 docs/tech-specs/{ => sw}/graph-contexts.sw.md | 0 docs/tech-specs/{ => sw}/graphql-query.sw.md | 0 .../graphrag-performance-optimization.sw.md | 0 .../import-export-graceful-shutdown.sw.md | 0 .../{ => sw}/jsonl-prompt-output.sw.md | 0 .../{ => sw}/large-document-loading.sw.md | 0 .../{ => sw}/logging-strategy.sw.md | 0 .../{ => sw}/mcp-tool-arguments.sw.md | 0 .../{ => sw}/mcp-tool-bearer-token.sw.md | 0 .../{ => sw}/minio-to-s3-migration.sw.md | 0 .../tech-specs/{ => sw}/more-config-cli.sw.md | 0 .../{ => sw}/multi-tenant-support.sw.md | 0 .../neo4j-user-collection-isolation.sw.md | 0 .../{ => sw}/ontology-extract-phase-2.sw.md | 0 docs/tech-specs/{ => sw}/ontology.sw.md | 0 docs/tech-specs/{ => sw}/ontorag.sw.md | 0 docs/tech-specs/{ => sw}/openapi-spec.sw.md | 0 docs/tech-specs/{ => sw}/pubsub.sw.md | 0 .../{ => sw}/python-api-refactor.sw.md | 0 .../{ => sw}/query-time-explainability.sw.md | 0 .../{ => sw}/rag-streaming-support.sw.md | 0 .../schema-refactoring-proposal.sw.md | 0 .../{ => sw}/streaming-llm-responses.sw.md | 0 .../{ => sw}/structured-data-2.sw.md | 0 .../{ => sw}/structured-data-descriptor.sw.md | 0 .../{ => sw}/structured-data-schemas.sw.md | 0 .../tech-specs/{ => sw}/structured-data.sw.md | 0 .../{ => sw}/structured-diag-service.sw.md | 0 docs/tech-specs/{ => sw}/tool-group.sw.md | 0 docs/tech-specs/{ => sw}/tool-services.sw.md | 0 .../{ => sw}/universal-decoder.sw.md | 0 .../{ => sw}/vector-store-lifecycle.sw.md | 0 docs/tech-specs/{ => tr}/__TEMPLATE.tr.md | 0 .../{ => tr}/agent-explainability.tr.md | 0 .../{ => tr}/architecture-principles.tr.md | 0 .../{ => tr}/cassandra-consolidation.tr.md | 0 .../cassandra-performance-refactor.tr.md | 0 .../{ => tr}/collection-management.tr.md | 0 .../document-embeddings-chunk-id.tr.md | 0 .../embeddings-batch-processing.tr.md | 0 .../{ => tr}/entity-centric-graph.tr.md | 0 .../{ => tr}/explainability-cli.tr.md | 0 .../{ => tr}/extraction-flows.tr.md | 0 .../extraction-provenance-subgraph.tr.md | 0 .../{ => tr}/extraction-time-provenance.tr.md | 0 .../{ => tr}/flow-class-definition.tr.md | 0 .../flow-configurable-parameters.tr.md | 0 docs/tech-specs/{ => tr}/graph-contexts.tr.md | 0 docs/tech-specs/{ => tr}/graphql-query.tr.md | 0 .../graphrag-performance-optimization.tr.md | 0 .../import-export-graceful-shutdown.tr.md | 0 .../{ => tr}/jsonl-prompt-output.tr.md | 0 .../{ => tr}/large-document-loading.tr.md | 0 .../{ => tr}/logging-strategy.tr.md | 0 .../{ => tr}/mcp-tool-arguments.tr.md | 0 .../{ => tr}/mcp-tool-bearer-token.tr.md | 0 .../{ => tr}/minio-to-s3-migration.tr.md | 0 .../tech-specs/{ => tr}/more-config-cli.tr.md | 0 .../{ => tr}/multi-tenant-support.tr.md | 0 .../neo4j-user-collection-isolation.tr.md | 0 .../{ => tr}/ontology-extract-phase-2.tr.md | 0 docs/tech-specs/{ => tr}/ontology.tr.md | 0 docs/tech-specs/{ => tr}/ontorag.tr.md | 0 docs/tech-specs/{ => tr}/openapi-spec.tr.md | 0 docs/tech-specs/{ => tr}/pubsub.tr.md | 0 .../{ => tr}/python-api-refactor.tr.md | 0 .../{ => tr}/query-time-explainability.tr.md | 0 .../{ => tr}/rag-streaming-support.tr.md | 0 .../schema-refactoring-proposal.tr.md | 0 .../{ => tr}/streaming-llm-responses.tr.md | 0 .../{ => tr}/structured-data-2.tr.md | 0 .../{ => tr}/structured-data-descriptor.tr.md | 0 .../{ => tr}/structured-data-schemas.tr.md | 0 .../tech-specs/{ => tr}/structured-data.tr.md | 0 .../{ => tr}/structured-diag-service.tr.md | 0 docs/tech-specs/{ => tr}/tool-group.tr.md | 0 docs/tech-specs/{ => tr}/tool-services.tr.md | 0 .../{ => tr}/universal-decoder.tr.md | 0 .../{ => tr}/vector-store-lifecycle.tr.md | 0 .../{ => zh-cn}/__TEMPLATE.zh-cn.md | 0 .../{ => zh-cn}/agent-explainability.zh-cn.md | 0 .../architecture-principles.zh-cn.md | 0 .../cassandra-consolidation.zh-cn.md | 0 .../cassandra-performance-refactor.zh-cn.md | 0 .../collection-management.zh-cn.md | 0 .../document-embeddings-chunk-id.zh-cn.md | 0 .../embeddings-batch-processing.zh-cn.md | 0 .../{ => zh-cn}/entity-centric-graph.zh-cn.md | 0 .../{ => zh-cn}/explainability-cli.zh-cn.md | 0 .../{ => zh-cn}/extraction-flows.zh-cn.md | 0 .../extraction-provenance-subgraph.zh-cn.md | 0 .../extraction-time-provenance.zh-cn.md | 0 .../flow-class-definition.zh-cn.md | 0 .../flow-configurable-parameters.zh-cn.md | 0 .../{ => zh-cn}/graph-contexts.zh-cn.md | 0 .../{ => zh-cn}/graphql-query.zh-cn.md | 0 ...graphrag-performance-optimization.zh-cn.md | 0 .../import-export-graceful-shutdown.zh-cn.md | 0 .../{ => zh-cn}/jsonl-prompt-output.zh-cn.md | 0 .../large-document-loading.zh-cn.md | 0 .../{ => zh-cn}/logging-strategy.zh-cn.md | 0 .../{ => zh-cn}/mcp-tool-arguments.zh-cn.md | 0 .../mcp-tool-bearer-token.zh-cn.md | 0 .../minio-to-s3-migration.zh-cn.md | 0 .../{ => zh-cn}/more-config-cli.zh-cn.md | 0 .../{ => zh-cn}/multi-tenant-support.zh-cn.md | 0 .../neo4j-user-collection-isolation.zh-cn.md | 0 .../ontology-extract-phase-2.zh-cn.md | 0 docs/tech-specs/{ => zh-cn}/ontology.zh-cn.md | 0 docs/tech-specs/{ => zh-cn}/ontorag.zh-cn.md | 0 .../{ => zh-cn}/openapi-spec.zh-cn.md | 0 docs/tech-specs/{ => zh-cn}/pubsub.zh-cn.md | 0 .../{ => zh-cn}/python-api-refactor.zh-cn.md | 0 .../query-time-explainability.zh-cn.md | 0 .../rag-streaming-support.zh-cn.md | 0 .../schema-refactoring-proposal.zh-cn.md | 0 .../streaming-llm-responses.zh-cn.md | 0 .../{ => zh-cn}/structured-data-2.zh-cn.md | 0 .../structured-data-descriptor.zh-cn.md | 0 .../structured-data-schemas.zh-cn.md | 0 .../{ => zh-cn}/structured-data.zh-cn.md | 0 .../structured-diag-service.zh-cn.md | 0 .../{ => zh-cn}/tool-group.zh-cn.md | 0 .../{ => zh-cn}/tool-services.zh-cn.md | 0 .../{ => zh-cn}/universal-decoder.zh-cn.md | 0 .../vector-store-lifecycle.zh-cn.md | 0 tests/unit/test_pubsub/test_kafka_backend.py | 4 +- .../test_rate_limit_contract.py | 124 ++++++++++++++++-- trustgraph-base/trustgraph/base/consumer.py | 11 ++ .../trustgraph/base/kafka_backend.py | 70 ++++++++-- .../model/text_completion/cohere/llm.py | 18 ++- .../model/text_completion/mistral/llm.py | 33 ++--- .../model/text_completion/openai/llm.py | 15 ++- .../model/text_completion/vllm/llm.py | 18 ++- 431 files changed, 244 insertions(+), 49 deletions(-) rename docs/tech-specs/{ => ar}/__TEMPLATE.ar.md (100%) rename docs/tech-specs/{ => ar}/agent-explainability.ar.md (100%) rename docs/tech-specs/{ => ar}/architecture-principles.ar.md (100%) rename docs/tech-specs/{ => ar}/cassandra-consolidation.ar.md (100%) rename docs/tech-specs/{ => ar}/cassandra-performance-refactor.ar.md (100%) rename docs/tech-specs/{ => ar}/collection-management.ar.md (100%) rename docs/tech-specs/{ => ar}/document-embeddings-chunk-id.ar.md (100%) rename docs/tech-specs/{ => ar}/embeddings-batch-processing.ar.md (100%) rename docs/tech-specs/{ => ar}/entity-centric-graph.ar.md (100%) rename docs/tech-specs/{ => ar}/explainability-cli.ar.md (100%) rename docs/tech-specs/{ => ar}/extraction-flows.ar.md (100%) rename docs/tech-specs/{ => ar}/extraction-provenance-subgraph.ar.md (100%) rename docs/tech-specs/{ => ar}/extraction-time-provenance.ar.md (100%) rename docs/tech-specs/{ => ar}/flow-class-definition.ar.md (100%) rename docs/tech-specs/{ => ar}/flow-configurable-parameters.ar.md (100%) rename docs/tech-specs/{ => ar}/graph-contexts.ar.md (100%) rename docs/tech-specs/{ => ar}/graphql-query.ar.md (100%) rename docs/tech-specs/{ => ar}/graphrag-performance-optimization.ar.md (100%) rename docs/tech-specs/{ => ar}/import-export-graceful-shutdown.ar.md (100%) rename docs/tech-specs/{ => ar}/jsonl-prompt-output.ar.md (100%) rename docs/tech-specs/{ => ar}/large-document-loading.ar.md (100%) rename docs/tech-specs/{ => ar}/logging-strategy.ar.md (100%) rename docs/tech-specs/{ => ar}/mcp-tool-arguments.ar.md (100%) rename docs/tech-specs/{ => ar}/mcp-tool-bearer-token.ar.md (100%) rename docs/tech-specs/{ => ar}/minio-to-s3-migration.ar.md (100%) rename docs/tech-specs/{ => ar}/more-config-cli.ar.md (100%) rename docs/tech-specs/{ => ar}/multi-tenant-support.ar.md (100%) rename docs/tech-specs/{ => ar}/neo4j-user-collection-isolation.ar.md (100%) rename docs/tech-specs/{ => ar}/ontology-extract-phase-2.ar.md (100%) rename docs/tech-specs/{ => ar}/ontology.ar.md (100%) rename docs/tech-specs/{ => ar}/ontorag.ar.md (100%) rename docs/tech-specs/{ => ar}/openapi-spec.ar.md (100%) rename docs/tech-specs/{ => ar}/pubsub.ar.md (100%) rename docs/tech-specs/{ => ar}/python-api-refactor.ar.md (100%) rename docs/tech-specs/{ => ar}/query-time-explainability.ar.md (100%) rename docs/tech-specs/{ => ar}/rag-streaming-support.ar.md (100%) rename docs/tech-specs/{ => ar}/schema-refactoring-proposal.ar.md (100%) rename docs/tech-specs/{ => ar}/streaming-llm-responses.ar.md (100%) rename docs/tech-specs/{ => ar}/structured-data-2.ar.md (100%) rename docs/tech-specs/{ => ar}/structured-data-descriptor.ar.md (100%) rename docs/tech-specs/{ => ar}/structured-data-schemas.ar.md (100%) rename docs/tech-specs/{ => ar}/structured-data.ar.md (100%) rename docs/tech-specs/{ => ar}/structured-diag-service.ar.md (100%) rename docs/tech-specs/{ => ar}/tool-group.ar.md (100%) rename docs/tech-specs/{ => ar}/tool-services.ar.md (100%) rename docs/tech-specs/{ => ar}/universal-decoder.ar.md (100%) rename docs/tech-specs/{ => ar}/vector-store-lifecycle.ar.md (100%) rename docs/tech-specs/{ => es}/__TEMPLATE.es.md (100%) rename docs/tech-specs/{ => es}/agent-explainability.es.md (100%) rename docs/tech-specs/{ => es}/architecture-principles.es.md (100%) rename docs/tech-specs/{ => es}/cassandra-consolidation.es.md (100%) rename docs/tech-specs/{ => es}/cassandra-performance-refactor.es.md (100%) rename docs/tech-specs/{ => es}/collection-management.es.md (100%) rename docs/tech-specs/{ => es}/document-embeddings-chunk-id.es.md (100%) rename docs/tech-specs/{ => es}/embeddings-batch-processing.es.md (100%) rename docs/tech-specs/{ => es}/entity-centric-graph.es.md (100%) rename docs/tech-specs/{ => es}/explainability-cli.es.md (100%) rename docs/tech-specs/{ => es}/extraction-flows.es.md (100%) rename docs/tech-specs/{ => es}/extraction-provenance-subgraph.es.md (100%) rename docs/tech-specs/{ => es}/extraction-time-provenance.es.md (100%) rename docs/tech-specs/{ => es}/flow-class-definition.es.md (100%) rename docs/tech-specs/{ => es}/flow-configurable-parameters.es.md (100%) rename docs/tech-specs/{ => es}/graph-contexts.es.md (100%) rename docs/tech-specs/{ => es}/graphql-query.es.md (100%) rename docs/tech-specs/{ => es}/graphrag-performance-optimization.es.md (100%) rename docs/tech-specs/{ => es}/import-export-graceful-shutdown.es.md (100%) rename docs/tech-specs/{ => es}/jsonl-prompt-output.es.md (100%) rename docs/tech-specs/{ => es}/large-document-loading.es.md (100%) rename docs/tech-specs/{ => es}/logging-strategy.es.md (100%) rename docs/tech-specs/{ => es}/mcp-tool-arguments.es.md (100%) rename docs/tech-specs/{ => es}/mcp-tool-bearer-token.es.md (100%) rename docs/tech-specs/{ => es}/minio-to-s3-migration.es.md (100%) rename docs/tech-specs/{ => es}/more-config-cli.es.md (100%) rename docs/tech-specs/{ => es}/multi-tenant-support.es.md (100%) rename docs/tech-specs/{ => es}/neo4j-user-collection-isolation.es.md (100%) rename docs/tech-specs/{ => es}/ontology-extract-phase-2.es.md (100%) rename docs/tech-specs/{ => es}/ontology.es.md (100%) rename docs/tech-specs/{ => es}/ontorag.es.md (100%) rename docs/tech-specs/{ => es}/openapi-spec.es.md (100%) rename docs/tech-specs/{ => es}/pubsub.es.md (100%) rename docs/tech-specs/{ => es}/python-api-refactor.es.md (100%) rename docs/tech-specs/{ => es}/query-time-explainability.es.md (100%) rename docs/tech-specs/{ => es}/rag-streaming-support.es.md (100%) rename docs/tech-specs/{ => es}/schema-refactoring-proposal.es.md (100%) rename docs/tech-specs/{ => es}/streaming-llm-responses.es.md (100%) rename docs/tech-specs/{ => es}/structured-data-2.es.md (100%) rename docs/tech-specs/{ => es}/structured-data-descriptor.es.md (100%) rename docs/tech-specs/{ => es}/structured-data-schemas.es.md (100%) rename docs/tech-specs/{ => es}/structured-data.es.md (100%) rename docs/tech-specs/{ => es}/structured-diag-service.es.md (100%) rename docs/tech-specs/{ => es}/tool-group.es.md (100%) rename docs/tech-specs/{ => es}/tool-services.es.md (100%) rename docs/tech-specs/{ => es}/universal-decoder.es.md (100%) rename docs/tech-specs/{ => es}/vector-store-lifecycle.es.md (100%) rename docs/tech-specs/{ => he}/__TEMPLATE.he.md (100%) rename docs/tech-specs/{ => he}/agent-explainability.he.md (100%) rename docs/tech-specs/{ => he}/architecture-principles.he.md (100%) rename docs/tech-specs/{ => he}/cassandra-consolidation.he.md (100%) rename docs/tech-specs/{ => he}/cassandra-performance-refactor.he.md (100%) rename docs/tech-specs/{ => he}/collection-management.he.md (100%) rename docs/tech-specs/{ => he}/document-embeddings-chunk-id.he.md (100%) rename docs/tech-specs/{ => he}/embeddings-batch-processing.he.md (100%) rename docs/tech-specs/{ => he}/entity-centric-graph.he.md (100%) rename docs/tech-specs/{ => he}/explainability-cli.he.md (100%) rename docs/tech-specs/{ => he}/extraction-flows.he.md (100%) rename docs/tech-specs/{ => he}/extraction-provenance-subgraph.he.md (100%) rename docs/tech-specs/{ => he}/extraction-time-provenance.he.md (100%) rename docs/tech-specs/{ => he}/flow-class-definition.he.md (100%) rename docs/tech-specs/{ => he}/flow-configurable-parameters.he.md (100%) rename docs/tech-specs/{ => he}/graph-contexts.he.md (100%) rename docs/tech-specs/{ => he}/graphql-query.he.md (100%) rename docs/tech-specs/{ => he}/graphrag-performance-optimization.he.md (100%) rename docs/tech-specs/{ => he}/import-export-graceful-shutdown.he.md (100%) rename docs/tech-specs/{ => he}/jsonl-prompt-output.he.md (100%) rename docs/tech-specs/{ => he}/large-document-loading.he.md (100%) rename docs/tech-specs/{ => he}/logging-strategy.he.md (100%) rename docs/tech-specs/{ => he}/mcp-tool-arguments.he.md (100%) rename docs/tech-specs/{ => he}/mcp-tool-bearer-token.he.md (100%) rename docs/tech-specs/{ => he}/minio-to-s3-migration.he.md (100%) rename docs/tech-specs/{ => he}/more-config-cli.he.md (100%) rename docs/tech-specs/{ => he}/multi-tenant-support.he.md (100%) rename docs/tech-specs/{ => he}/neo4j-user-collection-isolation.he.md (100%) rename docs/tech-specs/{ => he}/ontology-extract-phase-2.he.md (100%) rename docs/tech-specs/{ => he}/ontology.he.md (100%) rename docs/tech-specs/{ => he}/ontorag.he.md (100%) rename docs/tech-specs/{ => he}/openapi-spec.he.md (100%) rename docs/tech-specs/{ => he}/pubsub.he.md (100%) rename docs/tech-specs/{ => he}/python-api-refactor.he.md (100%) rename docs/tech-specs/{ => he}/query-time-explainability.he.md (100%) rename docs/tech-specs/{ => he}/rag-streaming-support.he.md (100%) rename docs/tech-specs/{ => he}/schema-refactoring-proposal.he.md (100%) rename docs/tech-specs/{ => he}/streaming-llm-responses.he.md (100%) rename docs/tech-specs/{ => he}/structured-data-2.he.md (100%) rename docs/tech-specs/{ => he}/structured-data-descriptor.he.md (100%) rename docs/tech-specs/{ => he}/structured-data-schemas.he.md (100%) rename docs/tech-specs/{ => he}/structured-data.he.md (100%) rename docs/tech-specs/{ => he}/structured-diag-service.he.md (100%) rename docs/tech-specs/{ => he}/tool-group.he.md (100%) rename docs/tech-specs/{ => he}/tool-services.he.md (100%) rename docs/tech-specs/{ => he}/universal-decoder.he.md (100%) rename docs/tech-specs/{ => he}/vector-store-lifecycle.he.md (100%) rename docs/tech-specs/{ => hi}/__TEMPLATE.hi.md (100%) rename docs/tech-specs/{ => hi}/agent-explainability.hi.md (100%) rename docs/tech-specs/{ => hi}/architecture-principles.hi.md (100%) rename docs/tech-specs/{ => hi}/cassandra-consolidation.hi.md (100%) rename docs/tech-specs/{ => hi}/cassandra-performance-refactor.hi.md (100%) rename docs/tech-specs/{ => hi}/collection-management.hi.md (100%) rename docs/tech-specs/{ => hi}/document-embeddings-chunk-id.hi.md (100%) rename docs/tech-specs/{ => hi}/embeddings-batch-processing.hi.md (100%) rename docs/tech-specs/{ => hi}/entity-centric-graph.hi.md (100%) rename docs/tech-specs/{ => hi}/explainability-cli.hi.md (100%) rename docs/tech-specs/{ => hi}/extraction-flows.hi.md (100%) rename docs/tech-specs/{ => hi}/extraction-provenance-subgraph.hi.md (100%) rename docs/tech-specs/{ => hi}/extraction-time-provenance.hi.md (100%) rename docs/tech-specs/{ => hi}/flow-class-definition.hi.md (100%) rename docs/tech-specs/{ => hi}/flow-configurable-parameters.hi.md (100%) rename docs/tech-specs/{ => hi}/graph-contexts.hi.md (100%) rename docs/tech-specs/{ => hi}/graphql-query.hi.md (100%) rename docs/tech-specs/{ => hi}/graphrag-performance-optimization.hi.md (100%) rename docs/tech-specs/{ => hi}/import-export-graceful-shutdown.hi.md (100%) rename docs/tech-specs/{ => hi}/jsonl-prompt-output.hi.md (100%) rename docs/tech-specs/{ => hi}/large-document-loading.hi.md (100%) rename docs/tech-specs/{ => hi}/logging-strategy.hi.md (100%) rename docs/tech-specs/{ => hi}/mcp-tool-arguments.hi.md (100%) rename docs/tech-specs/{ => hi}/mcp-tool-bearer-token.hi.md (100%) rename docs/tech-specs/{ => hi}/minio-to-s3-migration.hi.md (100%) rename docs/tech-specs/{ => hi}/more-config-cli.hi.md (100%) rename docs/tech-specs/{ => hi}/multi-tenant-support.hi.md (100%) rename docs/tech-specs/{ => hi}/neo4j-user-collection-isolation.hi.md (100%) rename docs/tech-specs/{ => hi}/ontology-extract-phase-2.hi.md (100%) rename docs/tech-specs/{ => hi}/ontology.hi.md (100%) rename docs/tech-specs/{ => hi}/ontorag.hi.md (100%) rename docs/tech-specs/{ => hi}/openapi-spec.hi.md (100%) rename docs/tech-specs/{ => hi}/pubsub.hi.md (100%) rename docs/tech-specs/{ => hi}/python-api-refactor.hi.md (100%) rename docs/tech-specs/{ => hi}/query-time-explainability.hi.md (100%) rename docs/tech-specs/{ => hi}/rag-streaming-support.hi.md (100%) rename docs/tech-specs/{ => hi}/schema-refactoring-proposal.hi.md (100%) rename docs/tech-specs/{ => hi}/streaming-llm-responses.hi.md (100%) rename docs/tech-specs/{ => hi}/structured-data-2.hi.md (100%) rename docs/tech-specs/{ => hi}/structured-data-descriptor.hi.md (100%) rename docs/tech-specs/{ => hi}/structured-data-schemas.hi.md (100%) rename docs/tech-specs/{ => hi}/structured-data.hi.md (100%) rename docs/tech-specs/{ => hi}/structured-diag-service.hi.md (100%) rename docs/tech-specs/{ => hi}/tool-group.hi.md (100%) rename docs/tech-specs/{ => hi}/tool-services.hi.md (100%) rename docs/tech-specs/{ => hi}/universal-decoder.hi.md (100%) rename docs/tech-specs/{ => hi}/vector-store-lifecycle.hi.md (100%) rename docs/tech-specs/{ => pt}/__TEMPLATE.pt.md (100%) rename docs/tech-specs/{ => pt}/agent-explainability.pt.md (100%) rename docs/tech-specs/{ => pt}/architecture-principles.pt.md (100%) rename docs/tech-specs/{ => pt}/cassandra-consolidation.pt.md (100%) rename docs/tech-specs/{ => pt}/cassandra-performance-refactor.pt.md (100%) rename docs/tech-specs/{ => pt}/collection-management.pt.md (100%) rename docs/tech-specs/{ => pt}/document-embeddings-chunk-id.pt.md (100%) rename docs/tech-specs/{ => pt}/embeddings-batch-processing.pt.md (100%) rename docs/tech-specs/{ => pt}/entity-centric-graph.pt.md (100%) rename docs/tech-specs/{ => pt}/explainability-cli.pt.md (100%) rename docs/tech-specs/{ => pt}/extraction-flows.pt.md (100%) rename docs/tech-specs/{ => pt}/extraction-provenance-subgraph.pt.md (100%) rename docs/tech-specs/{ => pt}/extraction-time-provenance.pt.md (100%) rename docs/tech-specs/{ => pt}/flow-class-definition.pt.md (100%) rename docs/tech-specs/{ => pt}/flow-configurable-parameters.pt.md (100%) rename docs/tech-specs/{ => pt}/graph-contexts.pt.md (100%) rename docs/tech-specs/{ => pt}/graphql-query.pt.md (100%) rename docs/tech-specs/{ => pt}/graphrag-performance-optimization.pt.md (100%) rename docs/tech-specs/{ => pt}/import-export-graceful-shutdown.pt.md (100%) rename docs/tech-specs/{ => pt}/jsonl-prompt-output.pt.md (100%) rename docs/tech-specs/{ => pt}/large-document-loading.pt.md (100%) rename docs/tech-specs/{ => pt}/logging-strategy.pt.md (100%) rename docs/tech-specs/{ => pt}/mcp-tool-arguments.pt.md (100%) rename docs/tech-specs/{ => pt}/mcp-tool-bearer-token.pt.md (100%) rename docs/tech-specs/{ => pt}/minio-to-s3-migration.pt.md (100%) rename docs/tech-specs/{ => pt}/more-config-cli.pt.md (100%) rename docs/tech-specs/{ => pt}/multi-tenant-support.pt.md (100%) rename docs/tech-specs/{ => pt}/neo4j-user-collection-isolation.pt.md (100%) rename docs/tech-specs/{ => pt}/ontology-extract-phase-2.pt.md (100%) rename docs/tech-specs/{ => pt}/ontology.pt.md (100%) rename docs/tech-specs/{ => pt}/ontorag.pt.md (100%) rename docs/tech-specs/{ => pt}/openapi-spec.pt.md (100%) rename docs/tech-specs/{ => pt}/pubsub.pt.md (100%) rename docs/tech-specs/{ => pt}/python-api-refactor.pt.md (100%) rename docs/tech-specs/{ => pt}/query-time-explainability.pt.md (100%) rename docs/tech-specs/{ => pt}/rag-streaming-support.pt.md (100%) rename docs/tech-specs/{ => pt}/schema-refactoring-proposal.pt.md (100%) rename docs/tech-specs/{ => pt}/streaming-llm-responses.pt.md (100%) rename docs/tech-specs/{ => pt}/structured-data-2.pt.md (100%) rename docs/tech-specs/{ => pt}/structured-data-descriptor.pt.md (100%) rename docs/tech-specs/{ => pt}/structured-data-schemas.pt.md (100%) rename docs/tech-specs/{ => pt}/structured-data.pt.md (100%) rename docs/tech-specs/{ => pt}/structured-diag-service.pt.md (100%) rename docs/tech-specs/{ => pt}/tool-group.pt.md (100%) rename docs/tech-specs/{ => pt}/tool-services.pt.md (100%) rename docs/tech-specs/{ => pt}/universal-decoder.pt.md (100%) rename docs/tech-specs/{ => pt}/vector-store-lifecycle.pt.md (100%) rename docs/tech-specs/{ => ru}/__TEMPLATE.ru.md (100%) rename docs/tech-specs/{ => ru}/agent-explainability.ru.md (100%) rename docs/tech-specs/{ => ru}/architecture-principles.ru.md (100%) rename docs/tech-specs/{ => ru}/cassandra-consolidation.ru.md (100%) rename docs/tech-specs/{ => ru}/cassandra-performance-refactor.ru.md (100%) rename docs/tech-specs/{ => ru}/collection-management.ru.md (100%) rename docs/tech-specs/{ => ru}/document-embeddings-chunk-id.ru.md (100%) rename docs/tech-specs/{ => ru}/embeddings-batch-processing.ru.md (100%) rename docs/tech-specs/{ => ru}/entity-centric-graph.ru.md (100%) rename docs/tech-specs/{ => ru}/explainability-cli.ru.md (100%) rename docs/tech-specs/{ => ru}/extraction-flows.ru.md (100%) rename docs/tech-specs/{ => ru}/extraction-provenance-subgraph.ru.md (100%) rename docs/tech-specs/{ => ru}/extraction-time-provenance.ru.md (100%) rename docs/tech-specs/{ => ru}/flow-class-definition.ru.md (100%) rename docs/tech-specs/{ => ru}/flow-configurable-parameters.ru.md (100%) rename docs/tech-specs/{ => ru}/graph-contexts.ru.md (100%) rename docs/tech-specs/{ => ru}/graphql-query.ru.md (100%) rename docs/tech-specs/{ => ru}/graphrag-performance-optimization.ru.md (100%) rename docs/tech-specs/{ => ru}/import-export-graceful-shutdown.ru.md (100%) rename docs/tech-specs/{ => ru}/jsonl-prompt-output.ru.md (100%) rename docs/tech-specs/{ => ru}/large-document-loading.ru.md (100%) rename docs/tech-specs/{ => ru}/logging-strategy.ru.md (100%) rename docs/tech-specs/{ => ru}/mcp-tool-arguments.ru.md (100%) rename docs/tech-specs/{ => ru}/mcp-tool-bearer-token.ru.md (100%) rename docs/tech-specs/{ => ru}/minio-to-s3-migration.ru.md (100%) rename docs/tech-specs/{ => ru}/more-config-cli.ru.md (100%) rename docs/tech-specs/{ => ru}/multi-tenant-support.ru.md (100%) rename docs/tech-specs/{ => ru}/neo4j-user-collection-isolation.ru.md (100%) rename docs/tech-specs/{ => ru}/ontology-extract-phase-2.ru.md (100%) rename docs/tech-specs/{ => ru}/ontology.ru.md (100%) rename docs/tech-specs/{ => ru}/ontorag.ru.md (100%) rename docs/tech-specs/{ => ru}/openapi-spec.ru.md (100%) rename docs/tech-specs/{ => ru}/pubsub.ru.md (100%) rename docs/tech-specs/{ => ru}/python-api-refactor.ru.md (100%) rename docs/tech-specs/{ => ru}/query-time-explainability.ru.md (100%) rename docs/tech-specs/{ => ru}/rag-streaming-support.ru.md (100%) rename docs/tech-specs/{ => ru}/schema-refactoring-proposal.ru.md (100%) rename docs/tech-specs/{ => ru}/streaming-llm-responses.ru.md (100%) rename docs/tech-specs/{ => ru}/structured-data-2.ru.md (100%) rename docs/tech-specs/{ => ru}/structured-data-descriptor.ru.md (100%) rename docs/tech-specs/{ => ru}/structured-data-schemas.ru.md (100%) rename docs/tech-specs/{ => ru}/structured-data.ru.md (100%) rename docs/tech-specs/{ => ru}/structured-diag-service.ru.md (100%) rename docs/tech-specs/{ => ru}/tool-group.ru.md (100%) rename docs/tech-specs/{ => ru}/tool-services.ru.md (100%) rename docs/tech-specs/{ => ru}/universal-decoder.ru.md (100%) rename docs/tech-specs/{ => ru}/vector-store-lifecycle.ru.md (100%) rename docs/tech-specs/{ => sw}/__TEMPLATE.sw.md (100%) rename docs/tech-specs/{ => sw}/agent-explainability.sw.md (100%) rename docs/tech-specs/{ => sw}/architecture-principles.sw.md (100%) rename docs/tech-specs/{ => sw}/cassandra-consolidation.sw.md (100%) rename docs/tech-specs/{ => sw}/cassandra-performance-refactor.sw.md (100%) rename docs/tech-specs/{ => sw}/collection-management.sw.md (100%) rename docs/tech-specs/{ => sw}/document-embeddings-chunk-id.sw.md (100%) rename docs/tech-specs/{ => sw}/embeddings-batch-processing.sw.md (100%) rename docs/tech-specs/{ => sw}/entity-centric-graph.sw.md (100%) rename docs/tech-specs/{ => sw}/explainability-cli.sw.md (100%) rename docs/tech-specs/{ => sw}/extraction-flows.sw.md (100%) rename docs/tech-specs/{ => sw}/extraction-provenance-subgraph.sw.md (100%) rename docs/tech-specs/{ => sw}/extraction-time-provenance.sw.md (100%) rename docs/tech-specs/{ => sw}/flow-class-definition.sw.md (100%) rename docs/tech-specs/{ => sw}/flow-configurable-parameters.sw.md (100%) rename docs/tech-specs/{ => sw}/graph-contexts.sw.md (100%) rename docs/tech-specs/{ => sw}/graphql-query.sw.md (100%) rename docs/tech-specs/{ => sw}/graphrag-performance-optimization.sw.md (100%) rename docs/tech-specs/{ => sw}/import-export-graceful-shutdown.sw.md (100%) rename docs/tech-specs/{ => sw}/jsonl-prompt-output.sw.md (100%) rename docs/tech-specs/{ => sw}/large-document-loading.sw.md (100%) rename docs/tech-specs/{ => sw}/logging-strategy.sw.md (100%) rename docs/tech-specs/{ => sw}/mcp-tool-arguments.sw.md (100%) rename docs/tech-specs/{ => sw}/mcp-tool-bearer-token.sw.md (100%) rename docs/tech-specs/{ => sw}/minio-to-s3-migration.sw.md (100%) rename docs/tech-specs/{ => sw}/more-config-cli.sw.md (100%) rename docs/tech-specs/{ => sw}/multi-tenant-support.sw.md (100%) rename docs/tech-specs/{ => sw}/neo4j-user-collection-isolation.sw.md (100%) rename docs/tech-specs/{ => sw}/ontology-extract-phase-2.sw.md (100%) rename docs/tech-specs/{ => sw}/ontology.sw.md (100%) rename docs/tech-specs/{ => sw}/ontorag.sw.md (100%) rename docs/tech-specs/{ => sw}/openapi-spec.sw.md (100%) rename docs/tech-specs/{ => sw}/pubsub.sw.md (100%) rename docs/tech-specs/{ => sw}/python-api-refactor.sw.md (100%) rename docs/tech-specs/{ => sw}/query-time-explainability.sw.md (100%) rename docs/tech-specs/{ => sw}/rag-streaming-support.sw.md (100%) rename docs/tech-specs/{ => sw}/schema-refactoring-proposal.sw.md (100%) rename docs/tech-specs/{ => sw}/streaming-llm-responses.sw.md (100%) rename docs/tech-specs/{ => sw}/structured-data-2.sw.md (100%) rename docs/tech-specs/{ => sw}/structured-data-descriptor.sw.md (100%) rename docs/tech-specs/{ => sw}/structured-data-schemas.sw.md (100%) rename docs/tech-specs/{ => sw}/structured-data.sw.md (100%) rename docs/tech-specs/{ => sw}/structured-diag-service.sw.md (100%) rename docs/tech-specs/{ => sw}/tool-group.sw.md (100%) rename docs/tech-specs/{ => sw}/tool-services.sw.md (100%) rename docs/tech-specs/{ => sw}/universal-decoder.sw.md (100%) rename docs/tech-specs/{ => sw}/vector-store-lifecycle.sw.md (100%) rename docs/tech-specs/{ => tr}/__TEMPLATE.tr.md (100%) rename docs/tech-specs/{ => tr}/agent-explainability.tr.md (100%) rename docs/tech-specs/{ => tr}/architecture-principles.tr.md (100%) rename docs/tech-specs/{ => tr}/cassandra-consolidation.tr.md (100%) rename docs/tech-specs/{ => tr}/cassandra-performance-refactor.tr.md (100%) rename docs/tech-specs/{ => tr}/collection-management.tr.md (100%) rename docs/tech-specs/{ => tr}/document-embeddings-chunk-id.tr.md (100%) rename docs/tech-specs/{ => tr}/embeddings-batch-processing.tr.md (100%) rename docs/tech-specs/{ => tr}/entity-centric-graph.tr.md (100%) rename docs/tech-specs/{ => tr}/explainability-cli.tr.md (100%) rename docs/tech-specs/{ => tr}/extraction-flows.tr.md (100%) rename docs/tech-specs/{ => tr}/extraction-provenance-subgraph.tr.md (100%) rename docs/tech-specs/{ => tr}/extraction-time-provenance.tr.md (100%) rename docs/tech-specs/{ => tr}/flow-class-definition.tr.md (100%) rename docs/tech-specs/{ => tr}/flow-configurable-parameters.tr.md (100%) rename docs/tech-specs/{ => tr}/graph-contexts.tr.md (100%) rename docs/tech-specs/{ => tr}/graphql-query.tr.md (100%) rename docs/tech-specs/{ => tr}/graphrag-performance-optimization.tr.md (100%) rename docs/tech-specs/{ => tr}/import-export-graceful-shutdown.tr.md (100%) rename docs/tech-specs/{ => tr}/jsonl-prompt-output.tr.md (100%) rename docs/tech-specs/{ => tr}/large-document-loading.tr.md (100%) rename docs/tech-specs/{ => tr}/logging-strategy.tr.md (100%) rename docs/tech-specs/{ => tr}/mcp-tool-arguments.tr.md (100%) rename docs/tech-specs/{ => tr}/mcp-tool-bearer-token.tr.md (100%) rename docs/tech-specs/{ => tr}/minio-to-s3-migration.tr.md (100%) rename docs/tech-specs/{ => tr}/more-config-cli.tr.md (100%) rename docs/tech-specs/{ => tr}/multi-tenant-support.tr.md (100%) rename docs/tech-specs/{ => tr}/neo4j-user-collection-isolation.tr.md (100%) rename docs/tech-specs/{ => tr}/ontology-extract-phase-2.tr.md (100%) rename docs/tech-specs/{ => tr}/ontology.tr.md (100%) rename docs/tech-specs/{ => tr}/ontorag.tr.md (100%) rename docs/tech-specs/{ => tr}/openapi-spec.tr.md (100%) rename docs/tech-specs/{ => tr}/pubsub.tr.md (100%) rename docs/tech-specs/{ => tr}/python-api-refactor.tr.md (100%) rename docs/tech-specs/{ => tr}/query-time-explainability.tr.md (100%) rename docs/tech-specs/{ => tr}/rag-streaming-support.tr.md (100%) rename docs/tech-specs/{ => tr}/schema-refactoring-proposal.tr.md (100%) rename docs/tech-specs/{ => tr}/streaming-llm-responses.tr.md (100%) rename docs/tech-specs/{ => tr}/structured-data-2.tr.md (100%) rename docs/tech-specs/{ => tr}/structured-data-descriptor.tr.md (100%) rename docs/tech-specs/{ => tr}/structured-data-schemas.tr.md (100%) rename docs/tech-specs/{ => tr}/structured-data.tr.md (100%) rename docs/tech-specs/{ => tr}/structured-diag-service.tr.md (100%) rename docs/tech-specs/{ => tr}/tool-group.tr.md (100%) rename docs/tech-specs/{ => tr}/tool-services.tr.md (100%) rename docs/tech-specs/{ => tr}/universal-decoder.tr.md (100%) rename docs/tech-specs/{ => tr}/vector-store-lifecycle.tr.md (100%) rename docs/tech-specs/{ => zh-cn}/__TEMPLATE.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/agent-explainability.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/architecture-principles.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/cassandra-consolidation.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/cassandra-performance-refactor.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/collection-management.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/document-embeddings-chunk-id.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/embeddings-batch-processing.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/entity-centric-graph.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/explainability-cli.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/extraction-flows.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/extraction-provenance-subgraph.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/extraction-time-provenance.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/flow-class-definition.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/flow-configurable-parameters.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/graph-contexts.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/graphql-query.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/graphrag-performance-optimization.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/import-export-graceful-shutdown.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/jsonl-prompt-output.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/large-document-loading.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/logging-strategy.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/mcp-tool-arguments.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/mcp-tool-bearer-token.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/minio-to-s3-migration.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/more-config-cli.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/multi-tenant-support.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/neo4j-user-collection-isolation.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/ontology-extract-phase-2.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/ontology.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/ontorag.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/openapi-spec.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/pubsub.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/python-api-refactor.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/query-time-explainability.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/rag-streaming-support.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/schema-refactoring-proposal.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/streaming-llm-responses.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/structured-data-2.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/structured-data-descriptor.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/structured-data-schemas.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/structured-data.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/structured-diag-service.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/tool-group.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/tool-services.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/universal-decoder.zh-cn.md (100%) rename docs/tech-specs/{ => zh-cn}/vector-store-lifecycle.zh-cn.md (100%) diff --git a/docs/tech-specs/__TEMPLATE.ar.md b/docs/tech-specs/ar/__TEMPLATE.ar.md similarity index 100% rename from docs/tech-specs/__TEMPLATE.ar.md rename to docs/tech-specs/ar/__TEMPLATE.ar.md diff --git a/docs/tech-specs/agent-explainability.ar.md b/docs/tech-specs/ar/agent-explainability.ar.md similarity index 100% rename from docs/tech-specs/agent-explainability.ar.md rename to docs/tech-specs/ar/agent-explainability.ar.md diff --git a/docs/tech-specs/architecture-principles.ar.md b/docs/tech-specs/ar/architecture-principles.ar.md similarity index 100% rename from docs/tech-specs/architecture-principles.ar.md rename to docs/tech-specs/ar/architecture-principles.ar.md diff --git a/docs/tech-specs/cassandra-consolidation.ar.md b/docs/tech-specs/ar/cassandra-consolidation.ar.md similarity index 100% rename from docs/tech-specs/cassandra-consolidation.ar.md rename to docs/tech-specs/ar/cassandra-consolidation.ar.md diff --git a/docs/tech-specs/cassandra-performance-refactor.ar.md b/docs/tech-specs/ar/cassandra-performance-refactor.ar.md similarity index 100% rename from docs/tech-specs/cassandra-performance-refactor.ar.md rename to docs/tech-specs/ar/cassandra-performance-refactor.ar.md diff --git a/docs/tech-specs/collection-management.ar.md b/docs/tech-specs/ar/collection-management.ar.md similarity index 100% rename from docs/tech-specs/collection-management.ar.md rename to docs/tech-specs/ar/collection-management.ar.md diff --git a/docs/tech-specs/document-embeddings-chunk-id.ar.md b/docs/tech-specs/ar/document-embeddings-chunk-id.ar.md similarity index 100% rename from docs/tech-specs/document-embeddings-chunk-id.ar.md rename to docs/tech-specs/ar/document-embeddings-chunk-id.ar.md diff --git a/docs/tech-specs/embeddings-batch-processing.ar.md b/docs/tech-specs/ar/embeddings-batch-processing.ar.md similarity index 100% rename from docs/tech-specs/embeddings-batch-processing.ar.md rename to docs/tech-specs/ar/embeddings-batch-processing.ar.md diff --git a/docs/tech-specs/entity-centric-graph.ar.md b/docs/tech-specs/ar/entity-centric-graph.ar.md similarity index 100% rename from docs/tech-specs/entity-centric-graph.ar.md rename to docs/tech-specs/ar/entity-centric-graph.ar.md diff --git a/docs/tech-specs/explainability-cli.ar.md b/docs/tech-specs/ar/explainability-cli.ar.md similarity index 100% rename from docs/tech-specs/explainability-cli.ar.md rename to docs/tech-specs/ar/explainability-cli.ar.md diff --git a/docs/tech-specs/extraction-flows.ar.md b/docs/tech-specs/ar/extraction-flows.ar.md similarity index 100% rename from docs/tech-specs/extraction-flows.ar.md rename to docs/tech-specs/ar/extraction-flows.ar.md diff --git a/docs/tech-specs/extraction-provenance-subgraph.ar.md b/docs/tech-specs/ar/extraction-provenance-subgraph.ar.md similarity index 100% rename from docs/tech-specs/extraction-provenance-subgraph.ar.md rename to docs/tech-specs/ar/extraction-provenance-subgraph.ar.md diff --git a/docs/tech-specs/extraction-time-provenance.ar.md b/docs/tech-specs/ar/extraction-time-provenance.ar.md similarity index 100% rename from docs/tech-specs/extraction-time-provenance.ar.md rename to docs/tech-specs/ar/extraction-time-provenance.ar.md diff --git a/docs/tech-specs/flow-class-definition.ar.md b/docs/tech-specs/ar/flow-class-definition.ar.md similarity index 100% rename from docs/tech-specs/flow-class-definition.ar.md rename to docs/tech-specs/ar/flow-class-definition.ar.md diff --git a/docs/tech-specs/flow-configurable-parameters.ar.md b/docs/tech-specs/ar/flow-configurable-parameters.ar.md similarity index 100% rename from docs/tech-specs/flow-configurable-parameters.ar.md rename to docs/tech-specs/ar/flow-configurable-parameters.ar.md diff --git a/docs/tech-specs/graph-contexts.ar.md b/docs/tech-specs/ar/graph-contexts.ar.md similarity index 100% rename from docs/tech-specs/graph-contexts.ar.md rename to docs/tech-specs/ar/graph-contexts.ar.md diff --git a/docs/tech-specs/graphql-query.ar.md b/docs/tech-specs/ar/graphql-query.ar.md similarity index 100% rename from docs/tech-specs/graphql-query.ar.md rename to docs/tech-specs/ar/graphql-query.ar.md diff --git a/docs/tech-specs/graphrag-performance-optimization.ar.md b/docs/tech-specs/ar/graphrag-performance-optimization.ar.md similarity index 100% rename from docs/tech-specs/graphrag-performance-optimization.ar.md rename to docs/tech-specs/ar/graphrag-performance-optimization.ar.md diff --git a/docs/tech-specs/import-export-graceful-shutdown.ar.md b/docs/tech-specs/ar/import-export-graceful-shutdown.ar.md similarity index 100% rename from docs/tech-specs/import-export-graceful-shutdown.ar.md rename to docs/tech-specs/ar/import-export-graceful-shutdown.ar.md diff --git a/docs/tech-specs/jsonl-prompt-output.ar.md b/docs/tech-specs/ar/jsonl-prompt-output.ar.md similarity index 100% rename from docs/tech-specs/jsonl-prompt-output.ar.md rename to docs/tech-specs/ar/jsonl-prompt-output.ar.md diff --git a/docs/tech-specs/large-document-loading.ar.md b/docs/tech-specs/ar/large-document-loading.ar.md similarity index 100% rename from docs/tech-specs/large-document-loading.ar.md rename to docs/tech-specs/ar/large-document-loading.ar.md diff --git a/docs/tech-specs/logging-strategy.ar.md b/docs/tech-specs/ar/logging-strategy.ar.md similarity index 100% rename from docs/tech-specs/logging-strategy.ar.md rename to docs/tech-specs/ar/logging-strategy.ar.md diff --git a/docs/tech-specs/mcp-tool-arguments.ar.md b/docs/tech-specs/ar/mcp-tool-arguments.ar.md similarity index 100% rename from docs/tech-specs/mcp-tool-arguments.ar.md rename to docs/tech-specs/ar/mcp-tool-arguments.ar.md diff --git a/docs/tech-specs/mcp-tool-bearer-token.ar.md b/docs/tech-specs/ar/mcp-tool-bearer-token.ar.md similarity index 100% rename from docs/tech-specs/mcp-tool-bearer-token.ar.md rename to docs/tech-specs/ar/mcp-tool-bearer-token.ar.md diff --git a/docs/tech-specs/minio-to-s3-migration.ar.md b/docs/tech-specs/ar/minio-to-s3-migration.ar.md similarity index 100% rename from docs/tech-specs/minio-to-s3-migration.ar.md rename to docs/tech-specs/ar/minio-to-s3-migration.ar.md diff --git a/docs/tech-specs/more-config-cli.ar.md b/docs/tech-specs/ar/more-config-cli.ar.md similarity index 100% rename from docs/tech-specs/more-config-cli.ar.md rename to docs/tech-specs/ar/more-config-cli.ar.md diff --git a/docs/tech-specs/multi-tenant-support.ar.md b/docs/tech-specs/ar/multi-tenant-support.ar.md similarity index 100% rename from docs/tech-specs/multi-tenant-support.ar.md rename to docs/tech-specs/ar/multi-tenant-support.ar.md diff --git a/docs/tech-specs/neo4j-user-collection-isolation.ar.md b/docs/tech-specs/ar/neo4j-user-collection-isolation.ar.md similarity index 100% rename from docs/tech-specs/neo4j-user-collection-isolation.ar.md rename to docs/tech-specs/ar/neo4j-user-collection-isolation.ar.md diff --git a/docs/tech-specs/ontology-extract-phase-2.ar.md b/docs/tech-specs/ar/ontology-extract-phase-2.ar.md similarity index 100% rename from docs/tech-specs/ontology-extract-phase-2.ar.md rename to docs/tech-specs/ar/ontology-extract-phase-2.ar.md diff --git a/docs/tech-specs/ontology.ar.md b/docs/tech-specs/ar/ontology.ar.md similarity index 100% rename from docs/tech-specs/ontology.ar.md rename to docs/tech-specs/ar/ontology.ar.md diff --git a/docs/tech-specs/ontorag.ar.md b/docs/tech-specs/ar/ontorag.ar.md similarity index 100% rename from docs/tech-specs/ontorag.ar.md rename to docs/tech-specs/ar/ontorag.ar.md diff --git a/docs/tech-specs/openapi-spec.ar.md b/docs/tech-specs/ar/openapi-spec.ar.md similarity index 100% rename from docs/tech-specs/openapi-spec.ar.md rename to docs/tech-specs/ar/openapi-spec.ar.md diff --git a/docs/tech-specs/pubsub.ar.md b/docs/tech-specs/ar/pubsub.ar.md similarity index 100% rename from docs/tech-specs/pubsub.ar.md rename to docs/tech-specs/ar/pubsub.ar.md diff --git a/docs/tech-specs/python-api-refactor.ar.md b/docs/tech-specs/ar/python-api-refactor.ar.md similarity index 100% rename from docs/tech-specs/python-api-refactor.ar.md rename to docs/tech-specs/ar/python-api-refactor.ar.md diff --git a/docs/tech-specs/query-time-explainability.ar.md b/docs/tech-specs/ar/query-time-explainability.ar.md similarity index 100% rename from docs/tech-specs/query-time-explainability.ar.md rename to docs/tech-specs/ar/query-time-explainability.ar.md diff --git a/docs/tech-specs/rag-streaming-support.ar.md b/docs/tech-specs/ar/rag-streaming-support.ar.md similarity index 100% rename from docs/tech-specs/rag-streaming-support.ar.md rename to docs/tech-specs/ar/rag-streaming-support.ar.md diff --git a/docs/tech-specs/schema-refactoring-proposal.ar.md b/docs/tech-specs/ar/schema-refactoring-proposal.ar.md similarity index 100% rename from docs/tech-specs/schema-refactoring-proposal.ar.md rename to docs/tech-specs/ar/schema-refactoring-proposal.ar.md diff --git a/docs/tech-specs/streaming-llm-responses.ar.md b/docs/tech-specs/ar/streaming-llm-responses.ar.md similarity index 100% rename from docs/tech-specs/streaming-llm-responses.ar.md rename to docs/tech-specs/ar/streaming-llm-responses.ar.md diff --git a/docs/tech-specs/structured-data-2.ar.md b/docs/tech-specs/ar/structured-data-2.ar.md similarity index 100% rename from docs/tech-specs/structured-data-2.ar.md rename to docs/tech-specs/ar/structured-data-2.ar.md diff --git a/docs/tech-specs/structured-data-descriptor.ar.md b/docs/tech-specs/ar/structured-data-descriptor.ar.md similarity index 100% rename from docs/tech-specs/structured-data-descriptor.ar.md rename to docs/tech-specs/ar/structured-data-descriptor.ar.md diff --git a/docs/tech-specs/structured-data-schemas.ar.md b/docs/tech-specs/ar/structured-data-schemas.ar.md similarity index 100% rename from docs/tech-specs/structured-data-schemas.ar.md rename to docs/tech-specs/ar/structured-data-schemas.ar.md diff --git a/docs/tech-specs/structured-data.ar.md b/docs/tech-specs/ar/structured-data.ar.md similarity index 100% rename from docs/tech-specs/structured-data.ar.md rename to docs/tech-specs/ar/structured-data.ar.md diff --git a/docs/tech-specs/structured-diag-service.ar.md b/docs/tech-specs/ar/structured-diag-service.ar.md similarity index 100% rename from docs/tech-specs/structured-diag-service.ar.md rename to docs/tech-specs/ar/structured-diag-service.ar.md diff --git a/docs/tech-specs/tool-group.ar.md b/docs/tech-specs/ar/tool-group.ar.md similarity index 100% rename from docs/tech-specs/tool-group.ar.md rename to docs/tech-specs/ar/tool-group.ar.md diff --git a/docs/tech-specs/tool-services.ar.md b/docs/tech-specs/ar/tool-services.ar.md similarity index 100% rename from docs/tech-specs/tool-services.ar.md rename to docs/tech-specs/ar/tool-services.ar.md diff --git a/docs/tech-specs/universal-decoder.ar.md b/docs/tech-specs/ar/universal-decoder.ar.md similarity index 100% rename from docs/tech-specs/universal-decoder.ar.md rename to docs/tech-specs/ar/universal-decoder.ar.md diff --git a/docs/tech-specs/vector-store-lifecycle.ar.md b/docs/tech-specs/ar/vector-store-lifecycle.ar.md similarity index 100% rename from docs/tech-specs/vector-store-lifecycle.ar.md rename to docs/tech-specs/ar/vector-store-lifecycle.ar.md diff --git a/docs/tech-specs/__TEMPLATE.es.md b/docs/tech-specs/es/__TEMPLATE.es.md similarity index 100% rename from docs/tech-specs/__TEMPLATE.es.md rename to docs/tech-specs/es/__TEMPLATE.es.md diff --git a/docs/tech-specs/agent-explainability.es.md b/docs/tech-specs/es/agent-explainability.es.md similarity index 100% rename from docs/tech-specs/agent-explainability.es.md rename to docs/tech-specs/es/agent-explainability.es.md diff --git a/docs/tech-specs/architecture-principles.es.md b/docs/tech-specs/es/architecture-principles.es.md similarity index 100% rename from docs/tech-specs/architecture-principles.es.md rename to docs/tech-specs/es/architecture-principles.es.md diff --git a/docs/tech-specs/cassandra-consolidation.es.md b/docs/tech-specs/es/cassandra-consolidation.es.md similarity index 100% rename from docs/tech-specs/cassandra-consolidation.es.md rename to docs/tech-specs/es/cassandra-consolidation.es.md diff --git a/docs/tech-specs/cassandra-performance-refactor.es.md b/docs/tech-specs/es/cassandra-performance-refactor.es.md similarity index 100% rename from docs/tech-specs/cassandra-performance-refactor.es.md rename to docs/tech-specs/es/cassandra-performance-refactor.es.md diff --git a/docs/tech-specs/collection-management.es.md b/docs/tech-specs/es/collection-management.es.md similarity index 100% rename from docs/tech-specs/collection-management.es.md rename to docs/tech-specs/es/collection-management.es.md diff --git a/docs/tech-specs/document-embeddings-chunk-id.es.md b/docs/tech-specs/es/document-embeddings-chunk-id.es.md similarity index 100% rename from docs/tech-specs/document-embeddings-chunk-id.es.md rename to docs/tech-specs/es/document-embeddings-chunk-id.es.md diff --git a/docs/tech-specs/embeddings-batch-processing.es.md b/docs/tech-specs/es/embeddings-batch-processing.es.md similarity index 100% rename from docs/tech-specs/embeddings-batch-processing.es.md rename to docs/tech-specs/es/embeddings-batch-processing.es.md diff --git a/docs/tech-specs/entity-centric-graph.es.md b/docs/tech-specs/es/entity-centric-graph.es.md similarity index 100% rename from docs/tech-specs/entity-centric-graph.es.md rename to docs/tech-specs/es/entity-centric-graph.es.md diff --git a/docs/tech-specs/explainability-cli.es.md b/docs/tech-specs/es/explainability-cli.es.md similarity index 100% rename from docs/tech-specs/explainability-cli.es.md rename to docs/tech-specs/es/explainability-cli.es.md diff --git a/docs/tech-specs/extraction-flows.es.md b/docs/tech-specs/es/extraction-flows.es.md similarity index 100% rename from docs/tech-specs/extraction-flows.es.md rename to docs/tech-specs/es/extraction-flows.es.md diff --git a/docs/tech-specs/extraction-provenance-subgraph.es.md b/docs/tech-specs/es/extraction-provenance-subgraph.es.md similarity index 100% rename from docs/tech-specs/extraction-provenance-subgraph.es.md rename to docs/tech-specs/es/extraction-provenance-subgraph.es.md diff --git a/docs/tech-specs/extraction-time-provenance.es.md b/docs/tech-specs/es/extraction-time-provenance.es.md similarity index 100% rename from docs/tech-specs/extraction-time-provenance.es.md rename to docs/tech-specs/es/extraction-time-provenance.es.md diff --git a/docs/tech-specs/flow-class-definition.es.md b/docs/tech-specs/es/flow-class-definition.es.md similarity index 100% rename from docs/tech-specs/flow-class-definition.es.md rename to docs/tech-specs/es/flow-class-definition.es.md diff --git a/docs/tech-specs/flow-configurable-parameters.es.md b/docs/tech-specs/es/flow-configurable-parameters.es.md similarity index 100% rename from docs/tech-specs/flow-configurable-parameters.es.md rename to docs/tech-specs/es/flow-configurable-parameters.es.md diff --git a/docs/tech-specs/graph-contexts.es.md b/docs/tech-specs/es/graph-contexts.es.md similarity index 100% rename from docs/tech-specs/graph-contexts.es.md rename to docs/tech-specs/es/graph-contexts.es.md diff --git a/docs/tech-specs/graphql-query.es.md b/docs/tech-specs/es/graphql-query.es.md similarity index 100% rename from docs/tech-specs/graphql-query.es.md rename to docs/tech-specs/es/graphql-query.es.md diff --git a/docs/tech-specs/graphrag-performance-optimization.es.md b/docs/tech-specs/es/graphrag-performance-optimization.es.md similarity index 100% rename from docs/tech-specs/graphrag-performance-optimization.es.md rename to docs/tech-specs/es/graphrag-performance-optimization.es.md diff --git a/docs/tech-specs/import-export-graceful-shutdown.es.md b/docs/tech-specs/es/import-export-graceful-shutdown.es.md similarity index 100% rename from docs/tech-specs/import-export-graceful-shutdown.es.md rename to docs/tech-specs/es/import-export-graceful-shutdown.es.md diff --git a/docs/tech-specs/jsonl-prompt-output.es.md b/docs/tech-specs/es/jsonl-prompt-output.es.md similarity index 100% rename from docs/tech-specs/jsonl-prompt-output.es.md rename to docs/tech-specs/es/jsonl-prompt-output.es.md diff --git a/docs/tech-specs/large-document-loading.es.md b/docs/tech-specs/es/large-document-loading.es.md similarity index 100% rename from docs/tech-specs/large-document-loading.es.md rename to docs/tech-specs/es/large-document-loading.es.md diff --git a/docs/tech-specs/logging-strategy.es.md b/docs/tech-specs/es/logging-strategy.es.md similarity index 100% rename from docs/tech-specs/logging-strategy.es.md rename to docs/tech-specs/es/logging-strategy.es.md diff --git a/docs/tech-specs/mcp-tool-arguments.es.md b/docs/tech-specs/es/mcp-tool-arguments.es.md similarity index 100% rename from docs/tech-specs/mcp-tool-arguments.es.md rename to docs/tech-specs/es/mcp-tool-arguments.es.md diff --git a/docs/tech-specs/mcp-tool-bearer-token.es.md b/docs/tech-specs/es/mcp-tool-bearer-token.es.md similarity index 100% rename from docs/tech-specs/mcp-tool-bearer-token.es.md rename to docs/tech-specs/es/mcp-tool-bearer-token.es.md diff --git a/docs/tech-specs/minio-to-s3-migration.es.md b/docs/tech-specs/es/minio-to-s3-migration.es.md similarity index 100% rename from docs/tech-specs/minio-to-s3-migration.es.md rename to docs/tech-specs/es/minio-to-s3-migration.es.md diff --git a/docs/tech-specs/more-config-cli.es.md b/docs/tech-specs/es/more-config-cli.es.md similarity index 100% rename from docs/tech-specs/more-config-cli.es.md rename to docs/tech-specs/es/more-config-cli.es.md diff --git a/docs/tech-specs/multi-tenant-support.es.md b/docs/tech-specs/es/multi-tenant-support.es.md similarity index 100% rename from docs/tech-specs/multi-tenant-support.es.md rename to docs/tech-specs/es/multi-tenant-support.es.md diff --git a/docs/tech-specs/neo4j-user-collection-isolation.es.md b/docs/tech-specs/es/neo4j-user-collection-isolation.es.md similarity index 100% rename from docs/tech-specs/neo4j-user-collection-isolation.es.md rename to docs/tech-specs/es/neo4j-user-collection-isolation.es.md diff --git a/docs/tech-specs/ontology-extract-phase-2.es.md b/docs/tech-specs/es/ontology-extract-phase-2.es.md similarity index 100% rename from docs/tech-specs/ontology-extract-phase-2.es.md rename to docs/tech-specs/es/ontology-extract-phase-2.es.md diff --git a/docs/tech-specs/ontology.es.md b/docs/tech-specs/es/ontology.es.md similarity index 100% rename from docs/tech-specs/ontology.es.md rename to docs/tech-specs/es/ontology.es.md diff --git a/docs/tech-specs/ontorag.es.md b/docs/tech-specs/es/ontorag.es.md similarity index 100% rename from docs/tech-specs/ontorag.es.md rename to docs/tech-specs/es/ontorag.es.md diff --git a/docs/tech-specs/openapi-spec.es.md b/docs/tech-specs/es/openapi-spec.es.md similarity index 100% rename from docs/tech-specs/openapi-spec.es.md rename to docs/tech-specs/es/openapi-spec.es.md diff --git a/docs/tech-specs/pubsub.es.md b/docs/tech-specs/es/pubsub.es.md similarity index 100% rename from docs/tech-specs/pubsub.es.md rename to docs/tech-specs/es/pubsub.es.md diff --git a/docs/tech-specs/python-api-refactor.es.md b/docs/tech-specs/es/python-api-refactor.es.md similarity index 100% rename from docs/tech-specs/python-api-refactor.es.md rename to docs/tech-specs/es/python-api-refactor.es.md diff --git a/docs/tech-specs/query-time-explainability.es.md b/docs/tech-specs/es/query-time-explainability.es.md similarity index 100% rename from docs/tech-specs/query-time-explainability.es.md rename to docs/tech-specs/es/query-time-explainability.es.md diff --git a/docs/tech-specs/rag-streaming-support.es.md b/docs/tech-specs/es/rag-streaming-support.es.md similarity index 100% rename from docs/tech-specs/rag-streaming-support.es.md rename to docs/tech-specs/es/rag-streaming-support.es.md diff --git a/docs/tech-specs/schema-refactoring-proposal.es.md b/docs/tech-specs/es/schema-refactoring-proposal.es.md similarity index 100% rename from docs/tech-specs/schema-refactoring-proposal.es.md rename to docs/tech-specs/es/schema-refactoring-proposal.es.md diff --git a/docs/tech-specs/streaming-llm-responses.es.md b/docs/tech-specs/es/streaming-llm-responses.es.md similarity index 100% rename from docs/tech-specs/streaming-llm-responses.es.md rename to docs/tech-specs/es/streaming-llm-responses.es.md diff --git a/docs/tech-specs/structured-data-2.es.md b/docs/tech-specs/es/structured-data-2.es.md similarity index 100% rename from docs/tech-specs/structured-data-2.es.md rename to docs/tech-specs/es/structured-data-2.es.md diff --git a/docs/tech-specs/structured-data-descriptor.es.md b/docs/tech-specs/es/structured-data-descriptor.es.md similarity index 100% rename from docs/tech-specs/structured-data-descriptor.es.md rename to docs/tech-specs/es/structured-data-descriptor.es.md diff --git a/docs/tech-specs/structured-data-schemas.es.md b/docs/tech-specs/es/structured-data-schemas.es.md similarity index 100% rename from docs/tech-specs/structured-data-schemas.es.md rename to docs/tech-specs/es/structured-data-schemas.es.md diff --git a/docs/tech-specs/structured-data.es.md b/docs/tech-specs/es/structured-data.es.md similarity index 100% rename from docs/tech-specs/structured-data.es.md rename to docs/tech-specs/es/structured-data.es.md diff --git a/docs/tech-specs/structured-diag-service.es.md b/docs/tech-specs/es/structured-diag-service.es.md similarity index 100% rename from docs/tech-specs/structured-diag-service.es.md rename to docs/tech-specs/es/structured-diag-service.es.md diff --git a/docs/tech-specs/tool-group.es.md b/docs/tech-specs/es/tool-group.es.md similarity index 100% rename from docs/tech-specs/tool-group.es.md rename to docs/tech-specs/es/tool-group.es.md diff --git a/docs/tech-specs/tool-services.es.md b/docs/tech-specs/es/tool-services.es.md similarity index 100% rename from docs/tech-specs/tool-services.es.md rename to docs/tech-specs/es/tool-services.es.md diff --git a/docs/tech-specs/universal-decoder.es.md b/docs/tech-specs/es/universal-decoder.es.md similarity index 100% rename from docs/tech-specs/universal-decoder.es.md rename to docs/tech-specs/es/universal-decoder.es.md diff --git a/docs/tech-specs/vector-store-lifecycle.es.md b/docs/tech-specs/es/vector-store-lifecycle.es.md similarity index 100% rename from docs/tech-specs/vector-store-lifecycle.es.md rename to docs/tech-specs/es/vector-store-lifecycle.es.md diff --git a/docs/tech-specs/__TEMPLATE.he.md b/docs/tech-specs/he/__TEMPLATE.he.md similarity index 100% rename from docs/tech-specs/__TEMPLATE.he.md rename to docs/tech-specs/he/__TEMPLATE.he.md diff --git a/docs/tech-specs/agent-explainability.he.md b/docs/tech-specs/he/agent-explainability.he.md similarity index 100% rename from docs/tech-specs/agent-explainability.he.md rename to docs/tech-specs/he/agent-explainability.he.md diff --git a/docs/tech-specs/architecture-principles.he.md b/docs/tech-specs/he/architecture-principles.he.md similarity index 100% rename from docs/tech-specs/architecture-principles.he.md rename to docs/tech-specs/he/architecture-principles.he.md diff --git a/docs/tech-specs/cassandra-consolidation.he.md b/docs/tech-specs/he/cassandra-consolidation.he.md similarity index 100% rename from docs/tech-specs/cassandra-consolidation.he.md rename to docs/tech-specs/he/cassandra-consolidation.he.md diff --git a/docs/tech-specs/cassandra-performance-refactor.he.md b/docs/tech-specs/he/cassandra-performance-refactor.he.md similarity index 100% rename from docs/tech-specs/cassandra-performance-refactor.he.md rename to docs/tech-specs/he/cassandra-performance-refactor.he.md diff --git a/docs/tech-specs/collection-management.he.md b/docs/tech-specs/he/collection-management.he.md similarity index 100% rename from docs/tech-specs/collection-management.he.md rename to docs/tech-specs/he/collection-management.he.md diff --git a/docs/tech-specs/document-embeddings-chunk-id.he.md b/docs/tech-specs/he/document-embeddings-chunk-id.he.md similarity index 100% rename from docs/tech-specs/document-embeddings-chunk-id.he.md rename to docs/tech-specs/he/document-embeddings-chunk-id.he.md diff --git a/docs/tech-specs/embeddings-batch-processing.he.md b/docs/tech-specs/he/embeddings-batch-processing.he.md similarity index 100% rename from docs/tech-specs/embeddings-batch-processing.he.md rename to docs/tech-specs/he/embeddings-batch-processing.he.md diff --git a/docs/tech-specs/entity-centric-graph.he.md b/docs/tech-specs/he/entity-centric-graph.he.md similarity index 100% rename from docs/tech-specs/entity-centric-graph.he.md rename to docs/tech-specs/he/entity-centric-graph.he.md diff --git a/docs/tech-specs/explainability-cli.he.md b/docs/tech-specs/he/explainability-cli.he.md similarity index 100% rename from docs/tech-specs/explainability-cli.he.md rename to docs/tech-specs/he/explainability-cli.he.md diff --git a/docs/tech-specs/extraction-flows.he.md b/docs/tech-specs/he/extraction-flows.he.md similarity index 100% rename from docs/tech-specs/extraction-flows.he.md rename to docs/tech-specs/he/extraction-flows.he.md diff --git a/docs/tech-specs/extraction-provenance-subgraph.he.md b/docs/tech-specs/he/extraction-provenance-subgraph.he.md similarity index 100% rename from docs/tech-specs/extraction-provenance-subgraph.he.md rename to docs/tech-specs/he/extraction-provenance-subgraph.he.md diff --git a/docs/tech-specs/extraction-time-provenance.he.md b/docs/tech-specs/he/extraction-time-provenance.he.md similarity index 100% rename from docs/tech-specs/extraction-time-provenance.he.md rename to docs/tech-specs/he/extraction-time-provenance.he.md diff --git a/docs/tech-specs/flow-class-definition.he.md b/docs/tech-specs/he/flow-class-definition.he.md similarity index 100% rename from docs/tech-specs/flow-class-definition.he.md rename to docs/tech-specs/he/flow-class-definition.he.md diff --git a/docs/tech-specs/flow-configurable-parameters.he.md b/docs/tech-specs/he/flow-configurable-parameters.he.md similarity index 100% rename from docs/tech-specs/flow-configurable-parameters.he.md rename to docs/tech-specs/he/flow-configurable-parameters.he.md diff --git a/docs/tech-specs/graph-contexts.he.md b/docs/tech-specs/he/graph-contexts.he.md similarity index 100% rename from docs/tech-specs/graph-contexts.he.md rename to docs/tech-specs/he/graph-contexts.he.md diff --git a/docs/tech-specs/graphql-query.he.md b/docs/tech-specs/he/graphql-query.he.md similarity index 100% rename from docs/tech-specs/graphql-query.he.md rename to docs/tech-specs/he/graphql-query.he.md diff --git a/docs/tech-specs/graphrag-performance-optimization.he.md b/docs/tech-specs/he/graphrag-performance-optimization.he.md similarity index 100% rename from docs/tech-specs/graphrag-performance-optimization.he.md rename to docs/tech-specs/he/graphrag-performance-optimization.he.md diff --git a/docs/tech-specs/import-export-graceful-shutdown.he.md b/docs/tech-specs/he/import-export-graceful-shutdown.he.md similarity index 100% rename from docs/tech-specs/import-export-graceful-shutdown.he.md rename to docs/tech-specs/he/import-export-graceful-shutdown.he.md diff --git a/docs/tech-specs/jsonl-prompt-output.he.md b/docs/tech-specs/he/jsonl-prompt-output.he.md similarity index 100% rename from docs/tech-specs/jsonl-prompt-output.he.md rename to docs/tech-specs/he/jsonl-prompt-output.he.md diff --git a/docs/tech-specs/large-document-loading.he.md b/docs/tech-specs/he/large-document-loading.he.md similarity index 100% rename from docs/tech-specs/large-document-loading.he.md rename to docs/tech-specs/he/large-document-loading.he.md diff --git a/docs/tech-specs/logging-strategy.he.md b/docs/tech-specs/he/logging-strategy.he.md similarity index 100% rename from docs/tech-specs/logging-strategy.he.md rename to docs/tech-specs/he/logging-strategy.he.md diff --git a/docs/tech-specs/mcp-tool-arguments.he.md b/docs/tech-specs/he/mcp-tool-arguments.he.md similarity index 100% rename from docs/tech-specs/mcp-tool-arguments.he.md rename to docs/tech-specs/he/mcp-tool-arguments.he.md diff --git a/docs/tech-specs/mcp-tool-bearer-token.he.md b/docs/tech-specs/he/mcp-tool-bearer-token.he.md similarity index 100% rename from docs/tech-specs/mcp-tool-bearer-token.he.md rename to docs/tech-specs/he/mcp-tool-bearer-token.he.md diff --git a/docs/tech-specs/minio-to-s3-migration.he.md b/docs/tech-specs/he/minio-to-s3-migration.he.md similarity index 100% rename from docs/tech-specs/minio-to-s3-migration.he.md rename to docs/tech-specs/he/minio-to-s3-migration.he.md diff --git a/docs/tech-specs/more-config-cli.he.md b/docs/tech-specs/he/more-config-cli.he.md similarity index 100% rename from docs/tech-specs/more-config-cli.he.md rename to docs/tech-specs/he/more-config-cli.he.md diff --git a/docs/tech-specs/multi-tenant-support.he.md b/docs/tech-specs/he/multi-tenant-support.he.md similarity index 100% rename from docs/tech-specs/multi-tenant-support.he.md rename to docs/tech-specs/he/multi-tenant-support.he.md diff --git a/docs/tech-specs/neo4j-user-collection-isolation.he.md b/docs/tech-specs/he/neo4j-user-collection-isolation.he.md similarity index 100% rename from docs/tech-specs/neo4j-user-collection-isolation.he.md rename to docs/tech-specs/he/neo4j-user-collection-isolation.he.md diff --git a/docs/tech-specs/ontology-extract-phase-2.he.md b/docs/tech-specs/he/ontology-extract-phase-2.he.md similarity index 100% rename from docs/tech-specs/ontology-extract-phase-2.he.md rename to docs/tech-specs/he/ontology-extract-phase-2.he.md diff --git a/docs/tech-specs/ontology.he.md b/docs/tech-specs/he/ontology.he.md similarity index 100% rename from docs/tech-specs/ontology.he.md rename to docs/tech-specs/he/ontology.he.md diff --git a/docs/tech-specs/ontorag.he.md b/docs/tech-specs/he/ontorag.he.md similarity index 100% rename from docs/tech-specs/ontorag.he.md rename to docs/tech-specs/he/ontorag.he.md diff --git a/docs/tech-specs/openapi-spec.he.md b/docs/tech-specs/he/openapi-spec.he.md similarity index 100% rename from docs/tech-specs/openapi-spec.he.md rename to docs/tech-specs/he/openapi-spec.he.md diff --git a/docs/tech-specs/pubsub.he.md b/docs/tech-specs/he/pubsub.he.md similarity index 100% rename from docs/tech-specs/pubsub.he.md rename to docs/tech-specs/he/pubsub.he.md diff --git a/docs/tech-specs/python-api-refactor.he.md b/docs/tech-specs/he/python-api-refactor.he.md similarity index 100% rename from docs/tech-specs/python-api-refactor.he.md rename to docs/tech-specs/he/python-api-refactor.he.md diff --git a/docs/tech-specs/query-time-explainability.he.md b/docs/tech-specs/he/query-time-explainability.he.md similarity index 100% rename from docs/tech-specs/query-time-explainability.he.md rename to docs/tech-specs/he/query-time-explainability.he.md diff --git a/docs/tech-specs/rag-streaming-support.he.md b/docs/tech-specs/he/rag-streaming-support.he.md similarity index 100% rename from docs/tech-specs/rag-streaming-support.he.md rename to docs/tech-specs/he/rag-streaming-support.he.md diff --git a/docs/tech-specs/schema-refactoring-proposal.he.md b/docs/tech-specs/he/schema-refactoring-proposal.he.md similarity index 100% rename from docs/tech-specs/schema-refactoring-proposal.he.md rename to docs/tech-specs/he/schema-refactoring-proposal.he.md diff --git a/docs/tech-specs/streaming-llm-responses.he.md b/docs/tech-specs/he/streaming-llm-responses.he.md similarity index 100% rename from docs/tech-specs/streaming-llm-responses.he.md rename to docs/tech-specs/he/streaming-llm-responses.he.md diff --git a/docs/tech-specs/structured-data-2.he.md b/docs/tech-specs/he/structured-data-2.he.md similarity index 100% rename from docs/tech-specs/structured-data-2.he.md rename to docs/tech-specs/he/structured-data-2.he.md diff --git a/docs/tech-specs/structured-data-descriptor.he.md b/docs/tech-specs/he/structured-data-descriptor.he.md similarity index 100% rename from docs/tech-specs/structured-data-descriptor.he.md rename to docs/tech-specs/he/structured-data-descriptor.he.md diff --git a/docs/tech-specs/structured-data-schemas.he.md b/docs/tech-specs/he/structured-data-schemas.he.md similarity index 100% rename from docs/tech-specs/structured-data-schemas.he.md rename to docs/tech-specs/he/structured-data-schemas.he.md diff --git a/docs/tech-specs/structured-data.he.md b/docs/tech-specs/he/structured-data.he.md similarity index 100% rename from docs/tech-specs/structured-data.he.md rename to docs/tech-specs/he/structured-data.he.md diff --git a/docs/tech-specs/structured-diag-service.he.md b/docs/tech-specs/he/structured-diag-service.he.md similarity index 100% rename from docs/tech-specs/structured-diag-service.he.md rename to docs/tech-specs/he/structured-diag-service.he.md diff --git a/docs/tech-specs/tool-group.he.md b/docs/tech-specs/he/tool-group.he.md similarity index 100% rename from docs/tech-specs/tool-group.he.md rename to docs/tech-specs/he/tool-group.he.md diff --git a/docs/tech-specs/tool-services.he.md b/docs/tech-specs/he/tool-services.he.md similarity index 100% rename from docs/tech-specs/tool-services.he.md rename to docs/tech-specs/he/tool-services.he.md diff --git a/docs/tech-specs/universal-decoder.he.md b/docs/tech-specs/he/universal-decoder.he.md similarity index 100% rename from docs/tech-specs/universal-decoder.he.md rename to docs/tech-specs/he/universal-decoder.he.md diff --git a/docs/tech-specs/vector-store-lifecycle.he.md b/docs/tech-specs/he/vector-store-lifecycle.he.md similarity index 100% rename from docs/tech-specs/vector-store-lifecycle.he.md rename to docs/tech-specs/he/vector-store-lifecycle.he.md diff --git a/docs/tech-specs/__TEMPLATE.hi.md b/docs/tech-specs/hi/__TEMPLATE.hi.md similarity index 100% rename from docs/tech-specs/__TEMPLATE.hi.md rename to docs/tech-specs/hi/__TEMPLATE.hi.md diff --git a/docs/tech-specs/agent-explainability.hi.md b/docs/tech-specs/hi/agent-explainability.hi.md similarity index 100% rename from docs/tech-specs/agent-explainability.hi.md rename to docs/tech-specs/hi/agent-explainability.hi.md diff --git a/docs/tech-specs/architecture-principles.hi.md b/docs/tech-specs/hi/architecture-principles.hi.md similarity index 100% rename from docs/tech-specs/architecture-principles.hi.md rename to docs/tech-specs/hi/architecture-principles.hi.md diff --git a/docs/tech-specs/cassandra-consolidation.hi.md b/docs/tech-specs/hi/cassandra-consolidation.hi.md similarity index 100% rename from docs/tech-specs/cassandra-consolidation.hi.md rename to docs/tech-specs/hi/cassandra-consolidation.hi.md diff --git a/docs/tech-specs/cassandra-performance-refactor.hi.md b/docs/tech-specs/hi/cassandra-performance-refactor.hi.md similarity index 100% rename from docs/tech-specs/cassandra-performance-refactor.hi.md rename to docs/tech-specs/hi/cassandra-performance-refactor.hi.md diff --git a/docs/tech-specs/collection-management.hi.md b/docs/tech-specs/hi/collection-management.hi.md similarity index 100% rename from docs/tech-specs/collection-management.hi.md rename to docs/tech-specs/hi/collection-management.hi.md diff --git a/docs/tech-specs/document-embeddings-chunk-id.hi.md b/docs/tech-specs/hi/document-embeddings-chunk-id.hi.md similarity index 100% rename from docs/tech-specs/document-embeddings-chunk-id.hi.md rename to docs/tech-specs/hi/document-embeddings-chunk-id.hi.md diff --git a/docs/tech-specs/embeddings-batch-processing.hi.md b/docs/tech-specs/hi/embeddings-batch-processing.hi.md similarity index 100% rename from docs/tech-specs/embeddings-batch-processing.hi.md rename to docs/tech-specs/hi/embeddings-batch-processing.hi.md diff --git a/docs/tech-specs/entity-centric-graph.hi.md b/docs/tech-specs/hi/entity-centric-graph.hi.md similarity index 100% rename from docs/tech-specs/entity-centric-graph.hi.md rename to docs/tech-specs/hi/entity-centric-graph.hi.md diff --git a/docs/tech-specs/explainability-cli.hi.md b/docs/tech-specs/hi/explainability-cli.hi.md similarity index 100% rename from docs/tech-specs/explainability-cli.hi.md rename to docs/tech-specs/hi/explainability-cli.hi.md diff --git a/docs/tech-specs/extraction-flows.hi.md b/docs/tech-specs/hi/extraction-flows.hi.md similarity index 100% rename from docs/tech-specs/extraction-flows.hi.md rename to docs/tech-specs/hi/extraction-flows.hi.md diff --git a/docs/tech-specs/extraction-provenance-subgraph.hi.md b/docs/tech-specs/hi/extraction-provenance-subgraph.hi.md similarity index 100% rename from docs/tech-specs/extraction-provenance-subgraph.hi.md rename to docs/tech-specs/hi/extraction-provenance-subgraph.hi.md diff --git a/docs/tech-specs/extraction-time-provenance.hi.md b/docs/tech-specs/hi/extraction-time-provenance.hi.md similarity index 100% rename from docs/tech-specs/extraction-time-provenance.hi.md rename to docs/tech-specs/hi/extraction-time-provenance.hi.md diff --git a/docs/tech-specs/flow-class-definition.hi.md b/docs/tech-specs/hi/flow-class-definition.hi.md similarity index 100% rename from docs/tech-specs/flow-class-definition.hi.md rename to docs/tech-specs/hi/flow-class-definition.hi.md diff --git a/docs/tech-specs/flow-configurable-parameters.hi.md b/docs/tech-specs/hi/flow-configurable-parameters.hi.md similarity index 100% rename from docs/tech-specs/flow-configurable-parameters.hi.md rename to docs/tech-specs/hi/flow-configurable-parameters.hi.md diff --git a/docs/tech-specs/graph-contexts.hi.md b/docs/tech-specs/hi/graph-contexts.hi.md similarity index 100% rename from docs/tech-specs/graph-contexts.hi.md rename to docs/tech-specs/hi/graph-contexts.hi.md diff --git a/docs/tech-specs/graphql-query.hi.md b/docs/tech-specs/hi/graphql-query.hi.md similarity index 100% rename from docs/tech-specs/graphql-query.hi.md rename to docs/tech-specs/hi/graphql-query.hi.md diff --git a/docs/tech-specs/graphrag-performance-optimization.hi.md b/docs/tech-specs/hi/graphrag-performance-optimization.hi.md similarity index 100% rename from docs/tech-specs/graphrag-performance-optimization.hi.md rename to docs/tech-specs/hi/graphrag-performance-optimization.hi.md diff --git a/docs/tech-specs/import-export-graceful-shutdown.hi.md b/docs/tech-specs/hi/import-export-graceful-shutdown.hi.md similarity index 100% rename from docs/tech-specs/import-export-graceful-shutdown.hi.md rename to docs/tech-specs/hi/import-export-graceful-shutdown.hi.md diff --git a/docs/tech-specs/jsonl-prompt-output.hi.md b/docs/tech-specs/hi/jsonl-prompt-output.hi.md similarity index 100% rename from docs/tech-specs/jsonl-prompt-output.hi.md rename to docs/tech-specs/hi/jsonl-prompt-output.hi.md diff --git a/docs/tech-specs/large-document-loading.hi.md b/docs/tech-specs/hi/large-document-loading.hi.md similarity index 100% rename from docs/tech-specs/large-document-loading.hi.md rename to docs/tech-specs/hi/large-document-loading.hi.md diff --git a/docs/tech-specs/logging-strategy.hi.md b/docs/tech-specs/hi/logging-strategy.hi.md similarity index 100% rename from docs/tech-specs/logging-strategy.hi.md rename to docs/tech-specs/hi/logging-strategy.hi.md diff --git a/docs/tech-specs/mcp-tool-arguments.hi.md b/docs/tech-specs/hi/mcp-tool-arguments.hi.md similarity index 100% rename from docs/tech-specs/mcp-tool-arguments.hi.md rename to docs/tech-specs/hi/mcp-tool-arguments.hi.md diff --git a/docs/tech-specs/mcp-tool-bearer-token.hi.md b/docs/tech-specs/hi/mcp-tool-bearer-token.hi.md similarity index 100% rename from docs/tech-specs/mcp-tool-bearer-token.hi.md rename to docs/tech-specs/hi/mcp-tool-bearer-token.hi.md diff --git a/docs/tech-specs/minio-to-s3-migration.hi.md b/docs/tech-specs/hi/minio-to-s3-migration.hi.md similarity index 100% rename from docs/tech-specs/minio-to-s3-migration.hi.md rename to docs/tech-specs/hi/minio-to-s3-migration.hi.md diff --git a/docs/tech-specs/more-config-cli.hi.md b/docs/tech-specs/hi/more-config-cli.hi.md similarity index 100% rename from docs/tech-specs/more-config-cli.hi.md rename to docs/tech-specs/hi/more-config-cli.hi.md diff --git a/docs/tech-specs/multi-tenant-support.hi.md b/docs/tech-specs/hi/multi-tenant-support.hi.md similarity index 100% rename from docs/tech-specs/multi-tenant-support.hi.md rename to docs/tech-specs/hi/multi-tenant-support.hi.md diff --git a/docs/tech-specs/neo4j-user-collection-isolation.hi.md b/docs/tech-specs/hi/neo4j-user-collection-isolation.hi.md similarity index 100% rename from docs/tech-specs/neo4j-user-collection-isolation.hi.md rename to docs/tech-specs/hi/neo4j-user-collection-isolation.hi.md diff --git a/docs/tech-specs/ontology-extract-phase-2.hi.md b/docs/tech-specs/hi/ontology-extract-phase-2.hi.md similarity index 100% rename from docs/tech-specs/ontology-extract-phase-2.hi.md rename to docs/tech-specs/hi/ontology-extract-phase-2.hi.md diff --git a/docs/tech-specs/ontology.hi.md b/docs/tech-specs/hi/ontology.hi.md similarity index 100% rename from docs/tech-specs/ontology.hi.md rename to docs/tech-specs/hi/ontology.hi.md diff --git a/docs/tech-specs/ontorag.hi.md b/docs/tech-specs/hi/ontorag.hi.md similarity index 100% rename from docs/tech-specs/ontorag.hi.md rename to docs/tech-specs/hi/ontorag.hi.md diff --git a/docs/tech-specs/openapi-spec.hi.md b/docs/tech-specs/hi/openapi-spec.hi.md similarity index 100% rename from docs/tech-specs/openapi-spec.hi.md rename to docs/tech-specs/hi/openapi-spec.hi.md diff --git a/docs/tech-specs/pubsub.hi.md b/docs/tech-specs/hi/pubsub.hi.md similarity index 100% rename from docs/tech-specs/pubsub.hi.md rename to docs/tech-specs/hi/pubsub.hi.md diff --git a/docs/tech-specs/python-api-refactor.hi.md b/docs/tech-specs/hi/python-api-refactor.hi.md similarity index 100% rename from docs/tech-specs/python-api-refactor.hi.md rename to docs/tech-specs/hi/python-api-refactor.hi.md diff --git a/docs/tech-specs/query-time-explainability.hi.md b/docs/tech-specs/hi/query-time-explainability.hi.md similarity index 100% rename from docs/tech-specs/query-time-explainability.hi.md rename to docs/tech-specs/hi/query-time-explainability.hi.md diff --git a/docs/tech-specs/rag-streaming-support.hi.md b/docs/tech-specs/hi/rag-streaming-support.hi.md similarity index 100% rename from docs/tech-specs/rag-streaming-support.hi.md rename to docs/tech-specs/hi/rag-streaming-support.hi.md diff --git a/docs/tech-specs/schema-refactoring-proposal.hi.md b/docs/tech-specs/hi/schema-refactoring-proposal.hi.md similarity index 100% rename from docs/tech-specs/schema-refactoring-proposal.hi.md rename to docs/tech-specs/hi/schema-refactoring-proposal.hi.md diff --git a/docs/tech-specs/streaming-llm-responses.hi.md b/docs/tech-specs/hi/streaming-llm-responses.hi.md similarity index 100% rename from docs/tech-specs/streaming-llm-responses.hi.md rename to docs/tech-specs/hi/streaming-llm-responses.hi.md diff --git a/docs/tech-specs/structured-data-2.hi.md b/docs/tech-specs/hi/structured-data-2.hi.md similarity index 100% rename from docs/tech-specs/structured-data-2.hi.md rename to docs/tech-specs/hi/structured-data-2.hi.md diff --git a/docs/tech-specs/structured-data-descriptor.hi.md b/docs/tech-specs/hi/structured-data-descriptor.hi.md similarity index 100% rename from docs/tech-specs/structured-data-descriptor.hi.md rename to docs/tech-specs/hi/structured-data-descriptor.hi.md diff --git a/docs/tech-specs/structured-data-schemas.hi.md b/docs/tech-specs/hi/structured-data-schemas.hi.md similarity index 100% rename from docs/tech-specs/structured-data-schemas.hi.md rename to docs/tech-specs/hi/structured-data-schemas.hi.md diff --git a/docs/tech-specs/structured-data.hi.md b/docs/tech-specs/hi/structured-data.hi.md similarity index 100% rename from docs/tech-specs/structured-data.hi.md rename to docs/tech-specs/hi/structured-data.hi.md diff --git a/docs/tech-specs/structured-diag-service.hi.md b/docs/tech-specs/hi/structured-diag-service.hi.md similarity index 100% rename from docs/tech-specs/structured-diag-service.hi.md rename to docs/tech-specs/hi/structured-diag-service.hi.md diff --git a/docs/tech-specs/tool-group.hi.md b/docs/tech-specs/hi/tool-group.hi.md similarity index 100% rename from docs/tech-specs/tool-group.hi.md rename to docs/tech-specs/hi/tool-group.hi.md diff --git a/docs/tech-specs/tool-services.hi.md b/docs/tech-specs/hi/tool-services.hi.md similarity index 100% rename from docs/tech-specs/tool-services.hi.md rename to docs/tech-specs/hi/tool-services.hi.md diff --git a/docs/tech-specs/universal-decoder.hi.md b/docs/tech-specs/hi/universal-decoder.hi.md similarity index 100% rename from docs/tech-specs/universal-decoder.hi.md rename to docs/tech-specs/hi/universal-decoder.hi.md diff --git a/docs/tech-specs/vector-store-lifecycle.hi.md b/docs/tech-specs/hi/vector-store-lifecycle.hi.md similarity index 100% rename from docs/tech-specs/vector-store-lifecycle.hi.md rename to docs/tech-specs/hi/vector-store-lifecycle.hi.md diff --git a/docs/tech-specs/__TEMPLATE.pt.md b/docs/tech-specs/pt/__TEMPLATE.pt.md similarity index 100% rename from docs/tech-specs/__TEMPLATE.pt.md rename to docs/tech-specs/pt/__TEMPLATE.pt.md diff --git a/docs/tech-specs/agent-explainability.pt.md b/docs/tech-specs/pt/agent-explainability.pt.md similarity index 100% rename from docs/tech-specs/agent-explainability.pt.md rename to docs/tech-specs/pt/agent-explainability.pt.md diff --git a/docs/tech-specs/architecture-principles.pt.md b/docs/tech-specs/pt/architecture-principles.pt.md similarity index 100% rename from docs/tech-specs/architecture-principles.pt.md rename to docs/tech-specs/pt/architecture-principles.pt.md diff --git a/docs/tech-specs/cassandra-consolidation.pt.md b/docs/tech-specs/pt/cassandra-consolidation.pt.md similarity index 100% rename from docs/tech-specs/cassandra-consolidation.pt.md rename to docs/tech-specs/pt/cassandra-consolidation.pt.md diff --git a/docs/tech-specs/cassandra-performance-refactor.pt.md b/docs/tech-specs/pt/cassandra-performance-refactor.pt.md similarity index 100% rename from docs/tech-specs/cassandra-performance-refactor.pt.md rename to docs/tech-specs/pt/cassandra-performance-refactor.pt.md diff --git a/docs/tech-specs/collection-management.pt.md b/docs/tech-specs/pt/collection-management.pt.md similarity index 100% rename from docs/tech-specs/collection-management.pt.md rename to docs/tech-specs/pt/collection-management.pt.md diff --git a/docs/tech-specs/document-embeddings-chunk-id.pt.md b/docs/tech-specs/pt/document-embeddings-chunk-id.pt.md similarity index 100% rename from docs/tech-specs/document-embeddings-chunk-id.pt.md rename to docs/tech-specs/pt/document-embeddings-chunk-id.pt.md diff --git a/docs/tech-specs/embeddings-batch-processing.pt.md b/docs/tech-specs/pt/embeddings-batch-processing.pt.md similarity index 100% rename from docs/tech-specs/embeddings-batch-processing.pt.md rename to docs/tech-specs/pt/embeddings-batch-processing.pt.md diff --git a/docs/tech-specs/entity-centric-graph.pt.md b/docs/tech-specs/pt/entity-centric-graph.pt.md similarity index 100% rename from docs/tech-specs/entity-centric-graph.pt.md rename to docs/tech-specs/pt/entity-centric-graph.pt.md diff --git a/docs/tech-specs/explainability-cli.pt.md b/docs/tech-specs/pt/explainability-cli.pt.md similarity index 100% rename from docs/tech-specs/explainability-cli.pt.md rename to docs/tech-specs/pt/explainability-cli.pt.md diff --git a/docs/tech-specs/extraction-flows.pt.md b/docs/tech-specs/pt/extraction-flows.pt.md similarity index 100% rename from docs/tech-specs/extraction-flows.pt.md rename to docs/tech-specs/pt/extraction-flows.pt.md diff --git a/docs/tech-specs/extraction-provenance-subgraph.pt.md b/docs/tech-specs/pt/extraction-provenance-subgraph.pt.md similarity index 100% rename from docs/tech-specs/extraction-provenance-subgraph.pt.md rename to docs/tech-specs/pt/extraction-provenance-subgraph.pt.md diff --git a/docs/tech-specs/extraction-time-provenance.pt.md b/docs/tech-specs/pt/extraction-time-provenance.pt.md similarity index 100% rename from docs/tech-specs/extraction-time-provenance.pt.md rename to docs/tech-specs/pt/extraction-time-provenance.pt.md diff --git a/docs/tech-specs/flow-class-definition.pt.md b/docs/tech-specs/pt/flow-class-definition.pt.md similarity index 100% rename from docs/tech-specs/flow-class-definition.pt.md rename to docs/tech-specs/pt/flow-class-definition.pt.md diff --git a/docs/tech-specs/flow-configurable-parameters.pt.md b/docs/tech-specs/pt/flow-configurable-parameters.pt.md similarity index 100% rename from docs/tech-specs/flow-configurable-parameters.pt.md rename to docs/tech-specs/pt/flow-configurable-parameters.pt.md diff --git a/docs/tech-specs/graph-contexts.pt.md b/docs/tech-specs/pt/graph-contexts.pt.md similarity index 100% rename from docs/tech-specs/graph-contexts.pt.md rename to docs/tech-specs/pt/graph-contexts.pt.md diff --git a/docs/tech-specs/graphql-query.pt.md b/docs/tech-specs/pt/graphql-query.pt.md similarity index 100% rename from docs/tech-specs/graphql-query.pt.md rename to docs/tech-specs/pt/graphql-query.pt.md diff --git a/docs/tech-specs/graphrag-performance-optimization.pt.md b/docs/tech-specs/pt/graphrag-performance-optimization.pt.md similarity index 100% rename from docs/tech-specs/graphrag-performance-optimization.pt.md rename to docs/tech-specs/pt/graphrag-performance-optimization.pt.md diff --git a/docs/tech-specs/import-export-graceful-shutdown.pt.md b/docs/tech-specs/pt/import-export-graceful-shutdown.pt.md similarity index 100% rename from docs/tech-specs/import-export-graceful-shutdown.pt.md rename to docs/tech-specs/pt/import-export-graceful-shutdown.pt.md diff --git a/docs/tech-specs/jsonl-prompt-output.pt.md b/docs/tech-specs/pt/jsonl-prompt-output.pt.md similarity index 100% rename from docs/tech-specs/jsonl-prompt-output.pt.md rename to docs/tech-specs/pt/jsonl-prompt-output.pt.md diff --git a/docs/tech-specs/large-document-loading.pt.md b/docs/tech-specs/pt/large-document-loading.pt.md similarity index 100% rename from docs/tech-specs/large-document-loading.pt.md rename to docs/tech-specs/pt/large-document-loading.pt.md diff --git a/docs/tech-specs/logging-strategy.pt.md b/docs/tech-specs/pt/logging-strategy.pt.md similarity index 100% rename from docs/tech-specs/logging-strategy.pt.md rename to docs/tech-specs/pt/logging-strategy.pt.md diff --git a/docs/tech-specs/mcp-tool-arguments.pt.md b/docs/tech-specs/pt/mcp-tool-arguments.pt.md similarity index 100% rename from docs/tech-specs/mcp-tool-arguments.pt.md rename to docs/tech-specs/pt/mcp-tool-arguments.pt.md diff --git a/docs/tech-specs/mcp-tool-bearer-token.pt.md b/docs/tech-specs/pt/mcp-tool-bearer-token.pt.md similarity index 100% rename from docs/tech-specs/mcp-tool-bearer-token.pt.md rename to docs/tech-specs/pt/mcp-tool-bearer-token.pt.md diff --git a/docs/tech-specs/minio-to-s3-migration.pt.md b/docs/tech-specs/pt/minio-to-s3-migration.pt.md similarity index 100% rename from docs/tech-specs/minio-to-s3-migration.pt.md rename to docs/tech-specs/pt/minio-to-s3-migration.pt.md diff --git a/docs/tech-specs/more-config-cli.pt.md b/docs/tech-specs/pt/more-config-cli.pt.md similarity index 100% rename from docs/tech-specs/more-config-cli.pt.md rename to docs/tech-specs/pt/more-config-cli.pt.md diff --git a/docs/tech-specs/multi-tenant-support.pt.md b/docs/tech-specs/pt/multi-tenant-support.pt.md similarity index 100% rename from docs/tech-specs/multi-tenant-support.pt.md rename to docs/tech-specs/pt/multi-tenant-support.pt.md diff --git a/docs/tech-specs/neo4j-user-collection-isolation.pt.md b/docs/tech-specs/pt/neo4j-user-collection-isolation.pt.md similarity index 100% rename from docs/tech-specs/neo4j-user-collection-isolation.pt.md rename to docs/tech-specs/pt/neo4j-user-collection-isolation.pt.md diff --git a/docs/tech-specs/ontology-extract-phase-2.pt.md b/docs/tech-specs/pt/ontology-extract-phase-2.pt.md similarity index 100% rename from docs/tech-specs/ontology-extract-phase-2.pt.md rename to docs/tech-specs/pt/ontology-extract-phase-2.pt.md diff --git a/docs/tech-specs/ontology.pt.md b/docs/tech-specs/pt/ontology.pt.md similarity index 100% rename from docs/tech-specs/ontology.pt.md rename to docs/tech-specs/pt/ontology.pt.md diff --git a/docs/tech-specs/ontorag.pt.md b/docs/tech-specs/pt/ontorag.pt.md similarity index 100% rename from docs/tech-specs/ontorag.pt.md rename to docs/tech-specs/pt/ontorag.pt.md diff --git a/docs/tech-specs/openapi-spec.pt.md b/docs/tech-specs/pt/openapi-spec.pt.md similarity index 100% rename from docs/tech-specs/openapi-spec.pt.md rename to docs/tech-specs/pt/openapi-spec.pt.md diff --git a/docs/tech-specs/pubsub.pt.md b/docs/tech-specs/pt/pubsub.pt.md similarity index 100% rename from docs/tech-specs/pubsub.pt.md rename to docs/tech-specs/pt/pubsub.pt.md diff --git a/docs/tech-specs/python-api-refactor.pt.md b/docs/tech-specs/pt/python-api-refactor.pt.md similarity index 100% rename from docs/tech-specs/python-api-refactor.pt.md rename to docs/tech-specs/pt/python-api-refactor.pt.md diff --git a/docs/tech-specs/query-time-explainability.pt.md b/docs/tech-specs/pt/query-time-explainability.pt.md similarity index 100% rename from docs/tech-specs/query-time-explainability.pt.md rename to docs/tech-specs/pt/query-time-explainability.pt.md diff --git a/docs/tech-specs/rag-streaming-support.pt.md b/docs/tech-specs/pt/rag-streaming-support.pt.md similarity index 100% rename from docs/tech-specs/rag-streaming-support.pt.md rename to docs/tech-specs/pt/rag-streaming-support.pt.md diff --git a/docs/tech-specs/schema-refactoring-proposal.pt.md b/docs/tech-specs/pt/schema-refactoring-proposal.pt.md similarity index 100% rename from docs/tech-specs/schema-refactoring-proposal.pt.md rename to docs/tech-specs/pt/schema-refactoring-proposal.pt.md diff --git a/docs/tech-specs/streaming-llm-responses.pt.md b/docs/tech-specs/pt/streaming-llm-responses.pt.md similarity index 100% rename from docs/tech-specs/streaming-llm-responses.pt.md rename to docs/tech-specs/pt/streaming-llm-responses.pt.md diff --git a/docs/tech-specs/structured-data-2.pt.md b/docs/tech-specs/pt/structured-data-2.pt.md similarity index 100% rename from docs/tech-specs/structured-data-2.pt.md rename to docs/tech-specs/pt/structured-data-2.pt.md diff --git a/docs/tech-specs/structured-data-descriptor.pt.md b/docs/tech-specs/pt/structured-data-descriptor.pt.md similarity index 100% rename from docs/tech-specs/structured-data-descriptor.pt.md rename to docs/tech-specs/pt/structured-data-descriptor.pt.md diff --git a/docs/tech-specs/structured-data-schemas.pt.md b/docs/tech-specs/pt/structured-data-schemas.pt.md similarity index 100% rename from docs/tech-specs/structured-data-schemas.pt.md rename to docs/tech-specs/pt/structured-data-schemas.pt.md diff --git a/docs/tech-specs/structured-data.pt.md b/docs/tech-specs/pt/structured-data.pt.md similarity index 100% rename from docs/tech-specs/structured-data.pt.md rename to docs/tech-specs/pt/structured-data.pt.md diff --git a/docs/tech-specs/structured-diag-service.pt.md b/docs/tech-specs/pt/structured-diag-service.pt.md similarity index 100% rename from docs/tech-specs/structured-diag-service.pt.md rename to docs/tech-specs/pt/structured-diag-service.pt.md diff --git a/docs/tech-specs/tool-group.pt.md b/docs/tech-specs/pt/tool-group.pt.md similarity index 100% rename from docs/tech-specs/tool-group.pt.md rename to docs/tech-specs/pt/tool-group.pt.md diff --git a/docs/tech-specs/tool-services.pt.md b/docs/tech-specs/pt/tool-services.pt.md similarity index 100% rename from docs/tech-specs/tool-services.pt.md rename to docs/tech-specs/pt/tool-services.pt.md diff --git a/docs/tech-specs/universal-decoder.pt.md b/docs/tech-specs/pt/universal-decoder.pt.md similarity index 100% rename from docs/tech-specs/universal-decoder.pt.md rename to docs/tech-specs/pt/universal-decoder.pt.md diff --git a/docs/tech-specs/vector-store-lifecycle.pt.md b/docs/tech-specs/pt/vector-store-lifecycle.pt.md similarity index 100% rename from docs/tech-specs/vector-store-lifecycle.pt.md rename to docs/tech-specs/pt/vector-store-lifecycle.pt.md diff --git a/docs/tech-specs/__TEMPLATE.ru.md b/docs/tech-specs/ru/__TEMPLATE.ru.md similarity index 100% rename from docs/tech-specs/__TEMPLATE.ru.md rename to docs/tech-specs/ru/__TEMPLATE.ru.md diff --git a/docs/tech-specs/agent-explainability.ru.md b/docs/tech-specs/ru/agent-explainability.ru.md similarity index 100% rename from docs/tech-specs/agent-explainability.ru.md rename to docs/tech-specs/ru/agent-explainability.ru.md diff --git a/docs/tech-specs/architecture-principles.ru.md b/docs/tech-specs/ru/architecture-principles.ru.md similarity index 100% rename from docs/tech-specs/architecture-principles.ru.md rename to docs/tech-specs/ru/architecture-principles.ru.md diff --git a/docs/tech-specs/cassandra-consolidation.ru.md b/docs/tech-specs/ru/cassandra-consolidation.ru.md similarity index 100% rename from docs/tech-specs/cassandra-consolidation.ru.md rename to docs/tech-specs/ru/cassandra-consolidation.ru.md diff --git a/docs/tech-specs/cassandra-performance-refactor.ru.md b/docs/tech-specs/ru/cassandra-performance-refactor.ru.md similarity index 100% rename from docs/tech-specs/cassandra-performance-refactor.ru.md rename to docs/tech-specs/ru/cassandra-performance-refactor.ru.md diff --git a/docs/tech-specs/collection-management.ru.md b/docs/tech-specs/ru/collection-management.ru.md similarity index 100% rename from docs/tech-specs/collection-management.ru.md rename to docs/tech-specs/ru/collection-management.ru.md diff --git a/docs/tech-specs/document-embeddings-chunk-id.ru.md b/docs/tech-specs/ru/document-embeddings-chunk-id.ru.md similarity index 100% rename from docs/tech-specs/document-embeddings-chunk-id.ru.md rename to docs/tech-specs/ru/document-embeddings-chunk-id.ru.md diff --git a/docs/tech-specs/embeddings-batch-processing.ru.md b/docs/tech-specs/ru/embeddings-batch-processing.ru.md similarity index 100% rename from docs/tech-specs/embeddings-batch-processing.ru.md rename to docs/tech-specs/ru/embeddings-batch-processing.ru.md diff --git a/docs/tech-specs/entity-centric-graph.ru.md b/docs/tech-specs/ru/entity-centric-graph.ru.md similarity index 100% rename from docs/tech-specs/entity-centric-graph.ru.md rename to docs/tech-specs/ru/entity-centric-graph.ru.md diff --git a/docs/tech-specs/explainability-cli.ru.md b/docs/tech-specs/ru/explainability-cli.ru.md similarity index 100% rename from docs/tech-specs/explainability-cli.ru.md rename to docs/tech-specs/ru/explainability-cli.ru.md diff --git a/docs/tech-specs/extraction-flows.ru.md b/docs/tech-specs/ru/extraction-flows.ru.md similarity index 100% rename from docs/tech-specs/extraction-flows.ru.md rename to docs/tech-specs/ru/extraction-flows.ru.md diff --git a/docs/tech-specs/extraction-provenance-subgraph.ru.md b/docs/tech-specs/ru/extraction-provenance-subgraph.ru.md similarity index 100% rename from docs/tech-specs/extraction-provenance-subgraph.ru.md rename to docs/tech-specs/ru/extraction-provenance-subgraph.ru.md diff --git a/docs/tech-specs/extraction-time-provenance.ru.md b/docs/tech-specs/ru/extraction-time-provenance.ru.md similarity index 100% rename from docs/tech-specs/extraction-time-provenance.ru.md rename to docs/tech-specs/ru/extraction-time-provenance.ru.md diff --git a/docs/tech-specs/flow-class-definition.ru.md b/docs/tech-specs/ru/flow-class-definition.ru.md similarity index 100% rename from docs/tech-specs/flow-class-definition.ru.md rename to docs/tech-specs/ru/flow-class-definition.ru.md diff --git a/docs/tech-specs/flow-configurable-parameters.ru.md b/docs/tech-specs/ru/flow-configurable-parameters.ru.md similarity index 100% rename from docs/tech-specs/flow-configurable-parameters.ru.md rename to docs/tech-specs/ru/flow-configurable-parameters.ru.md diff --git a/docs/tech-specs/graph-contexts.ru.md b/docs/tech-specs/ru/graph-contexts.ru.md similarity index 100% rename from docs/tech-specs/graph-contexts.ru.md rename to docs/tech-specs/ru/graph-contexts.ru.md diff --git a/docs/tech-specs/graphql-query.ru.md b/docs/tech-specs/ru/graphql-query.ru.md similarity index 100% rename from docs/tech-specs/graphql-query.ru.md rename to docs/tech-specs/ru/graphql-query.ru.md diff --git a/docs/tech-specs/graphrag-performance-optimization.ru.md b/docs/tech-specs/ru/graphrag-performance-optimization.ru.md similarity index 100% rename from docs/tech-specs/graphrag-performance-optimization.ru.md rename to docs/tech-specs/ru/graphrag-performance-optimization.ru.md diff --git a/docs/tech-specs/import-export-graceful-shutdown.ru.md b/docs/tech-specs/ru/import-export-graceful-shutdown.ru.md similarity index 100% rename from docs/tech-specs/import-export-graceful-shutdown.ru.md rename to docs/tech-specs/ru/import-export-graceful-shutdown.ru.md diff --git a/docs/tech-specs/jsonl-prompt-output.ru.md b/docs/tech-specs/ru/jsonl-prompt-output.ru.md similarity index 100% rename from docs/tech-specs/jsonl-prompt-output.ru.md rename to docs/tech-specs/ru/jsonl-prompt-output.ru.md diff --git a/docs/tech-specs/large-document-loading.ru.md b/docs/tech-specs/ru/large-document-loading.ru.md similarity index 100% rename from docs/tech-specs/large-document-loading.ru.md rename to docs/tech-specs/ru/large-document-loading.ru.md diff --git a/docs/tech-specs/logging-strategy.ru.md b/docs/tech-specs/ru/logging-strategy.ru.md similarity index 100% rename from docs/tech-specs/logging-strategy.ru.md rename to docs/tech-specs/ru/logging-strategy.ru.md diff --git a/docs/tech-specs/mcp-tool-arguments.ru.md b/docs/tech-specs/ru/mcp-tool-arguments.ru.md similarity index 100% rename from docs/tech-specs/mcp-tool-arguments.ru.md rename to docs/tech-specs/ru/mcp-tool-arguments.ru.md diff --git a/docs/tech-specs/mcp-tool-bearer-token.ru.md b/docs/tech-specs/ru/mcp-tool-bearer-token.ru.md similarity index 100% rename from docs/tech-specs/mcp-tool-bearer-token.ru.md rename to docs/tech-specs/ru/mcp-tool-bearer-token.ru.md diff --git a/docs/tech-specs/minio-to-s3-migration.ru.md b/docs/tech-specs/ru/minio-to-s3-migration.ru.md similarity index 100% rename from docs/tech-specs/minio-to-s3-migration.ru.md rename to docs/tech-specs/ru/minio-to-s3-migration.ru.md diff --git a/docs/tech-specs/more-config-cli.ru.md b/docs/tech-specs/ru/more-config-cli.ru.md similarity index 100% rename from docs/tech-specs/more-config-cli.ru.md rename to docs/tech-specs/ru/more-config-cli.ru.md diff --git a/docs/tech-specs/multi-tenant-support.ru.md b/docs/tech-specs/ru/multi-tenant-support.ru.md similarity index 100% rename from docs/tech-specs/multi-tenant-support.ru.md rename to docs/tech-specs/ru/multi-tenant-support.ru.md diff --git a/docs/tech-specs/neo4j-user-collection-isolation.ru.md b/docs/tech-specs/ru/neo4j-user-collection-isolation.ru.md similarity index 100% rename from docs/tech-specs/neo4j-user-collection-isolation.ru.md rename to docs/tech-specs/ru/neo4j-user-collection-isolation.ru.md diff --git a/docs/tech-specs/ontology-extract-phase-2.ru.md b/docs/tech-specs/ru/ontology-extract-phase-2.ru.md similarity index 100% rename from docs/tech-specs/ontology-extract-phase-2.ru.md rename to docs/tech-specs/ru/ontology-extract-phase-2.ru.md diff --git a/docs/tech-specs/ontology.ru.md b/docs/tech-specs/ru/ontology.ru.md similarity index 100% rename from docs/tech-specs/ontology.ru.md rename to docs/tech-specs/ru/ontology.ru.md diff --git a/docs/tech-specs/ontorag.ru.md b/docs/tech-specs/ru/ontorag.ru.md similarity index 100% rename from docs/tech-specs/ontorag.ru.md rename to docs/tech-specs/ru/ontorag.ru.md diff --git a/docs/tech-specs/openapi-spec.ru.md b/docs/tech-specs/ru/openapi-spec.ru.md similarity index 100% rename from docs/tech-specs/openapi-spec.ru.md rename to docs/tech-specs/ru/openapi-spec.ru.md diff --git a/docs/tech-specs/pubsub.ru.md b/docs/tech-specs/ru/pubsub.ru.md similarity index 100% rename from docs/tech-specs/pubsub.ru.md rename to docs/tech-specs/ru/pubsub.ru.md diff --git a/docs/tech-specs/python-api-refactor.ru.md b/docs/tech-specs/ru/python-api-refactor.ru.md similarity index 100% rename from docs/tech-specs/python-api-refactor.ru.md rename to docs/tech-specs/ru/python-api-refactor.ru.md diff --git a/docs/tech-specs/query-time-explainability.ru.md b/docs/tech-specs/ru/query-time-explainability.ru.md similarity index 100% rename from docs/tech-specs/query-time-explainability.ru.md rename to docs/tech-specs/ru/query-time-explainability.ru.md diff --git a/docs/tech-specs/rag-streaming-support.ru.md b/docs/tech-specs/ru/rag-streaming-support.ru.md similarity index 100% rename from docs/tech-specs/rag-streaming-support.ru.md rename to docs/tech-specs/ru/rag-streaming-support.ru.md diff --git a/docs/tech-specs/schema-refactoring-proposal.ru.md b/docs/tech-specs/ru/schema-refactoring-proposal.ru.md similarity index 100% rename from docs/tech-specs/schema-refactoring-proposal.ru.md rename to docs/tech-specs/ru/schema-refactoring-proposal.ru.md diff --git a/docs/tech-specs/streaming-llm-responses.ru.md b/docs/tech-specs/ru/streaming-llm-responses.ru.md similarity index 100% rename from docs/tech-specs/streaming-llm-responses.ru.md rename to docs/tech-specs/ru/streaming-llm-responses.ru.md diff --git a/docs/tech-specs/structured-data-2.ru.md b/docs/tech-specs/ru/structured-data-2.ru.md similarity index 100% rename from docs/tech-specs/structured-data-2.ru.md rename to docs/tech-specs/ru/structured-data-2.ru.md diff --git a/docs/tech-specs/structured-data-descriptor.ru.md b/docs/tech-specs/ru/structured-data-descriptor.ru.md similarity index 100% rename from docs/tech-specs/structured-data-descriptor.ru.md rename to docs/tech-specs/ru/structured-data-descriptor.ru.md diff --git a/docs/tech-specs/structured-data-schemas.ru.md b/docs/tech-specs/ru/structured-data-schemas.ru.md similarity index 100% rename from docs/tech-specs/structured-data-schemas.ru.md rename to docs/tech-specs/ru/structured-data-schemas.ru.md diff --git a/docs/tech-specs/structured-data.ru.md b/docs/tech-specs/ru/structured-data.ru.md similarity index 100% rename from docs/tech-specs/structured-data.ru.md rename to docs/tech-specs/ru/structured-data.ru.md diff --git a/docs/tech-specs/structured-diag-service.ru.md b/docs/tech-specs/ru/structured-diag-service.ru.md similarity index 100% rename from docs/tech-specs/structured-diag-service.ru.md rename to docs/tech-specs/ru/structured-diag-service.ru.md diff --git a/docs/tech-specs/tool-group.ru.md b/docs/tech-specs/ru/tool-group.ru.md similarity index 100% rename from docs/tech-specs/tool-group.ru.md rename to docs/tech-specs/ru/tool-group.ru.md diff --git a/docs/tech-specs/tool-services.ru.md b/docs/tech-specs/ru/tool-services.ru.md similarity index 100% rename from docs/tech-specs/tool-services.ru.md rename to docs/tech-specs/ru/tool-services.ru.md diff --git a/docs/tech-specs/universal-decoder.ru.md b/docs/tech-specs/ru/universal-decoder.ru.md similarity index 100% rename from docs/tech-specs/universal-decoder.ru.md rename to docs/tech-specs/ru/universal-decoder.ru.md diff --git a/docs/tech-specs/vector-store-lifecycle.ru.md b/docs/tech-specs/ru/vector-store-lifecycle.ru.md similarity index 100% rename from docs/tech-specs/vector-store-lifecycle.ru.md rename to docs/tech-specs/ru/vector-store-lifecycle.ru.md diff --git a/docs/tech-specs/__TEMPLATE.sw.md b/docs/tech-specs/sw/__TEMPLATE.sw.md similarity index 100% rename from docs/tech-specs/__TEMPLATE.sw.md rename to docs/tech-specs/sw/__TEMPLATE.sw.md diff --git a/docs/tech-specs/agent-explainability.sw.md b/docs/tech-specs/sw/agent-explainability.sw.md similarity index 100% rename from docs/tech-specs/agent-explainability.sw.md rename to docs/tech-specs/sw/agent-explainability.sw.md diff --git a/docs/tech-specs/architecture-principles.sw.md b/docs/tech-specs/sw/architecture-principles.sw.md similarity index 100% rename from docs/tech-specs/architecture-principles.sw.md rename to docs/tech-specs/sw/architecture-principles.sw.md diff --git a/docs/tech-specs/cassandra-consolidation.sw.md b/docs/tech-specs/sw/cassandra-consolidation.sw.md similarity index 100% rename from docs/tech-specs/cassandra-consolidation.sw.md rename to docs/tech-specs/sw/cassandra-consolidation.sw.md diff --git a/docs/tech-specs/cassandra-performance-refactor.sw.md b/docs/tech-specs/sw/cassandra-performance-refactor.sw.md similarity index 100% rename from docs/tech-specs/cassandra-performance-refactor.sw.md rename to docs/tech-specs/sw/cassandra-performance-refactor.sw.md diff --git a/docs/tech-specs/collection-management.sw.md b/docs/tech-specs/sw/collection-management.sw.md similarity index 100% rename from docs/tech-specs/collection-management.sw.md rename to docs/tech-specs/sw/collection-management.sw.md diff --git a/docs/tech-specs/document-embeddings-chunk-id.sw.md b/docs/tech-specs/sw/document-embeddings-chunk-id.sw.md similarity index 100% rename from docs/tech-specs/document-embeddings-chunk-id.sw.md rename to docs/tech-specs/sw/document-embeddings-chunk-id.sw.md diff --git a/docs/tech-specs/embeddings-batch-processing.sw.md b/docs/tech-specs/sw/embeddings-batch-processing.sw.md similarity index 100% rename from docs/tech-specs/embeddings-batch-processing.sw.md rename to docs/tech-specs/sw/embeddings-batch-processing.sw.md diff --git a/docs/tech-specs/entity-centric-graph.sw.md b/docs/tech-specs/sw/entity-centric-graph.sw.md similarity index 100% rename from docs/tech-specs/entity-centric-graph.sw.md rename to docs/tech-specs/sw/entity-centric-graph.sw.md diff --git a/docs/tech-specs/explainability-cli.sw.md b/docs/tech-specs/sw/explainability-cli.sw.md similarity index 100% rename from docs/tech-specs/explainability-cli.sw.md rename to docs/tech-specs/sw/explainability-cli.sw.md diff --git a/docs/tech-specs/extraction-flows.sw.md b/docs/tech-specs/sw/extraction-flows.sw.md similarity index 100% rename from docs/tech-specs/extraction-flows.sw.md rename to docs/tech-specs/sw/extraction-flows.sw.md diff --git a/docs/tech-specs/extraction-provenance-subgraph.sw.md b/docs/tech-specs/sw/extraction-provenance-subgraph.sw.md similarity index 100% rename from docs/tech-specs/extraction-provenance-subgraph.sw.md rename to docs/tech-specs/sw/extraction-provenance-subgraph.sw.md diff --git a/docs/tech-specs/extraction-time-provenance.sw.md b/docs/tech-specs/sw/extraction-time-provenance.sw.md similarity index 100% rename from docs/tech-specs/extraction-time-provenance.sw.md rename to docs/tech-specs/sw/extraction-time-provenance.sw.md diff --git a/docs/tech-specs/flow-class-definition.sw.md b/docs/tech-specs/sw/flow-class-definition.sw.md similarity index 100% rename from docs/tech-specs/flow-class-definition.sw.md rename to docs/tech-specs/sw/flow-class-definition.sw.md diff --git a/docs/tech-specs/flow-configurable-parameters.sw.md b/docs/tech-specs/sw/flow-configurable-parameters.sw.md similarity index 100% rename from docs/tech-specs/flow-configurable-parameters.sw.md rename to docs/tech-specs/sw/flow-configurable-parameters.sw.md diff --git a/docs/tech-specs/graph-contexts.sw.md b/docs/tech-specs/sw/graph-contexts.sw.md similarity index 100% rename from docs/tech-specs/graph-contexts.sw.md rename to docs/tech-specs/sw/graph-contexts.sw.md diff --git a/docs/tech-specs/graphql-query.sw.md b/docs/tech-specs/sw/graphql-query.sw.md similarity index 100% rename from docs/tech-specs/graphql-query.sw.md rename to docs/tech-specs/sw/graphql-query.sw.md diff --git a/docs/tech-specs/graphrag-performance-optimization.sw.md b/docs/tech-specs/sw/graphrag-performance-optimization.sw.md similarity index 100% rename from docs/tech-specs/graphrag-performance-optimization.sw.md rename to docs/tech-specs/sw/graphrag-performance-optimization.sw.md diff --git a/docs/tech-specs/import-export-graceful-shutdown.sw.md b/docs/tech-specs/sw/import-export-graceful-shutdown.sw.md similarity index 100% rename from docs/tech-specs/import-export-graceful-shutdown.sw.md rename to docs/tech-specs/sw/import-export-graceful-shutdown.sw.md diff --git a/docs/tech-specs/jsonl-prompt-output.sw.md b/docs/tech-specs/sw/jsonl-prompt-output.sw.md similarity index 100% rename from docs/tech-specs/jsonl-prompt-output.sw.md rename to docs/tech-specs/sw/jsonl-prompt-output.sw.md diff --git a/docs/tech-specs/large-document-loading.sw.md b/docs/tech-specs/sw/large-document-loading.sw.md similarity index 100% rename from docs/tech-specs/large-document-loading.sw.md rename to docs/tech-specs/sw/large-document-loading.sw.md diff --git a/docs/tech-specs/logging-strategy.sw.md b/docs/tech-specs/sw/logging-strategy.sw.md similarity index 100% rename from docs/tech-specs/logging-strategy.sw.md rename to docs/tech-specs/sw/logging-strategy.sw.md diff --git a/docs/tech-specs/mcp-tool-arguments.sw.md b/docs/tech-specs/sw/mcp-tool-arguments.sw.md similarity index 100% rename from docs/tech-specs/mcp-tool-arguments.sw.md rename to docs/tech-specs/sw/mcp-tool-arguments.sw.md diff --git a/docs/tech-specs/mcp-tool-bearer-token.sw.md b/docs/tech-specs/sw/mcp-tool-bearer-token.sw.md similarity index 100% rename from docs/tech-specs/mcp-tool-bearer-token.sw.md rename to docs/tech-specs/sw/mcp-tool-bearer-token.sw.md diff --git a/docs/tech-specs/minio-to-s3-migration.sw.md b/docs/tech-specs/sw/minio-to-s3-migration.sw.md similarity index 100% rename from docs/tech-specs/minio-to-s3-migration.sw.md rename to docs/tech-specs/sw/minio-to-s3-migration.sw.md diff --git a/docs/tech-specs/more-config-cli.sw.md b/docs/tech-specs/sw/more-config-cli.sw.md similarity index 100% rename from docs/tech-specs/more-config-cli.sw.md rename to docs/tech-specs/sw/more-config-cli.sw.md diff --git a/docs/tech-specs/multi-tenant-support.sw.md b/docs/tech-specs/sw/multi-tenant-support.sw.md similarity index 100% rename from docs/tech-specs/multi-tenant-support.sw.md rename to docs/tech-specs/sw/multi-tenant-support.sw.md diff --git a/docs/tech-specs/neo4j-user-collection-isolation.sw.md b/docs/tech-specs/sw/neo4j-user-collection-isolation.sw.md similarity index 100% rename from docs/tech-specs/neo4j-user-collection-isolation.sw.md rename to docs/tech-specs/sw/neo4j-user-collection-isolation.sw.md diff --git a/docs/tech-specs/ontology-extract-phase-2.sw.md b/docs/tech-specs/sw/ontology-extract-phase-2.sw.md similarity index 100% rename from docs/tech-specs/ontology-extract-phase-2.sw.md rename to docs/tech-specs/sw/ontology-extract-phase-2.sw.md diff --git a/docs/tech-specs/ontology.sw.md b/docs/tech-specs/sw/ontology.sw.md similarity index 100% rename from docs/tech-specs/ontology.sw.md rename to docs/tech-specs/sw/ontology.sw.md diff --git a/docs/tech-specs/ontorag.sw.md b/docs/tech-specs/sw/ontorag.sw.md similarity index 100% rename from docs/tech-specs/ontorag.sw.md rename to docs/tech-specs/sw/ontorag.sw.md diff --git a/docs/tech-specs/openapi-spec.sw.md b/docs/tech-specs/sw/openapi-spec.sw.md similarity index 100% rename from docs/tech-specs/openapi-spec.sw.md rename to docs/tech-specs/sw/openapi-spec.sw.md diff --git a/docs/tech-specs/pubsub.sw.md b/docs/tech-specs/sw/pubsub.sw.md similarity index 100% rename from docs/tech-specs/pubsub.sw.md rename to docs/tech-specs/sw/pubsub.sw.md diff --git a/docs/tech-specs/python-api-refactor.sw.md b/docs/tech-specs/sw/python-api-refactor.sw.md similarity index 100% rename from docs/tech-specs/python-api-refactor.sw.md rename to docs/tech-specs/sw/python-api-refactor.sw.md diff --git a/docs/tech-specs/query-time-explainability.sw.md b/docs/tech-specs/sw/query-time-explainability.sw.md similarity index 100% rename from docs/tech-specs/query-time-explainability.sw.md rename to docs/tech-specs/sw/query-time-explainability.sw.md diff --git a/docs/tech-specs/rag-streaming-support.sw.md b/docs/tech-specs/sw/rag-streaming-support.sw.md similarity index 100% rename from docs/tech-specs/rag-streaming-support.sw.md rename to docs/tech-specs/sw/rag-streaming-support.sw.md diff --git a/docs/tech-specs/schema-refactoring-proposal.sw.md b/docs/tech-specs/sw/schema-refactoring-proposal.sw.md similarity index 100% rename from docs/tech-specs/schema-refactoring-proposal.sw.md rename to docs/tech-specs/sw/schema-refactoring-proposal.sw.md diff --git a/docs/tech-specs/streaming-llm-responses.sw.md b/docs/tech-specs/sw/streaming-llm-responses.sw.md similarity index 100% rename from docs/tech-specs/streaming-llm-responses.sw.md rename to docs/tech-specs/sw/streaming-llm-responses.sw.md diff --git a/docs/tech-specs/structured-data-2.sw.md b/docs/tech-specs/sw/structured-data-2.sw.md similarity index 100% rename from docs/tech-specs/structured-data-2.sw.md rename to docs/tech-specs/sw/structured-data-2.sw.md diff --git a/docs/tech-specs/structured-data-descriptor.sw.md b/docs/tech-specs/sw/structured-data-descriptor.sw.md similarity index 100% rename from docs/tech-specs/structured-data-descriptor.sw.md rename to docs/tech-specs/sw/structured-data-descriptor.sw.md diff --git a/docs/tech-specs/structured-data-schemas.sw.md b/docs/tech-specs/sw/structured-data-schemas.sw.md similarity index 100% rename from docs/tech-specs/structured-data-schemas.sw.md rename to docs/tech-specs/sw/structured-data-schemas.sw.md diff --git a/docs/tech-specs/structured-data.sw.md b/docs/tech-specs/sw/structured-data.sw.md similarity index 100% rename from docs/tech-specs/structured-data.sw.md rename to docs/tech-specs/sw/structured-data.sw.md diff --git a/docs/tech-specs/structured-diag-service.sw.md b/docs/tech-specs/sw/structured-diag-service.sw.md similarity index 100% rename from docs/tech-specs/structured-diag-service.sw.md rename to docs/tech-specs/sw/structured-diag-service.sw.md diff --git a/docs/tech-specs/tool-group.sw.md b/docs/tech-specs/sw/tool-group.sw.md similarity index 100% rename from docs/tech-specs/tool-group.sw.md rename to docs/tech-specs/sw/tool-group.sw.md diff --git a/docs/tech-specs/tool-services.sw.md b/docs/tech-specs/sw/tool-services.sw.md similarity index 100% rename from docs/tech-specs/tool-services.sw.md rename to docs/tech-specs/sw/tool-services.sw.md diff --git a/docs/tech-specs/universal-decoder.sw.md b/docs/tech-specs/sw/universal-decoder.sw.md similarity index 100% rename from docs/tech-specs/universal-decoder.sw.md rename to docs/tech-specs/sw/universal-decoder.sw.md diff --git a/docs/tech-specs/vector-store-lifecycle.sw.md b/docs/tech-specs/sw/vector-store-lifecycle.sw.md similarity index 100% rename from docs/tech-specs/vector-store-lifecycle.sw.md rename to docs/tech-specs/sw/vector-store-lifecycle.sw.md diff --git a/docs/tech-specs/__TEMPLATE.tr.md b/docs/tech-specs/tr/__TEMPLATE.tr.md similarity index 100% rename from docs/tech-specs/__TEMPLATE.tr.md rename to docs/tech-specs/tr/__TEMPLATE.tr.md diff --git a/docs/tech-specs/agent-explainability.tr.md b/docs/tech-specs/tr/agent-explainability.tr.md similarity index 100% rename from docs/tech-specs/agent-explainability.tr.md rename to docs/tech-specs/tr/agent-explainability.tr.md diff --git a/docs/tech-specs/architecture-principles.tr.md b/docs/tech-specs/tr/architecture-principles.tr.md similarity index 100% rename from docs/tech-specs/architecture-principles.tr.md rename to docs/tech-specs/tr/architecture-principles.tr.md diff --git a/docs/tech-specs/cassandra-consolidation.tr.md b/docs/tech-specs/tr/cassandra-consolidation.tr.md similarity index 100% rename from docs/tech-specs/cassandra-consolidation.tr.md rename to docs/tech-specs/tr/cassandra-consolidation.tr.md diff --git a/docs/tech-specs/cassandra-performance-refactor.tr.md b/docs/tech-specs/tr/cassandra-performance-refactor.tr.md similarity index 100% rename from docs/tech-specs/cassandra-performance-refactor.tr.md rename to docs/tech-specs/tr/cassandra-performance-refactor.tr.md diff --git a/docs/tech-specs/collection-management.tr.md b/docs/tech-specs/tr/collection-management.tr.md similarity index 100% rename from docs/tech-specs/collection-management.tr.md rename to docs/tech-specs/tr/collection-management.tr.md diff --git a/docs/tech-specs/document-embeddings-chunk-id.tr.md b/docs/tech-specs/tr/document-embeddings-chunk-id.tr.md similarity index 100% rename from docs/tech-specs/document-embeddings-chunk-id.tr.md rename to docs/tech-specs/tr/document-embeddings-chunk-id.tr.md diff --git a/docs/tech-specs/embeddings-batch-processing.tr.md b/docs/tech-specs/tr/embeddings-batch-processing.tr.md similarity index 100% rename from docs/tech-specs/embeddings-batch-processing.tr.md rename to docs/tech-specs/tr/embeddings-batch-processing.tr.md diff --git a/docs/tech-specs/entity-centric-graph.tr.md b/docs/tech-specs/tr/entity-centric-graph.tr.md similarity index 100% rename from docs/tech-specs/entity-centric-graph.tr.md rename to docs/tech-specs/tr/entity-centric-graph.tr.md diff --git a/docs/tech-specs/explainability-cli.tr.md b/docs/tech-specs/tr/explainability-cli.tr.md similarity index 100% rename from docs/tech-specs/explainability-cli.tr.md rename to docs/tech-specs/tr/explainability-cli.tr.md diff --git a/docs/tech-specs/extraction-flows.tr.md b/docs/tech-specs/tr/extraction-flows.tr.md similarity index 100% rename from docs/tech-specs/extraction-flows.tr.md rename to docs/tech-specs/tr/extraction-flows.tr.md diff --git a/docs/tech-specs/extraction-provenance-subgraph.tr.md b/docs/tech-specs/tr/extraction-provenance-subgraph.tr.md similarity index 100% rename from docs/tech-specs/extraction-provenance-subgraph.tr.md rename to docs/tech-specs/tr/extraction-provenance-subgraph.tr.md diff --git a/docs/tech-specs/extraction-time-provenance.tr.md b/docs/tech-specs/tr/extraction-time-provenance.tr.md similarity index 100% rename from docs/tech-specs/extraction-time-provenance.tr.md rename to docs/tech-specs/tr/extraction-time-provenance.tr.md diff --git a/docs/tech-specs/flow-class-definition.tr.md b/docs/tech-specs/tr/flow-class-definition.tr.md similarity index 100% rename from docs/tech-specs/flow-class-definition.tr.md rename to docs/tech-specs/tr/flow-class-definition.tr.md diff --git a/docs/tech-specs/flow-configurable-parameters.tr.md b/docs/tech-specs/tr/flow-configurable-parameters.tr.md similarity index 100% rename from docs/tech-specs/flow-configurable-parameters.tr.md rename to docs/tech-specs/tr/flow-configurable-parameters.tr.md diff --git a/docs/tech-specs/graph-contexts.tr.md b/docs/tech-specs/tr/graph-contexts.tr.md similarity index 100% rename from docs/tech-specs/graph-contexts.tr.md rename to docs/tech-specs/tr/graph-contexts.tr.md diff --git a/docs/tech-specs/graphql-query.tr.md b/docs/tech-specs/tr/graphql-query.tr.md similarity index 100% rename from docs/tech-specs/graphql-query.tr.md rename to docs/tech-specs/tr/graphql-query.tr.md diff --git a/docs/tech-specs/graphrag-performance-optimization.tr.md b/docs/tech-specs/tr/graphrag-performance-optimization.tr.md similarity index 100% rename from docs/tech-specs/graphrag-performance-optimization.tr.md rename to docs/tech-specs/tr/graphrag-performance-optimization.tr.md diff --git a/docs/tech-specs/import-export-graceful-shutdown.tr.md b/docs/tech-specs/tr/import-export-graceful-shutdown.tr.md similarity index 100% rename from docs/tech-specs/import-export-graceful-shutdown.tr.md rename to docs/tech-specs/tr/import-export-graceful-shutdown.tr.md diff --git a/docs/tech-specs/jsonl-prompt-output.tr.md b/docs/tech-specs/tr/jsonl-prompt-output.tr.md similarity index 100% rename from docs/tech-specs/jsonl-prompt-output.tr.md rename to docs/tech-specs/tr/jsonl-prompt-output.tr.md diff --git a/docs/tech-specs/large-document-loading.tr.md b/docs/tech-specs/tr/large-document-loading.tr.md similarity index 100% rename from docs/tech-specs/large-document-loading.tr.md rename to docs/tech-specs/tr/large-document-loading.tr.md diff --git a/docs/tech-specs/logging-strategy.tr.md b/docs/tech-specs/tr/logging-strategy.tr.md similarity index 100% rename from docs/tech-specs/logging-strategy.tr.md rename to docs/tech-specs/tr/logging-strategy.tr.md diff --git a/docs/tech-specs/mcp-tool-arguments.tr.md b/docs/tech-specs/tr/mcp-tool-arguments.tr.md similarity index 100% rename from docs/tech-specs/mcp-tool-arguments.tr.md rename to docs/tech-specs/tr/mcp-tool-arguments.tr.md diff --git a/docs/tech-specs/mcp-tool-bearer-token.tr.md b/docs/tech-specs/tr/mcp-tool-bearer-token.tr.md similarity index 100% rename from docs/tech-specs/mcp-tool-bearer-token.tr.md rename to docs/tech-specs/tr/mcp-tool-bearer-token.tr.md diff --git a/docs/tech-specs/minio-to-s3-migration.tr.md b/docs/tech-specs/tr/minio-to-s3-migration.tr.md similarity index 100% rename from docs/tech-specs/minio-to-s3-migration.tr.md rename to docs/tech-specs/tr/minio-to-s3-migration.tr.md diff --git a/docs/tech-specs/more-config-cli.tr.md b/docs/tech-specs/tr/more-config-cli.tr.md similarity index 100% rename from docs/tech-specs/more-config-cli.tr.md rename to docs/tech-specs/tr/more-config-cli.tr.md diff --git a/docs/tech-specs/multi-tenant-support.tr.md b/docs/tech-specs/tr/multi-tenant-support.tr.md similarity index 100% rename from docs/tech-specs/multi-tenant-support.tr.md rename to docs/tech-specs/tr/multi-tenant-support.tr.md diff --git a/docs/tech-specs/neo4j-user-collection-isolation.tr.md b/docs/tech-specs/tr/neo4j-user-collection-isolation.tr.md similarity index 100% rename from docs/tech-specs/neo4j-user-collection-isolation.tr.md rename to docs/tech-specs/tr/neo4j-user-collection-isolation.tr.md diff --git a/docs/tech-specs/ontology-extract-phase-2.tr.md b/docs/tech-specs/tr/ontology-extract-phase-2.tr.md similarity index 100% rename from docs/tech-specs/ontology-extract-phase-2.tr.md rename to docs/tech-specs/tr/ontology-extract-phase-2.tr.md diff --git a/docs/tech-specs/ontology.tr.md b/docs/tech-specs/tr/ontology.tr.md similarity index 100% rename from docs/tech-specs/ontology.tr.md rename to docs/tech-specs/tr/ontology.tr.md diff --git a/docs/tech-specs/ontorag.tr.md b/docs/tech-specs/tr/ontorag.tr.md similarity index 100% rename from docs/tech-specs/ontorag.tr.md rename to docs/tech-specs/tr/ontorag.tr.md diff --git a/docs/tech-specs/openapi-spec.tr.md b/docs/tech-specs/tr/openapi-spec.tr.md similarity index 100% rename from docs/tech-specs/openapi-spec.tr.md rename to docs/tech-specs/tr/openapi-spec.tr.md diff --git a/docs/tech-specs/pubsub.tr.md b/docs/tech-specs/tr/pubsub.tr.md similarity index 100% rename from docs/tech-specs/pubsub.tr.md rename to docs/tech-specs/tr/pubsub.tr.md diff --git a/docs/tech-specs/python-api-refactor.tr.md b/docs/tech-specs/tr/python-api-refactor.tr.md similarity index 100% rename from docs/tech-specs/python-api-refactor.tr.md rename to docs/tech-specs/tr/python-api-refactor.tr.md diff --git a/docs/tech-specs/query-time-explainability.tr.md b/docs/tech-specs/tr/query-time-explainability.tr.md similarity index 100% rename from docs/tech-specs/query-time-explainability.tr.md rename to docs/tech-specs/tr/query-time-explainability.tr.md diff --git a/docs/tech-specs/rag-streaming-support.tr.md b/docs/tech-specs/tr/rag-streaming-support.tr.md similarity index 100% rename from docs/tech-specs/rag-streaming-support.tr.md rename to docs/tech-specs/tr/rag-streaming-support.tr.md diff --git a/docs/tech-specs/schema-refactoring-proposal.tr.md b/docs/tech-specs/tr/schema-refactoring-proposal.tr.md similarity index 100% rename from docs/tech-specs/schema-refactoring-proposal.tr.md rename to docs/tech-specs/tr/schema-refactoring-proposal.tr.md diff --git a/docs/tech-specs/streaming-llm-responses.tr.md b/docs/tech-specs/tr/streaming-llm-responses.tr.md similarity index 100% rename from docs/tech-specs/streaming-llm-responses.tr.md rename to docs/tech-specs/tr/streaming-llm-responses.tr.md diff --git a/docs/tech-specs/structured-data-2.tr.md b/docs/tech-specs/tr/structured-data-2.tr.md similarity index 100% rename from docs/tech-specs/structured-data-2.tr.md rename to docs/tech-specs/tr/structured-data-2.tr.md diff --git a/docs/tech-specs/structured-data-descriptor.tr.md b/docs/tech-specs/tr/structured-data-descriptor.tr.md similarity index 100% rename from docs/tech-specs/structured-data-descriptor.tr.md rename to docs/tech-specs/tr/structured-data-descriptor.tr.md diff --git a/docs/tech-specs/structured-data-schemas.tr.md b/docs/tech-specs/tr/structured-data-schemas.tr.md similarity index 100% rename from docs/tech-specs/structured-data-schemas.tr.md rename to docs/tech-specs/tr/structured-data-schemas.tr.md diff --git a/docs/tech-specs/structured-data.tr.md b/docs/tech-specs/tr/structured-data.tr.md similarity index 100% rename from docs/tech-specs/structured-data.tr.md rename to docs/tech-specs/tr/structured-data.tr.md diff --git a/docs/tech-specs/structured-diag-service.tr.md b/docs/tech-specs/tr/structured-diag-service.tr.md similarity index 100% rename from docs/tech-specs/structured-diag-service.tr.md rename to docs/tech-specs/tr/structured-diag-service.tr.md diff --git a/docs/tech-specs/tool-group.tr.md b/docs/tech-specs/tr/tool-group.tr.md similarity index 100% rename from docs/tech-specs/tool-group.tr.md rename to docs/tech-specs/tr/tool-group.tr.md diff --git a/docs/tech-specs/tool-services.tr.md b/docs/tech-specs/tr/tool-services.tr.md similarity index 100% rename from docs/tech-specs/tool-services.tr.md rename to docs/tech-specs/tr/tool-services.tr.md diff --git a/docs/tech-specs/universal-decoder.tr.md b/docs/tech-specs/tr/universal-decoder.tr.md similarity index 100% rename from docs/tech-specs/universal-decoder.tr.md rename to docs/tech-specs/tr/universal-decoder.tr.md diff --git a/docs/tech-specs/vector-store-lifecycle.tr.md b/docs/tech-specs/tr/vector-store-lifecycle.tr.md similarity index 100% rename from docs/tech-specs/vector-store-lifecycle.tr.md rename to docs/tech-specs/tr/vector-store-lifecycle.tr.md diff --git a/docs/tech-specs/__TEMPLATE.zh-cn.md b/docs/tech-specs/zh-cn/__TEMPLATE.zh-cn.md similarity index 100% rename from docs/tech-specs/__TEMPLATE.zh-cn.md rename to docs/tech-specs/zh-cn/__TEMPLATE.zh-cn.md diff --git a/docs/tech-specs/agent-explainability.zh-cn.md b/docs/tech-specs/zh-cn/agent-explainability.zh-cn.md similarity index 100% rename from docs/tech-specs/agent-explainability.zh-cn.md rename to docs/tech-specs/zh-cn/agent-explainability.zh-cn.md diff --git a/docs/tech-specs/architecture-principles.zh-cn.md b/docs/tech-specs/zh-cn/architecture-principles.zh-cn.md similarity index 100% rename from docs/tech-specs/architecture-principles.zh-cn.md rename to docs/tech-specs/zh-cn/architecture-principles.zh-cn.md diff --git a/docs/tech-specs/cassandra-consolidation.zh-cn.md b/docs/tech-specs/zh-cn/cassandra-consolidation.zh-cn.md similarity index 100% rename from docs/tech-specs/cassandra-consolidation.zh-cn.md rename to docs/tech-specs/zh-cn/cassandra-consolidation.zh-cn.md diff --git a/docs/tech-specs/cassandra-performance-refactor.zh-cn.md b/docs/tech-specs/zh-cn/cassandra-performance-refactor.zh-cn.md similarity index 100% rename from docs/tech-specs/cassandra-performance-refactor.zh-cn.md rename to docs/tech-specs/zh-cn/cassandra-performance-refactor.zh-cn.md diff --git a/docs/tech-specs/collection-management.zh-cn.md b/docs/tech-specs/zh-cn/collection-management.zh-cn.md similarity index 100% rename from docs/tech-specs/collection-management.zh-cn.md rename to docs/tech-specs/zh-cn/collection-management.zh-cn.md diff --git a/docs/tech-specs/document-embeddings-chunk-id.zh-cn.md b/docs/tech-specs/zh-cn/document-embeddings-chunk-id.zh-cn.md similarity index 100% rename from docs/tech-specs/document-embeddings-chunk-id.zh-cn.md rename to docs/tech-specs/zh-cn/document-embeddings-chunk-id.zh-cn.md diff --git a/docs/tech-specs/embeddings-batch-processing.zh-cn.md b/docs/tech-specs/zh-cn/embeddings-batch-processing.zh-cn.md similarity index 100% rename from docs/tech-specs/embeddings-batch-processing.zh-cn.md rename to docs/tech-specs/zh-cn/embeddings-batch-processing.zh-cn.md diff --git a/docs/tech-specs/entity-centric-graph.zh-cn.md b/docs/tech-specs/zh-cn/entity-centric-graph.zh-cn.md similarity index 100% rename from docs/tech-specs/entity-centric-graph.zh-cn.md rename to docs/tech-specs/zh-cn/entity-centric-graph.zh-cn.md diff --git a/docs/tech-specs/explainability-cli.zh-cn.md b/docs/tech-specs/zh-cn/explainability-cli.zh-cn.md similarity index 100% rename from docs/tech-specs/explainability-cli.zh-cn.md rename to docs/tech-specs/zh-cn/explainability-cli.zh-cn.md diff --git a/docs/tech-specs/extraction-flows.zh-cn.md b/docs/tech-specs/zh-cn/extraction-flows.zh-cn.md similarity index 100% rename from docs/tech-specs/extraction-flows.zh-cn.md rename to docs/tech-specs/zh-cn/extraction-flows.zh-cn.md diff --git a/docs/tech-specs/extraction-provenance-subgraph.zh-cn.md b/docs/tech-specs/zh-cn/extraction-provenance-subgraph.zh-cn.md similarity index 100% rename from docs/tech-specs/extraction-provenance-subgraph.zh-cn.md rename to docs/tech-specs/zh-cn/extraction-provenance-subgraph.zh-cn.md diff --git a/docs/tech-specs/extraction-time-provenance.zh-cn.md b/docs/tech-specs/zh-cn/extraction-time-provenance.zh-cn.md similarity index 100% rename from docs/tech-specs/extraction-time-provenance.zh-cn.md rename to docs/tech-specs/zh-cn/extraction-time-provenance.zh-cn.md diff --git a/docs/tech-specs/flow-class-definition.zh-cn.md b/docs/tech-specs/zh-cn/flow-class-definition.zh-cn.md similarity index 100% rename from docs/tech-specs/flow-class-definition.zh-cn.md rename to docs/tech-specs/zh-cn/flow-class-definition.zh-cn.md diff --git a/docs/tech-specs/flow-configurable-parameters.zh-cn.md b/docs/tech-specs/zh-cn/flow-configurable-parameters.zh-cn.md similarity index 100% rename from docs/tech-specs/flow-configurable-parameters.zh-cn.md rename to docs/tech-specs/zh-cn/flow-configurable-parameters.zh-cn.md diff --git a/docs/tech-specs/graph-contexts.zh-cn.md b/docs/tech-specs/zh-cn/graph-contexts.zh-cn.md similarity index 100% rename from docs/tech-specs/graph-contexts.zh-cn.md rename to docs/tech-specs/zh-cn/graph-contexts.zh-cn.md diff --git a/docs/tech-specs/graphql-query.zh-cn.md b/docs/tech-specs/zh-cn/graphql-query.zh-cn.md similarity index 100% rename from docs/tech-specs/graphql-query.zh-cn.md rename to docs/tech-specs/zh-cn/graphql-query.zh-cn.md diff --git a/docs/tech-specs/graphrag-performance-optimization.zh-cn.md b/docs/tech-specs/zh-cn/graphrag-performance-optimization.zh-cn.md similarity index 100% rename from docs/tech-specs/graphrag-performance-optimization.zh-cn.md rename to docs/tech-specs/zh-cn/graphrag-performance-optimization.zh-cn.md diff --git a/docs/tech-specs/import-export-graceful-shutdown.zh-cn.md b/docs/tech-specs/zh-cn/import-export-graceful-shutdown.zh-cn.md similarity index 100% rename from docs/tech-specs/import-export-graceful-shutdown.zh-cn.md rename to docs/tech-specs/zh-cn/import-export-graceful-shutdown.zh-cn.md diff --git a/docs/tech-specs/jsonl-prompt-output.zh-cn.md b/docs/tech-specs/zh-cn/jsonl-prompt-output.zh-cn.md similarity index 100% rename from docs/tech-specs/jsonl-prompt-output.zh-cn.md rename to docs/tech-specs/zh-cn/jsonl-prompt-output.zh-cn.md diff --git a/docs/tech-specs/large-document-loading.zh-cn.md b/docs/tech-specs/zh-cn/large-document-loading.zh-cn.md similarity index 100% rename from docs/tech-specs/large-document-loading.zh-cn.md rename to docs/tech-specs/zh-cn/large-document-loading.zh-cn.md diff --git a/docs/tech-specs/logging-strategy.zh-cn.md b/docs/tech-specs/zh-cn/logging-strategy.zh-cn.md similarity index 100% rename from docs/tech-specs/logging-strategy.zh-cn.md rename to docs/tech-specs/zh-cn/logging-strategy.zh-cn.md diff --git a/docs/tech-specs/mcp-tool-arguments.zh-cn.md b/docs/tech-specs/zh-cn/mcp-tool-arguments.zh-cn.md similarity index 100% rename from docs/tech-specs/mcp-tool-arguments.zh-cn.md rename to docs/tech-specs/zh-cn/mcp-tool-arguments.zh-cn.md diff --git a/docs/tech-specs/mcp-tool-bearer-token.zh-cn.md b/docs/tech-specs/zh-cn/mcp-tool-bearer-token.zh-cn.md similarity index 100% rename from docs/tech-specs/mcp-tool-bearer-token.zh-cn.md rename to docs/tech-specs/zh-cn/mcp-tool-bearer-token.zh-cn.md diff --git a/docs/tech-specs/minio-to-s3-migration.zh-cn.md b/docs/tech-specs/zh-cn/minio-to-s3-migration.zh-cn.md similarity index 100% rename from docs/tech-specs/minio-to-s3-migration.zh-cn.md rename to docs/tech-specs/zh-cn/minio-to-s3-migration.zh-cn.md diff --git a/docs/tech-specs/more-config-cli.zh-cn.md b/docs/tech-specs/zh-cn/more-config-cli.zh-cn.md similarity index 100% rename from docs/tech-specs/more-config-cli.zh-cn.md rename to docs/tech-specs/zh-cn/more-config-cli.zh-cn.md diff --git a/docs/tech-specs/multi-tenant-support.zh-cn.md b/docs/tech-specs/zh-cn/multi-tenant-support.zh-cn.md similarity index 100% rename from docs/tech-specs/multi-tenant-support.zh-cn.md rename to docs/tech-specs/zh-cn/multi-tenant-support.zh-cn.md diff --git a/docs/tech-specs/neo4j-user-collection-isolation.zh-cn.md b/docs/tech-specs/zh-cn/neo4j-user-collection-isolation.zh-cn.md similarity index 100% rename from docs/tech-specs/neo4j-user-collection-isolation.zh-cn.md rename to docs/tech-specs/zh-cn/neo4j-user-collection-isolation.zh-cn.md diff --git a/docs/tech-specs/ontology-extract-phase-2.zh-cn.md b/docs/tech-specs/zh-cn/ontology-extract-phase-2.zh-cn.md similarity index 100% rename from docs/tech-specs/ontology-extract-phase-2.zh-cn.md rename to docs/tech-specs/zh-cn/ontology-extract-phase-2.zh-cn.md diff --git a/docs/tech-specs/ontology.zh-cn.md b/docs/tech-specs/zh-cn/ontology.zh-cn.md similarity index 100% rename from docs/tech-specs/ontology.zh-cn.md rename to docs/tech-specs/zh-cn/ontology.zh-cn.md diff --git a/docs/tech-specs/ontorag.zh-cn.md b/docs/tech-specs/zh-cn/ontorag.zh-cn.md similarity index 100% rename from docs/tech-specs/ontorag.zh-cn.md rename to docs/tech-specs/zh-cn/ontorag.zh-cn.md diff --git a/docs/tech-specs/openapi-spec.zh-cn.md b/docs/tech-specs/zh-cn/openapi-spec.zh-cn.md similarity index 100% rename from docs/tech-specs/openapi-spec.zh-cn.md rename to docs/tech-specs/zh-cn/openapi-spec.zh-cn.md diff --git a/docs/tech-specs/pubsub.zh-cn.md b/docs/tech-specs/zh-cn/pubsub.zh-cn.md similarity index 100% rename from docs/tech-specs/pubsub.zh-cn.md rename to docs/tech-specs/zh-cn/pubsub.zh-cn.md diff --git a/docs/tech-specs/python-api-refactor.zh-cn.md b/docs/tech-specs/zh-cn/python-api-refactor.zh-cn.md similarity index 100% rename from docs/tech-specs/python-api-refactor.zh-cn.md rename to docs/tech-specs/zh-cn/python-api-refactor.zh-cn.md diff --git a/docs/tech-specs/query-time-explainability.zh-cn.md b/docs/tech-specs/zh-cn/query-time-explainability.zh-cn.md similarity index 100% rename from docs/tech-specs/query-time-explainability.zh-cn.md rename to docs/tech-specs/zh-cn/query-time-explainability.zh-cn.md diff --git a/docs/tech-specs/rag-streaming-support.zh-cn.md b/docs/tech-specs/zh-cn/rag-streaming-support.zh-cn.md similarity index 100% rename from docs/tech-specs/rag-streaming-support.zh-cn.md rename to docs/tech-specs/zh-cn/rag-streaming-support.zh-cn.md diff --git a/docs/tech-specs/schema-refactoring-proposal.zh-cn.md b/docs/tech-specs/zh-cn/schema-refactoring-proposal.zh-cn.md similarity index 100% rename from docs/tech-specs/schema-refactoring-proposal.zh-cn.md rename to docs/tech-specs/zh-cn/schema-refactoring-proposal.zh-cn.md diff --git a/docs/tech-specs/streaming-llm-responses.zh-cn.md b/docs/tech-specs/zh-cn/streaming-llm-responses.zh-cn.md similarity index 100% rename from docs/tech-specs/streaming-llm-responses.zh-cn.md rename to docs/tech-specs/zh-cn/streaming-llm-responses.zh-cn.md diff --git a/docs/tech-specs/structured-data-2.zh-cn.md b/docs/tech-specs/zh-cn/structured-data-2.zh-cn.md similarity index 100% rename from docs/tech-specs/structured-data-2.zh-cn.md rename to docs/tech-specs/zh-cn/structured-data-2.zh-cn.md diff --git a/docs/tech-specs/structured-data-descriptor.zh-cn.md b/docs/tech-specs/zh-cn/structured-data-descriptor.zh-cn.md similarity index 100% rename from docs/tech-specs/structured-data-descriptor.zh-cn.md rename to docs/tech-specs/zh-cn/structured-data-descriptor.zh-cn.md diff --git a/docs/tech-specs/structured-data-schemas.zh-cn.md b/docs/tech-specs/zh-cn/structured-data-schemas.zh-cn.md similarity index 100% rename from docs/tech-specs/structured-data-schemas.zh-cn.md rename to docs/tech-specs/zh-cn/structured-data-schemas.zh-cn.md diff --git a/docs/tech-specs/structured-data.zh-cn.md b/docs/tech-specs/zh-cn/structured-data.zh-cn.md similarity index 100% rename from docs/tech-specs/structured-data.zh-cn.md rename to docs/tech-specs/zh-cn/structured-data.zh-cn.md diff --git a/docs/tech-specs/structured-diag-service.zh-cn.md b/docs/tech-specs/zh-cn/structured-diag-service.zh-cn.md similarity index 100% rename from docs/tech-specs/structured-diag-service.zh-cn.md rename to docs/tech-specs/zh-cn/structured-diag-service.zh-cn.md diff --git a/docs/tech-specs/tool-group.zh-cn.md b/docs/tech-specs/zh-cn/tool-group.zh-cn.md similarity index 100% rename from docs/tech-specs/tool-group.zh-cn.md rename to docs/tech-specs/zh-cn/tool-group.zh-cn.md diff --git a/docs/tech-specs/tool-services.zh-cn.md b/docs/tech-specs/zh-cn/tool-services.zh-cn.md similarity index 100% rename from docs/tech-specs/tool-services.zh-cn.md rename to docs/tech-specs/zh-cn/tool-services.zh-cn.md diff --git a/docs/tech-specs/universal-decoder.zh-cn.md b/docs/tech-specs/zh-cn/universal-decoder.zh-cn.md similarity index 100% rename from docs/tech-specs/universal-decoder.zh-cn.md rename to docs/tech-specs/zh-cn/universal-decoder.zh-cn.md diff --git a/docs/tech-specs/vector-store-lifecycle.zh-cn.md b/docs/tech-specs/zh-cn/vector-store-lifecycle.zh-cn.md similarity index 100% rename from docs/tech-specs/vector-store-lifecycle.zh-cn.md rename to docs/tech-specs/zh-cn/vector-store-lifecycle.zh-cn.md diff --git a/tests/unit/test_pubsub/test_kafka_backend.py b/tests/unit/test_pubsub/test_kafka_backend.py index 456386f0..d51b1817 100644 --- a/tests/unit/test_pubsub/test_kafka_backend.py +++ b/tests/unit/test_pubsub/test_kafka_backend.py @@ -57,9 +57,9 @@ class TestKafkaParseTopic: backend._parse_topic('unknown:tg:topic') def test_topic_with_flow_suffix(self, backend): - """Topic names with flow suffix (e.g. :default) are preserved.""" + """Topic names with flow suffix (e.g. :default) have colons replaced with dots.""" name, cls, durable = backend._parse_topic('request:tg:prompt:default') - assert name == 'tg.request.prompt:default' + assert name == 'tg.request.prompt.default' class TestKafkaRetention: diff --git a/tests/unit/test_text_completion/test_rate_limit_contract.py b/tests/unit/test_text_completion/test_rate_limit_contract.py index c9df217b..9cf00b7c 100644 --- a/tests/unit/test_text_completion/test_rate_limit_contract.py +++ b/tests/unit/test_text_completion/test_rate_limit_contract.py @@ -10,7 +10,7 @@ import pytest from unittest.mock import AsyncMock, MagicMock, patch from unittest import IsolatedAsyncioTestCase -from trustgraph.exceptions import TooManyRequests +from trustgraph.exceptions import TooManyRequests, LlmError class TestAzureServerless429(IsolatedAsyncioTestCase): @@ -77,6 +77,24 @@ class TestOpenAIRateLimit(IsolatedAsyncioTestCase): with pytest.raises(TooManyRequests): await proc.generate_content("sys", "prompt") + @patch('trustgraph.model.text_completion.openai.llm.OpenAI') + @patch('trustgraph.base.async_processor.AsyncProcessor.__init__', return_value=None) + @patch('trustgraph.base.llm_service.LlmService.__init__', return_value=None) + async def test_503_raises_llm_error(self, _llm, _async, mock_cls): + from openai import InternalServerError + from trustgraph.model.text_completion.openai.llm import Processor + mock_client = MagicMock() + mock_cls.return_value = mock_client + proc = Processor( + api_key="k", concurrency=1, taskgroup=AsyncMock(), id="t", + ) + mock_client.chat.completions.create.side_effect = InternalServerError( + "service unavailable", response=MagicMock(), body=None + ) + + with pytest.raises(LlmError): + await proc.generate_content("sys", "prompt") + class TestClaudeRateLimit(IsolatedAsyncioTestCase): """Claude/Anthropic: anthropic.RateLimitError → TooManyRequests""" @@ -103,32 +121,120 @@ class TestClaudeRateLimit(IsolatedAsyncioTestCase): await proc.generate_content("sys", "prompt") +class TestMistralRateLimit(IsolatedAsyncioTestCase): + """Mistral: models.SDKError (429/503) → TooManyRequests/LlmError""" + + @patch('trustgraph.model.text_completion.mistral.llm.Mistral') + @patch('trustgraph.model.text_completion.mistral.llm.models') + @patch('trustgraph.base.async_processor.AsyncProcessor.__init__', return_value=None) + @patch('trustgraph.base.llm_service.LlmService.__init__', return_value=None) + async def test_429_raises_too_many_requests(self, _llm, _async, mock_models, mock_cls): + from trustgraph.model.text_completion.mistral.llm import Processor + mock_client = MagicMock() + mock_cls.return_value = mock_client + proc = Processor( + api_key="k", concurrency=1, taskgroup=AsyncMock(), id="t", + ) + + # Define a mock exception class + mock_models.SDKError = type("SDKError", (Exception,), {"status_code": 429}) + mock_client.chat.complete.side_effect = mock_models.SDKError() + + with pytest.raises(TooManyRequests): + await proc.generate_content("sys", "prompt") + + @patch('trustgraph.model.text_completion.mistral.llm.Mistral') + @patch('trustgraph.model.text_completion.mistral.llm.models') + @patch('trustgraph.base.async_processor.AsyncProcessor.__init__', return_value=None) + @patch('trustgraph.base.llm_service.LlmService.__init__', return_value=None) + async def test_503_raises_llm_error(self, _llm, _async, mock_models, mock_cls): + from trustgraph.model.text_completion.mistral.llm import Processor + mock_client = MagicMock() + mock_cls.return_value = mock_client + proc = Processor( + api_key="k", concurrency=1, taskgroup=AsyncMock(), id="t", + ) + + mock_models.SDKError = type("SDKError", (Exception,), {"status_code": 503}) + mock_client.chat.complete.side_effect = mock_models.SDKError() + + with pytest.raises(LlmError): + await proc.generate_content("sys", "prompt") + + class TestCohereRateLimit(IsolatedAsyncioTestCase): - """Cohere: cohere.TooManyRequestsError → TooManyRequests""" + """Cohere: cohere.errors (429/503) → TooManyRequests/LlmError""" @patch('trustgraph.model.text_completion.cohere.llm.cohere') @patch('trustgraph.base.async_processor.AsyncProcessor.__init__', return_value=None) @patch('trustgraph.base.llm_service.LlmService.__init__', return_value=None) async def test_rate_limit_error_raises_too_many_requests(self, _llm, _async, mock_cohere): from trustgraph.model.text_completion.cohere.llm import Processor - + import trustgraph.model.text_completion.cohere.llm as cohere_llm + mock_client = MagicMock() mock_cohere.Client.return_value = mock_client - proc = Processor( api_key="k", concurrency=1, taskgroup=AsyncMock(), id="t", ) + + ErrorCls = type("TooManyRequestsError", (Exception,), {}) + with patch.object(cohere_llm, 'TooManyRequestsError', ErrorCls): + mock_client.chat.side_effect = ErrorCls() + with pytest.raises(TooManyRequests): + await proc.generate_content("sys", "prompt") - mock_cohere.TooManyRequestsError = type( - "TooManyRequestsError", (Exception,), {} - ) - mock_client.chat.side_effect = mock_cohere.TooManyRequestsError( - "rate limited" + @patch('trustgraph.model.text_completion.cohere.llm.cohere') + @patch('trustgraph.base.async_processor.AsyncProcessor.__init__', return_value=None) + @patch('trustgraph.base.llm_service.LlmService.__init__', return_value=None) + async def test_503_raises_llm_error(self, _llm, _async, mock_cohere): + from trustgraph.model.text_completion.cohere.llm import Processor + import trustgraph.model.text_completion.cohere.llm as cohere_llm + + mock_client = MagicMock() + mock_cohere.Client.return_value = mock_client + proc = Processor( + api_key="k", concurrency=1, taskgroup=AsyncMock(), id="t", ) + + ErrorCls = type("ServiceUnavailableError", (Exception,), {}) + with patch.object(cohere_llm, 'ServiceUnavailableError', ErrorCls): + mock_client.chat.side_effect = ErrorCls() + with pytest.raises(LlmError): + await proc.generate_content("sys", "prompt") + + +class TestVllmRateLimit(IsolatedAsyncioTestCase): + """vLLM: HTTP 429/503 → TooManyRequests/LlmError""" + + @patch('trustgraph.model.text_completion.vllm.llm.aiohttp.ClientSession') + @patch('trustgraph.base.async_processor.AsyncProcessor.__init__', return_value=None) + @patch('trustgraph.base.llm_service.LlmService.__init__', return_value=None) + async def test_429_raises_too_many_requests(self, _llm, _async, mock_session): + from trustgraph.model.text_completion.vllm.llm import Processor + proc = Processor(concurrency=1, taskgroup=AsyncMock(), id="t") + + mock_resp = AsyncMock() + mock_resp.status = 429 + mock_session.return_value.post.return_value.__aenter__.return_value = mock_resp with pytest.raises(TooManyRequests): await proc.generate_content("sys", "prompt") + @patch('trustgraph.model.text_completion.vllm.llm.aiohttp.ClientSession') + @patch('trustgraph.base.async_processor.AsyncProcessor.__init__', return_value=None) + @patch('trustgraph.base.llm_service.LlmService.__init__', return_value=None) + async def test_503_raises_llm_error(self, _llm, _async, mock_session): + from trustgraph.model.text_completion.vllm.llm import Processor + proc = Processor(concurrency=1, taskgroup=AsyncMock(), id="t") + + mock_resp = AsyncMock() + mock_resp.status = 503 + mock_session.return_value.post.return_value.__aenter__.return_value = mock_resp + + with pytest.raises(LlmError): + await proc.generate_content("sys", "prompt") + class TestClientSideRateLimitTranslation: """Client base class: error type 'too-many-requests' → TooManyRequests""" diff --git a/trustgraph-base/trustgraph/base/consumer.py b/trustgraph-base/trustgraph/base/consumer.py index 1b9e5999..5c59c515 100644 --- a/trustgraph-base/trustgraph/base/consumer.py +++ b/trustgraph-base/trustgraph/base/consumer.py @@ -54,6 +54,17 @@ class Consumer: self.running = True self.consumer_task = None + # Kafka topics are created with 1 partition, so multiple + # consumers in the same group causes rebalance storms where + # no consumer can fetch. Cap to the backend's limit. + max_concurrency = getattr(backend, 'max_consumer_concurrency', None) + if isinstance(max_concurrency, int) and concurrency > max_concurrency: + logger.info( + f"Capping concurrency from {concurrency} to " + f"{max_concurrency} (backend limit)" + ) + concurrency = max_concurrency + self.concurrency = concurrency self.metrics = metrics diff --git a/trustgraph-base/trustgraph/base/kafka_backend.py b/trustgraph-base/trustgraph/base/kafka_backend.py index 8dfe8bfa..cec5f74f 100644 --- a/trustgraph-base/trustgraph/base/kafka_backend.py +++ b/trustgraph-base/trustgraph/base/kafka_backend.py @@ -83,6 +83,7 @@ class KafkaBackendProducer: self._producer = KafkaProducer({ 'bootstrap.servers': bootstrap_servers, 'acks': 'all' if durable else '1', + 'message.max.bytes': 10485760, }) def send(self, message: Any, properties: dict = {}) -> None: @@ -94,13 +95,23 @@ class KafkaBackendProducer: for k, v in properties.items() ] if properties else None + self._delivery_error = None + + def _on_delivery(err, msg): + if err: + self._delivery_error = err + self._producer.produce( topic=self._topic_name, value=json_data, headers=headers, + on_delivery=_on_delivery, ) self._producer.flush() + if self._delivery_error: + raise KafkaException(self._delivery_error) + def flush(self) -> None: self._producer.flush() @@ -126,15 +137,41 @@ class KafkaBackendConsumer: self._consumer = None def _connect(self): + import time + t0 = time.monotonic() + + def _on_assign(consumer, partitions): + elapsed = time.monotonic() - t0 + logger.info( + f"Partition assignment for {self._topic_name}: " + f"{[p.partition for p in partitions]} " + f"after {elapsed:.1f}s" + ) + + def _on_revoke(consumer, partitions): + logger.info( + f"Partition revoke for {self._topic_name}: " + f"{[p.partition for p in partitions]}" + ) + self._consumer = KafkaConsumer({ 'bootstrap.servers': self._bootstrap_servers, 'group.id': self._group_id, 'auto.offset.reset': self._auto_offset_reset, 'enable.auto.commit': False, + 'fetch.message.max.bytes': 10485760, + # Tighten group coordination timeouts for fast + # group join on single-member groups. + 'session.timeout.ms': 6000, + 'heartbeat.interval.ms': 1000, }) - self._consumer.subscribe([self._topic_name]) + self._consumer.subscribe( + [self._topic_name], + on_assign=_on_assign, + on_revoke=_on_revoke, + ) logger.info( - f"Kafka consumer connected: topic={self._topic_name}, " + f"Kafka consumer subscribed: topic={self._topic_name}, " f"group={self._group_id}" ) @@ -151,11 +188,11 @@ class KafkaBackendConsumer: if not self._is_alive(): self._connect() - # Force a partition assignment by polling briefly. - # Without this, the consumer may not be assigned partitions - # until the first real poll(), creating a race where the - # request is sent before assignment completes. - self._consumer.poll(timeout=1.0) + # Kick off group join. With auto.offset.reset=earliest + # on response/notify consumers, any messages published + # before assignment completes will be picked up once + # the consumer starts polling in receive(). + self._consumer.poll(timeout=0.5) def receive(self, timeout_millis: int = 2000) -> Message: """Receive a message. Raises TimeoutError if none available.""" @@ -172,6 +209,8 @@ class KafkaBackendConsumer: error = msg.error() if error.code() == KafkaError._PARTITION_EOF: raise TimeoutError("End of partition reached") + if error.code() == KafkaError.UNKNOWN_TOPIC_OR_PART: + raise TimeoutError("Topic not yet available") raise KafkaException(error) return KafkaMessage(msg, self._schema_cls) @@ -236,6 +275,11 @@ class KafkaBackend: if sasl_password: self._admin_config['sasl.password'] = sasl_password + # Topics are created with 1 partition, so only 1 consumer + # per group can be active. Extra consumers cause rebalance + # storms that block message delivery. + self.max_consumer_concurrency = 1 + logger.info( f"Kafka backend: {bootstrap_servers} " f"protocol={security_protocol}" @@ -270,7 +314,10 @@ class KafkaBackend: f"expected flow, request, response, or notify" ) - topic_name = f"{topicspace}.{cls}.{topic}" + # Replace any remaining colons — flow topics can have + # extra segments (e.g. flow:tg:document-load:default) + # and Kafka rejects colons in topic names. + topic_name = f"{topicspace}.{cls}.{topic}".replace(':', '.') return topic_name, cls, durable @@ -305,8 +352,13 @@ class KafkaBackend: # Per-subscriber: unique group so every instance sees # every message. Filter by correlation ID happens at # the Subscriber layer above. + # Use 'earliest' so that responses published before + # partition assignment completes are not missed. + # Each group is unique (UUID) with no committed offsets, + # so 'earliest' reads from the start of the topic. + # The correlation ID filter discards non-matching messages. group_id = f"{subscription}-{uuid.uuid4()}" - auto_offset_reset = 'latest' + auto_offset_reset = 'earliest' else: # Shared: named group, competing consumers group_id = subscription diff --git a/trustgraph-flow/trustgraph/model/text_completion/cohere/llm.py b/trustgraph-flow/trustgraph/model/text_completion/cohere/llm.py index 5093e556..4190cb98 100755 --- a/trustgraph-flow/trustgraph/model/text_completion/cohere/llm.py +++ b/trustgraph-flow/trustgraph/model/text_completion/cohere/llm.py @@ -5,6 +5,7 @@ Input is prompt, output is response. """ import cohere +from cohere.errors import TooManyRequestsError, ServiceUnavailableError from prometheus_client import Histogram import os import logging @@ -12,7 +13,7 @@ import logging # Module logger logger = logging.getLogger(__name__) -from .... exceptions import TooManyRequests +from .... exceptions import TooManyRequests, LlmError from .... base import LlmService, LlmResult, LlmChunk default_ident = "text-completion" @@ -84,13 +85,14 @@ class Processor(LlmService): return resp - # FIXME: Wrong exception, don't know what this LLM throws - # for a rate limit - except cohere.TooManyRequestsError: - + except TooManyRequestsError: # Leave rate limit retries to the base handler raise TooManyRequests() + except ServiceUnavailableError: + # Treat 503 as a retryable LlmError + raise LlmError() + except Exception as e: # Apart from rate limits, treat all exceptions as unrecoverable @@ -152,10 +154,14 @@ class Processor(LlmService): logger.debug("Streaming complete") - except cohere.TooManyRequestsError: + except TooManyRequestsError: logger.warning("Rate limit exceeded during streaming") raise TooManyRequests() + except ServiceUnavailableError: + logger.warning("Service unavailable during streaming") + raise LlmError() + except Exception as e: logger.error(f"Cohere streaming exception ({type(e).__name__}): {e}", exc_info=True) raise e diff --git a/trustgraph-flow/trustgraph/model/text_completion/mistral/llm.py b/trustgraph-flow/trustgraph/model/text_completion/mistral/llm.py index fab41ecd..e53f6f6e 100755 --- a/trustgraph-flow/trustgraph/model/text_completion/mistral/llm.py +++ b/trustgraph-flow/trustgraph/model/text_completion/mistral/llm.py @@ -4,14 +4,14 @@ Simple LLM service, performs text prompt completion using Mistral. Input is prompt, output is response. """ -from mistralai import Mistral +from mistralai import Mistral, models import os import logging # Module logger logger = logging.getLogger(__name__) -from .... exceptions import TooManyRequests +from .... exceptions import TooManyRequests, LlmError from .... base import LlmService, LlmResult, LlmChunk default_ident = "text-completion" @@ -100,18 +100,14 @@ class Processor(LlmService): return resp - # FIXME: Wrong exception. The MistralAI library has retry logic - # so retry-able errors are retried transparently. It means we - # don't get rate limit events. - - # We could choose to turn off retry and handle all that here - # or subclass BackoffStrategy to keep the retry logic, but - # get the events out. - -# except Mistral.RateLimitError: - -# # Leave rate limit retries to the base handler -# raise TooManyRequests() + except models.SDKError as e: + if e.status_code == 429: + # Leave rate limit retries to the base handler + raise TooManyRequests() + elif e.status_code == 503: + # Treat 503 as a retryable LlmError + raise LlmError() + raise e except Exception as e: @@ -185,8 +181,13 @@ class Processor(LlmService): logger.debug("Streaming complete") - except Exception as e: - logger.error(f"Mistral streaming exception ({type(e).__name__}): {e}", exc_info=True) + except models.SDKError as e: + if e.status_code == 429: + logger.warning("Hit rate limit during streaming") + raise TooManyRequests() + elif e.status_code == 503: + logger.warning("Hit internal server error during streaming") + raise LlmError() raise e @staticmethod diff --git a/trustgraph-flow/trustgraph/model/text_completion/openai/llm.py b/trustgraph-flow/trustgraph/model/text_completion/openai/llm.py index cdc8602a..0ee61521 100755 --- a/trustgraph-flow/trustgraph/model/text_completion/openai/llm.py +++ b/trustgraph-flow/trustgraph/model/text_completion/openai/llm.py @@ -4,11 +4,11 @@ Simple LLM service, performs text prompt completion using OpenAI. Input is prompt, output is response. """ -from openai import OpenAI, RateLimitError +from openai import OpenAI, RateLimitError, InternalServerError import os import logging -from .... exceptions import TooManyRequests +from .... exceptions import TooManyRequests, LlmError from .... base import LlmService, LlmResult, LlmChunk # Module logger @@ -104,13 +104,14 @@ class Processor(LlmService): return resp - # FIXME: Wrong exception, don't know what this LLM throws - # for a rate limit except RateLimitError: - # Leave rate limit retries to the base handler raise TooManyRequests() + except InternalServerError: + # Treat 503 as a retryable LlmError + raise LlmError() + except Exception as e: # Apart from rate limits, treat all exceptions as unrecoverable @@ -191,6 +192,10 @@ class Processor(LlmService): logger.warning("Hit rate limit during streaming") raise TooManyRequests() + except InternalServerError: + logger.warning("Hit internal server error during streaming") + raise LlmError() + except Exception as e: logger.error(f"OpenAI streaming exception ({type(e).__name__}): {e}", exc_info=True) raise e diff --git a/trustgraph-flow/trustgraph/model/text_completion/vllm/llm.py b/trustgraph-flow/trustgraph/model/text_completion/vllm/llm.py index 2dd4576e..7570fa40 100755 --- a/trustgraph-flow/trustgraph/model/text_completion/vllm/llm.py +++ b/trustgraph-flow/trustgraph/model/text_completion/vllm/llm.py @@ -11,7 +11,7 @@ import logging # Module logger logger = logging.getLogger(__name__) -from .... exceptions import TooManyRequests +from .... exceptions import TooManyRequests, LlmError from .... base import LlmService, LlmResult, LlmChunk default_ident = "text-completion" @@ -83,6 +83,10 @@ class Processor(LlmService): json=request, ) as response: + if response.status == 429: + raise TooManyRequests() + if response.status == 503: + raise LlmError() if response.status != 200: raise RuntimeError("Bad status: " + str(response.status)) @@ -104,7 +108,13 @@ class Processor(LlmService): return resp - # FIXME: Assuming vLLM won't produce rate limits? + except TooManyRequests: + # Leave rate limit retries to the base handler + raise TooManyRequests() + + except LlmError: + # Treat 503 as a retryable LlmError + raise LlmError() except Exception as e: @@ -150,6 +160,10 @@ class Processor(LlmService): json=request, ) as response: + if response.status == 429: + raise TooManyRequests() + if response.status == 503: + raise LlmError() if response.status != 200: raise RuntimeError("Bad status: " + str(response.status))