rag-wright 0.17.1__tar.gz → 0.17.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rag_wright-0.17.2/.release-please-manifest.json +3 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/CHANGELOG.md +8 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/CLAUDE.md +3 -1
- {rag_wright-0.17.1 → rag_wright-0.17.2}/PKG-INFO +1 -1
- rag_wright-0.17.2/docs/adr/0143-a-float-is-written-and-compared-as-a-double.md +33 -0
- rag_wright-0.17.2/docs/adr/0144-one-loaded-bge-model-per-process.md +31 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/README.md +3 -1
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/api/pack_sdk.md +1 -1
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/domain-adaptation/ontology-authoring.md +3 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/plan.md +2 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/workspaces.md +5 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/pyproject.toml +1 -1
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/embedding.py +16 -9
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/reranking.py +17 -12
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/store/arcadedb.py +36 -19
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/store/seam.py +2 -1
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/util/devices.py +16 -1
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tasks.md +5 -1
- rag_wright-0.17.2/tests/capabilities/test_shared_models.py +107 -0
- rag_wright-0.17.2/tests/store/test_kg_doubles.py +88 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_kg_range.py +1 -1
- {rag_wright-0.17.1 → rag_wright-0.17.2}/uv.lock +1 -1
- rag_wright-0.17.1/.release-please-manifest.json +0 -3
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/settings.json +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/building-a-product-backend/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/building-a-product-frontend/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/building-a-product-frontend/scaffold/ShellLayout.test.tsx +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/building-a-product-frontend/scaffold/ShellLayout.tsx +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/building-a-product-frontend/scaffold/surfaces.tsx +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/building-an-agent-harness/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/building-an-ingestion-capability/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/laya/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/qwen-vllm-modal/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/specifying-a-product-on-the-engine/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.claude/skills/using-the-rag-wright-engine/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.env.example +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.github/workflows/publish.yml +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.github/workflows/release-please.yml +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/.gitignore +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/LICENSE +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/README.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/SPEC.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/conftest.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/ArcadeDB_Local.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/OBSERVABILITY.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0001-stack-and-library-choices.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0004-entity-disambiguation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0005-relational-golden-set.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0006-model-profile.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0007-arcadedb-store-schema.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0032-nl-to-type-two-step-reason-emit-on-gemma.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0038-full-cuad-kg-on-gcp-gpu-vm-and-gcs-backup.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0042-clause-level-span-id-provenance-and-content-hash-backfill.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0055-confidence-out-of-band.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0057-async-engine-architecture.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0058-structure-first-chunking.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0067-domain-pack-retargeting.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0086-streaming-cost-capture.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0090-affiliate-of-extraction.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0091-retire-partyto-edge.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0092-idempotent-write-graph.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0093-entities-by-name-seam.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0094-workspace-document-scope.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0095-span-page-provenance.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0098-invoke-time-document-scope.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0100-profile-based-model-routing.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0107-requirement-page-provenance.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0118-engine-core-api-vs-ard-adapter-free-impl-ref-client.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0119-jev-typed-decision-model-for-compliance-closed-set-fields.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0127-retire-the-okf-code.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0129-laya-temperatures-and-the-sklearn-floor.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0130-deploy-the-self-hosted-model-server-from-the-engine.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0131-model-server-hardening-after-rulewright-review.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0132-model-server-cold-start-from-a-gpu-snapshot.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0133-model-call-deadline-follows-the-timeout-and-a-thinking-cap.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0134-skills-for-product-developers-are-linked-per-project-never-globally.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0135-the-seam-gives-each-event-loop-its-own-async-http-client.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0136-spreadsheet-tables-are-glued-back-across-blank-rows.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0137-generated-answers-state-their-support-and-none-is-an-abstention.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0138-the-engine-reaches-pdfium-through-one-locked-door.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0139-the-agent-harness-substrate-is-engine-scope.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0140-one-model-family-on-metal.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0141-the-hard-split-cuts-between-lines-and-repeats-a-tables-header.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/adr/0142-the-default-writer-keeps-one-edge-per-type-and-endpoints.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/api/README.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/api/harness.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/architecture.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/README.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/design/deontic-applicability-routing.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/design/semantic-subject-segmentation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/design/unify-subject-preprocessing.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0037-closed-vocab-drops-verbatim-values-to-other.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0038-a-clause-node-is-now-created-per-sentence-so-98-percent-of-spans-become-clauses.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0039-the-provision-detector-reads-text-but-docling-puts-the-section-number-in-marker.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0040-covered-subject-is-asked-of-every-provision-so-verbatim-retention-fills-it-with-noise.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0041-leg-b-discards-the-best-dense-matches-on-some-queries.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0042-usage-is-captured-per-call-but-never-returned-so-cost-needs-a-langfuse-round-trip.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0043-a-requirement-carries-no-page-provenance-so-a-finding-cannot-point-into-its-policy.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0044-document-signals-scaffolding-is-shown-to-the-user-as-a-quote-from-their-document.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0045-a-fixed-money-cap-records-no-cap-quantum-so-the-amount-is-only-prose.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0046-appending-a-natural-follow-up-to-a-question-drops-the-clause-type.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0047-an-exact-deepagents-pin-transitively-pins-every-consumer.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/engine-issues/0048-the-pinned-endpoints-latency-tail-makes-agent-runs-undebuggable-from-either-side.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-01_issue-0013-recall-first-actor-gate_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-04_issue-0016-thread-safe-embedder_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-05_tagparse-ingestion-and-granite-4.2_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_issue-0029-idempotent-write-graph_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_issue-0030-entities-by-name_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_rename-run-ad-compliance-check_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0031-followup-failclosed-and-nodrift_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0031-followup-validate-ingested-set_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0031-workspace-document-scope_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0032-span-page-provenance_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0034-invoke-time-document-scope_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-11_issue-0035-followup-derived-guard_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-11_issue-0035-mcp-no-model-tenant_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-14_document-signals-off-citation_0044_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-16_qwen3-27b-single-a100-serving-profile_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-18_fp8-kv-16k-single-a100_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-21_0048-part2-modal-answers_from_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-21_0048-part2-modal-scoping-questions_rulewright.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/misc/.gitkeep +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/plans/Corpus_Acquisition.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/plans/async-migration.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/plans/demo_plan.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/concepts.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/configuration.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/contract_pipeline_explainer.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/corpus_ingest_recipe.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/domain-adaptation/README.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/domain-adaptation/_engine-gaps.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/domain-adaptation/authoring-capabilities.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/domain-adaptation/classification-and-decision-models.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/domain-adaptation/entity-resolution.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/domain-adaptation/evals-from-expert-files.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/domain-adaptation/kg-construction.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/classifier_model_ab.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/compliance_demo.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/compliance_gate_cc7.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/compliance_rung2_cc7.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/dg_model_ab.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/function_gate_recall.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/generation_robustness_b_vs_c.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/nl_to_type_cu-d2.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/ocr_benchmark.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/prod1_readiness.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/prod2_readiness.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/query_side_model_ab.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/silver_granite_vs_gemma4.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/silver_provider_routing.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/evals.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/harness.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/installation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/playbook.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/product/capability_profiles.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/product/contracts_product_roadmap.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/product/engine-api-migration-handoff.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/product/engine_async_api.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/product/new-domain-build-sequence.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/product/seam-adaptation-guide.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/proposals/new-domain-developer-journey.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/proposals/ontology-induction.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/quickstart.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/reference-pack.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/releasing.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/engine-platform/SPEC.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/engine-platform/TASKS.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/engine-prep/plan.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/evals/plan.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/ingestion-hooks/plan.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/langgraph-ingestion/plan.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-arcadedb-separation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.10.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.11.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.12.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.13.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.14.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.3.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.4.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.5.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.6.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.7.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.8.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.9.0.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-reply-2026-10-10-laya-and-sklearn.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/templates/product-starter/CLAUDE.md.template +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/templates/product-starter/README.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/templates/product-starter/dependabot.yml +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/templates/product-starter/playbook.md.template +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/upstream/laya-temperature-range-mismatch.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/acord.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/acord_retrieval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/boundary_residue_gold.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/build_golden.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/compliance_demo/subjects/post_violation.txt +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/condensed_pipeline.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/contract_parity_live.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/contractnli_judge.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/cuad_highlight.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/embedded_eval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/full_pipeline_rerank.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/function_ceiling.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/function_property_rerank.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/function_rerank.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/gate1_chunker_ab.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/gate2_hybrid_rerank.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/golden/relational/set.json +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/golden.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/ground_discriminator_rerank.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/harness.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/ingestion_live_smoke.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/kg_primary.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/kg_property_rerank.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/listwise_rerank.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/multihop.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/nl_to_type.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/relational_eval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/residual_decision_gold.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/segmenter_eval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/semantic_judge_gold.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/test_acord.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/test_acord_retrieval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/test_harness.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/test_multihop_set.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/eval/unit_grouper_eval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/examples/model_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/examples/quickstart.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/plan.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/release-please-config.json +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ab_model_overlap.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/acord_unify.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/acquire_acord.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/acquire_cuad.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/acquire_ecfr.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/acquire_edgar.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/acquire_ftc_255.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/acquire_prod1_corpus.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/audit_reclass_flips.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/author_leg_a_silver_key.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/backfill_affiliations.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/backfill_clause_span_id.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/backfill_edge_source_doc_id.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/backup_kg_to_gcs.sh +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/bootstrap_template_capture.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/bootstrap_typed_edges.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/build_api_docs.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/build_api_docs.sh +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/build_cuad_clause_cache.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/build_function_routing_map.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/build_harness_doc.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_assemble_v2.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_assemble_v3.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_generate_hard_negatives.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_generate_hard_positives.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_generate_training.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_hybrid.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_hybrid2.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_jev_actor.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_jev_claimtypes.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_jev_operative.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_label_spans.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_laya_prep.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_laya_train.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_prep_operative.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_relabel_rubric.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_relabel_rubric2.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/cic1_train_operative.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/compare_extraction_models.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/compliance_actor_gate_smoke.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/compliance_engine_smoke.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/compliance_policy_demo.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/curate_taxonomy_gaps.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/dg_model_ab.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/diagnose_acord_knn_expansion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/diagnose_acord_knn_rerank.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/diagnose_acord_leg_pool.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/diagnose_acord_legs.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/diagnose_acord_pool.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/diagnose_acord_relstructure.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/diagnose_acord_retrieval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/distill/eval_all.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/distill/eval_ce.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/distill/eval_listwise_b.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/distill/export_ce_dataset.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/distill/extract_features.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/distill/listwise_variants.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/distill/relational_features.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/distill/train_ce.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/distill/train_modal.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/enrich_edgar_candidates.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/eval_chunking_ab.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/eval_compliance_gold.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/extract_arcadedb_docs.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/fetch_reference_models.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/generate_contract_python.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/git_post_commit_graphify.sh +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/granite_chunker_assess.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/graph_status.sh +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ingest_acord.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ingest_compliance_async_prod2.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ingest_compliance_document_prod2.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ingest_compliance_prod2.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ingest_cuad.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ingest_cuad_full.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ingest_ftc_compliance.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ingest_prod1.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ingest_prod1_async.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ingest_smoke.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/install_git_hooks.sh +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/label_new_functions.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/legb_function_gate_recall.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/make_compliance_fixtures.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/make_compliance_gold.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/mcp_compliance_agent_demo.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/mcp_intra_document_qa_smoke.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/mcp_query_legs_agent_demo.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/measure_generation_robustness.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/measure_harness_genericity.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/measure_silver.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/merge_docs_into_framework.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/migrate_silver_evidence_autotag.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/migrate_span_fields.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/mine_scarce_functions.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_arcadedb.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_backfill.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_exception_linking.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_gemma4_vllm.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_gemma4_vllm_snapshot.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_granite_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_granite_throughput.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_granite_vllm_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_query_app.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_qwen3_27b_bench.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_qwen3_27b_snapshot.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/modal_stack_a100.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ocr_benchmark.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ocr_preprocess.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/ontology_dimension_check.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/phase_a_leg_validate.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/populate_clause_kg.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/populate_entity_graph.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/populate_entity_graph_extracted.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/populate_property_store.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/prep_relational_verification.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/publish_manifests.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/reclassify_kg.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/refresh_framework_graph.sh +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/revert_reclass_flips.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/run_acord_retrieval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/run_clause_exception_linking.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/semantic_judge_live_validate.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/semantic_judge_probe.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/snapshot_leg_a_eval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/stack_correctness_validate.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/table_retrieval_smoke.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/train_function_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/train_legalbert_function.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/train_legalbert_modal.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/typed_rerank_validate.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/verify_wheel_install.sh +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/vllm_extraction_ab.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/vllm_kg_query_validate.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/scripts/vllm_raw_diagnostic.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-a-product-backend/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-a-product-frontend/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-a-product-frontend/scaffold/ShellLayout.test.tsx +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-a-product-frontend/scaffold/ShellLayout.tsx +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-a-product-frontend/scaffold/surfaces.tsx +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-an-agent-harness/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-an-ingestion-capability/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/laya/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/qwen-vllm-modal/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/specifying-a-product-on-the-engine/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/using-the-rag-wright-engine/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/agents.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/answers.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/config.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/discover.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/documents.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/ids.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/invoke.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/kg.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/mcp.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/tracing.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/usage.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/api/workspace.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/answer_generator.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/ard.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/chunk_read.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/chunk_write.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/disambiguation.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/document_parse.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/document_scope.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/entity_resolution.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/fusion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/graph_query.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/graph_storage.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/hybrid_search.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/invoke.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/jev_decision.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/manifests.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/parse_audit.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/parsing.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/registry.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/remote_encoders.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/retrieval_core.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/rlm_chunking.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/scan_quality.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/sheet_tables.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/span_search.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/vision_to_text.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/contracts/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/contracts/chunk.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/contracts/evals.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/contracts/extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/contracts/graph.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/contracts/identifiers.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/contracts/ingestion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/contracts/provenance.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/contracts/span.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/corpus/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/corpus/canonicalize.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/corpus/document_parser.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/corpus/embedded.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/corpus/http.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/evals/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/evals/gold.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/evals/langfuse_backend.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/evals/runner.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/evals/scorers.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/accounting.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/agent.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/batch.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/clarify.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/confirm.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/decisions.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/definition.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/dispatch.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/errors.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/events.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/filesystem.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/grading.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/interpreter.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/memory.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/models.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/rules.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/runs.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/scope.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/seen.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/skills.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/thinking.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/tiers.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/tracing.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/withhold.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/harness/workers.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/ingestion/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/ingestion/builder.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/ingestion/evaluate.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/ingestion/group.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/ingestion/layout.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/ingestion/segment.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/ingestion/tables.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/models/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/models/model_servers.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/models/profiles.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/models/seam.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/models/tag_structured.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/models/tracing.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/models/usage.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/models/weights.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/ontology/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/ontology/pack_schema.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/ontology/registry.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/pack_sdk/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/invokers.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/pack.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/options.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/pack.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/function_families.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/packs/reference_seam.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/py.typed +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/skills/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/skills/generation/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/skills/generation/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/skills/rlm/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/skills/rlm/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/skills/rlm/agent.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/spans/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/spans/page_map.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/store/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/store/chunk_text.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/subgraphs/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/subgraphs/observability.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/subgraphs/scaffold.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/util/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/util/concurrent.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/util/pdfium.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/src/rag_wright/util/spacy_model.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_agent_chat_model.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_agent_chat_model_live.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_answers_exports.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_api_embedder_ps39.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_bytes_ingest.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_capability_reexports.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_decision_swap_doc_example.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_discover.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_documents.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_drop_workspace.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_drop_workspace_live.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_e2e.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_invoke.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_kg.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_mcp.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_metering_tracing_exports.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_migrate_span_fields.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_model_role_export.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_open_workspace_reconfig.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_options.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_pack_sdk.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_pack_sdk_segmenter.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_pack_store.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_pdf_page_count.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_public_gaps_ps38.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_tracing_helpers_ps32.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_usage.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_workspace.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/api/test_workspace_models.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/arch/domain_vocabulary_baseline.json +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/arch/test_api_docs_current.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/arch/test_doc_references.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/arch/test_engine_domain_vocabulary.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/arch/test_import_contracts.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/arch/test_lock_version.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/arch/test_packs_use_store_primitives.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/arch/test_pdfium_door.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/arch/test_shipped_skills.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/async_helpers.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_answer_generator.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_answer_generator_async.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_assertion_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_authoring_contract.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_chunk_read.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_chunk_write.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_claim_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_clause_exception_linking.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_compliance_judgment.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_compliance_store.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_contract_kg_serve.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_contract_kg_store.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_dg_adapter.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_dg_async.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_dg_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_dg_model_seam.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_dg_private.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_disambiguation.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_document_scope.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_embedding.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_embedding_profiles.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_entity_resolution.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_fusion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_graph_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_graph_query.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_graph_storage.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_highlight_serve.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_hybrid_search.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_jev_decision.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_manifest_validation.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_manifests.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_parse_audit.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_parsing.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_parties_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_query_function_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_query_understanding.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_registry.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_remote_encoders.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_repair_partition.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_requirement_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_reranking.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_retrieval_core.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_rlm_chunking.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_rlm_chunking_async.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_rlm_method.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_rlm_synthesis.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_runtime_registry.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_scan_quality.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_span_relevance_judgment.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_span_search.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_structural_model_fallback.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_tiered_ocr.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/capabilities/test_vlm_ocr.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/compliance_fakes.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/conftest.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_canonical_source_doc_id.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_chunk_record.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_compliance.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_function.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_function_routing.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_identifiers.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_ingestion_hooks.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_jurisdiction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_ontology.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_property.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_provenance.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/contracts/test_value_match.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/_ooxml_fixtures.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/test_canonicalize.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/test_cuad.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/test_cuad_ingestion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/test_document_parser.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/test_edgar.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/test_embedded.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/test_gcs_ingestion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/test_http.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/test_parse_wire2.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/corpus/test_selection.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/eval/test_contractnli_judge.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/eval/test_cuad_highlight_metrics.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/eval/test_kg_property_rerank.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/eval/test_nl_to_type_metrics.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/eval/test_relational_eval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/evals/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/evals/test_gold_contracts.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/evals/test_gold_import.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/evals/test_langfuse_backend.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/evals/test_runner.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/evals/test_scorer_parity.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/evals/test_scorers_a.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/evals/test_scorers_b.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/evals/test_scorers_c.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/evals/test_scorers_d.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity.json +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity_blank.pdf +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity_cover_with_attachment.pdf +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity_db_with_a_broken_report.xlsx +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity_db_with_reports.xlsx +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity_grid.xlsx +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/ingestion/textile_test_report.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/leg_a_silver/README.md +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/fixtures/table-bearing-contract.pdf +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/foundation/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/foundation/test_arcadedb_hybrid.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/foundation/test_model_seam_structured.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/harness/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/harness/test_greenfield_conformance.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/harness/test_harness_accounting.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/harness/test_harness_engine_wiring.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/harness/test_harness_genericity.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/harness/test_harness_live.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/harness/test_harness_recorder.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/harness/test_harness_thinking.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_aevaluate.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_builder.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_concurrency_ceiling.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_default_writer_ensures_edges.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_document_metadata.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_evaluate.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_evaluate_labels.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_graph_live.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_graph_parity.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_layout_segmenter.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_sheet_continuations.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_split_tables.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_spreadsheet_content.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_table_rows.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_tuning.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_unit_grouper.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_unit_representative.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_unreached_rows.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ingestion/test_write_count.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/journey/incidents_domain.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/journey/incidents_pack.ttl +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/journey/test_incidents_journey.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/journey/test_pack_schema.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/mcp/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/mcp/test_compliance_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/mcp/test_intra_document_qa_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/mcp/test_relational_qa_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_async_infra.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_classifier_heads_load_clean.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_model_servers.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_models_dir.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_no_gemma_default.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_profile_routing.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_profile_seam.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_seam_async.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_seam_deadline_and_cap.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_seam_event_loops.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_seam_retry.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_seam_stream.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_serving_seam.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_serving_wiring.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_tag_structured.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_tag_structured_async.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_tracing.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/models/test_usage.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ontology/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ontology/test_clause_template.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ontology/test_derivation.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ontology/test_entity_taxonomy.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ontology/test_template_captured_in_ttl.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/reference/test_compliance_reference.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/reference/test_contract_seam.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/scripts/test_eval_chunking_ab.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/scripts/test_eval_classifier_ab.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/scripts/test_fetch_reference_models.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/scripts/test_generation_robustness_errors.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/skills/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/skills/test_creating_evals_skill_example.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/skills/test_ingestion_skill_example.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_boundary.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_classifier_property_extractor.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_clause_function_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_clause_function_classifier_async.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_clause_kg_extractor.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_clause_kg_extractor_async.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_dim_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_dim_fleet_live.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_function_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_hybrid_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_hybrid_property_extractor.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_legalbert_classifier.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_model_capabilities.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_new_function_labels.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_page_map.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_property_extractor.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_property_grounding.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_reclassify.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_residual_decision.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_scarce_function_labels.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_segment.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_segmentation_vocab.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_semantic_judge.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_setfit_clause_adapter.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_setfit_probabilities.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_span_offsets.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_stage_labels_0005.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_symbolic_validation.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/spans/test_tag_clause_extractor.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_affiliation_backfill.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_arcadedb_clause_kg.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_arcadedb_contract.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_arcadedb_property.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_arcadedb_requirement_sources.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_arcadedb_schema.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_arcadedb_span.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_chunk_text.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_concurrent_writes.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_contract_kg_store_live.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_document_metadata_live.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_document_scope.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_engine_domain_neutral.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_entities_by_name.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_kg_contains.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_kg_edges.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_kg_identifiers.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_kg_mutations.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_kg_read.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_kg_write.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_kg_write_ensure_edges.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_neutral_schema.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_pack_schema_properties.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_pooled_client.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_store_create_flag.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/store/test_write_graph_idempotent.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_async_ingestion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_clause_results.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_compliance_check.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_compliance_ingestion.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_contract_write_retry.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_graph_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_ingest_knobs.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_intra_document_qa.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_observability.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_partial_entry_contract.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_relational_qa.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_requirement_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_scaffold.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_semantic_chunking.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/test_backfill_clause_span_id.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/test_dg_model_ab.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/test_populate_clause_kg.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/test_populate_entity_graph.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/util/__init__.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/util/test_concurrent.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/util/test_devices.py +0 -0
- {rag_wright-0.17.1 → rag_wright-0.17.2}/tests/util/test_spacy_model.py +0 -0
|
@@ -4,6 +4,14 @@ All notable changes to RAG_Wright are documented here. The format follows
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project aims to follow
|
|
5
5
|
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.17.2](https://github.com/fzaidi-dai/RAG_Wright/compare/0.17.1...0.17.2) (2026-11-11)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* **PS-64:** a float is written and compared as a double, so an unchanged DOUBLE settles ([a337890](https://github.com/fzaidi-dai/RAG_Wright/commit/a33789085bb6623890b26fb0e361ed01bb8d5e0b))
|
|
13
|
+
* **PS-65:** one loaded BGE model per process, shared with its one lock ([676d0a5](https://github.com/fzaidi-dai/RAG_Wright/commit/676d0a512ecd4494e8fff2e5f5266958b0a1f2d9))
|
|
14
|
+
|
|
7
15
|
## [0.17.1](https://github.com/fzaidi-dai/RAG_Wright/compare/0.17.0...0.17.1) (2026-11-07)
|
|
8
16
|
|
|
9
17
|
|
|
@@ -55,7 +55,9 @@ The failure mode to avoid, which has happened before: a command fails with "modu
|
|
|
55
55
|
|
|
56
56
|
## Start of every session
|
|
57
57
|
|
|
58
|
-
> **CURRENT STATE (2026-11-
|
|
58
|
+
> **CURRENT STATE (2026-11-11): PS-64 and PS-65 done, unreleased** (TexWright: a float is written and compared as a
|
|
59
|
+
> double, ADR-0143; one loaded BGE model per process with its one lock, ADR-0144). Next: PS-48, EV-7, PS-30, PS-33. Before it,
|
|
60
|
+
> **`rag-wright` 0.17.1 is RELEASED** (PR #22; PS-63, TexWright's G8 request: the default record writer keeps one
|
|
59
61
|
> edge per type and endpoints, `kg_write(..., ensure_edges=True)`, ADR-0142). Next: PS-48, EV-7, PS-30, PS-33. Before it,
|
|
60
62
|
> **`rag-wright` 0.17.0 is RELEASED** (PR #21; TexWright's request: PS-60 a table over
|
|
61
63
|
> the chunk cap is split between lines with its header repeated, so every row keeps its span and `TableRow` (ADR-0141);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rag-wright
|
|
3
|
-
Version: 0.17.
|
|
3
|
+
Version: 0.17.2
|
|
4
4
|
Summary: A domain-retargetable, open-core engine for hybrid retrieval + knowledge-graph RAG: parsing, chunking, embedding, hybrid search, reranking, graph extraction, entity resolution, ontology-driven knowledge, and a capability runtime.
|
|
5
5
|
Project-URL: Homepage, https://github.com/fzaidi-dai/RAG_Wright
|
|
6
6
|
Project-URL: Repository, https://github.com/fzaidi-dai/RAG_Wright
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# ADR-0143: A float is written and compared as a double
|
|
2
|
+
|
|
3
|
+
**Status:** accepted · **Date:** 2026-11-11 · **Related:** PS-64, TexWright's request
|
|
4
|
+
`2026-11-09-kg-update-rewrites-unchanged-doubles.md`, DD-1a/DD-1b (`kg_read` / `kg_write` encoding), ER-1 (`Range`),
|
|
5
|
+
PS-54 (the shared filter grammar)
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The store put a Python float into SQL as `repr(value)`, a bare decimal literal. ArcadeDB 26.7 reads a bare decimal
|
|
10
|
+
literal as a 32-bit FLOAT (probed live). A DOUBLE or DECIMAL column holding a value not exact in binary, such as
|
|
11
|
+
0.9523, therefore never equalled it: `kg_update`'s "only rows that differ" test was always true, so a derive step
|
|
12
|
+
rewrote 50 of 50 rows on every pass; equality, membership and `Range(ge=v, le=v)` filters on that column found 0 of
|
|
13
|
+
50; and a float on a property the pack does not declare, or on an edge, was stored at 32 bits (123456789.12345679
|
|
14
|
+
read back as 123456790.0). No pack in the engine, RuleWright or TexWright declares a FLOAT column; 54 declare DOUBLE.
|
|
15
|
+
|
|
16
|
+
## Decision
|
|
17
|
+
|
|
18
|
+
- A float is written and compared as a double literal, `repr(value) + "d"`, which ArcadeDB keeps at 64 bits (probed
|
|
19
|
+
for exponents, negatives, subnormals and 17 significant digits). Only a field the pack declares `FLOAT` gets the
|
|
20
|
+
bare literal, since a 32-bit column does not equal a double either.
|
|
21
|
+
- The filter grammar takes the queried type's declared property types, so a filter encodes each value as its
|
|
22
|
+
column is declared: `kg_read`, `kg_count`, `kg_delete`, `kg_update` and `kg_edges`' start node.
|
|
23
|
+
- On a field the pack does not declare, a float equality or membership filter matches either width,
|
|
24
|
+
`(f = Xd OR f = X)`, so values stored at 32 bits before this change are still found. `kg_update` on such a field
|
|
25
|
+
rewrites an old 32-bit value once, as a double, and then settles.
|
|
26
|
+
|
|
27
|
+
## Consequences
|
|
28
|
+
|
|
29
|
+
- An unchanged measurement is a no-op for `kg_update`; filters on a DOUBLE find their values; new undeclared floats
|
|
30
|
+
keep full precision. Live, the 50-row derive step changes 50 then 0 rows (50 then 50 before).
|
|
31
|
+
- Edge-property and target filters in `kg_edges` have no declared types, so they use the either-width form.
|
|
32
|
+
- Out of scope and unchanged: the hybrid-search chunk filter (`hybrid_search(filters=)`, its own literal encoder)
|
|
33
|
+
and the vector arrays (`ARRAY_OF_FLOATS`, 32-bit by declaration).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# ADR-0144: One loaded BGE model per process, with its one lock
|
|
2
|
+
|
|
3
|
+
**Status:** accepted · **Date:** 2026-11-11 · **Related:** PS-65, TexWright's request
|
|
4
|
+
`2026-11-09-the-embedder-model-is-rebuilt-for-every-workspace.md`, issue 0016 (in-place mutation on encode), PS-52
|
|
5
|
+
(the workspace embedder's lazy build), PS-55 / ADR-0140 (`METAL_LOCK`)
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
Every `BGEM3Embedder` and `BGEReranker` loaded its own copy of its model: each workspace's query embedder, each
|
|
10
|
+
ingestion pipeline's embedder, and the reference pack's `intra_document_qa`, which builds a reranker per call. Nothing
|
|
11
|
+
chose this; PS-52's lock only makes one handle's lazy build atomic. Live, one process holding three workspaces, an
|
|
12
|
+
ingestion pipeline and two rerankers peaked at 2816 MB, each repeat costing 1 to 1.5 s. The lock a wrapper holds
|
|
13
|
+
was per instance, so two wrappers of one shared model would each lock their own lock and run the model together,
|
|
14
|
+
which issue 0016 shows segfaults.
|
|
15
|
+
|
|
16
|
+
## Decision
|
|
17
|
+
|
|
18
|
+
- `rag_wright.util.devices.shared_model(key, device, build)` keeps one loaded model per key -- (kind, model name,
|
|
19
|
+
precision, device) -- for the life of the process, built once under a guard, and returns it WITH its one lock
|
|
20
|
+
(`model_lock`: `METAL_LOCK` on Metal, else a lock of its own). Both BGE wrappers take their model and lock from it,
|
|
21
|
+
so every wrapper of a model serializes on the same lock. An injected `model=` is not shared.
|
|
22
|
+
- The wrappers stay per workspace; only the model and its lock are shared.
|
|
23
|
+
|
|
24
|
+
## Consequences
|
|
25
|
+
|
|
26
|
+
- Live, the same process peaks at 1534 MB and every repeat is free; the encodes through two wrappers from 8 threads
|
|
27
|
+
equal the serial vectors.
|
|
28
|
+
- Off Metal, two tenants' encodes on one model now queue on its lock where each had its own model before. Encoding is
|
|
29
|
+
a small slice of an ingest and Metal already serialized everything, so memory and load time win. A tenant that needs
|
|
30
|
+
its own model runs in its own process.
|
|
31
|
+
- A loaded model is never freed before the process exits; dropping a workspace does not release it.
|
|
@@ -198,4 +198,6 @@ framing that still appears in older ADRs and the root `SPEC.md`/`plan.md`.
|
|
|
198
198
|
0139 The agent harness substrate is engine scope ·
|
|
199
199
|
0140 One model family on Metal, under one process lock ·
|
|
200
200
|
0141 The cap's hard split cuts between lines and repeats a table's header ·
|
|
201
|
-
0142 The default record writer keeps one edge per type and endpoints
|
|
201
|
+
0142 The default record writer keeps one edge per type and endpoints ·
|
|
202
|
+
0143 A float is written and compared as a double ·
|
|
203
|
+
0144 One loaded BGE model per process, with its one lock
|
|
@@ -120,7 +120,7 @@ The graph query capability's output: candidate answers as evidence for fusion (F
|
|
|
120
120
|
|
|
121
121
|
The real reranker: a `sentence_transformers.CrossEncoder` over `bge-reranker-v2-m3` (PS-56), scoring raw logits (no activation), 512 tokens per pair as before.
|
|
122
122
|
|
|
123
|
-
THREAD-SAFE (engine issue 0016): a shared reranker is guarded by an instance lock -- defense-in-depth for any concurrent `score` caller (its FlagEmbedding predecessor mutated the model in place on every call). It is in the BGE family: its device follows the embedder's (`EMBED_DEVICE`), and on Metal its lock is the process-wide one the embedders hold (PS-55), so a rerank never runs on Metal beside an embed.
|
|
123
|
+
THREAD-SAFE (engine issue 0016): a shared reranker is guarded by an instance lock -- defense-in-depth for any concurrent `score` caller (its FlagEmbedding predecessor mutated the model in place on every call). It is in the BGE family: its device follows the embedder's (`EMBED_DEVICE`), and on Metal its lock is the process-wide one the embedders hold (PS-55), so a rerank never runs on Metal beside an embed. Like the embedder, the loaded model is shared by every reranker of the same (model, precision, device) in the process, with its one lock (PS-65).
|
|
124
124
|
|
|
125
125
|
#### `BGEReranker.score(self, query: 'str', passages: 'list[str]') -> 'list[float]'`
|
|
126
126
|
|
|
@@ -46,6 +46,9 @@ ex:LinkedTo a eng:EntityRelationshipType ; rdfs:label "Linked To" .
|
|
|
46
46
|
|
|
47
47
|
- **Declare every type your extractor writes.** The store does not create types on write, so a `kg_write` to an
|
|
48
48
|
undeclared vertex or edge type fails.
|
|
49
|
+
- **A measurement is a `DOUBLE`.** A Python float is written as a 64-bit double, so it reads back, filters
|
|
50
|
+
(equality, membership, `Range`) and compares in `kg_update` exactly; an undeclared float property is stored as a
|
|
51
|
+
double too. Declare `FLOAT` only for a value you mean to keep at 32 bits.
|
|
49
52
|
- **Record vertices carry provenance.** Declare `span_id:STRING` and `confidence:STRING` on each record type: the
|
|
50
53
|
engine's `check_extraction` requires every `span_id` to be a span of the unit, a non-empty extraction to cite at
|
|
51
54
|
least once, and any `confidence` to be a `ConfidenceTag` (`EXTRACTED`, `INFERRED` or `AMBIGUOUS`)
|
|
@@ -135,4 +135,6 @@ in two at the PS-6 gate so the store rewrite is its own visible task. One task,
|
|
|
135
135
|
| PS-61 | TexWright's question in the same request: the default segmenter `segment_layout` is on neither public tier, so a pack cannot wrap it | export it on `rag_wright.pack_sdk` | done 2026-11-05: `pack_sdk.segment_layout` (the engine's own object); the wrap-the-default pattern in `kg-construction.md` and the ingestion skill; a pack segmenter delegating to it runs through `build_ingestion` |
|
|
136
136
|
| PS-62 | TexWright, same request: the loss was silent (every `check_*` passed) | a record table whose rows do not each reach a unit with its `TableRow` is reported in the `IngestionReport` | done 2026-11-05: `DocumentReport.unreached_table_rows` (`table_ref`, `sheet`, `reached`, `total`, `missing`) and an `[ingest] warning:` line; a block table is not a loss; live, the pre-PS-60 cut on the workbook reports 75 of 280 rows reached (205 missing, matching the records lost), the new cut reports nothing |
|
|
137
137
|
| PS-63 | TexWright, `2026-10-15-g8-duplicates-edges-within-one-ingest.md` (gap G8): the default writer created every edge, so an edge several units emit (an entity several rows mention) landed once per unit, within one ingest and on every re-ingest | the default writer leaves one edge per (type, from node, to node); `api.kg_write` exposes the same; `kg_write` without the flag unchanged | done 2026-11-07: `kg_write(..., ensure_edges=)` (ADR-0142), the default writer passes it, `api.kg_write` exposes it; G8 closed, the ingestion skill and the KG-construction guide updated; live, TexWright's shape (140 children on two rows each, 20 parents) leaves 140 edges on an ingest and a re-ingest (280 then 560 before) |
|
|
138
|
+
| PS-64 | TexWright, `2026-11-09-kg-update-rewrites-unchanged-doubles.md`: ArcadeDB reads a bare decimal literal as a 32-bit FLOAT, so `kg_update` rewrote an unchanged DOUBLE, filters on a DOUBLE found nothing and an undeclared float was stored at 32 bits | a float written and compared as a double unless declared FLOAT; filters encode by the declared type; an undeclared field still matches old 32-bit values | done 2026-11-11: `_kg_double`, the filter grammar takes declared types (ADR-0143); live, a 50-row derive step changes 50 then 0 rows (50 then 50 before), equality / membership / `Range` find 50 of 50 (0 before) |
|
|
139
|
+
| PS-65 | TexWright, `2026-11-09-the-embedder-model-is-rebuilt-for-every-workspace.md`: every workspace, ingestion pipeline and `intra_document_qa` call loaded its own BGE model (not a design choice; PS-52's lock is per handle) | one loaded model per (model, precision, device) per process, every wrapper of it on its one lock | done 2026-11-11: `util.devices.shared_model` (ADR-0144) behind `BGEM3Embedder` and `BGEReranker`; `docs/workspaces.md` item 7; live, three workspaces + a pipeline + two rerankers peak at 1534 MB (2816 before), each repeat 0 s (1 to 1.5 s), concurrent encodes through two wrappers equal the serial vectors |
|
|
138
140
|
| PS-48 | Port the agent harness's substrate behaviour tests from RuleWright onto the engine's fabric fixture (ADR-0139 handover): of RuleWright's 553 harness-touching tests, 314 test the substrate (port), 213 RuleWright's composition (stay), 25 live (1 substrate: OpenRouter cost accounting). Seven gated sub-tasks: **a** shared `tests/harness/fabric.py` + scripting/slow/hanging/failing fake models + `InMemorySaver` helpers, then events, skills, clarify (~23); **b** models and errors (~42); **c** runs, confirm, continuation (~32); **d** decisions and rules (~51); **e** grading (~32); **f** seen and memory (~41); **g** workers, batch, dispatch, tiers, agent wiring, filesystem, interpreter, withhold + the live accounting test (~93, may split). Ambiguous tests split, not moved whole; a ported test failing on engine code is a substrate defect fixed in that sub-task; deadline globals via monkeypatch; no new dependencies. Follow-up (owner RuleWright): retire its substrate duplicates once ported | each sub-task's ported tests green on the fabric fixture | todo (proposed; awaiting go-ahead) |
|
|
@@ -67,6 +67,11 @@ torch model takes its device from `pack_sdk.torch_device`, which never picks Met
|
|
|
67
67
|
but the metadata is silently dropped (an unknown field is ignored), so documents are ingested without it.
|
|
68
68
|
6. **One process, many workspaces, one set of process settings.** Where tenants need a different serving backend,
|
|
69
69
|
decision model, timeouts or classifier weights, run a process per such set.
|
|
70
|
+
7. **One loaded model per process, not per tenant.** The in-process BGE-M3 embedder and BGE reranker are loaded once
|
|
71
|
+
per (model, precision, device) and shared by every workspace and ingestion pipeline in the process (about 1 GB for
|
|
72
|
+
the embedder and 0.3 GB for the reranker, whatever the number of tenants). Their calls queue on that model's one
|
|
73
|
+
lock, so size throughput, not memory, per tenant; a tenant that needs its own model runs in its own process. A
|
|
74
|
+
loaded model stays until the process exits.
|
|
70
75
|
|
|
71
76
|
## Changing a workspace's configuration
|
|
72
77
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "rag-wright"
|
|
3
|
-
version = "0.17.
|
|
3
|
+
version = "0.17.2"
|
|
4
4
|
description = "A domain-retargetable, open-core engine for hybrid retrieval + knowledge-graph RAG: parsing, chunking, embedding, hybrid search, reranking, graph extraction, entity resolution, ontology-driven knowledge, and a capability runtime."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12,<3.13"
|
|
@@ -80,25 +80,32 @@ class BGEM3Embedder:
|
|
|
80
80
|
driving one shared model swap the same parameter-tensor storage under each other and SEGFAULT the interpreter
|
|
81
81
|
(not a catchable exception). The engine SHARES one `Embedder` across concurrent-document ingestion
|
|
82
82
|
(`run_job(max_concurrency=...)` -> per-document `encode_batch`) and across `embed_chunks`' per-chunk thread
|
|
83
|
-
fan-out. So every model call is serialized by
|
|
83
|
+
fan-out. So every model call is serialized by the model's lock. The lock guards ONLY `self._model.encode`
|
|
84
84
|
(the numpy results are per-call, thread-local); the serialized section is the CPU/GPU encode, which is a small
|
|
85
85
|
slice of ingest time -- the concurrency worth overlapping is the network-bound extraction, not the encode.
|
|
86
|
-
On Metal the lock is the process-wide `METAL_LOCK` instead (PS-55): Metal is not safe for concurrent use
|
|
87
|
-
|
|
86
|
+
On Metal the lock is the process-wide `METAL_LOCK` instead (PS-55): Metal is not safe for concurrent use.
|
|
87
|
+
|
|
88
|
+
ONE MODEL PER PROCESS (PS-65): the loaded model is shared by every embedder of the same (model, precision, device)
|
|
89
|
+
-- the query embedder, each workspace's, each ingestion pipeline's -- with its one lock (`shared_model`), so a
|
|
90
|
+
second workspace costs no load time and no memory, and their encodes queue on that lock. An injected `model=`
|
|
91
|
+
is never shared."""
|
|
88
92
|
|
|
89
93
|
def __init__(self, model_name: str = "BAAI/bge-m3", *, use_fp16: bool = False,
|
|
90
94
|
device: str | None = None, batch_size: int = 64, model: object | None = None) -> None:
|
|
91
95
|
self._batch_size = batch_size # cross-item independent, so batching never changes a vector, only speed
|
|
92
|
-
from rag_wright.util.devices import model_lock
|
|
96
|
+
from rag_wright.util.devices import model_lock, shared_model
|
|
93
97
|
|
|
94
98
|
resolved = _resolve_device(device)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
self._model = model
|
|
99
|
+
if model is not None: # injected (hermetic tests) -- avoids loading the real model; its own lock
|
|
100
|
+
self._model, self._lock = model, model_lock(resolved)
|
|
98
101
|
else:
|
|
99
|
-
|
|
102
|
+
def build() -> object:
|
|
103
|
+
from FlagEmbedding import BGEM3FlagModel
|
|
104
|
+
|
|
105
|
+
return BGEM3FlagModel(model_name, use_fp16=use_fp16, devices=resolved)
|
|
100
106
|
|
|
101
|
-
|
|
107
|
+
# PS-65: one model per (model, precision, device) in the process, with its one lock (issue 0016, PS-55)
|
|
108
|
+
self._model, self._lock = shared_model(("bge-m3", model_name, use_fp16, resolved), resolved, build)
|
|
102
109
|
|
|
103
110
|
def encode_dense(self, text: str) -> list[float]:
|
|
104
111
|
with self._lock: # issue 0016
|
|
@@ -70,25 +70,30 @@ class BGEReranker:
|
|
|
70
70
|
THREAD-SAFE (engine issue 0016): a shared reranker is guarded by an instance lock -- defense-in-depth for any
|
|
71
71
|
concurrent `score` caller (its FlagEmbedding predecessor mutated the model in place on every call). It is in the
|
|
72
72
|
BGE family: its device follows the embedder's (`EMBED_DEVICE`), and on Metal its lock is the process-wide one
|
|
73
|
-
the embedders hold (PS-55), so a rerank never runs on Metal beside an embed.
|
|
73
|
+
the embedders hold (PS-55), so a rerank never runs on Metal beside an embed. Like the embedder, the loaded model is
|
|
74
|
+
shared by every reranker of the same (model, precision, device) in the process, with its one lock (PS-65)."""
|
|
74
75
|
|
|
75
76
|
def __init__(self, model_name: str = DEFAULT_RERANKER_MODEL, *, use_fp16: bool = False,
|
|
76
77
|
device: str | None = None, model: object | None = None) -> None:
|
|
77
78
|
from rag_wright.capabilities.embedding import _resolve_device
|
|
78
|
-
from rag_wright.util.devices import model_lock
|
|
79
|
+
from rag_wright.util.devices import model_lock, shared_model
|
|
79
80
|
|
|
80
81
|
resolved = _resolve_device(device)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
self._model = model
|
|
82
|
+
if model is not None: # injected (hermetic tests); its own lock
|
|
83
|
+
self._model, self._lock = model, model_lock(resolved)
|
|
84
84
|
else:
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
85
|
+
def build() -> object:
|
|
86
|
+
import torch
|
|
87
|
+
from sentence_transformers import CrossEncoder
|
|
88
|
+
|
|
89
|
+
loaded = CrossEncoder(model_name, device=resolved, max_length=512,
|
|
90
|
+
activation_fn=torch.nn.Identity()) # raw logits, as FlagEmbedding gave
|
|
91
|
+
if use_fp16 and resolved != "cpu":
|
|
92
|
+
loaded.model.half()
|
|
93
|
+
return loaded
|
|
94
|
+
|
|
95
|
+
# PS-65: one model per (model, precision, device) in the process, with its one lock (issue 0016, PS-55)
|
|
96
|
+
self._model, self._lock = shared_model(("bge-reranker", model_name, use_fp16, resolved), resolved, build)
|
|
92
97
|
|
|
93
98
|
def score(self, query: str, passages: list[str]) -> list[float]:
|
|
94
99
|
if not passages:
|
|
@@ -162,19 +162,26 @@ def _str_array(values: Iterable[str]) -> str:
|
|
|
162
162
|
return "[" + ",".join(_sql_str(v) for v in values) + "]"
|
|
163
163
|
|
|
164
164
|
|
|
165
|
-
def
|
|
166
|
-
"""
|
|
165
|
+
def _kg_double(value: object) -> str:
|
|
166
|
+
"""A Python float as an ArcadeDB DOUBLE literal (PS-64): a bare `0.9523` is read as a 32-bit FLOAT, which never
|
|
167
|
+
equals the stored double and stores an undeclared field at ~7 digits; the `d` suffix keeps all 64 bits."""
|
|
168
|
+
return repr(float(value)) + "d"
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def _kg_sql_value(value: object, declared_type: Optional[str] = None) -> str:
|
|
172
|
+
"""Serialize a scalar for `kg_read` (DD-1a): bool/int native, a float a double literal unless the field is declared
|
|
173
|
+
FLOAT (PS-64), everything else a quoted string."""
|
|
167
174
|
if isinstance(value, bool):
|
|
168
175
|
return "true" if value else "false"
|
|
169
176
|
if isinstance(value, int):
|
|
170
177
|
return str(value)
|
|
171
178
|
if isinstance(value, float):
|
|
172
|
-
return repr(value)
|
|
179
|
+
return repr(value) if (declared_type or "").upper() == "FLOAT" else _kg_double(value)
|
|
173
180
|
return _sql_str(str(value))
|
|
174
181
|
|
|
175
182
|
|
|
176
|
-
def _kg_sql_array(values: list) -> str:
|
|
177
|
-
return "[" + ",".join(_kg_sql_value(v) for v in values) + "]"
|
|
183
|
+
def _kg_sql_array(values: list, declared_type: Optional[str] = None) -> str:
|
|
184
|
+
return "[" + ",".join(_kg_sql_value(v, declared_type) for v in values) + "]"
|
|
178
185
|
|
|
179
186
|
|
|
180
187
|
def _kg_sql(value: object) -> str:
|
|
@@ -187,7 +194,7 @@ def _kg_sql(value: object) -> str:
|
|
|
187
194
|
if isinstance(value, int):
|
|
188
195
|
return str(value)
|
|
189
196
|
if isinstance(value, float):
|
|
190
|
-
return
|
|
197
|
+
return _kg_double(value) # PS-64
|
|
191
198
|
if isinstance(value, (list, tuple)):
|
|
192
199
|
return "[" + ",".join(_kg_sql(v) for v in value) + "]"
|
|
193
200
|
return _sql_str(str(value))
|
|
@@ -245,12 +252,15 @@ def _kg_check_edge(e: Any) -> None:
|
|
|
245
252
|
|
|
246
253
|
|
|
247
254
|
def _kg_where_terms(where: Optional[dict[str, object]],
|
|
248
|
-
key_range: Optional[tuple[str, object, object]] = None
|
|
255
|
+
key_range: Optional[tuple[str, object, object]] = None,
|
|
256
|
+
types: Optional[dict[str, str]] = None) -> Optional[list[str]]:
|
|
249
257
|
"""The shared KG filter grammar (`kg_read`, `kg_edges`, `kg_count` / `kg_delete` / `kg_update`): a scalar is
|
|
250
258
|
equality, a list is membership, `NOT_NULL` is presence, a `Range` is its comparisons (ER-1), a `Contains` is a
|
|
251
259
|
literal substring test (`indexOf`, not `LIKE`, whose `%` `_` `?` are wildcards; PS-54);
|
|
252
260
|
`key_range=(field, lo, hi)` adds `field >= lo AND field < hi`. Returns the AND-ed terms, or None when a membership list is EMPTY (scope-to-nothing:
|
|
253
|
-
the caller returns without a statement).
|
|
261
|
+
the caller returns without a statement). A float is encoded by the field's declared type in `types` (PS-64); on a
|
|
262
|
+
field the pack does not declare, equality and membership also match a value stored at 32 bits before PS-64."""
|
|
263
|
+
types = types or {}
|
|
254
264
|
for field in where or {}:
|
|
255
265
|
_ident(field, record_attrs=True)
|
|
256
266
|
if key_range is not None:
|
|
@@ -260,7 +270,7 @@ def _kg_where_terms(where: Optional[dict[str, object]],
|
|
|
260
270
|
if value is NOT_NULL:
|
|
261
271
|
out.append(f"{field} IS NOT NULL")
|
|
262
272
|
elif isinstance(value, Range):
|
|
263
|
-
out += [f"{field} {op} {_kg_sql_value(bound)}" for op, bound in value.terms()]
|
|
273
|
+
out += [f"{field} {op} {_kg_sql_value(bound, types.get(field))}" for op, bound in value.terms()]
|
|
264
274
|
elif isinstance(value, Contains):
|
|
265
275
|
text = _sql_str(value.text)
|
|
266
276
|
out.append(f"{field}.indexOf({text}) >= 0" if value.case_sensitive
|
|
@@ -269,12 +279,17 @@ def _kg_where_terms(where: Optional[dict[str, object]],
|
|
|
269
279
|
vals = list(value)
|
|
270
280
|
if not vals:
|
|
271
281
|
return None
|
|
272
|
-
|
|
282
|
+
term = f"{field} IN {_kg_sql_array(vals, types.get(field))}"
|
|
283
|
+
if field not in types and any(isinstance(v, float) for v in vals):
|
|
284
|
+
term = f"({term} OR {field} IN {_kg_sql_array(vals, 'FLOAT')})"
|
|
285
|
+
out.append(term)
|
|
286
|
+
elif isinstance(value, float) and field not in types:
|
|
287
|
+
out.append(f"({field} = {_kg_double(value)} OR {field} = {value!r})")
|
|
273
288
|
else:
|
|
274
|
-
out.append(f"{field} = {_kg_sql_value(value)}")
|
|
289
|
+
out.append(f"{field} = {_kg_sql_value(value, types.get(field))}")
|
|
275
290
|
if key_range is not None:
|
|
276
291
|
f, lo, hi = key_range
|
|
277
|
-
out += [f"{f} >= {_kg_sql_value(lo)}", f"{f} < {_kg_sql_value(hi)}"]
|
|
292
|
+
out += [f"{f} >= {_kg_sql_value(lo, types.get(f))}", f"{f} < {_kg_sql_value(hi, types.get(f))}"]
|
|
278
293
|
return out
|
|
279
294
|
|
|
280
295
|
|
|
@@ -296,8 +311,10 @@ def _kg_encode(value: object, declared_type: Optional[str]) -> str:
|
|
|
296
311
|
return _sql_str(value if isinstance(value, str) else json.dumps(value))
|
|
297
312
|
if dt in ("INTEGER", "LONG", "SHORT", "BYTE"):
|
|
298
313
|
return str(int(value))
|
|
299
|
-
if dt
|
|
314
|
+
if dt == "FLOAT":
|
|
300
315
|
return repr(float(value))
|
|
316
|
+
if dt in ("DOUBLE", "DECIMAL"):
|
|
317
|
+
return _kg_double(value) # PS-64: a bare decimal literal is a 32-bit FLOAT to ArcadeDB
|
|
301
318
|
if dt == "BOOLEAN":
|
|
302
319
|
return "true" if value else "false"
|
|
303
320
|
if dt == "ARRAY_OF_INTEGERS":
|
|
@@ -710,7 +727,7 @@ class ArcadeDBStore:
|
|
|
710
727
|
_ident(distinct)
|
|
711
728
|
if order_by:
|
|
712
729
|
_kg_order_by(order_by)
|
|
713
|
-
clauses = _kg_where_terms(where, key_range)
|
|
730
|
+
clauses = _kg_where_terms(where, key_range, self._property_types(node_type))
|
|
714
731
|
if clauses is None:
|
|
715
732
|
return []
|
|
716
733
|
proj = f"DISTINCT({distinct}) AS {distinct}" if distinct else (", ".join(fields) if fields else "*")
|
|
@@ -746,7 +763,7 @@ class ArcadeDBStore:
|
|
|
746
763
|
for alias, expr in select.items():
|
|
747
764
|
_ident(alias, "a select alias")
|
|
748
765
|
_kg_select_expr(expr)
|
|
749
|
-
c_terms = _kg_where_terms(where, key_range)
|
|
766
|
+
c_terms = _kg_where_terms(where, key_range, self._property_types(from_type) if from_type else None)
|
|
750
767
|
e_terms, v_terms = _kg_where_terms(edge_where), _kg_where_terms(target_where)
|
|
751
768
|
if c_terms is None or e_terms is None or v_terms is None:
|
|
752
769
|
return []
|
|
@@ -783,7 +800,7 @@ class ArcadeDBStore:
|
|
|
783
800
|
key_range: Optional[tuple[str, object, object]] = None) -> int:
|
|
784
801
|
"""Count the vertices or edges of `type_name` matching `where` / `key_range` (see `Store.kg_count`)."""
|
|
785
802
|
_ident(type_name, "a type name")
|
|
786
|
-
terms = _kg_where_terms(where, key_range)
|
|
803
|
+
terms = _kg_where_terms(where, key_range, self._property_types(type_name))
|
|
787
804
|
if terms is None:
|
|
788
805
|
return 0
|
|
789
806
|
rows = self._query(f"SELECT count(*) AS n FROM {type_name}" + (" WHERE " + " AND ".join(terms) if terms else ""))
|
|
@@ -800,7 +817,7 @@ class ArcadeDBStore:
|
|
|
800
817
|
"""Delete the vertices (with their edges) or edges of `type_name` matching `where` / `key_range` (see
|
|
801
818
|
`Store.kg_delete`). Edge types delete `UNSAFE` (this dialect's edge-safety check). Returns the count."""
|
|
802
819
|
_ident(type_name, "a type name")
|
|
803
|
-
terms = _kg_where_terms(where, key_range)
|
|
820
|
+
terms = _kg_where_terms(where, key_range, self._property_types(type_name))
|
|
804
821
|
if terms is None:
|
|
805
822
|
return 0
|
|
806
823
|
sql = f"DELETE FROM {type_name}" + (" WHERE " + " AND ".join(terms) if terms else "")
|
|
@@ -818,10 +835,10 @@ class ArcadeDBStore:
|
|
|
818
835
|
_ident(type_name, "a type name")
|
|
819
836
|
for k in set:
|
|
820
837
|
_ident(k)
|
|
821
|
-
|
|
838
|
+
types = self._property_types(type_name)
|
|
839
|
+
terms = _kg_where_terms(where, key_range, types)
|
|
822
840
|
if terms is None:
|
|
823
841
|
return 0
|
|
824
|
-
types = self._property_types(type_name)
|
|
825
842
|
enc = {k: _kg_encode(v, types.get(k)) for k, v in set.items()}
|
|
826
843
|
differs = " OR ".join(f"{k} IS NULL OR {k} <> {v}" for k, v in enc.items())
|
|
827
844
|
sql = (f"UPDATE {type_name} SET " + ", ".join(f"{k} = {v}" for k, v in enc.items())
|
|
@@ -249,7 +249,8 @@ class Store(Protocol):
|
|
|
249
249
|
key_range: Optional[tuple[str, object, object]] = None) -> int:
|
|
250
250
|
"""Set the `set` fields on the vertices or edges of `type_name` matching `where` / `key_range`. Only rows
|
|
251
251
|
where some set field differs (or is unset) change, so a repeated update changes nothing; returns the number
|
|
252
|
-
of rows changed. Values are encoded as `kg_write` encodes them
|
|
252
|
+
of rows changed. Values are encoded as `kg_write` encodes them: a float as a 64-bit double unless the field
|
|
253
|
+
is declared FLOAT (PS-64), so an unchanged measurement compares equal."""
|
|
253
254
|
|
|
254
255
|
def kg_edges(
|
|
255
256
|
self,
|
|
@@ -21,9 +21,11 @@ from __future__ import annotations
|
|
|
21
21
|
|
|
22
22
|
import os
|
|
23
23
|
import threading
|
|
24
|
-
from typing import Optional
|
|
24
|
+
from typing import Any, Callable, Optional
|
|
25
25
|
|
|
26
26
|
METAL_LOCK = threading.RLock() # every engine model call that runs on Metal holds it (one per process)
|
|
27
|
+
_SHARED_MODELS: dict[tuple, tuple[Any, Any]] = {} # PS-65: (kind, model, precision, device) -> (model, its lock)
|
|
28
|
+
_SHARED_GUARD = threading.Lock()
|
|
27
29
|
|
|
28
30
|
|
|
29
31
|
def metal_available() -> bool:
|
|
@@ -69,3 +71,16 @@ def docling_device() -> str:
|
|
|
69
71
|
def model_lock(device: str) -> "threading.Lock | threading.RLock":
|
|
70
72
|
"""The lock a model instance holds around each call: the process-wide `METAL_LOCK` on Metal, else its own."""
|
|
71
73
|
return METAL_LOCK if str(device).startswith("mps") else threading.Lock()
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def shared_model(key: tuple, device: str, build: Callable[[], Any]) -> tuple[Any, Any]:
|
|
77
|
+
"""PS-65 (TexWright's 2026-11-09 request): the process's one loaded model for `key` (kind, model name, precision,
|
|
78
|
+
device), built by `build` on first use, and the ONE lock every wrapper of it holds around each call (`model_lock`:
|
|
79
|
+
`METAL_LOCK` on Metal). Sharing the lock with the model is what keeps issue 0016's serialization: FlagEmbedding
|
|
80
|
+
mutates a model in place on every encode, so two wrappers of one model must never run it at once. Concurrent
|
|
81
|
+
first use builds once. A loaded model stays for the life of the process (dropping a workspace does not free it)."""
|
|
82
|
+
with _SHARED_GUARD:
|
|
83
|
+
hit = _SHARED_MODELS.get(key)
|
|
84
|
+
if hit is None:
|
|
85
|
+
hit = _SHARED_MODELS[key] = (build(), model_lock(device))
|
|
86
|
+
return hit
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
Phase 2 output. The persistent, cross-session task ledger and shared memory of progress. Derived
|
|
4
4
|
from `plan.md` (Phase 1) and `SPEC.md` v0.1, honoring ADR-0001 (stack) and ADR-0002 (corpus).
|
|
5
5
|
|
|
6
|
-
> **2026-11-
|
|
6
|
+
> **2026-11-11: PS-64 done, unreleased** (TexWright's request `2026-11-09-kg-update-rewrites-unchanged-doubles.md`): a float is written and compared as a 64-bit double unless declared FLOAT, so `kg_update` settles on an unchanged DOUBLE and equality / membership / `Range` filters find it (ADR-0143). Next: PS-65 (one BGE-M3 model per process).
|
|
7
|
+
>
|
|
8
|
+
> **2026-11-11: PS-65 done, unreleased** (TexWright's request `2026-11-09-the-embedder-model-is-rebuilt-for-every-workspace.md`): one loaded BGE model (embedder, reranker) per (model, precision, device) per process, every wrapper on its one lock (`util.devices.shared_model`, ADR-0144). Next: PS-48.
|
|
9
|
+
>
|
|
10
|
+
> **2026-11-08: `rag-wright` 0.17.1 is RELEASED (PR #22: PS-63).** PS-63 done (TexWright's request `2026-10-15-g8-duplicates-edges-within-one-ingest.md`, gap G8): the default record writer keeps one edge per (type, from node, to node), within an ingest and across re-ingests (`kg_write(..., ensure_edges=True)`, also on `api.kg_write`; ADR-0142). Next: PS-48.
|
|
7
11
|
>
|
|
8
12
|
> **2026-11-05: `rag-wright` 0.17.0 is RELEASED (PR #21: PS-60, PS-61, PS-62).** PS-60 done (TexWright's request: a table over the chunk cap is split between lines with its header repeated, so every row keeps its own span and `TableRow`; ADR-0141). PS-61 done (TexWright's question: the default segmenter `segment_layout` is exported on `pack_sdk`, so a pack can wrap it). PS-62 done (a record table's rows that reach no unit are reported: `DocumentReport.unreached_table_rows` and an `[ingest] warning:` line). Next: PS-48.
|
|
9
13
|
>
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""PS-65 (TexWright, 2026-11-09): every workspace, every ingestion pipeline and every `intra_document_qa` call loaded
|
|
2
|
+
its own copy of the same BGE model (~3.5 s and ~300 MB each). A process now loads a model once per (model, precision,
|
|
3
|
+
device) and shares it; every wrapper of one model holds that model's ONE lock, so the in-place mutation FlagEmbedding
|
|
4
|
+
does on each encode (issue 0016) stays serialized across all of them. Hermetic: the model classes are faked."""
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import sys
|
|
8
|
+
import threading
|
|
9
|
+
import time
|
|
10
|
+
import types
|
|
11
|
+
|
|
12
|
+
import pytest
|
|
13
|
+
|
|
14
|
+
from rag_wright.capabilities.embedding import BGEM3Embedder
|
|
15
|
+
from rag_wright.capabilities.reranking import BGEReranker
|
|
16
|
+
from rag_wright.util import devices
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class _FakeModel:
|
|
20
|
+
built = 0
|
|
21
|
+
|
|
22
|
+
def __init__(self, *args, **kwargs):
|
|
23
|
+
type(self).built += 1
|
|
24
|
+
time.sleep(0.05) # a slow load, so concurrent first use overlaps
|
|
25
|
+
self.args, self.kwargs = args, kwargs
|
|
26
|
+
self.model = types.SimpleNamespace(half=lambda: None)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@pytest.fixture
|
|
30
|
+
def fake_models(monkeypatch):
|
|
31
|
+
class M3(_FakeModel):
|
|
32
|
+
built = 0
|
|
33
|
+
|
|
34
|
+
class CE(_FakeModel):
|
|
35
|
+
built = 0
|
|
36
|
+
|
|
37
|
+
monkeypatch.setitem(sys.modules, "FlagEmbedding", types.SimpleNamespace(BGEM3FlagModel=M3))
|
|
38
|
+
monkeypatch.setitem(sys.modules, "sentence_transformers", types.SimpleNamespace(CrossEncoder=CE))
|
|
39
|
+
monkeypatch.setattr(devices, "_SHARED_MODELS", {})
|
|
40
|
+
return M3, CE
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_two_embedders_share_one_model_and_its_one_lock(fake_models):
|
|
44
|
+
m3, _ = fake_models
|
|
45
|
+
a, b = BGEM3Embedder(device="cpu"), BGEM3Embedder(device="cpu")
|
|
46
|
+
assert m3.built == 1 and a._model is b._model and a._lock is b._lock
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_a_different_precision_device_or_model_is_its_own_model(fake_models):
|
|
50
|
+
m3, _ = fake_models
|
|
51
|
+
base = BGEM3Embedder(device="cpu")
|
|
52
|
+
others = [BGEM3Embedder(device="cpu", use_fp16=True), BGEM3Embedder(device="cuda"),
|
|
53
|
+
BGEM3Embedder("BAAI/other", device="cpu")]
|
|
54
|
+
assert m3.built == 4 and len({id(e._model) for e in [base, *others]}) == 4
|
|
55
|
+
assert len({id(e._lock) for e in [base, *others]}) == 4
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def test_concurrent_first_use_loads_the_model_once(fake_models):
|
|
59
|
+
m3, _ = fake_models
|
|
60
|
+
out: list = []
|
|
61
|
+
threads = [threading.Thread(target=lambda: out.append(BGEM3Embedder(device="cpu"))) for _ in range(8)]
|
|
62
|
+
for t in threads:
|
|
63
|
+
t.start()
|
|
64
|
+
for t in threads:
|
|
65
|
+
t.join()
|
|
66
|
+
assert m3.built == 1 and len({id(e._model) for e in out}) == 1
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def test_an_injected_model_is_never_shared(fake_models):
|
|
70
|
+
m3, _ = fake_models
|
|
71
|
+
a, b = BGEM3Embedder(model=object(), device="cpu"), BGEM3Embedder(model=object(), device="cpu")
|
|
72
|
+
assert m3.built == 0 and a._model is not b._model and a._lock is not b._lock
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def test_on_metal_every_shared_model_holds_the_process_metal_lock(fake_models):
|
|
76
|
+
assert BGEM3Embedder(device="mps")._lock is devices.METAL_LOCK
|
|
77
|
+
assert BGEReranker(device="mps")._lock is devices.METAL_LOCK
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def test_rerankers_share_one_model_too(fake_models):
|
|
81
|
+
_, ce = fake_models
|
|
82
|
+
a, b = BGEReranker(device="cpu"), BGEReranker(device="cpu")
|
|
83
|
+
assert ce.built == 1 and a._model is b._model and a._lock is b._lock
|
|
84
|
+
assert a._lock is not BGEM3Embedder(device="cpu")._lock # a different model, its own lock off Metal
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# --- live -----------------------------------------------------------------------------------------------------------
|
|
88
|
+
|
|
89
|
+
@pytest.mark.embed
|
|
90
|
+
def test_live_two_workspaces_share_one_model_and_concurrent_encodes_stay_exact(monkeypatch):
|
|
91
|
+
# the condition issue 0016 guards: several threads encoding through DIFFERENT wrappers of the one shared model
|
|
92
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
93
|
+
|
|
94
|
+
from rag_wright.api import EngineConfig, StoreConfig
|
|
95
|
+
from rag_wright.api.workspace import WorkspaceHandle
|
|
96
|
+
|
|
97
|
+
monkeypatch.delenv("STACK_URL", raising=False)
|
|
98
|
+
monkeypatch.setenv("EMBED_DEVICE", "cpu")
|
|
99
|
+
a = WorkspaceHandle(None, EngineConfig(store=StoreConfig(host="x", port="0", user="u", password="p")), "a")
|
|
100
|
+
b = WorkspaceHandle(None, EngineConfig(store=StoreConfig(host="x", port="0", user="u", password="p")), "b")
|
|
101
|
+
ea, eb = a.embedder, b.embedder
|
|
102
|
+
assert ea is not eb and ea._model is eb._model and ea._lock is eb._lock
|
|
103
|
+
texts = [f"warp knitted spacer fabric, sample {i}, 380 GSM" for i in range(24)]
|
|
104
|
+
serial = [ea.encode_dense(t) for t in texts]
|
|
105
|
+
with ThreadPoolExecutor(8) as pool:
|
|
106
|
+
both = list(pool.map(lambda it: (ea if it[0] % 2 else eb).encode_dense(it[1]), enumerate(texts)))
|
|
107
|
+
assert both == serial
|