rag-wright 0.13.0__tar.gz → 0.14.1__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 (1091) hide show
  1. {rag_wright-0.13.0/src/rag_wright/.agents → rag_wright-0.14.1/.claude}/skills/authoring-a-capability/SKILL.md +9 -3
  2. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/building-an-ingestion-capability/SKILL.md +10 -1
  3. {rag_wright-0.13.0/src/rag_wright/.agents → rag_wright-0.14.1/.claude}/skills/using-the-rag-wright-engine/SKILL.md +2 -1
  4. rag_wright-0.14.1/.release-please-manifest.json +3 -0
  5. {rag_wright-0.13.0 → rag_wright-0.14.1}/CHANGELOG.md +17 -0
  6. {rag_wright-0.13.0 → rag_wright-0.14.1}/CLAUDE.md +11 -1
  7. {rag_wright-0.13.0 → rag_wright-0.14.1}/PKG-INFO +1 -1
  8. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +25 -0
  9. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/api/README.md +19 -1
  10. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/architecture.md +4 -2
  11. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/concepts.md +6 -0
  12. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/ontology-authoring.md +6 -1
  13. rag_wright-0.14.1/docs/specs/langgraph-ingestion/plan.md +77 -0
  14. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/plan.md +2 -0
  15. rag_wright-0.14.1/docs/specs/public-surface/rulewright-migration-0.13.0.md +34 -0
  16. rag_wright-0.14.1/docs/specs/public-surface/rulewright-migration-0.14.0.md +45 -0
  17. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/templates/product-starter/CLAUDE.md.template +2 -1
  18. {rag_wright-0.13.0 → rag_wright-0.14.1}/pyproject.toml +1 -1
  19. {rag_wright-0.13.0/.claude → rag_wright-0.14.1/src/rag_wright/.agents}/skills/authoring-a-capability/SKILL.md +9 -3
  20. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/building-an-ingestion-capability/SKILL.md +10 -1
  21. {rag_wright-0.13.0/.claude → rag_wright-0.14.1/src/rag_wright/.agents}/skills/using-the-rag-wright-engine/SKILL.md +2 -1
  22. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/builder.py +304 -60
  23. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/store/arcadedb.py +63 -11
  24. {rag_wright-0.13.0 → rag_wright-0.14.1}/tasks.md +7 -1
  25. rag_wright-0.14.1/tests/fixtures/ingestion/parity.json +3195 -0
  26. rag_wright-0.14.1/tests/fixtures/ingestion/parity_blank.pdf +29 -0
  27. rag_wright-0.14.1/tests/fixtures/ingestion/parity_cover_with_attachment.pdf +0 -0
  28. rag_wright-0.14.1/tests/fixtures/ingestion/parity_db_with_a_broken_report.xlsx +0 -0
  29. rag_wright-0.14.1/tests/fixtures/ingestion/parity_db_with_reports.xlsx +0 -0
  30. rag_wright-0.14.1/tests/fixtures/ingestion/parity_grid.xlsx +0 -0
  31. rag_wright-0.14.1/tests/ingestion/test_graph_live.py +84 -0
  32. rag_wright-0.14.1/tests/ingestion/test_graph_parity.py +424 -0
  33. rag_wright-0.14.1/tests/store/test_concurrent_writes.py +108 -0
  34. rag_wright-0.14.1/tests/store/test_pack_schema_properties.py +54 -0
  35. {rag_wright-0.13.0 → rag_wright-0.14.1}/uv.lock +1 -1
  36. rag_wright-0.13.0/.release-please-manifest.json +0 -3
  37. rag_wright-0.13.0/tests/store/test_concurrent_writes.py +0 -50
  38. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/settings.json +0 -0
  39. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/building-a-product-backend/SKILL.md +0 -0
  40. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/building-a-product-frontend/SKILL.md +0 -0
  41. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/building-an-agent-harness/SKILL.md +0 -0
  42. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
  43. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/creating-evals/SKILL.md +0 -0
  44. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/laya/SKILL.md +0 -0
  45. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/qwen-vllm-modal/SKILL.md +0 -0
  46. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
  47. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
  48. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/setfit/SKILL.md +0 -0
  49. {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/specifying-a-product-on-the-engine/SKILL.md +0 -0
  50. {rag_wright-0.13.0 → rag_wright-0.14.1}/.env.example +0 -0
  51. {rag_wright-0.13.0 → rag_wright-0.14.1}/.github/workflows/publish.yml +0 -0
  52. {rag_wright-0.13.0 → rag_wright-0.14.1}/.github/workflows/release-please.yml +0 -0
  53. {rag_wright-0.13.0 → rag_wright-0.14.1}/.gitignore +0 -0
  54. {rag_wright-0.13.0 → rag_wright-0.14.1}/LICENSE +0 -0
  55. {rag_wright-0.13.0 → rag_wright-0.14.1}/README.md +0 -0
  56. {rag_wright-0.13.0 → rag_wright-0.14.1}/SPEC.md +0 -0
  57. {rag_wright-0.13.0 → rag_wright-0.14.1}/conftest.py +0 -0
  58. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
  59. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/ArcadeDB_Local.md +0 -0
  60. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/OBSERVABILITY.md +0 -0
  61. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0001-stack-and-library-choices.md +0 -0
  62. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
  63. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
  64. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0004-entity-disambiguation.md +0 -0
  65. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0005-relational-golden-set.md +0 -0
  66. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0006-model-profile.md +0 -0
  67. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0007-arcadedb-store-schema.md +0 -0
  68. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
  69. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
  70. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
  71. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
  72. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
  73. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
  74. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
  75. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
  76. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
  77. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
  78. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
  79. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
  80. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
  81. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
  82. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
  83. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
  84. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
  85. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
  86. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
  87. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
  88. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
  89. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
  90. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
  91. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
  92. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0032-nl-to-type-two-step-reason-emit-on-gemma.md +0 -0
  93. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
  94. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
  95. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
  96. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
  97. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
  98. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0038-full-cuad-kg-on-gcp-gpu-vm-and-gcs-backup.md +0 -0
  99. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
  100. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
  101. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
  102. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0042-clause-level-span-id-provenance-and-content-hash-backfill.md +0 -0
  103. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
  104. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
  105. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
  106. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
  107. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
  108. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
  109. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
  110. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
  111. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
  112. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
  113. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
  114. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
  115. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0055-confidence-out-of-band.md +0 -0
  116. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
  117. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0057-async-engine-architecture.md +0 -0
  118. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0058-structure-first-chunking.md +0 -0
  119. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
  120. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
  121. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
  122. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +0 -0
  123. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
  124. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
  125. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
  126. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
  127. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0067-domain-pack-retargeting.md +0 -0
  128. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
  129. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
  130. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
  131. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
  132. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
  133. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
  134. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
  135. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
  136. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
  137. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
  138. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
  139. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
  140. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
  141. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
  142. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
  143. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
  144. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
  145. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
  146. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0086-streaming-cost-capture.md +0 -0
  147. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
  148. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
  149. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
  150. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0090-affiliate-of-extraction.md +0 -0
  151. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0091-retire-partyto-edge.md +0 -0
  152. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0092-idempotent-write-graph.md +0 -0
  153. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0093-entities-by-name-seam.md +0 -0
  154. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0094-workspace-document-scope.md +0 -0
  155. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0095-span-page-provenance.md +0 -0
  156. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
  157. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
  158. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0098-invoke-time-document-scope.md +0 -0
  159. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
  160. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0100-profile-based-model-routing.md +0 -0
  161. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
  162. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
  163. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
  164. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
  165. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
  166. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
  167. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0107-requirement-page-provenance.md +0 -0
  168. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
  169. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
  170. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
  171. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
  172. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
  173. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
  174. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
  175. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
  176. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
  177. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
  178. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0118-engine-core-api-vs-ard-adapter-free-impl-ref-client.md +0 -0
  179. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0119-jev-typed-decision-model-for-compliance-closed-set-fields.md +0 -0
  180. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
  181. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
  182. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
  183. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
  184. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
  185. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
  186. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0127-retire-the-okf-code.md +0 -0
  187. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
  188. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0129-laya-temperatures-and-the-sklearn-floor.md +0 -0
  189. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0130-deploy-the-self-hosted-model-server-from-the-engine.md +0 -0
  190. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0131-model-server-hardening-after-rulewright-review.md +0 -0
  191. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0132-model-server-cold-start-from-a-gpu-snapshot.md +0 -0
  192. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0133-model-call-deadline-follows-the-timeout-and-a-thinking-cap.md +0 -0
  193. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0134-skills-for-product-developers-are-linked-per-project-never-globally.md +0 -0
  194. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0135-the-seam-gives-each-event-loop-its-own-async-http-client.md +0 -0
  195. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0136-spreadsheet-tables-are-glued-back-across-blank-rows.md +0 -0
  196. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0137-generated-answers-state-their-support-and-none-is-an-abstention.md +0 -0
  197. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0138-the-engine-reaches-pdfium-through-one-locked-door.md +0 -0
  198. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0139-the-agent-harness-substrate-is-engine-scope.md +0 -0
  199. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/README.md +0 -0
  200. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/api/harness.md +0 -0
  201. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/api/pack_sdk.md +0 -0
  202. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
  203. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/README.md +0 -0
  204. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/design/deontic-applicability-routing.md +0 -0
  205. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
  206. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/design/semantic-subject-segmentation.md +0 -0
  207. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/design/unify-subject-preprocessing.md +0 -0
  208. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0037-closed-vocab-drops-verbatim-values-to-other.md +0 -0
  209. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0038-a-clause-node-is-now-created-per-sentence-so-98-percent-of-spans-become-clauses.md +0 -0
  210. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0039-the-provision-detector-reads-text-but-docling-puts-the-section-number-in-marker.md +0 -0
  211. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0040-covered-subject-is-asked-of-every-provision-so-verbatim-retention-fills-it-with-noise.md +0 -0
  212. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
  213. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0041-leg-b-discards-the-best-dense-matches-on-some-queries.md +0 -0
  214. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0042-usage-is-captured-per-call-but-never-returned-so-cost-needs-a-langfuse-round-trip.md +0 -0
  215. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0043-a-requirement-carries-no-page-provenance-so-a-finding-cannot-point-into-its-policy.md +0 -0
  216. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0044-document-signals-scaffolding-is-shown-to-the-user-as-a-quote-from-their-document.md +0 -0
  217. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0045-a-fixed-money-cap-records-no-cap-quantum-so-the-amount-is-only-prose.md +0 -0
  218. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0046-appending-a-natural-follow-up-to-a-question-drops-the-clause-type.md +0 -0
  219. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0047-an-exact-deepagents-pin-transitively-pins-every-consumer.md +0 -0
  220. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0048-the-pinned-endpoints-latency-tail-makes-agent-runs-undebuggable-from-either-side.md +0 -0
  221. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
  222. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
  223. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
  224. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
  225. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-01_issue-0013-recall-first-actor-gate_rulewright.md +0 -0
  226. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
  227. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
  228. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
  229. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-04_issue-0016-thread-safe-embedder_rulewright.md +0 -0
  230. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
  231. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-05_tagparse-ingestion-and-granite-4.2_rulewright.md +0 -0
  232. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
  233. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
  234. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_issue-0029-idempotent-write-graph_rulewright.md +0 -0
  235. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_issue-0030-entities-by-name_rulewright.md +0 -0
  236. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
  237. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
  238. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_rename-run-ad-compliance-check_rulewright.md +0 -0
  239. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
  240. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
  241. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0031-followup-failclosed-and-nodrift_rulewright.md +0 -0
  242. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0031-followup-validate-ingested-set_rulewright.md +0 -0
  243. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0031-workspace-document-scope_rulewright.md +0 -0
  244. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0032-span-page-provenance_rulewright.md +0 -0
  245. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
  246. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0034-invoke-time-document-scope_rulewright.md +0 -0
  247. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-11_issue-0035-followup-derived-guard_rulewright.md +0 -0
  248. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-11_issue-0035-mcp-no-model-tenant_rulewright.md +0 -0
  249. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
  250. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
  251. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
  252. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
  253. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
  254. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
  255. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
  256. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-14_document-signals-off-citation_0044_rulewright.md +0 -0
  257. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
  258. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-16_qwen3-27b-single-a100-serving-profile_rulewright.md +0 -0
  259. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
  260. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-18_fp8-kv-16k-single-a100_rulewright.md +0 -0
  261. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
  262. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
  263. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-21_0048-part2-modal-answers_from_rulewright.md +0 -0
  264. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-21_0048-part2-modal-scoping-questions_rulewright.md +0 -0
  265. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/misc/.gitkeep +0 -0
  266. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/Corpus_Acquisition.md +0 -0
  267. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/async-migration.md +0 -0
  268. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/demo_plan.md +0 -0
  269. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
  270. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
  271. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
  272. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
  273. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
  274. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
  275. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/configuration.md +0 -0
  276. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/contract_pipeline_explainer.md +0 -0
  277. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/corpus_ingest_recipe.md +0 -0
  278. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/README.md +0 -0
  279. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/_engine-gaps.md +0 -0
  280. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/authoring-capabilities.md +0 -0
  281. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/classification-and-decision-models.md +0 -0
  282. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/entity-resolution.md +0 -0
  283. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/evals-from-expert-files.md +0 -0
  284. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/kg-construction.md +0 -0
  285. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/classifier_model_ab.md +0 -0
  286. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/compliance_demo.md +0 -0
  287. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/compliance_gate_cc7.md +0 -0
  288. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/compliance_rung2_cc7.md +0 -0
  289. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
  290. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/dg_model_ab.md +0 -0
  291. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/function_gate_recall.md +0 -0
  292. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/generation_robustness_b_vs_c.md +0 -0
  293. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/nl_to_type_cu-d2.md +0 -0
  294. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/ocr_benchmark.md +0 -0
  295. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/prod1_readiness.md +0 -0
  296. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/prod2_readiness.md +0 -0
  297. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/query_side_model_ab.md +0 -0
  298. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/silver_granite_vs_gemma4.md +0 -0
  299. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/silver_provider_routing.md +0 -0
  300. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
  301. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/evals.md +0 -0
  302. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/harness.md +0 -0
  303. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/installation.md +0 -0
  304. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/playbook.md +0 -0
  305. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/capability_profiles.md +0 -0
  306. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/contracts_product_roadmap.md +0 -0
  307. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/engine-api-migration-handoff.md +0 -0
  308. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/engine_async_api.md +0 -0
  309. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/new-domain-build-sequence.md +0 -0
  310. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/seam-adaptation-guide.md +0 -0
  311. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
  312. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
  313. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/proposals/new-domain-developer-journey.md +0 -0
  314. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/proposals/ontology-induction.md +0 -0
  315. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/quickstart.md +0 -0
  316. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/reference-pack.md +0 -0
  317. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/releasing.md +0 -0
  318. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/engine-platform/SPEC.md +0 -0
  319. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/engine-platform/TASKS.md +0 -0
  320. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/engine-prep/plan.md +0 -0
  321. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/evals/plan.md +0 -0
  322. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
  323. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
  324. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/ingestion-hooks/plan.md +0 -0
  325. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
  326. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-arcadedb-separation.md +0 -0
  327. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.10.0.md +0 -0
  328. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.11.0.md +0 -0
  329. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.12.0.md +0 -0
  330. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.3.0.md +0 -0
  331. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.4.0.md +0 -0
  332. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.5.0.md +0 -0
  333. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.6.0.md +0 -0
  334. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.7.0.md +0 -0
  335. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.8.0.md +0 -0
  336. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.9.0.md +0 -0
  337. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-reply-2026-10-10-laya-and-sklearn.md +0 -0
  338. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/templates/product-starter/README.md +0 -0
  339. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/templates/product-starter/dependabot.yml +0 -0
  340. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/templates/product-starter/playbook.md.template +0 -0
  341. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/upstream/laya-temperature-range-mismatch.md +0 -0
  342. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
  343. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
  344. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
  345. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
  346. {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/workspaces.md +0 -0
  347. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/__init__.py +0 -0
  348. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/acord.py +0 -0
  349. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/acord_retrieval.py +0 -0
  350. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/boundary_residue_gold.py +0 -0
  351. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/build_golden.py +0 -0
  352. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
  353. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
  354. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
  355. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/compliance_demo/subjects/post_violation.txt +0 -0
  356. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/condensed_pipeline.py +0 -0
  357. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/contract_parity_live.py +0 -0
  358. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/contractnli_judge.py +0 -0
  359. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/cuad_highlight.py +0 -0
  360. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/embedded_eval.py +0 -0
  361. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/full_pipeline_rerank.py +0 -0
  362. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/function_ceiling.py +0 -0
  363. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/function_property_rerank.py +0 -0
  364. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/function_rerank.py +0 -0
  365. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/gate1_chunker_ab.py +0 -0
  366. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/gate2_hybrid_rerank.py +0 -0
  367. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/golden/relational/set.json +0 -0
  368. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/golden.py +0 -0
  369. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/ground_discriminator_rerank.py +0 -0
  370. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/harness.py +0 -0
  371. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/ingestion_live_smoke.py +0 -0
  372. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/kg_primary.py +0 -0
  373. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/kg_property_rerank.py +0 -0
  374. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/listwise_rerank.py +0 -0
  375. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/multihop.py +0 -0
  376. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/nl_to_type.py +0 -0
  377. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/relational_eval.py +0 -0
  378. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/residual_decision_gold.py +0 -0
  379. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/segmenter_eval.py +0 -0
  380. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/semantic_judge_gold.py +0 -0
  381. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/test_acord.py +0 -0
  382. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/test_acord_retrieval.py +0 -0
  383. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/test_harness.py +0 -0
  384. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/test_multihop_set.py +0 -0
  385. {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/unit_grouper_eval.py +0 -0
  386. {rag_wright-0.13.0 → rag_wright-0.14.1}/examples/model_server.py +0 -0
  387. {rag_wright-0.13.0 → rag_wright-0.14.1}/examples/quickstart.py +0 -0
  388. {rag_wright-0.13.0 → rag_wright-0.14.1}/plan.md +0 -0
  389. {rag_wright-0.13.0 → rag_wright-0.14.1}/release-please-config.json +0 -0
  390. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ab_model_overlap.py +0 -0
  391. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acord_unify.py +0 -0
  392. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_acord.py +0 -0
  393. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_cuad.py +0 -0
  394. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_ecfr.py +0 -0
  395. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_edgar.py +0 -0
  396. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_ftc_255.py +0 -0
  397. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_prod1_corpus.py +0 -0
  398. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/audit_reclass_flips.py +0 -0
  399. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/author_leg_a_silver_key.py +0 -0
  400. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/backfill_affiliations.py +0 -0
  401. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/backfill_clause_span_id.py +0 -0
  402. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/backfill_edge_source_doc_id.py +0 -0
  403. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/backup_kg_to_gcs.sh +0 -0
  404. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/bootstrap_template_capture.py +0 -0
  405. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/bootstrap_typed_edges.py +0 -0
  406. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/build_api_docs.py +0 -0
  407. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/build_api_docs.sh +0 -0
  408. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/build_cuad_clause_cache.py +0 -0
  409. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/build_function_routing_map.py +0 -0
  410. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/build_harness_doc.py +0 -0
  411. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_assemble_v2.py +0 -0
  412. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_assemble_v3.py +0 -0
  413. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_generate_hard_negatives.py +0 -0
  414. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_generate_hard_positives.py +0 -0
  415. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_generate_training.py +0 -0
  416. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_hybrid.py +0 -0
  417. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_hybrid2.py +0 -0
  418. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_jev_actor.py +0 -0
  419. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_jev_claimtypes.py +0 -0
  420. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_jev_operative.py +0 -0
  421. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_label_spans.py +0 -0
  422. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_laya_prep.py +0 -0
  423. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_laya_train.py +0 -0
  424. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_prep_operative.py +0 -0
  425. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_relabel_rubric.py +0 -0
  426. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_relabel_rubric2.py +0 -0
  427. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_train_operative.py +0 -0
  428. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/compare_extraction_models.py +0 -0
  429. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/compliance_actor_gate_smoke.py +0 -0
  430. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/compliance_engine_smoke.py +0 -0
  431. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/compliance_policy_demo.py +0 -0
  432. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/curate_taxonomy_gaps.py +0 -0
  433. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/dg_model_ab.py +0 -0
  434. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_knn_expansion.py +0 -0
  435. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_knn_rerank.py +0 -0
  436. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_leg_pool.py +0 -0
  437. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_legs.py +0 -0
  438. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_pool.py +0 -0
  439. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_relstructure.py +0 -0
  440. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_retrieval.py +0 -0
  441. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/eval_all.py +0 -0
  442. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/eval_ce.py +0 -0
  443. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/eval_listwise_b.py +0 -0
  444. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/export_ce_dataset.py +0 -0
  445. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/extract_features.py +0 -0
  446. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/listwise_variants.py +0 -0
  447. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/relational_features.py +0 -0
  448. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/train_ce.py +0 -0
  449. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/train_modal.py +0 -0
  450. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/enrich_edgar_candidates.py +0 -0
  451. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/eval_chunking_ab.py +0 -0
  452. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
  453. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/eval_compliance_gold.py +0 -0
  454. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/extract_arcadedb_docs.py +0 -0
  455. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/fetch_reference_models.py +0 -0
  456. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/generate_contract_python.py +0 -0
  457. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/git_post_commit_graphify.sh +0 -0
  458. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/granite_chunker_assess.py +0 -0
  459. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/graph_status.sh +0 -0
  460. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_acord.py +0 -0
  461. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_compliance_async_prod2.py +0 -0
  462. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_compliance_document_prod2.py +0 -0
  463. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_compliance_prod2.py +0 -0
  464. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_cuad.py +0 -0
  465. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_cuad_full.py +0 -0
  466. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_ftc_compliance.py +0 -0
  467. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_prod1.py +0 -0
  468. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_prod1_async.py +0 -0
  469. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_smoke.py +0 -0
  470. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/install_git_hooks.sh +0 -0
  471. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/label_new_functions.py +0 -0
  472. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/legb_function_gate_recall.py +0 -0
  473. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/make_compliance_fixtures.py +0 -0
  474. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/make_compliance_gold.py +0 -0
  475. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/mcp_compliance_agent_demo.py +0 -0
  476. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/mcp_intra_document_qa_smoke.py +0 -0
  477. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/mcp_query_legs_agent_demo.py +0 -0
  478. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/measure_generation_robustness.py +0 -0
  479. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/measure_harness_genericity.py +0 -0
  480. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/measure_silver.py +0 -0
  481. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/merge_docs_into_framework.py +0 -0
  482. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
  483. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/migrate_silver_evidence_autotag.py +0 -0
  484. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
  485. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/migrate_span_fields.py +0 -0
  486. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/mine_scarce_functions.py +0 -0
  487. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_arcadedb.py +0 -0
  488. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_backfill.py +0 -0
  489. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_exception_linking.py +0 -0
  490. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_gemma4_vllm.py +0 -0
  491. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_gemma4_vllm_snapshot.py +0 -0
  492. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_granite_server.py +0 -0
  493. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_granite_throughput.py +0 -0
  494. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_granite_vllm_server.py +0 -0
  495. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_query_app.py +0 -0
  496. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_qwen3_27b_bench.py +0 -0
  497. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_qwen3_27b_snapshot.py +0 -0
  498. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_qwen3_vllm_server.py +0 -0
  499. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_stack_a100.py +0 -0
  500. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ocr_benchmark.py +0 -0
  501. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ocr_preprocess.py +0 -0
  502. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ontology_dimension_check.py +0 -0
  503. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/phase_a_leg_validate.py +0 -0
  504. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/populate_clause_kg.py +0 -0
  505. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/populate_entity_graph.py +0 -0
  506. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/populate_entity_graph_extracted.py +0 -0
  507. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/populate_property_store.py +0 -0
  508. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/prep_relational_verification.py +0 -0
  509. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/publish_manifests.py +0 -0
  510. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/reclassify_kg.py +0 -0
  511. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/refresh_framework_graph.sh +0 -0
  512. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/revert_reclass_flips.py +0 -0
  513. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/run_acord_retrieval.py +0 -0
  514. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/run_clause_exception_linking.py +0 -0
  515. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/semantic_judge_live_validate.py +0 -0
  516. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/semantic_judge_probe.py +0 -0
  517. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/snapshot_leg_a_eval.py +0 -0
  518. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/stack_correctness_validate.py +0 -0
  519. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/table_retrieval_smoke.py +0 -0
  520. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/train_function_classifier.py +0 -0
  521. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/train_legalbert_function.py +0 -0
  522. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/train_legalbert_modal.py +0 -0
  523. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/typed_rerank_validate.py +0 -0
  524. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/verify_wheel_install.sh +0 -0
  525. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/vllm_extraction_ab.py +0 -0
  526. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/vllm_kg_query_validate.py +0 -0
  527. {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/vllm_raw_diagnostic.py +0 -0
  528. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/building-a-product-backend/SKILL.md +0 -0
  529. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/building-a-product-frontend/SKILL.md +0 -0
  530. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/building-an-agent-harness/SKILL.md +0 -0
  531. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
  532. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +0 -0
  533. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/laya/SKILL.md +0 -0
  534. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/qwen-vllm-modal/SKILL.md +0 -0
  535. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
  536. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
  537. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/setfit/SKILL.md +0 -0
  538. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/specifying-a-product-on-the-engine/SKILL.md +0 -0
  539. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/__init__.py +0 -0
  540. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/__init__.py +0 -0
  541. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/agents.py +0 -0
  542. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/answers.py +0 -0
  543. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/config.py +0 -0
  544. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/discover.py +0 -0
  545. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/documents.py +0 -0
  546. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/ids.py +0 -0
  547. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/invoke.py +0 -0
  548. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/kg.py +0 -0
  549. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/mcp.py +0 -0
  550. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/tracing.py +0 -0
  551. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/usage.py +0 -0
  552. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/workspace.py +0 -0
  553. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/__init__.py +0 -0
  554. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/answer_generator.py +0 -0
  555. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/ard.py +0 -0
  556. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/chunk_read.py +0 -0
  557. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/chunk_write.py +0 -0
  558. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/disambiguation.py +0 -0
  559. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/document_parse.py +0 -0
  560. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/document_scope.py +0 -0
  561. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/embedding.py +0 -0
  562. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
  563. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/entity_resolution.py +0 -0
  564. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/fusion.py +0 -0
  565. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/graph_query.py +0 -0
  566. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/graph_storage.py +0 -0
  567. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/hybrid_search.py +0 -0
  568. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/invoke.py +0 -0
  569. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/jev_decision.py +0 -0
  570. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/manifests.py +0 -0
  571. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/parse_audit.py +0 -0
  572. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/parsing.py +0 -0
  573. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/registry.py +0 -0
  574. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/remote_encoders.py +0 -0
  575. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/reranking.py +0 -0
  576. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/retrieval_core.py +0 -0
  577. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/rlm_chunking.py +0 -0
  578. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
  579. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/scan_quality.py +0 -0
  580. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/sheet_tables.py +0 -0
  581. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
  582. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/span_search.py +0 -0
  583. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/vision_to_text.py +0 -0
  584. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
  585. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/__init__.py +0 -0
  586. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/chunk.py +0 -0
  587. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/evals.py +0 -0
  588. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/extraction.py +0 -0
  589. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/graph.py +0 -0
  590. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/identifiers.py +0 -0
  591. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/ingestion.py +0 -0
  592. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/provenance.py +0 -0
  593. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/span.py +0 -0
  594. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/corpus/__init__.py +0 -0
  595. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/corpus/canonicalize.py +0 -0
  596. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/corpus/document_parser.py +0 -0
  597. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/corpus/embedded.py +0 -0
  598. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/corpus/http.py +0 -0
  599. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/evals/__init__.py +0 -0
  600. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/evals/gold.py +0 -0
  601. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/evals/langfuse_backend.py +0 -0
  602. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/evals/runner.py +0 -0
  603. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/evals/scorers.py +0 -0
  604. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/__init__.py +0 -0
  605. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/accounting.py +0 -0
  606. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/agent.py +0 -0
  607. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/batch.py +0 -0
  608. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/clarify.py +0 -0
  609. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/confirm.py +0 -0
  610. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/decisions.py +0 -0
  611. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/definition.py +0 -0
  612. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/dispatch.py +0 -0
  613. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/errors.py +0 -0
  614. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/events.py +0 -0
  615. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/filesystem.py +0 -0
  616. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/grading.py +0 -0
  617. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/interpreter.py +0 -0
  618. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/memory.py +0 -0
  619. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/models.py +0 -0
  620. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/rules.py +0 -0
  621. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/runs.py +0 -0
  622. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/scope.py +0 -0
  623. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/seen.py +0 -0
  624. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/skills.py +0 -0
  625. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/thinking.py +0 -0
  626. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/tiers.py +0 -0
  627. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/tracing.py +0 -0
  628. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/withhold.py +0 -0
  629. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/workers.py +0 -0
  630. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/__init__.py +0 -0
  631. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/evaluate.py +0 -0
  632. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/group.py +0 -0
  633. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/layout.py +0 -0
  634. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/segment.py +0 -0
  635. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/tables.py +0 -0
  636. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/__init__.py +0 -0
  637. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/model_servers.py +0 -0
  638. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/profiles.py +0 -0
  639. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/seam.py +0 -0
  640. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/tag_structured.py +0 -0
  641. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/tracing.py +0 -0
  642. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/usage.py +0 -0
  643. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/weights.py +0 -0
  644. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ontology/__init__.py +0 -0
  645. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ontology/pack_schema.py +0 -0
  646. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ontology/registry.py +0 -0
  647. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/pack_sdk/__init__.py +0 -0
  648. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/__init__.py +0 -0
  649. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/__init__.py +0 -0
  650. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
  651. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
  652. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
  653. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
  654. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
  655. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
  656. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/invokers.py +0 -0
  657. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
  658. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
  659. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
  660. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
  661. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
  662. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
  663. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/pack.py +0 -0
  664. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
  665. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
  666. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
  667. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
  668. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
  669. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
  670. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
  671. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
  672. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
  673. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
  674. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
  675. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
  676. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +0 -0
  677. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +0 -0
  678. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
  679. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/__init__.py +0 -0
  680. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
  681. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
  682. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
  683. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
  684. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +0 -0
  685. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
  686. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
  687. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
  688. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
  689. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +0 -0
  690. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
  691. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
  692. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
  693. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
  694. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
  695. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
  696. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
  697. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +0 -0
  698. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
  699. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
  700. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
  701. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
  702. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
  703. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
  704. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
  705. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
  706. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
  707. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
  708. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
  709. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
  710. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
  711. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/options.py +0 -0
  712. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/pack.py +0 -0
  713. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
  714. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
  715. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
  716. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
  717. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
  718. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
  719. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
  720. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
  721. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
  722. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
  723. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
  724. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
  725. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
  726. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
  727. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
  728. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
  729. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
  730. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
  731. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
  732. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
  733. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +0 -0
  734. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
  735. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
  736. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
  737. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
  738. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
  739. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/function_families.py +0 -0
  740. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +0 -0
  741. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
  742. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
  743. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
  744. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
  745. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
  746. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
  747. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
  748. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +0 -0
  749. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
  750. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
  751. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
  752. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +0 -0
  753. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
  754. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +0 -0
  755. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +0 -0
  756. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +0 -0
  757. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
  758. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +0 -0
  759. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
  760. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +0 -0
  761. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/reference_seam.py +0 -0
  762. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/py.typed +0 -0
  763. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/__init__.py +0 -0
  764. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/generation/SKILL.md +0 -0
  765. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/generation/__init__.py +0 -0
  766. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/rlm/SKILL.md +0 -0
  767. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/rlm/__init__.py +0 -0
  768. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/rlm/agent.py +0 -0
  769. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
  770. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
  771. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
  772. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/spans/__init__.py +0 -0
  773. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/spans/page_map.py +0 -0
  774. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/store/__init__.py +0 -0
  775. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/store/chunk_text.py +0 -0
  776. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/store/seam.py +0 -0
  777. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/subgraphs/__init__.py +0 -0
  778. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
  779. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/subgraphs/observability.py +0 -0
  780. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/subgraphs/scaffold.py +0 -0
  781. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
  782. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/util/__init__.py +0 -0
  783. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/util/concurrent.py +0 -0
  784. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/util/pdfium.py +0 -0
  785. {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/util/spacy_model.py +0 -0
  786. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/__init__.py +0 -0
  787. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/__init__.py +0 -0
  788. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_agent_chat_model.py +0 -0
  789. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_agent_chat_model_live.py +0 -0
  790. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_answers_exports.py +0 -0
  791. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_api_embedder_ps39.py +0 -0
  792. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_bytes_ingest.py +0 -0
  793. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_capability_reexports.py +0 -0
  794. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_decision_swap_doc_example.py +0 -0
  795. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_discover.py +0 -0
  796. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_documents.py +0 -0
  797. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_drop_workspace.py +0 -0
  798. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_drop_workspace_live.py +0 -0
  799. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_e2e.py +0 -0
  800. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_invoke.py +0 -0
  801. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_kg.py +0 -0
  802. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_mcp.py +0 -0
  803. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_metering_tracing_exports.py +0 -0
  804. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_migrate_span_fields.py +0 -0
  805. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_model_role_export.py +0 -0
  806. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_open_workspace_reconfig.py +0 -0
  807. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_options.py +0 -0
  808. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_pack_sdk.py +0 -0
  809. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_pack_store.py +0 -0
  810. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_pdf_page_count.py +0 -0
  811. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_public_gaps_ps38.py +0 -0
  812. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_tracing_helpers_ps32.py +0 -0
  813. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_usage.py +0 -0
  814. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_workspace.py +0 -0
  815. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_workspace_models.py +0 -0
  816. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/domain_vocabulary_baseline.json +0 -0
  817. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_api_docs_current.py +0 -0
  818. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_doc_references.py +0 -0
  819. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_engine_domain_vocabulary.py +0 -0
  820. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_import_contracts.py +0 -0
  821. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_lock_version.py +0 -0
  822. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_packs_use_store_primitives.py +0 -0
  823. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_pdfium_door.py +0 -0
  824. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_shipped_skills.py +0 -0
  825. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/async_helpers.py +0 -0
  826. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/__init__.py +0 -0
  827. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
  828. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_answer_generator.py +0 -0
  829. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_answer_generator_async.py +0 -0
  830. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_assertion_extraction.py +0 -0
  831. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_authoring_contract.py +0 -0
  832. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_chunk_read.py +0 -0
  833. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_chunk_write.py +0 -0
  834. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
  835. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_claim_extraction.py +0 -0
  836. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_clause_exception_linking.py +0 -0
  837. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_compliance_judgment.py +0 -0
  838. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_compliance_store.py +0 -0
  839. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_contract_kg_serve.py +0 -0
  840. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_contract_kg_store.py +0 -0
  841. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
  842. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
  843. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_dg_adapter.py +0 -0
  844. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_dg_async.py +0 -0
  845. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_dg_extraction.py +0 -0
  846. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_dg_model_seam.py +0 -0
  847. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_dg_private.py +0 -0
  848. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_disambiguation.py +0 -0
  849. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_document_scope.py +0 -0
  850. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_embedding.py +0 -0
  851. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_embedding_profiles.py +0 -0
  852. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_entity_resolution.py +0 -0
  853. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
  854. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_fusion.py +0 -0
  855. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_graph_extraction.py +0 -0
  856. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_graph_query.py +0 -0
  857. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_graph_storage.py +0 -0
  858. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_highlight_serve.py +0 -0
  859. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_hybrid_search.py +0 -0
  860. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_jev_decision.py +0 -0
  861. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_manifest_validation.py +0 -0
  862. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_manifests.py +0 -0
  863. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_parse_audit.py +0 -0
  864. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_parsing.py +0 -0
  865. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_parties_extraction.py +0 -0
  866. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
  867. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_query_function_classifier.py +0 -0
  868. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_query_understanding.py +0 -0
  869. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_registry.py +0 -0
  870. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_remote_encoders.py +0 -0
  871. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_repair_partition.py +0 -0
  872. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_requirement_extraction.py +0 -0
  873. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_reranking.py +0 -0
  874. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_retrieval_core.py +0 -0
  875. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_rlm_chunking.py +0 -0
  876. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_rlm_chunking_async.py +0 -0
  877. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_rlm_method.py +0 -0
  878. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_rlm_synthesis.py +0 -0
  879. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_runtime_registry.py +0 -0
  880. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_scan_quality.py +0 -0
  881. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_span_relevance_judgment.py +0 -0
  882. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_span_search.py +0 -0
  883. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
  884. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_structural_model_fallback.py +0 -0
  885. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
  886. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_tiered_ocr.py +0 -0
  887. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_vlm_ocr.py +0 -0
  888. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/compliance_fakes.py +0 -0
  889. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/conftest.py +0 -0
  890. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/__init__.py +0 -0
  891. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_canonical_source_doc_id.py +0 -0
  892. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_chunk_record.py +0 -0
  893. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_compliance.py +0 -0
  894. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
  895. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_extraction.py +0 -0
  896. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_function.py +0 -0
  897. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_function_routing.py +0 -0
  898. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_identifiers.py +0 -0
  899. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_ingestion_hooks.py +0 -0
  900. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_jurisdiction.py +0 -0
  901. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_ontology.py +0 -0
  902. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_property.py +0 -0
  903. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_provenance.py +0 -0
  904. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_value_match.py +0 -0
  905. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/__init__.py +0 -0
  906. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/_ooxml_fixtures.py +0 -0
  907. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_canonicalize.py +0 -0
  908. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_cuad.py +0 -0
  909. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_cuad_ingestion.py +0 -0
  910. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_document_parser.py +0 -0
  911. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_edgar.py +0 -0
  912. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_embedded.py +0 -0
  913. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_gcs_ingestion.py +0 -0
  914. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_http.py +0 -0
  915. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_parse_wire2.py +0 -0
  916. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_selection.py +0 -0
  917. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/eval/test_contractnli_judge.py +0 -0
  918. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/eval/test_cuad_highlight_metrics.py +0 -0
  919. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/eval/test_kg_property_rerank.py +0 -0
  920. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/eval/test_nl_to_type_metrics.py +0 -0
  921. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/eval/test_relational_eval.py +0 -0
  922. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/__init__.py +0 -0
  923. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_gold_contracts.py +0 -0
  924. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_gold_import.py +0 -0
  925. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_langfuse_backend.py +0 -0
  926. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_runner.py +0 -0
  927. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_scorer_parity.py +0 -0
  928. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_scorers_a.py +0 -0
  929. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_scorers_b.py +0 -0
  930. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_scorers_c.py +0 -0
  931. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_scorers_d.py +0 -0
  932. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
  933. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
  934. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/ingestion/textile_test_report.md +0 -0
  935. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/leg_a_silver/README.md +0 -0
  936. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
  937. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/table-bearing-contract.pdf +0 -0
  938. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/foundation/__init__.py +0 -0
  939. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/foundation/test_arcadedb_hybrid.py +0 -0
  940. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/foundation/test_model_seam_structured.py +0 -0
  941. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/__init__.py +0 -0
  942. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_greenfield_conformance.py +0 -0
  943. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_accounting.py +0 -0
  944. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_engine_wiring.py +0 -0
  945. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_genericity.py +0 -0
  946. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_live.py +0 -0
  947. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_recorder.py +0 -0
  948. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_thinking.py +0 -0
  949. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/__init__.py +0 -0
  950. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_aevaluate.py +0 -0
  951. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_builder.py +0 -0
  952. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
  953. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_concurrency_ceiling.py +0 -0
  954. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_document_metadata.py +0 -0
  955. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_evaluate.py +0 -0
  956. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_evaluate_labels.py +0 -0
  957. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_layout_segmenter.py +0 -0
  958. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_sheet_continuations.py +0 -0
  959. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_spreadsheet_content.py +0 -0
  960. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_table_rows.py +0 -0
  961. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_tuning.py +0 -0
  962. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_unit_grouper.py +0 -0
  963. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_unit_representative.py +0 -0
  964. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/journey/incidents_domain.py +0 -0
  965. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/journey/incidents_pack.ttl +0 -0
  966. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/journey/test_incidents_journey.py +0 -0
  967. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/journey/test_pack_schema.py +0 -0
  968. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/__init__.py +0 -0
  969. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/test_compliance_server.py +0 -0
  970. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/test_intra_document_qa_server.py +0 -0
  971. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
  972. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/test_relational_qa_server.py +0 -0
  973. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
  974. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/__init__.py +0 -0
  975. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_async_infra.py +0 -0
  976. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_classifier_heads_load_clean.py +0 -0
  977. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_model_servers.py +0 -0
  978. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_models_dir.py +0 -0
  979. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_no_gemma_default.py +0 -0
  980. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_profile_routing.py +0 -0
  981. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_profile_seam.py +0 -0
  982. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_seam_async.py +0 -0
  983. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_seam_deadline_and_cap.py +0 -0
  984. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_seam_event_loops.py +0 -0
  985. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_seam_retry.py +0 -0
  986. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_seam_stream.py +0 -0
  987. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_serving_seam.py +0 -0
  988. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_serving_wiring.py +0 -0
  989. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_tag_structured.py +0 -0
  990. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_tag_structured_async.py +0 -0
  991. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_tracing.py +0 -0
  992. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_usage.py +0 -0
  993. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/__init__.py +0 -0
  994. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_clause_template.py +0 -0
  995. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
  996. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_derivation.py +0 -0
  997. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_entity_taxonomy.py +0 -0
  998. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
  999. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
  1000. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_template_captured_in_ttl.py +0 -0
  1001. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
  1002. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/reference/test_compliance_reference.py +0 -0
  1003. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/reference/test_contract_seam.py +0 -0
  1004. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/scripts/test_eval_chunking_ab.py +0 -0
  1005. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/scripts/test_eval_classifier_ab.py +0 -0
  1006. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/scripts/test_fetch_reference_models.py +0 -0
  1007. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/scripts/test_generation_robustness_errors.py +0 -0
  1008. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/skills/__init__.py +0 -0
  1009. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/skills/test_creating_evals_skill_example.py +0 -0
  1010. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/skills/test_ingestion_skill_example.py +0 -0
  1011. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_boundary.py +0 -0
  1012. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_classifier_property_extractor.py +0 -0
  1013. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
  1014. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_clause_function_classifier.py +0 -0
  1015. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_clause_function_classifier_async.py +0 -0
  1016. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_clause_kg_extractor.py +0 -0
  1017. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_clause_kg_extractor_async.py +0 -0
  1018. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_dim_classifier.py +0 -0
  1019. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_dim_fleet_live.py +0 -0
  1020. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_function_classifier.py +0 -0
  1021. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_hybrid_classifier.py +0 -0
  1022. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_hybrid_property_extractor.py +0 -0
  1023. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_legalbert_classifier.py +0 -0
  1024. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_model_capabilities.py +0 -0
  1025. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_new_function_labels.py +0 -0
  1026. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_page_map.py +0 -0
  1027. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_property_extractor.py +0 -0
  1028. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_property_grounding.py +0 -0
  1029. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_reclassify.py +0 -0
  1030. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_residual_decision.py +0 -0
  1031. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_scarce_function_labels.py +0 -0
  1032. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_segment.py +0 -0
  1033. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_segmentation_vocab.py +0 -0
  1034. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_semantic_judge.py +0 -0
  1035. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_setfit_clause_adapter.py +0 -0
  1036. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_setfit_probabilities.py +0 -0
  1037. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_span_offsets.py +0 -0
  1038. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_stage_labels_0005.py +0 -0
  1039. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_symbolic_validation.py +0 -0
  1040. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_tag_clause_extractor.py +0 -0
  1041. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/__init__.py +0 -0
  1042. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_affiliation_backfill.py +0 -0
  1043. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_clause_kg.py +0 -0
  1044. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_contract.py +0 -0
  1045. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_property.py +0 -0
  1046. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_requirement_sources.py +0 -0
  1047. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_schema.py +0 -0
  1048. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_span.py +0 -0
  1049. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_chunk_text.py +0 -0
  1050. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_contract_kg_store_live.py +0 -0
  1051. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_document_metadata_live.py +0 -0
  1052. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_document_scope.py +0 -0
  1053. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_engine_domain_neutral.py +0 -0
  1054. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_entities_by_name.py +0 -0
  1055. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_kg_edges.py +0 -0
  1056. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_kg_mutations.py +0 -0
  1057. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_kg_range.py +0 -0
  1058. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_kg_read.py +0 -0
  1059. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_kg_write.py +0 -0
  1060. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_neutral_schema.py +0 -0
  1061. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_store_create_flag.py +0 -0
  1062. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_write_graph_idempotent.py +0 -0
  1063. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/__init__.py +0 -0
  1064. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_async_ingestion.py +0 -0
  1065. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
  1066. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_clause_results.py +0 -0
  1067. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_compliance_check.py +0 -0
  1068. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_compliance_ingestion.py +0 -0
  1069. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
  1070. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
  1071. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
  1072. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_graph_extraction.py +0 -0
  1073. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_ingest_knobs.py +0 -0
  1074. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
  1075. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_intra_document_qa.py +0 -0
  1076. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_observability.py +0 -0
  1077. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_partial_entry_contract.py +0 -0
  1078. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
  1079. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_relational_qa.py +0 -0
  1080. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_requirement_extraction.py +0 -0
  1081. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_scaffold.py +0 -0
  1082. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_semantic_chunking.py +0 -0
  1083. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
  1084. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
  1085. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/test_backfill_clause_span_id.py +0 -0
  1086. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/test_dg_model_ab.py +0 -0
  1087. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/test_populate_clause_kg.py +0 -0
  1088. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/test_populate_entity_graph.py +0 -0
  1089. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/util/__init__.py +0 -0
  1090. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/util/test_concurrent.py +0 -0
  1091. {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/util/test_spacy_model.py +0 -0
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: authoring-a-capability
3
3
  description: >-
4
- How to author a new RAG_Wright engine capability of any kind (subgraph, function, model, agent_skill, mcp_tool)
5
- so it is registered, ARD-discoverable, and invokable by name through the engine API. Use it whenever you add a
6
- new capability or a new-domain product/graph needs one: it gives the shared registration + ARD + invocation
4
+ How to author a new capability on RAG_Wright, in your product's own pack or in the engine, of any kind
5
+ (subgraph, function, model, agent_skill, mcp_tool), so it is registered, ARD-discoverable, and invokable by name
6
+ through the engine API. Use it whenever a product (or the engine) adds a capability: it gives the shared registration + ARD + invocation
7
7
  contract (the four surfaces + the definition of done), the per-kind implementation specifics, and the
8
8
  conformance guardrail that keeps the catalog honest. Grounded against the real code; keep it in step with it.
9
9
  ---
@@ -93,6 +93,12 @@ MCP) follows automatically for invokable kinds; 4b (a bespoke MCP server) is opt
93
93
  (the reference pack: `packs/contracts/subgraphs/typed_property_retrieval.py`). A `production_<slug>(*, store, ...) -> CompiledGraph` builder: `g = StateGraph(_State)`,
94
94
  add nodes/edges with `START`/`END`, `return g.compile()`. Nodes call functions/models (compose).
95
95
  - **Invoke:** the co-located `async def ainvoke(resources, inputs)` factory (impl_ref target) builds + awaits the graph.
96
+ - **An ingestion capability already has its graph.** `build_ingestion(...)` compiles one (LGI, ADR-0124): its
97
+ `production_<slug>` returns `pipeline.graph(ws, cache_dir=...)` (the whole run: each source through the
98
+ per-document graph parse -> chunk -> segment -> index -> extract -> write -> hooks -> children), and its `ainvoke`
99
+ runs `await pipeline.aingest(resources, sources, cache_dir=...)`. Do not wrap it in a second `StateGraph`. For a
100
+ long ingest, pass your own LangGraph checkpointer and a `run_id` to `aingest` so an interrupted run resumes
101
+ (`building-an-ingestion-capability`).
96
102
  - Retry/dead-letter come from the graph scaffold, not the invoker. `CapabilityManifest` has no contract field (only
97
103
  the internal `CapabilityRegistry.register(contract=...)` takes one); where the typed I/O must be declared, set
98
104
  `capability_interface` on the manifest (`CapabilityInterface`, from `rag_wright.pack_sdk`).
@@ -197,6 +197,13 @@ category.
197
197
  whose continuation rows sit under its main row needs a `unit_grouper=` that keeps them together, or a
198
198
  `document_hook=` that reads the whole table with `table_rows` and writes the grouped record. An entity several units
199
199
  mention (a case its trial rows share) is emitted by its key from each unit and upserted by that key.
200
+ - **Resume a long ingest instead of restarting it.** Pass a LangGraph checkpointer (yours, for example a Postgres
201
+ saver; the engine ships none) and a `run_id` naming the run:
202
+ `await pipeline.aingest(ws, sources, cache_dir=CACHE, checkpointer=saver, run_id=batch_id)`. If the process stops,
203
+ call it again with the same sources, `cache_dir`, checkpointer and `run_id`: each document carries on from its last
204
+ finished stage, and nothing that finished runs again (no repeat extractor calls). A finished `run_id`, or different
205
+ sources, raise `ValueError`: a new run gets a new id. The graph state is built-in values only, so it works under
206
+ LangGraph's strict msgpack mode; a tuple inside a record's free-form `props` comes back as a list after a resume.
200
207
  - **Re-ingest.** Parsing is cached by content hash, so re-running is cheap. The default writer upserts nodes by their
201
208
  key but is not fully idempotent for edges (engine gap G8): when a source is re-run, remove its previous records
202
209
  first (`kg_delete` on the provenance your records carry, such as a per-source property) and write again.
@@ -216,7 +223,9 @@ category.
216
223
  cost per document before a bulk run.
217
224
  5. **Register the pipeline as a capability** (`authoring-a-capability`): a subgraph whose `ainvoke(resources, inputs)`
218
225
  builds it with `build_ingestion` over the workspace and runs `aingest`, so your product's ingest workflow, an
219
- agent and an eval all invoke it by name.
226
+ agent and an eval all invoke it by name. The pipeline IS a LangGraph graph: `pipeline.graph(ws, cache_dir=...)`
227
+ returns the compiled run (each source through the per-document graph), which is what your `production_<slug>`
228
+ returns; do not wrap it in another graph.
220
229
  6. **Field-level accuracy, not only structure**: `evaluate_ingestion` checks units; the records' values are checked
221
230
  against gold records (`creating-evals`, extraction scoring over what `kg_read` returns).
222
231
 
@@ -41,7 +41,8 @@ open-core and domain-neutral; your product brings the domain. Hard rules:
41
41
  (`parse_document`/`aparse_document`, `parse_document_bytes`/`aparse_document_bytes` for uploads,
42
42
  `source_document`/`table_rows`, `decode_bbox`, `document_of`), and the **ingestion surface**: `build_ingestion`
43
43
  (returns an `IngestionPipeline`; `await pipeline.aingest(ws, sources, cache_dir=...)` returns an
44
- `IngestionReport`), its hook contracts (`Segmenter`, `SpanTagger`, `UnitGrouper`, `BoundaryDecider`,
44
+ `IngestionReport`; the pipeline is a LangGraph graph, `pipeline.graph(ws, cache_dir=...)`, and `aingest` with
45
+ `checkpointer=` and `run_id=` resumes an interrupted run), its hook contracts (`Segmenter`, `SpanTagger`, `UnitGrouper`, `BoundaryDecider`,
45
46
  `UnitRepresentative`, `BoundaryDiscoverer` with `default_chunk_discoverer(guidance=...)`, `Extractor`,
46
47
  `RecordWriter`, `DocumentHook`, checked by `check_tiling`/`check_units`/`check_extraction`), `IngestionTuning`,
47
48
  `IngestSource` (a `path`, or `data` + `name` for bytes; `table_mode`, `include_hidden_sheets`, your own `metadata`
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.14.1"
3
+ }
@@ -4,6 +4,23 @@ 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.14.1](https://github.com/fzaidi-dai/RAG_Wright/compare/0.14.0...0.14.1) (2026-10-28)
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * **PS-49:** a retried ArcadeDB write conflict no longer prints as an error ([32f649f](https://github.com/fzaidi-dai/RAG_Wright/commit/32f649f94ac1b864ee5b22460d3ef401dabbbf6a))
13
+ * **PS-50:** ensure_pack_schema declares a property a pack gains on an existing type ([c27cf40](https://github.com/fzaidi-dai/RAG_Wright/commit/c27cf40dba2512f809ba1ff06affc58d7f25f45f))
14
+
15
+ ## [0.14.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.13.0...0.14.0) (2026-10-17)
16
+
17
+
18
+ ### Features
19
+
20
+ * **LGI-1:** each document is ingested through a LangGraph graph of the stages ([24c15df](https://github.com/fzaidi-dai/RAG_Wright/commit/24c15dfc692b463382f18b183c551127e7092c0c))
21
+ * **LGI-2:** the whole ingest run is one LangGraph graph ([e38e9c8](https://github.com/fzaidi-dai/RAG_Wright/commit/e38e9c8733fb0bcb4da51e71e3e7093fbde4b9c3))
22
+ * **LGI-3:** an interrupted ingest resumes from its last finished stage ([9970189](https://github.com/fzaidi-dai/RAG_Wright/commit/9970189d6d5759dc4a1eeaccb35d734cc05e886e))
23
+
7
24
  ## [0.13.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.12.0...0.13.0) (2026-10-15)
8
25
 
9
26
 
@@ -55,7 +55,17 @@ 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-10-15): `rag-wright` 0.11.0 is RELEASED** (PR #13: PS-40 the product-building skills ship,
58
+ > **CURRENT STATE (2026-10-17): the LangGraph ingestion workstream is RELEASED as `rag-wright` 0.14.0** (PR #16; LGI-1..5,
59
+ > `docs/specs/langgraph-ingestion/plan.md`, ADR-0124 amended): `build_ingestion` is a LangGraph graph
60
+ > (`IngestionPipeline.graph`, per-document `document_graph`), `aingest(..., checkpointer=, run_id=)` resumes an
61
+ > interrupted run (built-in state, strict msgpack safe), `IngestionReport.from_dict`; live old-vs-new parity identical;
62
+ > guide `rulewright-migration-0.14.0.md`. Next: PS-48 (harness tests onto the fabric fixture,
63
+ > proposed, not started), EV-7, PS-30, PS-33. Before it,
64
+ > **(2026-10-15): `rag-wright` 0.13.0 is RELEASED** (PR #15): PS-35 `migrate_span_fields` on the API,
65
+ > PS-44 `Range` KG filters (TexWright ER-1), PS-45 `span_search` (G24), PS-46 blank PDF pages never sent to the VLM
66
+ > (TexWright's report; ADR-0062 amended), PS-47 `find_blank_pages_with_text` (audit of pre-fix parse caches); guide
67
+ > `rulewright-migration-0.13.0.md`. Open: harness behaviour tests onto the fabric fixture, EV-7, PS-30, PS-33. Before it,
68
+ > **`rag-wright` 0.11.0 is RELEASED** (PR #13: PS-40 the product-building skills ship,
59
69
  > PS-41 the skills audit, PS-42 by-slug registration; RuleWright's guide `docs/specs/public-surface/rulewright-migration-0.11.0.md`).
60
70
  > **PS-43 RELEASED as 0.12.0 (2026-10-15, PR #14)**: `worker_spec(definition=)`, `docs/harness.md` (tables generated by
61
71
  > `scripts/build_harness_doc.py`), the harness source cleared of RuleWright's vocabulary with a guard; guide
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: rag-wright
3
- Version: 0.13.0
3
+ Version: 0.14.1
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
@@ -253,3 +253,28 @@ writing to change one decision (engine gaps G3/G4).
253
253
  (7,297 blocks, 14,059 spans) fingerprint identically before and after; a live Aimmune re-ingest is record-identical
254
254
  to ING-8e. `tests/spans/test_segmentation_vocab.py` locks the vocabulary and checks the built patterns decide as the
255
255
  original literals did.
256
+
257
+ ## LGI-1 addendum (2026-10-17): each document runs through a LangGraph graph
258
+
259
+ - **Context.** Products register their `build_ingestion` pipeline as a `subgraph` capability, but the generic path
260
+ was plain asyncio: no graph existed, so the capability kind's promise (a compiled `StateGraph`) did not hold, and
261
+ the graph version of ingestion (ADR-0050) lived only in the reference pack.
262
+ - **Decision.** `IngestionPipeline.document_graph(ws, stages)` builds the per-document graph over the same
263
+ `IngestionStages`: parse -> chunk -> segment -> index -> extract -> write -> document_hook -> document_node ->
264
+ children, with every stage routing a failure to a `dead_letter` node (never raised). Embedded files run through the
265
+ same graph. `aingest` drives it, one compiled graph per run. Stages stay sequential per document (index before
266
+ extract), as before. Plan and ledger: `docs/specs/langgraph-ingestion/plan.md` (LGI-2 the run graph, LGI-3 resume).
267
+ - **Consequences.** No public signature, report or progress line changed. Parity is held by a record captured from
268
+ the asyncio driver before the change (`tests/fixtures/ingestion/parity.json`, 11 scenarios: reports, store
269
+ contents, hook calls, progress lines), with the scenario inputs committed because freshly built PDFs and OOXML
270
+ files carry random ids and timestamps.
271
+ - **LGI-2 (2026-10-17): the run is one graph.** `IngestionPipeline.graph(ws, *, cache_dir)` compiles the whole run:
272
+ `start` sends each source to `document` (the per-document graph; at most `document_concurrency` in flight, by a
273
+ semaphore in the node so a direct caller needs no config), `finish` builds the `IngestionReport`. `aingest` runs
274
+ it. The report's documents are now in source order (they were in completion order, which varied run to run).
275
+ - **LGI-3 (2026-10-17): an interrupted run resumes.** `aingest(..., checkpointer=, run_id=)` checkpoints every stage
276
+ of every document (embedded children included) on the thread `run_id`; calling it again with the same sources and
277
+ `run_id` resumes from each document's last finished stage. A finished run, different sources, or only one of the
278
+ two arguments raise `ValueError`. The graph state holds built-in values only (each node loads the typed values it
279
+ needs), because LangGraph's strict msgpack mode blocks the engine's types; a tuple in a record's free-form `props`
280
+ comes back as a list after a resume. `IngestionReport.from_dict` rebuilds the report from `graph()`'s output.
@@ -186,10 +186,28 @@ Built by `build_ingestion`; run with `await pipeline.aingest(ws, sources, cache_
186
186
 
187
187
  Advanced: the individual stage functions bound to a workspace (its store, ingest embedder and tuning), for a domain that drives the stages itself (the reference contract pipeline does). Most domains only need `aingest`.
188
188
 
189
- #### `IngestionPipeline.aingest(self, ws: 'Any', sources: 'Sequence[Union[str, Path, IngestSource]]', *, cache_dir: 'Union[str, Path]') -> 'IngestionReport'`
189
+ #### `IngestionPipeline.aingest(self, ws: 'Any', sources: 'Sequence[Union[str, Path, IngestSource]]', *, cache_dir: 'Union[str, Path]', checkpointer: 'Any' = None, run_id: 'Optional[str]' = None) -> 'IngestionReport'`
190
190
 
191
191
  Ingest every source (and its embedded children) into the workspace `ws` (from `open_workspace`). `sources` are file paths or `IngestSource`s (a path, or in-memory bytes with a file name); `cache_dir` holds the content-hash-gated parse and chunk caches (a re-ingest of an unchanged file re-uses them). Documents run concurrently up to `tuning.document_concurrency`; a document that fails is dead-lettered in its `DocumentReport`, never raised. Returns the `IngestionReport`. Every model role resolves through the workspace's `EngineConfig.models` (PS-14).
192
192
 
193
+ LGI-3, resuming: pass a LangGraph `checkpointer` (yours, e.g. a Postgres saver) and a `run_id` naming the run. If the process stops mid-run, call `aingest` again with the same sources, `cache_dir`, checkpointer and `run_id`: it carries on from the last finished stage of each document, re-running none that finished. A `run_id` whose run finished raises `ValueError` (start a new run with a new id), as do different sources.
194
+
195
+ #### `IngestionPipeline.graph(self, ws: 'Any', *, cache_dir: 'Union[str, Path]', checkpointer: 'Any' = None) -> 'Any'`
196
+
197
+ LGI-2: the whole run as one compiled LangGraph `StateGraph`, bound to the workspace `ws`:
198
+
199
+ start --(one Send per source)--> document --> finish
200
+
201
+ `document` runs one source through `document_graph` (embedded files included); at most `tuning.document_concurrency` documents are in flight. The input is `{"sources": [...]}` (file paths or `IngestSource`s); the output's `report` is the `IngestionReport` as plain data (`IngestionReport.from_dict` rebuilds it), its documents in source order. This is what `aingest` runs (without `aingest`'s workspace model scoping: wrap the call in `use_workspace_models(ws)` when the workspace overrides model roles). Progress goes to the pipeline's `progress` callback. With a `checkpointer`, every stage of every document is checkpointed on the thread named by the call's `configurable.thread_id` (see `aingest` for resuming). The state holds only built-in values (dicts, lists, strings, numbers, bytes, dates), so it round-trips through any saver, including LangGraph's strict msgpack mode; a tuple inside a record's free-form `props` comes back from a checkpoint as a list.
202
+
203
+ #### `IngestionPipeline.document_graph(self, ws: 'Any', stages: 'IngestionStages') -> 'Any'`
204
+
205
+ LGI-1: the per-document ingestion graph, a compiled LangGraph `StateGraph` over `stages` (bound to `ws`):
206
+
207
+ parse -> chunk -> segment -> index -> extract -> write -> document_hook -> document_node -> children
208
+
209
+ A stage that raises routes to `dead_letter`, which ends the document with its `DocumentReport.dead_letter` set (never raised, so one bad document never stops the run). `children` ingests each embedded file through this same graph, then links it to its parent. The input is `{doc_id, source, parent_id, child, depth}`; the output's `reports` is the document's `DocumentReport` followed by its children's.
210
+
193
211
  ### `IngestionReport(documents: 'list[DocumentReport]' = <factory>) -> None`
194
212
 
195
213
  The result of `IngestionPipeline.aingest`: one `DocumentReport` per document (embedded children included). `failed` counts the dead-lettered documents and `succeeded` the rest (properties).
@@ -30,7 +30,7 @@ Everything a product touches is re-exported from `rag_wright.api`; the packages
30
30
  | `api/` | the stable, domain-agnostic public surface: config, workspace, invokers, KG accessors, ids, usage | **yes** (in the enforced source set) |
31
31
  | `pack_sdk/` | the pack-author tier (PS-8b): re-exports of the engine building blocks a domain pack's code needs beyond `api` (identifiers, the model seam, the LangGraph scaffold, the store protocol, the generic capabilities a pack composes); a pack imports only `api` and `pack_sdk` | **yes** |
32
32
  | `capabilities/` | the capability catalog + ARD runtime — `CapabilityManifest`, `registry`, `manifests`, the adapter-free `invoke` client; plus the generic primitives (graph query, retrieval core, embedding, disambiguation, entity resolution, the decision model) | **yes** |
33
- | `ingestion/` | the generic ingestion mechanism (ADR-0124): `build_ingestion` + the shared `IngestionStages`, the default layout segmenter and structural unit grouper, `table_rows`, `evaluate_ingestion` | **yes** |
33
+ | `ingestion/` | the generic ingestion mechanism (ADR-0124): `build_ingestion` (a LangGraph graph over the shared `IngestionStages`, resumable), the default layout segmenter and structural unit grouper, `table_rows`, `evaluate_ingestion` | **yes** |
34
34
  | `subgraphs/` | the generic LangGraph scaffolding (`scaffold.py`), semantic chunking, graph extraction and observability; domain graphs live in their pack | **yes** |
35
35
  | `models/` | the model-profile seam: `ModelRole`, `profiles`, `seam`, `tag_structured`, usage/tracing | **yes** |
36
36
  | `store/` | the single ArcadeDB store behind the seam: `arcadedb` (only the engine types and generic reads/writes; a pack's own store methods live in the pack, e.g. `ContractKGStore`, `ComplianceStore`), `seam` (`KgNode`/`KgEdge`/`NOT_NULL`), `chunk_text` | **yes** |
@@ -76,7 +76,9 @@ expensive stages are content-hash gated so re-ingest is cheap. Entity extraction
76
76
  attachments become child documents linked by `EmbeddedIn` / `AttachedTo`).
77
77
 
78
78
  A new domain does not build this pipeline: it calls `build_ingestion(extractor, ...)` (in `rag_wright.ingestion`,
79
- re-exported from `rag_wright.api`) with its hooks. The engine owns parse, chunk, segment, index, group and write;
79
+ re-exported from `rag_wright.api`) with its hooks. The pipeline is a LangGraph graph (`IngestionPipeline.graph`: one
80
+ run graph sending each source to a per-document graph of the stages), so a product's ingestion capability is a real
81
+ `subgraph`, and a run given a checkpointer and a `run_id` resumes where it stopped. The engine owns parse, chunk, segment, index, group and write;
80
82
  the domain supplies the extractor and overrides only the hooks it needs. The default segmenter follows the docling
81
83
  layout and the default unit grouper is structural. The reference `contract_ingestion_pipeline` drives the same
82
84
  shared `IngestionStages` with legal hooks (a legal segmenter, a clause-function span tagger, a provision grouper
@@ -106,6 +106,12 @@ pipeline = build_ingestion(extractor, segmenter=None, span_tagger=None, unit_gro
106
106
  report = await pipeline.aingest(ws, sources, cache_dir="cache/")
107
107
  ```
108
108
 
109
+ - **It is a LangGraph graph.** `pipeline.graph(ws, cache_dir=...)` is the compiled run: each source goes through the
110
+ per-document graph (parse, chunk, segment, index, extract, write, the document hook, the `Document` node, then its
111
+ embedded files through the same graph), at most `document_concurrency` documents at a time; a stage that fails
112
+ dead-letters its document, never the run. `aingest` runs it, and with `checkpointer=` and `run_id=` an interrupted
113
+ run resumes from each document's last finished stage.
114
+
109
115
  - **The engine owns the mechanism:** parse (PDF, Office, spreadsheets incl. hidden sheets), chunk, segment each chunk
110
116
  into spans that tile it, index the spans (dense + sparse), group spans into extraction **units**, run the
111
117
  extractor on each unit concurrently, write, and record one `Document` node per document. Embedded files and PDF
@@ -18,7 +18,12 @@ The store creates the vertex and edge types your pack declares. The generic read
18
18
  `rag_wright.ontology.pack_schema.load_kg_schema(path)`, called by the store's `ensure_pack_schema(ttl)`, which
19
19
  `ensure_schema()` calls only when a pack is configured (`EngineConfig.pack`). It creates the `eng:KgVertexType`
20
20
  vertex types with their properties and unique indexes, and the `eng:KgStructuralEdge` edge types; nothing else in
21
- the pack is read by the engine. A minimal, domain-neutral example:
21
+ the pack is read by the engine. Each is created when absent, so a pack that later gains a property gets it declared
22
+ on the existing database the next time a process opens the workspace (`open_workspace` runs `ensure_schema`); no
23
+ fresh database is needed. Nothing is altered or dropped: a property whose declared type changed is logged as a
24
+ warning and left as it is (a migration is yours to run), and a numeric property declared over values stored before it
25
+ is logged too, since those values are not converted until a re-ingest rewrites them (a value that does not
26
+ convert, `'195 GSM'` for a `DOUBLE`, fails its write and dead-letters that document). A minimal, domain-neutral example:
22
27
 
23
28
  ```turtle
24
29
  @prefix eng: <https://ragwright.local/ontology/engine#> .
@@ -0,0 +1,77 @@
1
+ # LangGraph ingestion: plan and ledger (LGI)
2
+
3
+ Status: COMPLETE 2026-10-17 (LGI-1 to LGI-5); approved 2026-10-17 (decisions: sequential index then extract; run graph + document subgraph; serialization measured in LGI-3). Runs before PS-48 (the harness tests onto the fabric fixture).
4
+
5
+ ## Why
6
+
7
+ `build_ingestion` (ADR-0124) is the engine's generic ingestion path, and every product's ingestion capability is
8
+ built on it (TexWright's `texwright_ingestion` and `texwright_screen_ingestion`). It is plain asyncio: `aingest`
9
+ runs `IngestionStages` per document with `asyncio.gather` and a semaphore. No LangGraph graph exists on that path.
10
+ Yet the `authoring-a-capability` skill defines the `subgraph` kind as "a compiled LangGraph `StateGraph`", and
11
+ `building-an-ingestion-capability` tells a product to register its pipeline as a `subgraph`. So every product
12
+ registers a "subgraph" that has no graph, and gets none of what the graph gives: durable resume of a long ingest
13
+ from a checkpointer, per-node streaming, and the substrate for a later `interrupt()` review step. The graph
14
+ version (ADR-0050's async ingestion) exists only in the reference pack (`contract_ingestion_pipeline`,
15
+ `async_ingestion`), not on the generic path.
16
+
17
+ ## Goal
18
+
19
+ `build_ingestion` builds a LangGraph graph, and `aingest` runs it. A product's ingestion capability is then a real
20
+ `subgraph`: its `production_<slug>` returns `pipeline.graph(...)`, its `ainvoke` stays `pipeline.aingest(...)`.
21
+
22
+ **Nothing breaks.** `build_ingestion`'s parameters, `aingest(ws, sources, *, cache_dir)`, `IngestionReport` /
23
+ `DocumentReport`, the `[ingest] i/N` progress lines, dead-letter semantics and `IngestionStages` (used directly by
24
+ RuleWright's and the reference pack's contract pipelines) are unchanged. Additions only, so a `feat:` (0.14.0).
25
+
26
+ ## Design
27
+
28
+ ```
29
+ run graph (IngestionPipeline.graph(ws, *, cache_dir, checkpointer=None))
30
+ START --Send per source--> document (the per-document subgraph) --> END report = reducer over documents
31
+ at most tuning.document_concurrency documents in flight (a semaphore in the node)
32
+
33
+ document subgraph
34
+ parse -> chunk -> segment -> index -> extract -> write -> document_hook -> document_node -> children --> END
35
+ |any stage raises: the document's DocumentReport.dead_letter = "<Type>: <message>" --> END (never raised)
36
+ children: each embedded file / attachment through the same document subgraph (depth cap 2, as today),
37
+ then its EmbeddedIn / AttachedTo links
38
+ ```
39
+
40
+ - **The nodes ARE `IngestionStages`.** One implementation of each stage, now with three drivers' worth of reuse:
41
+ the generic graph, the reference pack's contract graph, and any product driving the stages itself.
42
+ - **Order and semantics match today's driver exactly**: stages sequential per document (index before extract),
43
+ documents concurrent up to `document_concurrency`, children after their parent, same dead-letter strings, same
44
+ progress lines. Parity is the acceptance gate, measured, not assumed.
45
+ - **State stays small and serializable.** The parse is not held in state: the `parse` node fills the
46
+ content-hash parse cache and later nodes reload from it (they already do, through `IngestionStages.parsed`).
47
+ State holds the chunks, tagged spans, units/extractions and the report fields.
48
+ - **Durable resume is opt-in.** `checkpointer=` (any LangGraph saver; the product supplies its own, e.g. Postgres,
49
+ as with the harness: ADR-0139, no Postgres extra in the engine) plus a `run_id` used as the thread id. Re-running
50
+ an interrupted ingest with the same `run_id` skips documents and stages already checkpointed. Without a
51
+ checkpointer, behaviour is today's.
52
+ - **No retry policy added.** Today a stage failure dead-letters the document; that stays (a `RetryPolicy` would
53
+ change behaviour and cost). The graph makes it a one-line addition later if a product asks.
54
+
55
+ ## Open questions (decide before LGI-1)
56
+
57
+ 1. **Parallel index and extract after segment?** The reference pack fans them out; on the generic path they are
58
+ independent (embedding vs the extractor). A wall-clock gain on model-backed extractors, but a change of order
59
+ in store writes. **Recommendation: keep sequential here (parity), measure the gain in a later task.**
60
+ 2. **Run graph or per-document graph only?** The run graph (one `aingest` call over its sources; a "run", named by `run_id`; not a `corpus`, which is the database name) (Send fan-out) makes the whole ingest one
61
+ compiled graph, so the capability is one graph and a checkpointer covers the run. **Recommendation: both, as
62
+ designed (the per-document subgraph is a node of the run graph).**
63
+ 3. **Checkpoint serialization of the stage values** (pydantic chunks/spans/units, dataclass `KgNode`/`KgEdge`):
64
+ LangGraph's serializer must round-trip them. Measured in LGI-3; if a type does not round-trip, it is converted
65
+ at the node boundary, never by changing the public contracts.
66
+
67
+ ## Ledger
68
+
69
+ | Id | Task | Acceptance (verify) | Status |
70
+ |---|---|---|---|
71
+ | LGI-1 | The per-document subgraph over `IngestionStages` (nodes above, dead-letter route, children through the same subgraph); `aingest` drives it per document, documents still fanned out as today. Parity fixture recorded FIRST from the current driver: `IngestionReport`s and store contents for the existing hermetic ingestion fixtures (text, PDF, spreadsheet with embedded children and links, a failing extractor, a failing document) | the recorded parity fixture equal after the change; the whole existing ingestion suite green unchanged; ADR-0124 amended (and ADR-0050's note that the generic path is not a graph) | done 2026-10-17 (`document_graph`; parity 11/11 scenarios; suite 2297 passed) |
72
+ | LGI-2 | The run graph: `IngestionPipeline.graph(ws, *, cache_dir)` public, Send fan-out per source, at most `document_concurrency` documents in flight (a semaphore inside the `document` node, so a direct `graph()` caller gets it without passing a config), the report reduced from the documents; `aingest` = run the run graph | parity fixture equal; a concurrency test (peak documents in flight = `document_concurrency`); progress lines identical (the `[ingest] start N=` / `i/N` / `done` lines asserted); API docs regenerated | done 2026-10-17 (`graph()`; parity 11/11; source-order report; suite 2304 passed) |
73
+ | LGI-3 | Durable resume: `checkpointer=` and `run_id=` on `graph()` and `aingest`; state round-trips through the saver | hermetic, `InMemorySaver`: an ingest interrupted mid-run (a node raises a non-dead-letter interruption on document 2) resumed with the same `run_id` re-runs no completed stage (extractor and embedder call counts) and yields the same report as an uninterrupted run; without a checkpointer behaviour is unchanged | done 2026-10-17 (`checkpointer=`/`run_id=`; built-in state, strict serde green; suite 2311 passed) |
74
+ | LGI-4 | The capability shape and docs: `authoring-a-capability` (the `subgraph` kind: an ingestion capability's `production_<slug>` returns `pipeline.graph(...)`), `building-an-ingestion-capability` step 5 (resume with the product's checkpointer, the run id), `docs/architecture.md` / `concepts.md` ingestion sections; the product-starter templates if they show the ingest | doc-reference, shipped-skills and ingestion-skill-example guards green; the skill example runs the graph | done 2026-10-17 (both skills, concepts, architecture, the consumer skill and the starter template) |
75
+ | LGI-5 | Live parity and handover: a live `build_ingestion` run on real parses (the PS-47 workbook with an embedded PDF, and a PDF set) before and after: same `IngestionReport`, same store counts per type; a live resume with a real checkpointer; RuleWright and TexWright notes (nothing to change; the new optional resume) | live tests green; the migration notes written | done 2026-10-17 (live old-vs-new identical: 10 documents, 394 spans, 55 records, links; live crash-and-resume green; RuleWright guide 0.14.0) |
76
+
77
+ Each task is one approval gate; one commit per approved task.
@@ -120,3 +120,5 @@ in two at the PS-6 gate so the store rewrite is its own visible task. One task,
120
120
  | PS-45 | Engine gap G24: a public hybrid span search. `span_search(ws, query, *, k, documents, tag, dense_floor)` and `aspan_search` on `rag_wright.api`, over the span index ingestion fills: the store-side RRF fusion of the dense and sparse legs plus the dense floor (ADR-0104), returning citation-ready `SpanHit`s (text, document, offsets, pages, box, `found_by`); no reranking (the caller composes `BGEReranker`). G24 closed; the guide, the authoring page and the specifying and consumer skills name it | hermetic tests of the composition and the public call; a live test on real ArcadeDB and BGE-M3 (found by meaning, scoped, cited) | done 2026-10-15 |
121
121
  | PS-46 | TexWright's 2026-10-15 report: a blank page escalated to the VLM came back as an invented document the parse kept. The scan-quality gate gains `ScanQuality.BLANK` (no OCR text and no ink: `ink_frac`, pixels < 200, at most 1e-4; the heavy faint scan measures ~0.08) and `TieredOCRParser` never escalates or flags a blank page, reporting it in `TieredOCRReport.blank_pages`. The post-check stays a flag, not a filter (a verbatim transcription of a page with few common English words fails it). ADR-0062 amended | hermetic gate and tiered tests (a real 2-page PDF: the VLM gets page 1 only); a live docling parse reports the blank page; the heavy fixture still escalates all 10 pages | done 2026-10-15 |
122
122
  | PS-47 | The audit for PS-46: a parse cached before the fix keeps a blank page's invented text (the cache is keyed on content). `find_blank_pages_with_text(cache_dir, sources=(), *, progress)` and `BlankPageText` on `rag_wright.api` list every page blank in the source PDF (no ink, no text layer) with text in its cached parse, and the cache files to delete before re-ingesting. Searches the cache recursively (`aingest` keeps parses in `parsed/`); embedded files are audited from the cache's own copies; top-level sources are passed as paths or `(name, bytes)` | hermetic tests; a live `build_ingestion` of a workbook embedding a blank-tail PDF: clean, then a planted page found with nothing passed, then clean after delete and re-ingest | done 2026-10-15 |
123
+ | PS-49 | TexWright's request (`docs/engine-requests/2026-10-17-concurrent-modification-printed-during-a-clean-ingest.md`, their repo): a clean keeper ingest printed `ArcadeDB Error Response ... ConcurrentModificationException` lines that read as failures. The retry is the engine's (`_retry_on_conflict`, every store write, since ING-5); the line is the client library's own ERROR log, printed before it raises. A log filter drops that line while the retry handles the call; the retry logs INFO `retried N times; the write landed`, or ERROR `gave up after 10 attempts` and raises | three hermetic tests (red before, green after); live 8-thread concurrent writes: 240/240 landed, 130 error lines before the fix, 0 after (62 INFO retried lines) | done 2026-10-17 |
124
+ | PS-50 | TexWright's request (`docs/engine-requests/2026-10-28-ensure_pack_schema-does-not-declare-a-new-property-on-an-existing-type.md`, their repo): `ensure_pack_schema` declared a type's properties only when it created the type. It now creates every declared property the type lacks, on existing types too; a property whose declared type differs is logged and left as it is; a property the pack dropped stays; a non-STRING property declared over values stored before it is logged (they are not converted; a re-ingest rewrites them, and a value that does not convert fails its write) | a live test (red before, green after: added, mismatch reported, nothing dropped, the unconverted-values warning, a second run issues no DDL); live probe of a re-ingest over the new DOUBLE | done 2026-10-28 |
@@ -0,0 +1,34 @@
1
+ # RuleWright: moving to rag-wright 0.13
2
+
3
+ What 0.13.0 changes for RuleWright (released 2026-10-15: PyPI and GitHub release `0.13.0`, PR #15). Do the 0.12
4
+ guide first. Nothing here is edited from the engine repo, and nothing breaks an existing call: four items add calls
5
+ and one changes how blank PDF pages are parsed.
6
+
7
+ ## 1. Audit your parse cache for invented blank-page text (PS-46, PS-47) — do this one
8
+
9
+ **What changed.** Before 0.13.0 a blank PDF page (no ink, no text layer) was escalated to the `VISION_OCR` model,
10
+ which invents a page when asked to transcribe an empty one, and the parse kept that text (TexWright, 2026-10-15).
11
+ Now the scan-quality gate returns `ScanQuality.BLANK` for such a page: never escalated, never in
12
+ `ocr_unreadable_pages`, listed in `TieredOCRReport.blank_pages`.
13
+
14
+ **Why RuleWright is likely affected.** You ingest with an OpenRouter key set (`VISION_OCR` is configured), a blank
15
+ separator page in a born-digital contract has no text layer, and invented English text passes the post-escalation
16
+ check. The parse cache is keyed on content, so the fix does not redo an old parse.
17
+
18
+ **What to do.** Run `find_blank_pages_with_text(cache_dir, sources, progress=...)` from `rag_wright.api`:
19
+ `cache_dir` is your parse-cache root (searched recursively), `sources` your contract PDFs as paths or
20
+ `(name, bytes)` (a top-level source's bytes are not in the cache; embedded files are found there). For each finding,
21
+ delete its `cache_files` and re-ingest that contract. Tell us how many documents and pages it found.
22
+
23
+ ## 2. New calls, optional
24
+
25
+ - `migrate_span_fields(config, *, corpus=...)` (PS-35): the pre-0.2.0 `Span` field migration through the public
26
+ API, replacing the engine's `scripts/migrate_span_fields.py`.
27
+ - `Range(gt=, ge=, lt=, le=)` (PS-44): a `where` value for comparisons evaluated in the store, on every KG call that
28
+ takes `where`; `kg_read` now accepts `NOT_NULL` too.
29
+ - `span_search(ws, query, ...)` / `aspan_search` returning `SpanHit` (PS-45): the engine's hybrid span search with
30
+ the dense floor (ADR-0104), citation-ready, no reranking.
31
+
32
+ ## Verify
33
+
34
+ Your fast and db suites green on `>=0.13.0`; bump the floor. No harness name changed.
@@ -0,0 +1,45 @@
1
+ # RuleWright: moving to rag-wright 0.14
2
+
3
+ What 0.14.0 changes for RuleWright (released 2026-10-17: PyPI and GitHub release `0.14.0`, PR #16; the LangGraph ingestion workstream, `docs/specs/langgraph-ingestion/plan.md`,
4
+ LGI-1 to LGI-5; ADR-0124 amended). Do the 0.13 guide first. Nothing here is edited from the engine repo, and nothing
5
+ breaks an existing call.
6
+
7
+ ## 1. `build_ingestion` is a LangGraph graph (nothing to change)
8
+
9
+ `IngestionPipeline.aingest` now runs a compiled LangGraph graph: one run graph sends each source to a per-document
10
+ graph of the stages (parse, chunk, segment, index, extract, write, the document hook, the `Document` node, then the
11
+ embedded files through the same graph). `pipeline.graph(ws, cache_dir=...)` returns it. Arguments, the
12
+ `IngestionReport`, dead-lettering and the progress lines are unchanged: a recorded parity fixture (11 scenarios) and
13
+ a live before/after ingest (7 sources, 10 documents, 394 spans) are identical.
14
+
15
+ Two small differences:
16
+
17
+ - `IngestionReport.documents` is in source order (it was completion order, which varied run to run).
18
+ - Hooks and the writer receive equal, freshly built objects between stages (the graph state holds plain values).
19
+
20
+ **Your contract pipeline is unaffected**: it drives `IngestionStages` directly (`pack_sdk.IngestionStages`), which did
21
+ not change.
22
+
23
+ ## 2. Resuming a long ingest (optional)
24
+
25
+ `aingest(ws, sources, cache_dir=..., checkpointer=<your LangGraph saver>, run_id="<batch id>")` checkpoints every
26
+ stage of every document. If the process stops, the same call with the same sources and `run_id` carries on from each
27
+ document's last finished stage; no finished stage runs again. A finished `run_id`, or different sources, raise
28
+ `ValueError`. The state is built-in values only, so it works under LangGraph's strict msgpack mode; a tuple in a
29
+ record's free-form `props` comes back as a list after a resume. The engine ships no saver: pass yours (the
30
+ Postgres saver you use for the harness fits).
31
+
32
+ ## 3. The skills that changed
33
+
34
+ Re-read these if you link them (ADR-0134; from your installed engine):
35
+
36
+ - **`building-an-ingestion-capability`**: section 6 step 5 (the pipeline IS a LangGraph graph; a capability's
37
+ `production_<slug>` returns `pipeline.graph(...)`), and a new item, "Resume a long ingest instead of restarting
38
+ it" (your checkpointer, the `run_id`, what a resume skips, the `ValueError` cases, strict msgpack mode).
39
+ - **`authoring-a-capability`**: the `subgraph` section's new bullet, "An ingestion capability already has its graph".
40
+ - **`using-the-rag-wright-engine`**: the ingestion-surface line names `IngestionPipeline.graph` and
41
+ `checkpointer=` / `run_id=`.
42
+
43
+ ## Verify
44
+
45
+ Your fast and db suites green on `>=0.14.0`; bump the floor.
@@ -79,7 +79,8 @@ engine — a separate repo that depends on the open-core engine, one way.
79
79
  `agent_chat_model`, answers (`agenerate_answer`/`ajudge_spans`), the eval toolkit (`aload_gold_set`/`arun_eval`/
80
80
  `EvalReport`), the document helpers (`aparse_document_bytes`, `pdf_page_count`),
81
81
  `register_capability`/`load_reference_pack`,
82
- and the ingestion surface (`build_ingestion` -> `IngestionPipeline.aingest` -> `IngestionReport`,
82
+ and the ingestion surface (`build_ingestion` -> `IngestionPipeline.aingest` -> `IngestionReport`; the pipeline is a
83
+ LangGraph graph, `IngestionPipeline.graph`, and `aingest(..., checkpointer=, run_id=)` resumes an interrupted run,
83
84
  `IngestionTuning`, `IngestSource`, `evaluate_ingestion`, `table_rows`/`TableRow`, the hook contracts
84
85
  `Unit`/`UnitExtraction`/`KgNode`/`KgEdge`, the hook protocols and `DocumentHook`, and the checks
85
86
  `check_tiling`/`check_units`/`check_extraction`; `NOT_NULL` for `kg_edges` presence filters) — never engine internals (`ArcadeDBStore`,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "rag-wright"
3
- version = "0.13.0"
3
+ version = "0.14.1"
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"
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: authoring-a-capability
3
3
  description: >-
4
- How to author a new RAG_Wright engine capability of any kind (subgraph, function, model, agent_skill, mcp_tool)
5
- so it is registered, ARD-discoverable, and invokable by name through the engine API. Use it whenever you add a
6
- new capability or a new-domain product/graph needs one: it gives the shared registration + ARD + invocation
4
+ How to author a new capability on RAG_Wright, in your product's own pack or in the engine, of any kind
5
+ (subgraph, function, model, agent_skill, mcp_tool), so it is registered, ARD-discoverable, and invokable by name
6
+ through the engine API. Use it whenever a product (or the engine) adds a capability: it gives the shared registration + ARD + invocation
7
7
  contract (the four surfaces + the definition of done), the per-kind implementation specifics, and the
8
8
  conformance guardrail that keeps the catalog honest. Grounded against the real code; keep it in step with it.
9
9
  ---
@@ -93,6 +93,12 @@ MCP) follows automatically for invokable kinds; 4b (a bespoke MCP server) is opt
93
93
  (the reference pack: `packs/contracts/subgraphs/typed_property_retrieval.py`). A `production_<slug>(*, store, ...) -> CompiledGraph` builder: `g = StateGraph(_State)`,
94
94
  add nodes/edges with `START`/`END`, `return g.compile()`. Nodes call functions/models (compose).
95
95
  - **Invoke:** the co-located `async def ainvoke(resources, inputs)` factory (impl_ref target) builds + awaits the graph.
96
+ - **An ingestion capability already has its graph.** `build_ingestion(...)` compiles one (LGI, ADR-0124): its
97
+ `production_<slug>` returns `pipeline.graph(ws, cache_dir=...)` (the whole run: each source through the
98
+ per-document graph parse -> chunk -> segment -> index -> extract -> write -> hooks -> children), and its `ainvoke`
99
+ runs `await pipeline.aingest(resources, sources, cache_dir=...)`. Do not wrap it in a second `StateGraph`. For a
100
+ long ingest, pass your own LangGraph checkpointer and a `run_id` to `aingest` so an interrupted run resumes
101
+ (`building-an-ingestion-capability`).
96
102
  - Retry/dead-letter come from the graph scaffold, not the invoker. `CapabilityManifest` has no contract field (only
97
103
  the internal `CapabilityRegistry.register(contract=...)` takes one); where the typed I/O must be declared, set
98
104
  `capability_interface` on the manifest (`CapabilityInterface`, from `rag_wright.pack_sdk`).
@@ -197,6 +197,13 @@ category.
197
197
  whose continuation rows sit under its main row needs a `unit_grouper=` that keeps them together, or a
198
198
  `document_hook=` that reads the whole table with `table_rows` and writes the grouped record. An entity several units
199
199
  mention (a case its trial rows share) is emitted by its key from each unit and upserted by that key.
200
+ - **Resume a long ingest instead of restarting it.** Pass a LangGraph checkpointer (yours, for example a Postgres
201
+ saver; the engine ships none) and a `run_id` naming the run:
202
+ `await pipeline.aingest(ws, sources, cache_dir=CACHE, checkpointer=saver, run_id=batch_id)`. If the process stops,
203
+ call it again with the same sources, `cache_dir`, checkpointer and `run_id`: each document carries on from its last
204
+ finished stage, and nothing that finished runs again (no repeat extractor calls). A finished `run_id`, or different
205
+ sources, raise `ValueError`: a new run gets a new id. The graph state is built-in values only, so it works under
206
+ LangGraph's strict msgpack mode; a tuple inside a record's free-form `props` comes back as a list after a resume.
200
207
  - **Re-ingest.** Parsing is cached by content hash, so re-running is cheap. The default writer upserts nodes by their
201
208
  key but is not fully idempotent for edges (engine gap G8): when a source is re-run, remove its previous records
202
209
  first (`kg_delete` on the provenance your records carry, such as a per-source property) and write again.
@@ -216,7 +223,9 @@ category.
216
223
  cost per document before a bulk run.
217
224
  5. **Register the pipeline as a capability** (`authoring-a-capability`): a subgraph whose `ainvoke(resources, inputs)`
218
225
  builds it with `build_ingestion` over the workspace and runs `aingest`, so your product's ingest workflow, an
219
- agent and an eval all invoke it by name.
226
+ agent and an eval all invoke it by name. The pipeline IS a LangGraph graph: `pipeline.graph(ws, cache_dir=...)`
227
+ returns the compiled run (each source through the per-document graph), which is what your `production_<slug>`
228
+ returns; do not wrap it in another graph.
220
229
  6. **Field-level accuracy, not only structure**: `evaluate_ingestion` checks units; the records' values are checked
221
230
  against gold records (`creating-evals`, extraction scoring over what `kg_read` returns).
222
231
 
@@ -41,7 +41,8 @@ open-core and domain-neutral; your product brings the domain. Hard rules:
41
41
  (`parse_document`/`aparse_document`, `parse_document_bytes`/`aparse_document_bytes` for uploads,
42
42
  `source_document`/`table_rows`, `decode_bbox`, `document_of`), and the **ingestion surface**: `build_ingestion`
43
43
  (returns an `IngestionPipeline`; `await pipeline.aingest(ws, sources, cache_dir=...)` returns an
44
- `IngestionReport`), its hook contracts (`Segmenter`, `SpanTagger`, `UnitGrouper`, `BoundaryDecider`,
44
+ `IngestionReport`; the pipeline is a LangGraph graph, `pipeline.graph(ws, cache_dir=...)`, and `aingest` with
45
+ `checkpointer=` and `run_id=` resumes an interrupted run), its hook contracts (`Segmenter`, `SpanTagger`, `UnitGrouper`, `BoundaryDecider`,
45
46
  `UnitRepresentative`, `BoundaryDiscoverer` with `default_chunk_discoverer(guidance=...)`, `Extractor`,
46
47
  `RecordWriter`, `DocumentHook`, checked by `check_tiling`/`check_units`/`check_extraction`), `IngestionTuning`,
47
48
  `IngestSource` (a `path`, or `data` + `name` for bytes; `table_mode`, `include_hidden_sheets`, your own `metadata`