rag-wright 0.17.0__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.
Files changed (1115) hide show
  1. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/building-an-ingestion-capability/SKILL.md +8 -3
  2. rag_wright-0.17.2/.release-please-manifest.json +3 -0
  3. {rag_wright-0.17.0 → rag_wright-0.17.2}/CHANGELOG.md +15 -0
  4. {rag_wright-0.17.0 → rag_wright-0.17.2}/CLAUDE.md +9 -1
  5. {rag_wright-0.17.0 → rag_wright-0.17.2}/PKG-INFO +1 -1
  6. rag_wright-0.17.2/docs/adr/0142-the-default-writer-keeps-one-edge-per-type-and-endpoints.md +32 -0
  7. rag_wright-0.17.2/docs/adr/0143-a-float-is-written-and-compared-as-a-double.md +33 -0
  8. rag_wright-0.17.2/docs/adr/0144-one-loaded-bge-model-per-process.md +31 -0
  9. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/README.md +4 -1
  10. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/api/README.md +2 -2
  11. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/api/pack_sdk.md +2 -2
  12. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/domain-adaptation/_engine-gaps.md +10 -7
  13. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/domain-adaptation/kg-construction.md +5 -4
  14. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/domain-adaptation/ontology-authoring.md +3 -0
  15. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/plan.md +3 -0
  16. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/workspaces.md +5 -0
  17. {rag_wright-0.17.0 → rag_wright-0.17.2}/pyproject.toml +1 -1
  18. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-an-ingestion-capability/SKILL.md +8 -3
  19. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/kg.py +4 -3
  20. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/embedding.py +16 -9
  21. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/reranking.py +17 -12
  22. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/ingestion/builder.py +5 -4
  23. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/store/arcadedb.py +54 -23
  24. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/store/seam.py +7 -3
  25. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/util/devices.py +16 -1
  26. {rag_wright-0.17.0 → rag_wright-0.17.2}/tasks.md +7 -1
  27. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_kg.py +1 -1
  28. rag_wright-0.17.2/tests/capabilities/test_shared_models.py +107 -0
  29. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_builder.py +1 -1
  30. rag_wright-0.17.2/tests/ingestion/test_default_writer_ensures_edges.py +33 -0
  31. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_graph_parity.py +1 -1
  32. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_write_count.py +1 -1
  33. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_arcadedb_schema.py +1 -1
  34. rag_wright-0.17.2/tests/store/test_kg_doubles.py +88 -0
  35. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_kg_range.py +1 -1
  36. rag_wright-0.17.2/tests/store/test_kg_write_ensure_edges.py +142 -0
  37. {rag_wright-0.17.0 → rag_wright-0.17.2}/uv.lock +1 -1
  38. rag_wright-0.17.0/.release-please-manifest.json +0 -3
  39. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/settings.json +0 -0
  40. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/authoring-a-capability/SKILL.md +0 -0
  41. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/building-a-product-backend/SKILL.md +0 -0
  42. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/building-a-product-frontend/SKILL.md +0 -0
  43. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/building-a-product-frontend/scaffold/ShellLayout.test.tsx +0 -0
  44. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/building-a-product-frontend/scaffold/ShellLayout.tsx +0 -0
  45. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/building-a-product-frontend/scaffold/surfaces.tsx +0 -0
  46. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/building-an-agent-harness/SKILL.md +0 -0
  47. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
  48. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/creating-evals/SKILL.md +0 -0
  49. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/laya/SKILL.md +0 -0
  50. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/qwen-vllm-modal/SKILL.md +0 -0
  51. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
  52. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
  53. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/setfit/SKILL.md +0 -0
  54. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/specifying-a-product-on-the-engine/SKILL.md +0 -0
  55. {rag_wright-0.17.0 → rag_wright-0.17.2}/.claude/skills/using-the-rag-wright-engine/SKILL.md +0 -0
  56. {rag_wright-0.17.0 → rag_wright-0.17.2}/.env.example +0 -0
  57. {rag_wright-0.17.0 → rag_wright-0.17.2}/.github/workflows/publish.yml +0 -0
  58. {rag_wright-0.17.0 → rag_wright-0.17.2}/.github/workflows/release-please.yml +0 -0
  59. {rag_wright-0.17.0 → rag_wright-0.17.2}/.gitignore +0 -0
  60. {rag_wright-0.17.0 → rag_wright-0.17.2}/LICENSE +0 -0
  61. {rag_wright-0.17.0 → rag_wright-0.17.2}/README.md +0 -0
  62. {rag_wright-0.17.0 → rag_wright-0.17.2}/SPEC.md +0 -0
  63. {rag_wright-0.17.0 → rag_wright-0.17.2}/conftest.py +0 -0
  64. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
  65. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/ArcadeDB_Local.md +0 -0
  66. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/OBSERVABILITY.md +0 -0
  67. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0001-stack-and-library-choices.md +0 -0
  68. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
  69. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
  70. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0004-entity-disambiguation.md +0 -0
  71. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0005-relational-golden-set.md +0 -0
  72. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0006-model-profile.md +0 -0
  73. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0007-arcadedb-store-schema.md +0 -0
  74. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
  75. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
  76. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
  77. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
  78. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
  79. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
  80. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
  81. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
  82. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
  83. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
  84. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
  85. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
  86. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
  87. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
  88. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
  89. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
  90. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
  91. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
  92. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
  93. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
  94. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
  95. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
  96. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
  97. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
  98. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0032-nl-to-type-two-step-reason-emit-on-gemma.md +0 -0
  99. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
  100. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
  101. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
  102. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
  103. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
  104. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0038-full-cuad-kg-on-gcp-gpu-vm-and-gcs-backup.md +0 -0
  105. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
  106. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
  107. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
  108. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0042-clause-level-span-id-provenance-and-content-hash-backfill.md +0 -0
  109. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
  110. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
  111. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
  112. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
  113. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
  114. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
  115. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
  116. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
  117. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
  118. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
  119. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
  120. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
  121. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0055-confidence-out-of-band.md +0 -0
  122. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
  123. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0057-async-engine-architecture.md +0 -0
  124. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0058-structure-first-chunking.md +0 -0
  125. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
  126. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
  127. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
  128. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +0 -0
  129. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
  130. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
  131. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
  132. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
  133. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0067-domain-pack-retargeting.md +0 -0
  134. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
  135. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
  136. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
  137. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
  138. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
  139. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
  140. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
  141. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
  142. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
  143. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
  144. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
  145. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
  146. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
  147. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
  148. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
  149. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
  150. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
  151. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
  152. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0086-streaming-cost-capture.md +0 -0
  153. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
  154. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
  155. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
  156. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0090-affiliate-of-extraction.md +0 -0
  157. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0091-retire-partyto-edge.md +0 -0
  158. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0092-idempotent-write-graph.md +0 -0
  159. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0093-entities-by-name-seam.md +0 -0
  160. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0094-workspace-document-scope.md +0 -0
  161. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0095-span-page-provenance.md +0 -0
  162. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
  163. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
  164. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0098-invoke-time-document-scope.md +0 -0
  165. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
  166. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0100-profile-based-model-routing.md +0 -0
  167. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
  168. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
  169. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
  170. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
  171. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
  172. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
  173. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0107-requirement-page-provenance.md +0 -0
  174. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
  175. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
  176. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
  177. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
  178. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
  179. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
  180. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
  181. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
  182. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
  183. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
  184. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0118-engine-core-api-vs-ard-adapter-free-impl-ref-client.md +0 -0
  185. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0119-jev-typed-decision-model-for-compliance-closed-set-fields.md +0 -0
  186. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
  187. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
  188. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
  189. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
  190. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +0 -0
  191. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
  192. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
  193. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0127-retire-the-okf-code.md +0 -0
  194. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
  195. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0129-laya-temperatures-and-the-sklearn-floor.md +0 -0
  196. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0130-deploy-the-self-hosted-model-server-from-the-engine.md +0 -0
  197. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0131-model-server-hardening-after-rulewright-review.md +0 -0
  198. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0132-model-server-cold-start-from-a-gpu-snapshot.md +0 -0
  199. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0133-model-call-deadline-follows-the-timeout-and-a-thinking-cap.md +0 -0
  200. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0134-skills-for-product-developers-are-linked-per-project-never-globally.md +0 -0
  201. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0135-the-seam-gives-each-event-loop-its-own-async-http-client.md +0 -0
  202. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0136-spreadsheet-tables-are-glued-back-across-blank-rows.md +0 -0
  203. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0137-generated-answers-state-their-support-and-none-is-an-abstention.md +0 -0
  204. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0138-the-engine-reaches-pdfium-through-one-locked-door.md +0 -0
  205. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0139-the-agent-harness-substrate-is-engine-scope.md +0 -0
  206. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0140-one-model-family-on-metal.md +0 -0
  207. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/adr/0141-the-hard-split-cuts-between-lines-and-repeats-a-tables-header.md +0 -0
  208. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/api/harness.md +0 -0
  209. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
  210. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/architecture.md +0 -0
  211. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/README.md +0 -0
  212. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/design/deontic-applicability-routing.md +0 -0
  213. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
  214. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/design/semantic-subject-segmentation.md +0 -0
  215. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/design/unify-subject-preprocessing.md +0 -0
  216. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/engine-issues/0037-closed-vocab-drops-verbatim-values-to-other.md +0 -0
  217. {rag_wright-0.17.0 → 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
  218. {rag_wright-0.17.0 → 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
  219. {rag_wright-0.17.0 → 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
  220. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
  221. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/engine-issues/0041-leg-b-discards-the-best-dense-matches-on-some-queries.md +0 -0
  222. {rag_wright-0.17.0 → 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
  223. {rag_wright-0.17.0 → 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
  224. {rag_wright-0.17.0 → 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
  225. {rag_wright-0.17.0 → 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
  226. {rag_wright-0.17.0 → 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
  227. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/engine-issues/0047-an-exact-deepagents-pin-transitively-pins-every-consumer.md +0 -0
  228. {rag_wright-0.17.0 → 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
  229. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
  230. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
  231. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
  232. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
  233. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-01_issue-0013-recall-first-actor-gate_rulewright.md +0 -0
  234. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
  235. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
  236. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
  237. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-04_issue-0016-thread-safe-embedder_rulewright.md +0 -0
  238. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
  239. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-05_tagparse-ingestion-and-granite-4.2_rulewright.md +0 -0
  240. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
  241. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
  242. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_issue-0029-idempotent-write-graph_rulewright.md +0 -0
  243. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_issue-0030-entities-by-name_rulewright.md +0 -0
  244. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
  245. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
  246. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_rename-run-ad-compliance-check_rulewright.md +0 -0
  247. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
  248. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
  249. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0031-followup-failclosed-and-nodrift_rulewright.md +0 -0
  250. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0031-followup-validate-ingested-set_rulewright.md +0 -0
  251. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0031-workspace-document-scope_rulewright.md +0 -0
  252. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0032-span-page-provenance_rulewright.md +0 -0
  253. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
  254. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-10_issue-0034-invoke-time-document-scope_rulewright.md +0 -0
  255. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-11_issue-0035-followup-derived-guard_rulewright.md +0 -0
  256. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-11_issue-0035-mcp-no-model-tenant_rulewright.md +0 -0
  257. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
  258. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
  259. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
  260. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
  261. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
  262. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
  263. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
  264. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-14_document-signals-off-citation_0044_rulewright.md +0 -0
  265. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
  266. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-16_qwen3-27b-single-a100-serving-profile_rulewright.md +0 -0
  267. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
  268. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-18_fp8-kv-16k-single-a100_rulewright.md +0 -0
  269. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
  270. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
  271. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-21_0048-part2-modal-answers_from_rulewright.md +0 -0
  272. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/handoffs/2026-09-21_0048-part2-modal-scoping-questions_rulewright.md +0 -0
  273. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/misc/.gitkeep +0 -0
  274. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/plans/Corpus_Acquisition.md +0 -0
  275. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/plans/async-migration.md +0 -0
  276. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/plans/demo_plan.md +0 -0
  277. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
  278. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
  279. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
  280. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
  281. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
  282. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
  283. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/concepts.md +0 -0
  284. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/configuration.md +0 -0
  285. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/contract_pipeline_explainer.md +0 -0
  286. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/corpus_ingest_recipe.md +0 -0
  287. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/domain-adaptation/README.md +0 -0
  288. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/domain-adaptation/authoring-capabilities.md +0 -0
  289. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/domain-adaptation/classification-and-decision-models.md +0 -0
  290. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/domain-adaptation/entity-resolution.md +0 -0
  291. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/domain-adaptation/evals-from-expert-files.md +0 -0
  292. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/classifier_model_ab.md +0 -0
  293. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/compliance_demo.md +0 -0
  294. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/compliance_gate_cc7.md +0 -0
  295. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/compliance_rung2_cc7.md +0 -0
  296. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
  297. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/dg_model_ab.md +0 -0
  298. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/function_gate_recall.md +0 -0
  299. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/generation_robustness_b_vs_c.md +0 -0
  300. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/nl_to_type_cu-d2.md +0 -0
  301. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/ocr_benchmark.md +0 -0
  302. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/prod1_readiness.md +0 -0
  303. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/prod2_readiness.md +0 -0
  304. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/query_side_model_ab.md +0 -0
  305. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/silver_granite_vs_gemma4.md +0 -0
  306. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/silver_provider_routing.md +0 -0
  307. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
  308. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/evals.md +0 -0
  309. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/harness.md +0 -0
  310. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/installation.md +0 -0
  311. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/playbook.md +0 -0
  312. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/product/capability_profiles.md +0 -0
  313. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/product/contracts_product_roadmap.md +0 -0
  314. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/product/engine-api-migration-handoff.md +0 -0
  315. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/product/engine_async_api.md +0 -0
  316. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/product/new-domain-build-sequence.md +0 -0
  317. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/product/seam-adaptation-guide.md +0 -0
  318. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
  319. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
  320. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/proposals/new-domain-developer-journey.md +0 -0
  321. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/proposals/ontology-induction.md +0 -0
  322. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/quickstart.md +0 -0
  323. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/reference-pack.md +0 -0
  324. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/releasing.md +0 -0
  325. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/engine-platform/SPEC.md +0 -0
  326. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/engine-platform/TASKS.md +0 -0
  327. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/engine-prep/plan.md +0 -0
  328. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/evals/plan.md +0 -0
  329. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
  330. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
  331. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/ingestion-hooks/plan.md +0 -0
  332. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
  333. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/langgraph-ingestion/plan.md +0 -0
  334. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-arcadedb-separation.md +0 -0
  335. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.10.0.md +0 -0
  336. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.11.0.md +0 -0
  337. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.12.0.md +0 -0
  338. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.13.0.md +0 -0
  339. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.14.0.md +0 -0
  340. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.3.0.md +0 -0
  341. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.4.0.md +0 -0
  342. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.5.0.md +0 -0
  343. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.6.0.md +0 -0
  344. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.7.0.md +0 -0
  345. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.8.0.md +0 -0
  346. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-migration-0.9.0.md +0 -0
  347. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/specs/public-surface/rulewright-reply-2026-10-10-laya-and-sklearn.md +0 -0
  348. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/templates/product-starter/CLAUDE.md.template +0 -0
  349. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/templates/product-starter/README.md +0 -0
  350. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/templates/product-starter/dependabot.yml +0 -0
  351. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/templates/product-starter/playbook.md.template +0 -0
  352. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/upstream/laya-temperature-range-mismatch.md +0 -0
  353. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
  354. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
  355. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
  356. {rag_wright-0.17.0 → rag_wright-0.17.2}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
  357. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/__init__.py +0 -0
  358. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/acord.py +0 -0
  359. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/acord_retrieval.py +0 -0
  360. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/boundary_residue_gold.py +0 -0
  361. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/build_golden.py +0 -0
  362. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
  363. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
  364. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
  365. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/compliance_demo/subjects/post_violation.txt +0 -0
  366. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/condensed_pipeline.py +0 -0
  367. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/contract_parity_live.py +0 -0
  368. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/contractnli_judge.py +0 -0
  369. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/cuad_highlight.py +0 -0
  370. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/embedded_eval.py +0 -0
  371. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/full_pipeline_rerank.py +0 -0
  372. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/function_ceiling.py +0 -0
  373. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/function_property_rerank.py +0 -0
  374. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/function_rerank.py +0 -0
  375. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/gate1_chunker_ab.py +0 -0
  376. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/gate2_hybrid_rerank.py +0 -0
  377. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/golden/relational/set.json +0 -0
  378. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/golden.py +0 -0
  379. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/ground_discriminator_rerank.py +0 -0
  380. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/harness.py +0 -0
  381. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/ingestion_live_smoke.py +0 -0
  382. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/kg_primary.py +0 -0
  383. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/kg_property_rerank.py +0 -0
  384. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/listwise_rerank.py +0 -0
  385. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/multihop.py +0 -0
  386. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/nl_to_type.py +0 -0
  387. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/relational_eval.py +0 -0
  388. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/residual_decision_gold.py +0 -0
  389. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/segmenter_eval.py +0 -0
  390. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/semantic_judge_gold.py +0 -0
  391. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/test_acord.py +0 -0
  392. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/test_acord_retrieval.py +0 -0
  393. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/test_harness.py +0 -0
  394. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/test_multihop_set.py +0 -0
  395. {rag_wright-0.17.0 → rag_wright-0.17.2}/eval/unit_grouper_eval.py +0 -0
  396. {rag_wright-0.17.0 → rag_wright-0.17.2}/examples/model_server.py +0 -0
  397. {rag_wright-0.17.0 → rag_wright-0.17.2}/examples/quickstart.py +0 -0
  398. {rag_wright-0.17.0 → rag_wright-0.17.2}/plan.md +0 -0
  399. {rag_wright-0.17.0 → rag_wright-0.17.2}/release-please-config.json +0 -0
  400. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ab_model_overlap.py +0 -0
  401. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/acord_unify.py +0 -0
  402. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/acquire_acord.py +0 -0
  403. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/acquire_cuad.py +0 -0
  404. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/acquire_ecfr.py +0 -0
  405. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/acquire_edgar.py +0 -0
  406. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/acquire_ftc_255.py +0 -0
  407. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/acquire_prod1_corpus.py +0 -0
  408. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/audit_reclass_flips.py +0 -0
  409. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/author_leg_a_silver_key.py +0 -0
  410. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/backfill_affiliations.py +0 -0
  411. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/backfill_clause_span_id.py +0 -0
  412. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/backfill_edge_source_doc_id.py +0 -0
  413. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/backup_kg_to_gcs.sh +0 -0
  414. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/bootstrap_template_capture.py +0 -0
  415. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/bootstrap_typed_edges.py +0 -0
  416. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/build_api_docs.py +0 -0
  417. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/build_api_docs.sh +0 -0
  418. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/build_cuad_clause_cache.py +0 -0
  419. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/build_function_routing_map.py +0 -0
  420. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/build_harness_doc.py +0 -0
  421. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_assemble_v2.py +0 -0
  422. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_assemble_v3.py +0 -0
  423. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_generate_hard_negatives.py +0 -0
  424. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_generate_hard_positives.py +0 -0
  425. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_generate_training.py +0 -0
  426. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_hybrid.py +0 -0
  427. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_hybrid2.py +0 -0
  428. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_jev_actor.py +0 -0
  429. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_jev_claimtypes.py +0 -0
  430. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_jev_operative.py +0 -0
  431. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_label_spans.py +0 -0
  432. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_laya_prep.py +0 -0
  433. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_laya_train.py +0 -0
  434. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_prep_operative.py +0 -0
  435. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_relabel_rubric.py +0 -0
  436. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_relabel_rubric2.py +0 -0
  437. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/cic1_train_operative.py +0 -0
  438. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/compare_extraction_models.py +0 -0
  439. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/compliance_actor_gate_smoke.py +0 -0
  440. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/compliance_engine_smoke.py +0 -0
  441. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/compliance_policy_demo.py +0 -0
  442. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/curate_taxonomy_gaps.py +0 -0
  443. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/dg_model_ab.py +0 -0
  444. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/diagnose_acord_knn_expansion.py +0 -0
  445. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/diagnose_acord_knn_rerank.py +0 -0
  446. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/diagnose_acord_leg_pool.py +0 -0
  447. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/diagnose_acord_legs.py +0 -0
  448. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/diagnose_acord_pool.py +0 -0
  449. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/diagnose_acord_relstructure.py +0 -0
  450. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/diagnose_acord_retrieval.py +0 -0
  451. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/distill/eval_all.py +0 -0
  452. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/distill/eval_ce.py +0 -0
  453. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/distill/eval_listwise_b.py +0 -0
  454. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/distill/export_ce_dataset.py +0 -0
  455. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/distill/extract_features.py +0 -0
  456. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/distill/listwise_variants.py +0 -0
  457. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/distill/relational_features.py +0 -0
  458. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/distill/train_ce.py +0 -0
  459. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/distill/train_modal.py +0 -0
  460. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/enrich_edgar_candidates.py +0 -0
  461. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/eval_chunking_ab.py +0 -0
  462. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
  463. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/eval_compliance_gold.py +0 -0
  464. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/extract_arcadedb_docs.py +0 -0
  465. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/fetch_reference_models.py +0 -0
  466. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/generate_contract_python.py +0 -0
  467. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/git_post_commit_graphify.sh +0 -0
  468. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/granite_chunker_assess.py +0 -0
  469. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/graph_status.sh +0 -0
  470. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ingest_acord.py +0 -0
  471. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ingest_compliance_async_prod2.py +0 -0
  472. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ingest_compliance_document_prod2.py +0 -0
  473. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ingest_compliance_prod2.py +0 -0
  474. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ingest_cuad.py +0 -0
  475. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ingest_cuad_full.py +0 -0
  476. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ingest_ftc_compliance.py +0 -0
  477. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ingest_prod1.py +0 -0
  478. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ingest_prod1_async.py +0 -0
  479. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ingest_smoke.py +0 -0
  480. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/install_git_hooks.sh +0 -0
  481. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/label_new_functions.py +0 -0
  482. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/legb_function_gate_recall.py +0 -0
  483. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/make_compliance_fixtures.py +0 -0
  484. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/make_compliance_gold.py +0 -0
  485. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/mcp_compliance_agent_demo.py +0 -0
  486. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/mcp_intra_document_qa_smoke.py +0 -0
  487. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/mcp_query_legs_agent_demo.py +0 -0
  488. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/measure_generation_robustness.py +0 -0
  489. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/measure_harness_genericity.py +0 -0
  490. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/measure_silver.py +0 -0
  491. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/merge_docs_into_framework.py +0 -0
  492. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
  493. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/migrate_silver_evidence_autotag.py +0 -0
  494. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
  495. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/migrate_span_fields.py +0 -0
  496. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/mine_scarce_functions.py +0 -0
  497. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_arcadedb.py +0 -0
  498. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_backfill.py +0 -0
  499. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_exception_linking.py +0 -0
  500. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_gemma4_vllm.py +0 -0
  501. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_gemma4_vllm_snapshot.py +0 -0
  502. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_granite_server.py +0 -0
  503. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_granite_throughput.py +0 -0
  504. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_granite_vllm_server.py +0 -0
  505. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_query_app.py +0 -0
  506. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_qwen3_27b_bench.py +0 -0
  507. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_qwen3_27b_snapshot.py +0 -0
  508. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_qwen3_vllm_server.py +0 -0
  509. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/modal_stack_a100.py +0 -0
  510. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ocr_benchmark.py +0 -0
  511. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ocr_preprocess.py +0 -0
  512. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/ontology_dimension_check.py +0 -0
  513. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/phase_a_leg_validate.py +0 -0
  514. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/populate_clause_kg.py +0 -0
  515. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/populate_entity_graph.py +0 -0
  516. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/populate_entity_graph_extracted.py +0 -0
  517. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/populate_property_store.py +0 -0
  518. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/prep_relational_verification.py +0 -0
  519. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/publish_manifests.py +0 -0
  520. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/reclassify_kg.py +0 -0
  521. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/refresh_framework_graph.sh +0 -0
  522. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/revert_reclass_flips.py +0 -0
  523. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/run_acord_retrieval.py +0 -0
  524. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/run_clause_exception_linking.py +0 -0
  525. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/semantic_judge_live_validate.py +0 -0
  526. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/semantic_judge_probe.py +0 -0
  527. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/snapshot_leg_a_eval.py +0 -0
  528. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/stack_correctness_validate.py +0 -0
  529. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/table_retrieval_smoke.py +0 -0
  530. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/train_function_classifier.py +0 -0
  531. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/train_legalbert_function.py +0 -0
  532. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/train_legalbert_modal.py +0 -0
  533. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/typed_rerank_validate.py +0 -0
  534. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/verify_wheel_install.sh +0 -0
  535. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/vllm_extraction_ab.py +0 -0
  536. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/vllm_kg_query_validate.py +0 -0
  537. {rag_wright-0.17.0 → rag_wright-0.17.2}/scripts/vllm_raw_diagnostic.py +0 -0
  538. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/authoring-a-capability/SKILL.md +0 -0
  539. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-a-product-backend/SKILL.md +0 -0
  540. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-a-product-frontend/SKILL.md +0 -0
  541. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-a-product-frontend/scaffold/ShellLayout.test.tsx +0 -0
  542. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-a-product-frontend/scaffold/ShellLayout.tsx +0 -0
  543. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-a-product-frontend/scaffold/surfaces.tsx +0 -0
  544. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/building-an-agent-harness/SKILL.md +0 -0
  545. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
  546. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +0 -0
  547. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/laya/SKILL.md +0 -0
  548. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/qwen-vllm-modal/SKILL.md +0 -0
  549. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
  550. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
  551. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/setfit/SKILL.md +0 -0
  552. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/specifying-a-product-on-the-engine/SKILL.md +0 -0
  553. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/.agents/skills/using-the-rag-wright-engine/SKILL.md +0 -0
  554. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/__init__.py +0 -0
  555. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/__init__.py +0 -0
  556. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/agents.py +0 -0
  557. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/answers.py +0 -0
  558. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/config.py +0 -0
  559. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/discover.py +0 -0
  560. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/documents.py +0 -0
  561. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/ids.py +0 -0
  562. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/invoke.py +0 -0
  563. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/mcp.py +0 -0
  564. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/tracing.py +0 -0
  565. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/usage.py +0 -0
  566. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/api/workspace.py +0 -0
  567. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/__init__.py +0 -0
  568. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/answer_generator.py +0 -0
  569. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/ard.py +0 -0
  570. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/chunk_read.py +0 -0
  571. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/chunk_write.py +0 -0
  572. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/disambiguation.py +0 -0
  573. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/document_parse.py +0 -0
  574. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/document_scope.py +0 -0
  575. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
  576. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/entity_resolution.py +0 -0
  577. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/fusion.py +0 -0
  578. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/graph_query.py +0 -0
  579. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/graph_storage.py +0 -0
  580. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/hybrid_search.py +0 -0
  581. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/invoke.py +0 -0
  582. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/jev_decision.py +0 -0
  583. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/manifests.py +0 -0
  584. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/parse_audit.py +0 -0
  585. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/parsing.py +0 -0
  586. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/registry.py +0 -0
  587. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/remote_encoders.py +0 -0
  588. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/retrieval_core.py +0 -0
  589. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/rlm_chunking.py +0 -0
  590. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
  591. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/scan_quality.py +0 -0
  592. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/sheet_tables.py +0 -0
  593. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
  594. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/span_search.py +0 -0
  595. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/vision_to_text.py +0 -0
  596. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
  597. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/contracts/__init__.py +0 -0
  598. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/contracts/chunk.py +0 -0
  599. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/contracts/evals.py +0 -0
  600. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/contracts/extraction.py +0 -0
  601. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/contracts/graph.py +0 -0
  602. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/contracts/identifiers.py +0 -0
  603. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/contracts/ingestion.py +0 -0
  604. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/contracts/provenance.py +0 -0
  605. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/contracts/span.py +0 -0
  606. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/corpus/__init__.py +0 -0
  607. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/corpus/canonicalize.py +0 -0
  608. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/corpus/document_parser.py +0 -0
  609. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/corpus/embedded.py +0 -0
  610. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/corpus/http.py +0 -0
  611. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/evals/__init__.py +0 -0
  612. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/evals/gold.py +0 -0
  613. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/evals/langfuse_backend.py +0 -0
  614. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/evals/runner.py +0 -0
  615. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/evals/scorers.py +0 -0
  616. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/__init__.py +0 -0
  617. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/accounting.py +0 -0
  618. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/agent.py +0 -0
  619. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/batch.py +0 -0
  620. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/clarify.py +0 -0
  621. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/confirm.py +0 -0
  622. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/decisions.py +0 -0
  623. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/definition.py +0 -0
  624. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/dispatch.py +0 -0
  625. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/errors.py +0 -0
  626. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/events.py +0 -0
  627. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/filesystem.py +0 -0
  628. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/grading.py +0 -0
  629. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/interpreter.py +0 -0
  630. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/memory.py +0 -0
  631. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/models.py +0 -0
  632. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/rules.py +0 -0
  633. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/runs.py +0 -0
  634. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/scope.py +0 -0
  635. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/seen.py +0 -0
  636. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/skills.py +0 -0
  637. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/thinking.py +0 -0
  638. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/tiers.py +0 -0
  639. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/tracing.py +0 -0
  640. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/withhold.py +0 -0
  641. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/harness/workers.py +0 -0
  642. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/ingestion/__init__.py +0 -0
  643. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/ingestion/evaluate.py +0 -0
  644. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/ingestion/group.py +0 -0
  645. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/ingestion/layout.py +0 -0
  646. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/ingestion/segment.py +0 -0
  647. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/ingestion/tables.py +0 -0
  648. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/models/__init__.py +0 -0
  649. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/models/model_servers.py +0 -0
  650. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/models/profiles.py +0 -0
  651. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/models/seam.py +0 -0
  652. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/models/tag_structured.py +0 -0
  653. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/models/tracing.py +0 -0
  654. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/models/usage.py +0 -0
  655. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/models/weights.py +0 -0
  656. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/ontology/__init__.py +0 -0
  657. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/ontology/pack_schema.py +0 -0
  658. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/ontology/registry.py +0 -0
  659. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/pack_sdk/__init__.py +0 -0
  660. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/__init__.py +0 -0
  661. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/__init__.py +0 -0
  662. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
  663. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
  664. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
  665. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
  666. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
  667. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
  668. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/invokers.py +0 -0
  669. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
  670. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
  671. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
  672. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
  673. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
  674. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
  675. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/pack.py +0 -0
  676. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
  677. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
  678. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
  679. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
  680. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
  681. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
  682. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
  683. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
  684. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
  685. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
  686. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
  687. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
  688. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +0 -0
  689. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +0 -0
  690. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
  691. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/__init__.py +0 -0
  692. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
  693. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
  694. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
  695. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
  696. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +0 -0
  697. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
  698. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
  699. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
  700. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
  701. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +0 -0
  702. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
  703. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
  704. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
  705. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
  706. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
  707. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
  708. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
  709. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +0 -0
  710. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
  711. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
  712. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
  713. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
  714. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
  715. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
  716. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
  717. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
  718. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
  719. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
  720. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
  721. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
  722. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
  723. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/options.py +0 -0
  724. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/pack.py +0 -0
  725. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
  726. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
  727. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
  728. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
  729. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
  730. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
  731. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
  732. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
  733. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
  734. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
  735. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
  736. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
  737. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
  738. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
  739. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
  740. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
  741. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
  742. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
  743. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
  744. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
  745. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +0 -0
  746. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
  747. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
  748. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
  749. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
  750. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
  751. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/function_families.py +0 -0
  752. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +0 -0
  753. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
  754. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
  755. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
  756. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
  757. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
  758. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
  759. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
  760. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +0 -0
  761. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
  762. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
  763. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
  764. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +0 -0
  765. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
  766. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +0 -0
  767. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +0 -0
  768. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +0 -0
  769. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
  770. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +0 -0
  771. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
  772. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +0 -0
  773. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/packs/reference_seam.py +0 -0
  774. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/py.typed +0 -0
  775. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/skills/__init__.py +0 -0
  776. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/skills/generation/SKILL.md +0 -0
  777. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/skills/generation/__init__.py +0 -0
  778. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/skills/rlm/SKILL.md +0 -0
  779. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/skills/rlm/__init__.py +0 -0
  780. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/skills/rlm/agent.py +0 -0
  781. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
  782. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
  783. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
  784. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/spans/__init__.py +0 -0
  785. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/spans/page_map.py +0 -0
  786. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/store/__init__.py +0 -0
  787. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/store/chunk_text.py +0 -0
  788. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/subgraphs/__init__.py +0 -0
  789. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
  790. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/subgraphs/observability.py +0 -0
  791. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/subgraphs/scaffold.py +0 -0
  792. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
  793. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/util/__init__.py +0 -0
  794. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/util/concurrent.py +0 -0
  795. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/util/pdfium.py +0 -0
  796. {rag_wright-0.17.0 → rag_wright-0.17.2}/src/rag_wright/util/spacy_model.py +0 -0
  797. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/__init__.py +0 -0
  798. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/__init__.py +0 -0
  799. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_agent_chat_model.py +0 -0
  800. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_agent_chat_model_live.py +0 -0
  801. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_answers_exports.py +0 -0
  802. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_api_embedder_ps39.py +0 -0
  803. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_bytes_ingest.py +0 -0
  804. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_capability_reexports.py +0 -0
  805. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_decision_swap_doc_example.py +0 -0
  806. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_discover.py +0 -0
  807. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_documents.py +0 -0
  808. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_drop_workspace.py +0 -0
  809. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_drop_workspace_live.py +0 -0
  810. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_e2e.py +0 -0
  811. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_invoke.py +0 -0
  812. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_mcp.py +0 -0
  813. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_metering_tracing_exports.py +0 -0
  814. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_migrate_span_fields.py +0 -0
  815. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_model_role_export.py +0 -0
  816. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_open_workspace_reconfig.py +0 -0
  817. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_options.py +0 -0
  818. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_pack_sdk.py +0 -0
  819. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_pack_sdk_segmenter.py +0 -0
  820. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_pack_store.py +0 -0
  821. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_pdf_page_count.py +0 -0
  822. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_public_gaps_ps38.py +0 -0
  823. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_tracing_helpers_ps32.py +0 -0
  824. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_usage.py +0 -0
  825. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_workspace.py +0 -0
  826. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/api/test_workspace_models.py +0 -0
  827. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/arch/domain_vocabulary_baseline.json +0 -0
  828. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/arch/test_api_docs_current.py +0 -0
  829. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/arch/test_doc_references.py +0 -0
  830. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/arch/test_engine_domain_vocabulary.py +0 -0
  831. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/arch/test_import_contracts.py +0 -0
  832. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/arch/test_lock_version.py +0 -0
  833. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/arch/test_packs_use_store_primitives.py +0 -0
  834. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/arch/test_pdfium_door.py +0 -0
  835. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/arch/test_shipped_skills.py +0 -0
  836. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/async_helpers.py +0 -0
  837. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/__init__.py +0 -0
  838. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
  839. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_answer_generator.py +0 -0
  840. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_answer_generator_async.py +0 -0
  841. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_assertion_extraction.py +0 -0
  842. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_authoring_contract.py +0 -0
  843. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_chunk_read.py +0 -0
  844. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_chunk_write.py +0 -0
  845. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
  846. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_claim_extraction.py +0 -0
  847. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_clause_exception_linking.py +0 -0
  848. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_compliance_judgment.py +0 -0
  849. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_compliance_store.py +0 -0
  850. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_contract_kg_serve.py +0 -0
  851. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_contract_kg_store.py +0 -0
  852. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
  853. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
  854. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_dg_adapter.py +0 -0
  855. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_dg_async.py +0 -0
  856. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_dg_extraction.py +0 -0
  857. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_dg_model_seam.py +0 -0
  858. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_dg_private.py +0 -0
  859. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_disambiguation.py +0 -0
  860. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_document_scope.py +0 -0
  861. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_embedding.py +0 -0
  862. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_embedding_profiles.py +0 -0
  863. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_entity_resolution.py +0 -0
  864. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
  865. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_fusion.py +0 -0
  866. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_graph_extraction.py +0 -0
  867. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_graph_query.py +0 -0
  868. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_graph_storage.py +0 -0
  869. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_highlight_serve.py +0 -0
  870. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_hybrid_search.py +0 -0
  871. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_jev_decision.py +0 -0
  872. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_manifest_validation.py +0 -0
  873. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_manifests.py +0 -0
  874. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_parse_audit.py +0 -0
  875. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_parsing.py +0 -0
  876. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_parties_extraction.py +0 -0
  877. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
  878. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_query_function_classifier.py +0 -0
  879. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_query_understanding.py +0 -0
  880. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_registry.py +0 -0
  881. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_remote_encoders.py +0 -0
  882. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_repair_partition.py +0 -0
  883. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_requirement_extraction.py +0 -0
  884. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_reranking.py +0 -0
  885. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_retrieval_core.py +0 -0
  886. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_rlm_chunking.py +0 -0
  887. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_rlm_chunking_async.py +0 -0
  888. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_rlm_method.py +0 -0
  889. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_rlm_synthesis.py +0 -0
  890. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_runtime_registry.py +0 -0
  891. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_scan_quality.py +0 -0
  892. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_span_relevance_judgment.py +0 -0
  893. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_span_search.py +0 -0
  894. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
  895. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_structural_model_fallback.py +0 -0
  896. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
  897. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_tiered_ocr.py +0 -0
  898. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/capabilities/test_vlm_ocr.py +0 -0
  899. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/compliance_fakes.py +0 -0
  900. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/conftest.py +0 -0
  901. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/__init__.py +0 -0
  902. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_canonical_source_doc_id.py +0 -0
  903. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_chunk_record.py +0 -0
  904. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_compliance.py +0 -0
  905. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
  906. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_extraction.py +0 -0
  907. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_function.py +0 -0
  908. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_function_routing.py +0 -0
  909. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_identifiers.py +0 -0
  910. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_ingestion_hooks.py +0 -0
  911. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_jurisdiction.py +0 -0
  912. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_ontology.py +0 -0
  913. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_property.py +0 -0
  914. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_provenance.py +0 -0
  915. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/contracts/test_value_match.py +0 -0
  916. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/__init__.py +0 -0
  917. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/_ooxml_fixtures.py +0 -0
  918. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/test_canonicalize.py +0 -0
  919. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/test_cuad.py +0 -0
  920. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/test_cuad_ingestion.py +0 -0
  921. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/test_document_parser.py +0 -0
  922. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/test_edgar.py +0 -0
  923. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/test_embedded.py +0 -0
  924. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/test_gcs_ingestion.py +0 -0
  925. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/test_http.py +0 -0
  926. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/test_parse_wire2.py +0 -0
  927. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/corpus/test_selection.py +0 -0
  928. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/eval/test_contractnli_judge.py +0 -0
  929. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/eval/test_cuad_highlight_metrics.py +0 -0
  930. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/eval/test_kg_property_rerank.py +0 -0
  931. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/eval/test_nl_to_type_metrics.py +0 -0
  932. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/eval/test_relational_eval.py +0 -0
  933. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/evals/__init__.py +0 -0
  934. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/evals/test_gold_contracts.py +0 -0
  935. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/evals/test_gold_import.py +0 -0
  936. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/evals/test_langfuse_backend.py +0 -0
  937. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/evals/test_runner.py +0 -0
  938. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/evals/test_scorer_parity.py +0 -0
  939. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/evals/test_scorers_a.py +0 -0
  940. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/evals/test_scorers_b.py +0 -0
  941. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/evals/test_scorers_c.py +0 -0
  942. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/evals/test_scorers_d.py +0 -0
  943. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity.json +0 -0
  944. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity_blank.pdf +0 -0
  945. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity_cover_with_attachment.pdf +0 -0
  946. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity_db_with_a_broken_report.xlsx +0 -0
  947. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity_db_with_reports.xlsx +0 -0
  948. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/ingestion/parity_grid.xlsx +0 -0
  949. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
  950. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
  951. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/ingestion/textile_test_report.md +0 -0
  952. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/leg_a_silver/README.md +0 -0
  953. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
  954. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/fixtures/table-bearing-contract.pdf +0 -0
  955. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/foundation/__init__.py +0 -0
  956. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/foundation/test_arcadedb_hybrid.py +0 -0
  957. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/foundation/test_model_seam_structured.py +0 -0
  958. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/harness/__init__.py +0 -0
  959. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/harness/test_greenfield_conformance.py +0 -0
  960. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/harness/test_harness_accounting.py +0 -0
  961. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/harness/test_harness_engine_wiring.py +0 -0
  962. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/harness/test_harness_genericity.py +0 -0
  963. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/harness/test_harness_live.py +0 -0
  964. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/harness/test_harness_recorder.py +0 -0
  965. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/harness/test_harness_thinking.py +0 -0
  966. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/__init__.py +0 -0
  967. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_aevaluate.py +0 -0
  968. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
  969. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_concurrency_ceiling.py +0 -0
  970. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_document_metadata.py +0 -0
  971. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_evaluate.py +0 -0
  972. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_evaluate_labels.py +0 -0
  973. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_graph_live.py +0 -0
  974. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_layout_segmenter.py +0 -0
  975. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_sheet_continuations.py +0 -0
  976. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_split_tables.py +0 -0
  977. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_spreadsheet_content.py +0 -0
  978. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_table_rows.py +0 -0
  979. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_tuning.py +0 -0
  980. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_unit_grouper.py +0 -0
  981. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_unit_representative.py +0 -0
  982. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ingestion/test_unreached_rows.py +0 -0
  983. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/journey/incidents_domain.py +0 -0
  984. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/journey/incidents_pack.ttl +0 -0
  985. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/journey/test_incidents_journey.py +0 -0
  986. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/journey/test_pack_schema.py +0 -0
  987. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/mcp/__init__.py +0 -0
  988. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/mcp/test_compliance_server.py +0 -0
  989. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/mcp/test_intra_document_qa_server.py +0 -0
  990. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
  991. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/mcp/test_relational_qa_server.py +0 -0
  992. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
  993. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/__init__.py +0 -0
  994. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_async_infra.py +0 -0
  995. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_classifier_heads_load_clean.py +0 -0
  996. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_model_servers.py +0 -0
  997. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_models_dir.py +0 -0
  998. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_no_gemma_default.py +0 -0
  999. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_profile_routing.py +0 -0
  1000. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_profile_seam.py +0 -0
  1001. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_seam_async.py +0 -0
  1002. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_seam_deadline_and_cap.py +0 -0
  1003. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_seam_event_loops.py +0 -0
  1004. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_seam_retry.py +0 -0
  1005. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_seam_stream.py +0 -0
  1006. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_serving_seam.py +0 -0
  1007. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_serving_wiring.py +0 -0
  1008. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_tag_structured.py +0 -0
  1009. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_tag_structured_async.py +0 -0
  1010. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_tracing.py +0 -0
  1011. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/models/test_usage.py +0 -0
  1012. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ontology/__init__.py +0 -0
  1013. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ontology/test_clause_template.py +0 -0
  1014. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
  1015. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ontology/test_derivation.py +0 -0
  1016. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ontology/test_entity_taxonomy.py +0 -0
  1017. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
  1018. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
  1019. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ontology/test_template_captured_in_ttl.py +0 -0
  1020. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
  1021. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/reference/test_compliance_reference.py +0 -0
  1022. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/reference/test_contract_seam.py +0 -0
  1023. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/scripts/test_eval_chunking_ab.py +0 -0
  1024. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/scripts/test_eval_classifier_ab.py +0 -0
  1025. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/scripts/test_fetch_reference_models.py +0 -0
  1026. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/scripts/test_generation_robustness_errors.py +0 -0
  1027. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/skills/__init__.py +0 -0
  1028. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/skills/test_creating_evals_skill_example.py +0 -0
  1029. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/skills/test_ingestion_skill_example.py +0 -0
  1030. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_boundary.py +0 -0
  1031. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_classifier_property_extractor.py +0 -0
  1032. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
  1033. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_clause_function_classifier.py +0 -0
  1034. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_clause_function_classifier_async.py +0 -0
  1035. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_clause_kg_extractor.py +0 -0
  1036. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_clause_kg_extractor_async.py +0 -0
  1037. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_dim_classifier.py +0 -0
  1038. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_dim_fleet_live.py +0 -0
  1039. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_function_classifier.py +0 -0
  1040. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_hybrid_classifier.py +0 -0
  1041. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_hybrid_property_extractor.py +0 -0
  1042. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_legalbert_classifier.py +0 -0
  1043. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_model_capabilities.py +0 -0
  1044. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_new_function_labels.py +0 -0
  1045. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_page_map.py +0 -0
  1046. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_property_extractor.py +0 -0
  1047. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_property_grounding.py +0 -0
  1048. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_reclassify.py +0 -0
  1049. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_residual_decision.py +0 -0
  1050. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_scarce_function_labels.py +0 -0
  1051. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_segment.py +0 -0
  1052. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_segmentation_vocab.py +0 -0
  1053. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_semantic_judge.py +0 -0
  1054. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_setfit_clause_adapter.py +0 -0
  1055. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_setfit_probabilities.py +0 -0
  1056. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_span_offsets.py +0 -0
  1057. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_stage_labels_0005.py +0 -0
  1058. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_symbolic_validation.py +0 -0
  1059. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/spans/test_tag_clause_extractor.py +0 -0
  1060. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/__init__.py +0 -0
  1061. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_affiliation_backfill.py +0 -0
  1062. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_arcadedb_clause_kg.py +0 -0
  1063. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_arcadedb_contract.py +0 -0
  1064. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_arcadedb_property.py +0 -0
  1065. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_arcadedb_requirement_sources.py +0 -0
  1066. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_arcadedb_span.py +0 -0
  1067. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_chunk_text.py +0 -0
  1068. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_concurrent_writes.py +0 -0
  1069. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_contract_kg_store_live.py +0 -0
  1070. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_document_metadata_live.py +0 -0
  1071. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_document_scope.py +0 -0
  1072. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_engine_domain_neutral.py +0 -0
  1073. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_entities_by_name.py +0 -0
  1074. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_kg_contains.py +0 -0
  1075. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_kg_edges.py +0 -0
  1076. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_kg_identifiers.py +0 -0
  1077. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_kg_mutations.py +0 -0
  1078. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_kg_read.py +0 -0
  1079. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_kg_write.py +0 -0
  1080. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_neutral_schema.py +0 -0
  1081. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_pack_schema_properties.py +0 -0
  1082. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_pooled_client.py +0 -0
  1083. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_store_create_flag.py +0 -0
  1084. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/store/test_write_graph_idempotent.py +0 -0
  1085. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/__init__.py +0 -0
  1086. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_async_ingestion.py +0 -0
  1087. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
  1088. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_clause_results.py +0 -0
  1089. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_compliance_check.py +0 -0
  1090. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_compliance_ingestion.py +0 -0
  1091. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
  1092. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
  1093. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
  1094. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_contract_write_retry.py +0 -0
  1095. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_graph_extraction.py +0 -0
  1096. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_ingest_knobs.py +0 -0
  1097. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
  1098. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_intra_document_qa.py +0 -0
  1099. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_observability.py +0 -0
  1100. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_partial_entry_contract.py +0 -0
  1101. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
  1102. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_relational_qa.py +0 -0
  1103. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_requirement_extraction.py +0 -0
  1104. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_scaffold.py +0 -0
  1105. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_semantic_chunking.py +0 -0
  1106. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
  1107. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
  1108. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/test_backfill_clause_span_id.py +0 -0
  1109. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/test_dg_model_ab.py +0 -0
  1110. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/test_populate_clause_kg.py +0 -0
  1111. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/test_populate_entity_graph.py +0 -0
  1112. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/util/__init__.py +0 -0
  1113. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/util/test_concurrent.py +0 -0
  1114. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/util/test_devices.py +0 -0
  1115. {rag_wright-0.17.0 → rag_wright-0.17.2}/tests/util/test_spacy_model.py +0 -0
@@ -199,7 +199,11 @@ category.
199
199
  - **One record over several rows, or one entity over many units.** The extractor sees one unit at a time. A record
200
200
  whose continuation rows sit under its main row needs a `unit_grouper=` that keeps them together, or a
201
201
  `document_hook=` that reads the whole table with `table_rows` and writes the grouped record. An entity several units
202
- mention (a case its trial rows share) is emitted by its key from each unit and upserted by that key.
202
+ mention (a case its trial rows share) is emitted by its key from each unit and upserted by that key; an edge to it
203
+ emitted from each unit lands once, because the default writer keeps one edge per (type, from node, to node)
204
+ (PS-63). A `writer=` of your own gets the same with `kg_write(ws, nodes, edges, ensure_edges=True)`; leave the flag
205
+ off only when parallel edges of one type between the same two nodes are meant to stay (each with its own
206
+ provenance).
203
207
  - **Resume a long ingest instead of restarting it.** Pass a LangGraph checkpointer (yours, for example a Postgres
204
208
  saver; the engine ships none) and a `run_id` naming the run:
205
209
  `await pipeline.aingest(ws, sources, cache_dir=CACHE, checkpointer=saver, run_id=batch_id)`. If the process stops,
@@ -208,8 +212,9 @@ category.
208
212
  sources, raise `ValueError`: a new run gets a new id. The graph state is built-in values only, so it works under
209
213
  LangGraph's strict msgpack mode; a tuple inside a record's free-form `props` comes back as a list after a resume.
210
214
  - **Re-ingest.** Parsing is cached by content hash, so re-running is cheap. The default writer upserts nodes by their
211
- key but is not fully idempotent for edges (engine gap G8): when a source is re-run, remove its previous records
212
- first (`kg_delete` on the provenance your records carry, such as a per-source property) and write again.
215
+ key and writes each edge once, updating its props, so a re-run leaves no duplicates. It does not remove what a
216
+ source no longer yields: when a re-run should drop records, remove its previous records first (`kg_delete` on the
217
+ provenance your records carry, such as a per-source property) and write again.
213
218
 
214
219
  ## 6. Verify (definition of done)
215
220
 
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.17.2"
3
+ }
@@ -4,6 +4,21 @@ 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
+
15
+ ## [0.17.1](https://github.com/fzaidi-dai/RAG_Wright/compare/0.17.0...0.17.1) (2026-11-07)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **PS-63:** the default record writer keeps one edge per type and endpoints (G8) ([e77ca91](https://github.com/fzaidi-dai/RAG_Wright/commit/e77ca9151e8cd5a425237f30ada721349eac7bb0))
21
+
7
22
  ## [0.17.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.16.1...0.17.0) (2026-11-05)
8
23
 
9
24
 
@@ -55,7 +55,15 @@ 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-01): `rag-wright` 0.16.1 is RELEASED** (PR #20; RuleWright's two requests and a finding
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
61
+ > edge per type and endpoints, `kg_write(..., ensure_edges=True)`, ADR-0142). Next: PS-48, EV-7, PS-30, PS-33. Before it,
62
+ > **`rag-wright` 0.17.0 is RELEASED** (PR #21; TexWright's request: PS-60 a table over
63
+ > the chunk cap is split between lines with its header repeated, so every row keeps its span and `TableRow` (ADR-0141);
64
+ > PS-61 the default segmenter `segment_layout` is on `pack_sdk`; PS-62 a record table's rows that reach no unit are
65
+ > reported, `DocumentReport.unreached_table_rows`). Next: PS-48, EV-7, PS-30, PS-33. Before it,
66
+ > **`rag-wright` 0.16.1 is RELEASED** (PR #20; RuleWright's two requests and a finding
59
67
  > from them: PS-57 a retried contracts-pack write no longer loses a document's clauses, the ArcadeDB conflict budget is
60
68
  > configurable (default 20 attempts / 2 s cap) and a racing UPSERT's duplicate key is retried; PS-58 a `RecordWriter`
61
69
  > returns the count that landed; PS-59 the store's client keeps keep-alive connections, one session per thread). Next:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: rag-wright
3
- Version: 0.17.0
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,32 @@
1
+ # ADR-0142: The default record writer keeps one edge per type and endpoints
2
+
3
+ **Status:** accepted · **Date:** 2026-11-07 · **Related:** PS-63, engine gap G8, TexWright's request
4
+ `2026-10-15-g8-duplicates-edges-within-one-ingest.md`, ADR-0124 (ING-4b `kg_ensure_edges`), issue 0029
5
+ (`outV()`/`inV()` endpoint filters)
6
+
7
+ ## Context
8
+
9
+ With no `writer=`, `build_ingestion` wrote records with `kg_write`: nodes upserted by key, edges created with a plain
10
+ `CREATE EDGE`. The engine's own guidance has an entity several units mention emitted by its key from each unit, so
11
+ each such unit also emitted the edge to it, and that edge landed once per unit, within one ingest and again on every
12
+ re-ingest. Node counts stayed right, so only a traversal showed it (TexWright: 3 children read back as 6). The
13
+ store's idempotent `kg_ensure_edges` runs a query and a write per edge outside any transaction, and scans the edge
14
+ type for each edge.
15
+
16
+ ## Decision
17
+
18
+ - `Store.kg_write` takes `ensure_edges` (default `False`). When true, an edge is identified by its type and its two
19
+ endpoints (direction counts): the batch keeps each edge's last props; each edge is an index-driven `UPDATE` of an
20
+ existing one, reached through `outE` from its indexed from node, then `CREATE EDGE ... IF NOT EXISTS`, all in the
21
+ write's one transaction under the same conflict retry. ArcadeDB 26.7 was probed live: `IF NOT EXISTS` holds within
22
+ one transaction, across transactions and across concurrent writers.
23
+ - The ingestion default writer passes `True`; `rag_wright.api.kg_write` exposes the flag for a domain's own writer.
24
+ - Without the flag `kg_write` is unchanged: a caller whose parallel edges each carry their own provenance (the
25
+ reference pack's clause-to-value assertions, RuleWright's writer) keeps them.
26
+
27
+ ## Consequences
28
+
29
+ - An edge several units emit, or a re-ingest writes again, lands once with the last unit's props; G8 is closed.
30
+ - A domain that means parallel edges of one type between the same two nodes, and uses the default writer, now gets
31
+ one; it passes a `writer=` that calls `kg_write` without the flag.
32
+ - A re-ingest still does not remove records a document no longer yields. `kg_ensure_edges` is unchanged.
@@ -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.
@@ -197,4 +197,7 @@ framing that still appears in older ADRs and the root `SPEC.md`/`plan.md`.
197
197
  0138 PDF parses run one at a time, and the engine reaches pdfium through one locked door ·
198
198
  0139 The agent harness substrate is engine scope ·
199
199
  0140 One model family on Metal, under one process lock ·
200
- 0141 The cap's hard split cuts between lines and repeats a table's header
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 ·
202
+ 0143 A float is written and compared as a double ·
203
+ 0144 One loaded BGE model per process, with its one lock
@@ -430,9 +430,9 @@ Rank the live ARD catalog by semantic match to `query`; return the top `k` (opti
430
430
 
431
431
  Read typed nodes of `node_type` from the workspace (see `Store.kg_read`). Each `where` value is a scalar (equality), a list (membership; an empty list is scope-to-nothing -> `[]`), `NOT_NULL` (presence), a `Range` (comparisons, on any number of fields: `{"weight": Range(ge=180, le=220), "tensile": Range(gt=400)}`) or a `Contains` (a literal substring, case-insensitive unless `case_sensitive=True`; an empty field never matches: `{"composition": Contains("UHMWPE")}`); all filters are AND-ed and evaluated in the store. `key_range=(field, lo, hi)` is the half-open shorthand (`lo <= field < hi`). Then projection, distinct, order and limit. Every name is checked, never interpolated unchecked (the module docstring): a request-chosen field is safe, but an unknown one matches nothing.
432
432
 
433
- ### `kg_write(ws: 'WorkspaceHandle', nodes: 'list', edges: 'Any' = ()) -> 'None'`
433
+ ### `kg_write(ws: 'WorkspaceHandle', nodes: 'list', edges: 'Any' = (), *, ensure_edges: 'bool' = False) -> 'None'`
434
434
 
435
- Upsert typed `nodes` + create typed `edges` in one transaction (see `Store.kg_write`). `nodes`/`edges` are `KgNode`/`KgEdge` (from `rag_wright.api`); the store encodes each field per its pack-declared type. A node type the workspace's schema does not declare fails the write.
435
+ Upsert typed `nodes` + create typed `edges` in one transaction (see `Store.kg_write`). `nodes`/`edges` are `KgNode`/`KgEdge` (from `rag_wright.api`); the store encodes each field per its pack-declared type. A node type the workspace's schema does not declare fails the write. `ensure_edges=True` (PS-63) writes at most one edge per (type, from node, to node), the last props winning: what a domain `writer=` passes to match the default writer.
436
436
 
437
437
  ### `kg_edges(ws: 'WorkspaceHandle', from_type: 'Optional[str]' = None, *, where: 'Optional[dict]' = None, key_range: 'Optional[tuple]' = None, direction: 'str' = 'out', edge_type: 'Optional[str]' = None, edge_where: 'Optional[dict]' = None, target_where: 'Optional[dict]' = None, select: 'dict') -> 'list[dict]'`
438
438
 
@@ -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
 
@@ -182,7 +182,7 @@ Group into units (checked), attach table rows, extract each unit concurrently (p
182
182
 
183
183
  #### `IngestionStages.write(self, sd: 'Any', extractions: 'list') -> 'int'`
184
184
 
185
- Persist the records (the domain's writer, else `kg_write`). Returns the number that landed: the writer's own count when it returns one; else the record nodes handed over, which the default `kg_write` lands in one transaction (it raises rather than land part of them).
185
+ Persist the records (the domain's writer, else `kg_write` with idempotent edges). Returns the number that landed: the writer's own count when it returns one; else the record nodes handed over, which the default `kg_write` lands in one transaction (it raises rather than land part of them).
186
186
 
187
187
  #### `IngestionStages.write_document_node(self, doc_id: 'str', *, parent_id: 'Optional[str]', filename: 'str', media_type: 'str', sha256: 'str', metadata: 'Optional[dict]' = None) -> 'None'`
188
188
 
@@ -53,13 +53,16 @@ they are the real "does a new customer benefit?" items. The genuine engine ones
53
53
  - **Proposed:** a generic reader in `ontology.pack_schema` (or similar) over an engine-namespaced criterion
54
54
  vocabulary.
55
55
 
56
- ### G8: The default record writer is not fully idempotent
57
- - **Where:** with no `writer=`, `build_ingestion` writes with the store's `kg_write`: nodes are upserted by their key,
58
- but edges are created (`CREATE EDGE`), so re-ingesting a document duplicates its record edges. The store's
59
- idempotent `kg_ensure_edges` (used for `EmbeddedIn` / `AttachedTo`) is not exported from `rag_wright.api`.
60
- - **Impact:** a domain whose extractor returns edges must pass its own idempotent `writer`, or clear the document's
61
- records before a re-ingest.
62
- - **Proposed:** make the default writer use `kg_ensure_edges`, or export it.
56
+ ### G8: The default record writer is not fully idempotent (closed by PS-63)
57
+ - **Where:** with no `writer=`, `build_ingestion` wrote with the store's `kg_write`: nodes were upserted by their key,
58
+ but edges were created (`CREATE EDGE`).
59
+ - **Impact:** not only a re-ingest. Within ONE ingest of one document, an edge that several units emit (an entity
60
+ several rows mention, emitted by its key from each unit) landed once per unit, so a traversal over-counted while
61
+ node counts looked right (TexWright, 2026-10-15).
62
+ - **Closed by PS-63 (ADR-0142):** the default writer calls `kg_write(..., ensure_edges=True)`: at most one edge per
63
+ (type, from node, to node), within the write, across writes and across concurrent writers, the last props landing,
64
+ in the same one transaction. A domain `writer=` gets the same with `rag_wright.api.kg_write(ws, nodes, edges,
65
+ ensure_edges=True)`; without the flag `kg_write` still keeps parallel edges.
63
66
 
64
67
  ### G9: One domain pack per workspace through the public API
65
68
  - **Where:** `EngineConfig.pack` takes one `.ttl`. A second pack's schema needs the store-internal
@@ -221,10 +221,11 @@ ask-first change.
221
221
  citation**.
222
222
  - **What is cached on a re-ingest:** in `build_ingestion`, parse and chunk are content-hash cached; spans,
223
223
  record nodes and the `Document` node are upserted by key; the `EmbeddedIn` / `AttachedTo` edges are ensured (never
224
- duplicated). Extraction runs again on every ingest (cache inside your extractor if it is expensive), and the
225
- default writer creates record edges rather than ensuring them, so re-ingesting a document whose extractor returns
226
- edges duplicates them unless your `writer` is idempotent (engine gap G8). A boundary decider is not cached either
227
- (engine gap G6).
224
+ duplicated). Extraction runs again on every ingest (cache inside your extractor if it is expensive). The
225
+ default writer ensures record edges too (PS-63): one edge per (type, from node, to node), whether several units
226
+ emit it or a re-ingest writes it again, with the last props landing; a domain `writer=` gets the same from
227
+ `kg_write(ws, nodes, edges, ensure_edges=True)`. A re-ingest does not remove records a document no longer yields.
228
+ A boundary decider is not cached either (engine gap G6).
228
229
 
229
230
  ## Building your own
230
231
 
@@ -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`)
@@ -134,4 +134,7 @@ in two at the PS-6 gate so the store rewrite is its own visible task. One task,
134
134
  | PS-60 | TexWright (2026-11-05, `2026-11-05-export-the-default-segmenter-on-pack-sdk.md`): a table over the chunk cap was hard-split at a fixed length, mid-row; the rows after the cut lost their table layout (one span between them, no `TableRow`), and one item `chunk_layouts` could not place blocked every later item's layout. 4 of 140 records lost silently | the cut falls between lines and repeats the table's header in each continuation chunk; an unplaceable item no longer blocks later ones; a manifest cached with the old cut is re-chunked once; live: a 140-record x 76-column workbook yields 140 records | done 2026-11-05 (ADR-0141): live, the workbook (280 rows, two per record) gave 280/280 row records, 75/280 with the old cut |
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
+ | 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 |
137
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.0"
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"
@@ -199,7 +199,11 @@ category.
199
199
  - **One record over several rows, or one entity over many units.** The extractor sees one unit at a time. A record
200
200
  whose continuation rows sit under its main row needs a `unit_grouper=` that keeps them together, or a
201
201
  `document_hook=` that reads the whole table with `table_rows` and writes the grouped record. An entity several units
202
- mention (a case its trial rows share) is emitted by its key from each unit and upserted by that key.
202
+ mention (a case its trial rows share) is emitted by its key from each unit and upserted by that key; an edge to it
203
+ emitted from each unit lands once, because the default writer keeps one edge per (type, from node, to node)
204
+ (PS-63). A `writer=` of your own gets the same with `kg_write(ws, nodes, edges, ensure_edges=True)`; leave the flag
205
+ off only when parallel edges of one type between the same two nodes are meant to stay (each with its own
206
+ provenance).
203
207
  - **Resume a long ingest instead of restarting it.** Pass a LangGraph checkpointer (yours, for example a Postgres
204
208
  saver; the engine ships none) and a `run_id` naming the run:
205
209
  `await pipeline.aingest(ws, sources, cache_dir=CACHE, checkpointer=saver, run_id=batch_id)`. If the process stops,
@@ -208,8 +212,9 @@ category.
208
212
  sources, raise `ValueError`: a new run gets a new id. The graph state is built-in values only, so it works under
209
213
  LangGraph's strict msgpack mode; a tuple inside a record's free-form `props` comes back as a list after a resume.
210
214
  - **Re-ingest.** Parsing is cached by content hash, so re-running is cheap. The default writer upserts nodes by their
211
- key but is not fully idempotent for edges (engine gap G8): when a source is re-run, remove its previous records
212
- first (`kg_delete` on the provenance your records carry, such as a per-source property) and write again.
215
+ key and writes each edge once, updating its props, so a re-run leaves no duplicates. It does not remove what a
216
+ source no longer yields: when a re-run should drop records, remove its previous records first (`kg_delete` on the
217
+ provenance your records carry, such as a per-source property) and write again.
213
218
 
214
219
  ## 6. Verify (definition of done)
215
220
 
@@ -62,11 +62,12 @@ def kg_update(ws: WorkspaceHandle, type_name: str, *, set: dict, where: Optional
62
62
  return ws._store.kg_update(type_name, set=set, where=where, key_range=key_range)
63
63
 
64
64
 
65
- def kg_write(ws: WorkspaceHandle, nodes: list, edges: Any = ()) -> None:
65
+ def kg_write(ws: WorkspaceHandle, nodes: list, edges: Any = (), *, ensure_edges: bool = False) -> None:
66
66
  """Upsert typed `nodes` + create typed `edges` in one transaction (see `Store.kg_write`). `nodes`/`edges` are
67
67
  `KgNode`/`KgEdge` (from `rag_wright.api`); the store encodes each field per its pack-declared type. A node type
68
- the workspace's schema does not declare fails the write."""
69
- ws._store.kg_write(nodes, edges)
68
+ the workspace's schema does not declare fails the write. `ensure_edges=True` (PS-63) writes at most one edge per
69
+ (type, from node, to node), the last props winning: what a domain `writer=` passes to match the default writer."""
70
+ ws._store.kg_write(nodes, edges, ensure_edges=ensure_edges)
70
71
 
71
72
 
72
73
  def kg_edges(ws: WorkspaceHandle, from_type: Optional[str] = None, *, where: Optional[dict] = None,
@@ -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 an instance lock. The lock guards ONLY `self._model.encode`
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, and a
87
- process can hold several embedders (the query embedder, each workspace's) plus the reranker."""
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
- self._lock = model_lock(resolved) # issue 0016 per instance; on Metal one lock per process (PS-55)
96
- if model is not None: # injected (hermetic tests) -- avoids loading the real model
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
- from FlagEmbedding import BGEM3FlagModel
102
+ def build() -> object:
103
+ from FlagEmbedding import BGEM3FlagModel
104
+
105
+ return BGEM3FlagModel(model_name, use_fp16=use_fp16, devices=resolved)
100
106
 
101
- self._model = BGEM3FlagModel(model_name, use_fp16=use_fp16, devices=resolved)
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
- self._lock = model_lock(resolved) # issue 0016 per instance; on Metal one lock per process (PS-55)
82
- if model is not None: # injected (hermetic tests)
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
- import torch
86
- from sentence_transformers import CrossEncoder
87
-
88
- self._model = CrossEncoder(model_name, device=resolved, max_length=512,
89
- activation_fn=torch.nn.Identity()) # raw logits, as FlagEmbedding gave
90
- if use_fp16 and resolved != "cpu":
91
- self._model.model.half()
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:
@@ -259,9 +259,9 @@ class IngestionStages:
259
259
  return stage
260
260
 
261
261
  async def write(self, sd: Any, extractions: list) -> int:
262
- """Persist the records (the domain's writer, else `kg_write`). Returns the number that landed: the writer's own
263
- count when it returns one; else the record nodes handed over, which the default `kg_write` lands in one
264
- transaction (it raises rather than land part of them)."""
262
+ """Persist the records (the domain's writer, else `kg_write` with idempotent edges). Returns the number that
263
+ landed: the writer's own count when it returns one; else the record nodes handed over, which the default
264
+ `kg_write` lands in one transaction (it raises rather than land part of them)."""
265
265
  if self.writer is not None:
266
266
  landed = await self.writer(sd.source_doc_id, extractions)
267
267
  if landed is not None:
@@ -269,7 +269,8 @@ class IngestionStages:
269
269
  else:
270
270
  nodes = [n for e in extractions for n in e.nodes]
271
271
  edges = [ed for e in extractions for ed in e.edges]
272
- await asyncio.to_thread(self.store.kg_write, nodes, edges)
272
+ # PS-63 (G8): an edge several units emit (an entity several rows mention), or a re-ingest, lands once
273
+ await asyncio.to_thread(self.store.kg_write, nodes, edges, ensure_edges=True)
273
274
  return sum(len(e.nodes) for e in extractions)
274
275
 
275
276
  def write_document_node(self, doc_id: str, *, parent_id: Optional[str], filename: str, media_type: str,