rag-wright 0.5.0__tar.gz → 0.6.0__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 (971) hide show
  1. {rag_wright-0.5.0 → rag_wright-0.6.0}/.claude/skills/qwen-vllm-modal/SKILL.md +5 -3
  2. {rag_wright-0.5.0/src/rag_wright/.agents → rag_wright-0.6.0/.claude}/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +3 -1
  3. {rag_wright-0.5.0/src/rag_wright/.agents → rag_wright-0.6.0/.claude}/skills/using-the-rag-wright-engine/SKILL.md +5 -1
  4. rag_wright-0.6.0/.release-please-manifest.json +3 -0
  5. {rag_wright-0.5.0 → rag_wright-0.6.0}/CHANGELOG.md +18 -0
  6. {rag_wright-0.5.0 → rag_wright-0.6.0}/CLAUDE.md +2 -2
  7. {rag_wright-0.5.0 → rag_wright-0.6.0}/PKG-INFO +1 -1
  8. rag_wright-0.6.0/docs/adr/0131-model-server-hardening-after-rulewright-review.md +34 -0
  9. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/README.md +4 -3
  10. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/api/README.md +17 -1
  11. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/configuration.md +37 -4
  12. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/public-surface/plan.md +2 -1
  13. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/public-surface/rulewright-migration-0.5.0.md +10 -0
  14. rag_wright-0.6.0/docs/specs/public-surface/rulewright-migration-0.6.0.md +43 -0
  15. rag_wright-0.6.0/examples/model_server.py +101 -0
  16. {rag_wright-0.5.0 → rag_wright-0.6.0}/pyproject.toml +1 -1
  17. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/compliance_engine_smoke.py +1 -1
  18. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/eval_compliance_gold.py +1 -1
  19. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/granite_chunker_assess.py +1 -1
  20. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/measure_generation_robustness.py +1 -1
  21. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_gemma4_vllm.py +4 -2
  22. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_gemma4_vllm_snapshot.py +3 -1
  23. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_granite_vllm_server.py +4 -2
  24. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_qwen3_27b_bench.py +3 -1
  25. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_qwen3_27b_snapshot.py +3 -1
  26. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_stack_a100.py +4 -2
  27. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/phase_a_leg_validate.py +1 -1
  28. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/semantic_judge_live_validate.py +1 -1
  29. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/semantic_judge_probe.py +1 -1
  30. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/stack_correctness_validate.py +1 -1
  31. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/vllm_extraction_ab.py +1 -1
  32. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/vllm_kg_query_validate.py +1 -1
  33. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/vllm_raw_diagnostic.py +1 -1
  34. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/SKILL.md +5 -3
  35. {rag_wright-0.5.0/.claude → rag_wright-0.6.0/src/rag_wright/.agents}/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +3 -1
  36. {rag_wright-0.5.0/.claude → rag_wright-0.6.0/src/rag_wright/.agents}/skills/using-the-rag-wright-engine/SKILL.md +5 -1
  37. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/__init__.py +5 -0
  38. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/ingestion/builder.py +23 -0
  39. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/models/model_servers.py +77 -7
  40. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/models/profiles.py +3 -0
  41. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/models/seam.py +12 -5
  42. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +1 -1
  43. {rag_wright-0.5.0 → rag_wright-0.6.0}/tasks.md +5 -3
  44. rag_wright-0.6.0/tests/ingestion/test_concurrency_ceiling.py +59 -0
  45. rag_wright-0.6.0/tests/models/test_model_servers.py +272 -0
  46. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_serving_seam.py +23 -2
  47. {rag_wright-0.5.0 → rag_wright-0.6.0}/uv.lock +1 -1
  48. rag_wright-0.5.0/.release-please-manifest.json +0 -3
  49. rag_wright-0.5.0/tests/models/test_model_servers.py +0 -127
  50. {rag_wright-0.5.0 → rag_wright-0.6.0}/.claude/settings.json +0 -0
  51. {rag_wright-0.5.0 → rag_wright-0.6.0}/.claude/skills/authoring-a-capability/SKILL.md +0 -0
  52. {rag_wright-0.5.0 → rag_wright-0.6.0}/.claude/skills/building-an-ingestion-capability/SKILL.md +0 -0
  53. {rag_wright-0.5.0 → rag_wright-0.6.0}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
  54. {rag_wright-0.5.0 → rag_wright-0.6.0}/.claude/skills/creating-evals/SKILL.md +0 -0
  55. {rag_wright-0.5.0 → rag_wright-0.6.0}/.claude/skills/laya/SKILL.md +0 -0
  56. {rag_wright-0.5.0 → rag_wright-0.6.0}/.claude/skills/setfit/SKILL.md +0 -0
  57. {rag_wright-0.5.0 → rag_wright-0.6.0}/.env.example +0 -0
  58. {rag_wright-0.5.0 → rag_wright-0.6.0}/.github/workflows/publish.yml +0 -0
  59. {rag_wright-0.5.0 → rag_wright-0.6.0}/.github/workflows/release-please.yml +0 -0
  60. {rag_wright-0.5.0 → rag_wright-0.6.0}/.gitignore +0 -0
  61. {rag_wright-0.5.0 → rag_wright-0.6.0}/LICENSE +0 -0
  62. {rag_wright-0.5.0 → rag_wright-0.6.0}/README.md +0 -0
  63. {rag_wright-0.5.0 → rag_wright-0.6.0}/SPEC.md +0 -0
  64. {rag_wright-0.5.0 → rag_wright-0.6.0}/conftest.py +0 -0
  65. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
  66. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/ArcadeDB_Local.md +0 -0
  67. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/OBSERVABILITY.md +0 -0
  68. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0001-stack-and-library-choices.md +0 -0
  69. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
  70. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
  71. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0004-entity-disambiguation.md +0 -0
  72. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0005-relational-golden-set.md +0 -0
  73. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0006-model-profile.md +0 -0
  74. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0007-arcadedb-store-schema.md +0 -0
  75. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
  76. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
  77. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
  78. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
  79. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
  80. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
  81. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
  82. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
  83. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
  84. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
  85. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
  86. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
  87. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
  88. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
  89. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
  90. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
  91. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
  92. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
  93. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
  94. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
  95. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
  96. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
  97. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
  98. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
  99. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0032-nl-to-type-two-step-reason-emit-on-gemma.md +0 -0
  100. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
  101. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
  102. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
  103. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
  104. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
  105. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0038-full-cuad-kg-on-gcp-gpu-vm-and-gcs-backup.md +0 -0
  106. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
  107. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
  108. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
  109. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0042-clause-level-span-id-provenance-and-content-hash-backfill.md +0 -0
  110. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
  111. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
  112. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
  113. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
  114. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
  115. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
  116. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
  117. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
  118. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
  119. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
  120. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
  121. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
  122. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0055-confidence-out-of-band.md +0 -0
  123. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
  124. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0057-async-engine-architecture.md +0 -0
  125. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0058-structure-first-chunking.md +0 -0
  126. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
  127. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
  128. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
  129. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +0 -0
  130. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
  131. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
  132. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
  133. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
  134. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0067-domain-pack-retargeting.md +0 -0
  135. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
  136. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
  137. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
  138. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
  139. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
  140. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
  141. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
  142. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
  143. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
  144. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
  145. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
  146. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
  147. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
  148. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
  149. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
  150. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
  151. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
  152. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
  153. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0086-streaming-cost-capture.md +0 -0
  154. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
  155. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
  156. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
  157. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0090-affiliate-of-extraction.md +0 -0
  158. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0091-retire-partyto-edge.md +0 -0
  159. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0092-idempotent-write-graph.md +0 -0
  160. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0093-entities-by-name-seam.md +0 -0
  161. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0094-workspace-document-scope.md +0 -0
  162. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0095-span-page-provenance.md +0 -0
  163. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
  164. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
  165. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0098-invoke-time-document-scope.md +0 -0
  166. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
  167. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0100-profile-based-model-routing.md +0 -0
  168. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
  169. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
  170. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
  171. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
  172. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
  173. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
  174. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0107-requirement-page-provenance.md +0 -0
  175. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
  176. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
  177. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
  178. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
  179. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
  180. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
  181. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
  182. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
  183. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
  184. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
  185. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0118-engine-core-api-vs-ard-adapter-free-impl-ref-client.md +0 -0
  186. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0119-jev-typed-decision-model-for-compliance-closed-set-fields.md +0 -0
  187. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
  188. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
  189. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
  190. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
  191. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +0 -0
  192. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
  193. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
  194. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0127-retire-the-okf-code.md +0 -0
  195. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
  196. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0129-laya-temperatures-and-the-sklearn-floor.md +0 -0
  197. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/adr/0130-deploy-the-self-hosted-model-server-from-the-engine.md +0 -0
  198. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/api/pack_sdk.md +0 -0
  199. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
  200. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/architecture.md +0 -0
  201. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/README.md +0 -0
  202. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/design/deontic-applicability-routing.md +0 -0
  203. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
  204. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/design/semantic-subject-segmentation.md +0 -0
  205. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/design/unify-subject-preprocessing.md +0 -0
  206. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0037-closed-vocab-drops-verbatim-values-to-other.md +0 -0
  207. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0038-a-clause-node-is-now-created-per-sentence-so-98-percent-of-spans-become-clauses.md +0 -0
  208. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0039-the-provision-detector-reads-text-but-docling-puts-the-section-number-in-marker.md +0 -0
  209. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0040-covered-subject-is-asked-of-every-provision-so-verbatim-retention-fills-it-with-noise.md +0 -0
  210. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
  211. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0041-leg-b-discards-the-best-dense-matches-on-some-queries.md +0 -0
  212. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0042-usage-is-captured-per-call-but-never-returned-so-cost-needs-a-langfuse-round-trip.md +0 -0
  213. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0043-a-requirement-carries-no-page-provenance-so-a-finding-cannot-point-into-its-policy.md +0 -0
  214. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0044-document-signals-scaffolding-is-shown-to-the-user-as-a-quote-from-their-document.md +0 -0
  215. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0045-a-fixed-money-cap-records-no-cap-quantum-so-the-amount-is-only-prose.md +0 -0
  216. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0046-appending-a-natural-follow-up-to-a-question-drops-the-clause-type.md +0 -0
  217. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0047-an-exact-deepagents-pin-transitively-pins-every-consumer.md +0 -0
  218. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/engine-issues/0048-the-pinned-endpoints-latency-tail-makes-agent-runs-undebuggable-from-either-side.md +0 -0
  219. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
  220. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
  221. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
  222. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
  223. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-01_issue-0013-recall-first-actor-gate_rulewright.md +0 -0
  224. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
  225. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
  226. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
  227. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-04_issue-0016-thread-safe-embedder_rulewright.md +0 -0
  228. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
  229. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-05_tagparse-ingestion-and-granite-4.2_rulewright.md +0 -0
  230. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
  231. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
  232. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_issue-0029-idempotent-write-graph_rulewright.md +0 -0
  233. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_issue-0030-entities-by-name_rulewright.md +0 -0
  234. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
  235. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
  236. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_rename-run-ad-compliance-check_rulewright.md +0 -0
  237. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
  238. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
  239. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-failclosed-and-nodrift_rulewright.md +0 -0
  240. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-validate-ingested-set_rulewright.md +0 -0
  241. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0031-workspace-document-scope_rulewright.md +0 -0
  242. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0032-span-page-provenance_rulewright.md +0 -0
  243. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
  244. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0034-invoke-time-document-scope_rulewright.md +0 -0
  245. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-11_issue-0035-followup-derived-guard_rulewright.md +0 -0
  246. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-11_issue-0035-mcp-no-model-tenant_rulewright.md +0 -0
  247. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
  248. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
  249. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
  250. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
  251. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
  252. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
  253. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
  254. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-14_document-signals-off-citation_0044_rulewright.md +0 -0
  255. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
  256. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-16_qwen3-27b-single-a100-serving-profile_rulewright.md +0 -0
  257. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
  258. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-18_fp8-kv-16k-single-a100_rulewright.md +0 -0
  259. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
  260. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
  261. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-answers_from_rulewright.md +0 -0
  262. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-scoping-questions_rulewright.md +0 -0
  263. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/misc/.gitkeep +0 -0
  264. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/plans/Corpus_Acquisition.md +0 -0
  265. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/plans/async-migration.md +0 -0
  266. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/plans/demo_plan.md +0 -0
  267. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
  268. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
  269. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
  270. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
  271. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
  272. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
  273. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/concepts.md +0 -0
  274. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/contract_pipeline_explainer.md +0 -0
  275. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/corpus_ingest_recipe.md +0 -0
  276. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/domain-adaptation/README.md +0 -0
  277. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/domain-adaptation/_engine-gaps.md +0 -0
  278. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/domain-adaptation/authoring-capabilities.md +0 -0
  279. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/domain-adaptation/classification-and-decision-models.md +0 -0
  280. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/domain-adaptation/entity-resolution.md +0 -0
  281. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/domain-adaptation/kg-construction.md +0 -0
  282. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/domain-adaptation/ontology-authoring.md +0 -0
  283. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/classifier_model_ab.md +0 -0
  284. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/compliance_demo.md +0 -0
  285. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/compliance_gate_cc7.md +0 -0
  286. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/compliance_rung2_cc7.md +0 -0
  287. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
  288. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/dg_model_ab.md +0 -0
  289. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/function_gate_recall.md +0 -0
  290. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/generation_robustness_b_vs_c.md +0 -0
  291. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/nl_to_type_cu-d2.md +0 -0
  292. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/ocr_benchmark.md +0 -0
  293. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/prod1_readiness.md +0 -0
  294. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/prod2_readiness.md +0 -0
  295. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/query_side_model_ab.md +0 -0
  296. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/silver_granite_vs_gemma4.md +0 -0
  297. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/silver_provider_routing.md +0 -0
  298. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
  299. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/installation.md +0 -0
  300. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/playbook.md +0 -0
  301. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/product/capability_profiles.md +0 -0
  302. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/product/contracts_product_roadmap.md +0 -0
  303. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/product/engine-api-migration-handoff.md +0 -0
  304. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/product/engine_async_api.md +0 -0
  305. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/product/new-domain-build-sequence.md +0 -0
  306. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/product/seam-adaptation-guide.md +0 -0
  307. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
  308. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
  309. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/proposals/new-domain-developer-journey.md +0 -0
  310. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/proposals/ontology-induction.md +0 -0
  311. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/quickstart.md +0 -0
  312. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/reference-pack.md +0 -0
  313. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/releasing.md +0 -0
  314. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/engine-platform/SPEC.md +0 -0
  315. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/engine-platform/TASKS.md +0 -0
  316. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/engine-prep/plan.md +0 -0
  317. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
  318. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
  319. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/ingestion-hooks/plan.md +0 -0
  320. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
  321. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/public-surface/rulewright-migration-0.3.0.md +0 -0
  322. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/public-surface/rulewright-migration-0.4.0.md +0 -0
  323. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/specs/public-surface/rulewright-reply-2026-10-10-laya-and-sklearn.md +0 -0
  324. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/templates/product-starter/CLAUDE.md.template +0 -0
  325. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/templates/product-starter/README.md +0 -0
  326. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/templates/product-starter/dependabot.yml +0 -0
  327. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/templates/product-starter/playbook.md.template +0 -0
  328. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/upstream/laya-temperature-range-mismatch.md +0 -0
  329. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
  330. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
  331. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
  332. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
  333. {rag_wright-0.5.0 → rag_wright-0.6.0}/docs/workspaces.md +0 -0
  334. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/__init__.py +0 -0
  335. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/acord.py +0 -0
  336. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/acord_retrieval.py +0 -0
  337. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/boundary_residue_gold.py +0 -0
  338. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/build_golden.py +0 -0
  339. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
  340. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
  341. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
  342. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/compliance_demo/subjects/post_violation.txt +0 -0
  343. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/condensed_pipeline.py +0 -0
  344. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/contract_parity_live.py +0 -0
  345. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/contractnli_judge.py +0 -0
  346. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/cuad_highlight.py +0 -0
  347. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/embedded_eval.py +0 -0
  348. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/full_pipeline_rerank.py +0 -0
  349. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/function_ceiling.py +0 -0
  350. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/function_property_rerank.py +0 -0
  351. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/function_rerank.py +0 -0
  352. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/gate1_chunker_ab.py +0 -0
  353. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/gate2_hybrid_rerank.py +0 -0
  354. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/golden/relational/set.json +0 -0
  355. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/golden.py +0 -0
  356. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/ground_discriminator_rerank.py +0 -0
  357. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/harness.py +0 -0
  358. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/ingestion_live_smoke.py +0 -0
  359. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/kg_primary.py +0 -0
  360. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/kg_property_rerank.py +0 -0
  361. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/listwise_rerank.py +0 -0
  362. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/multihop.py +0 -0
  363. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/nl_to_type.py +0 -0
  364. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/relational_eval.py +0 -0
  365. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/residual_decision_gold.py +0 -0
  366. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/segmenter_eval.py +0 -0
  367. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/semantic_judge_gold.py +0 -0
  368. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/test_acord.py +0 -0
  369. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/test_acord_retrieval.py +0 -0
  370. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/test_harness.py +0 -0
  371. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/test_multihop_set.py +0 -0
  372. {rag_wright-0.5.0 → rag_wright-0.6.0}/eval/unit_grouper_eval.py +0 -0
  373. {rag_wright-0.5.0 → rag_wright-0.6.0}/examples/quickstart.py +0 -0
  374. {rag_wright-0.5.0 → rag_wright-0.6.0}/plan.md +0 -0
  375. {rag_wright-0.5.0 → rag_wright-0.6.0}/release-please-config.json +0 -0
  376. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ab_model_overlap.py +0 -0
  377. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/acord_unify.py +0 -0
  378. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/acquire_acord.py +0 -0
  379. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/acquire_cuad.py +0 -0
  380. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/acquire_ecfr.py +0 -0
  381. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/acquire_edgar.py +0 -0
  382. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/acquire_ftc_255.py +0 -0
  383. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/acquire_prod1_corpus.py +0 -0
  384. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/audit_reclass_flips.py +0 -0
  385. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/author_leg_a_silver_key.py +0 -0
  386. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/backfill_affiliations.py +0 -0
  387. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/backfill_clause_span_id.py +0 -0
  388. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/backfill_edge_source_doc_id.py +0 -0
  389. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/backup_kg_to_gcs.sh +0 -0
  390. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/bootstrap_template_capture.py +0 -0
  391. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/bootstrap_typed_edges.py +0 -0
  392. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/build_api_docs.py +0 -0
  393. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/build_api_docs.sh +0 -0
  394. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/build_cuad_clause_cache.py +0 -0
  395. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/build_function_routing_map.py +0 -0
  396. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_assemble_v2.py +0 -0
  397. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_assemble_v3.py +0 -0
  398. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_generate_hard_negatives.py +0 -0
  399. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_generate_hard_positives.py +0 -0
  400. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_generate_training.py +0 -0
  401. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_hybrid.py +0 -0
  402. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_hybrid2.py +0 -0
  403. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_jev_actor.py +0 -0
  404. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_jev_claimtypes.py +0 -0
  405. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_jev_operative.py +0 -0
  406. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_label_spans.py +0 -0
  407. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_laya_prep.py +0 -0
  408. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_laya_train.py +0 -0
  409. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_prep_operative.py +0 -0
  410. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_relabel_rubric.py +0 -0
  411. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_relabel_rubric2.py +0 -0
  412. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/cic1_train_operative.py +0 -0
  413. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/compare_extraction_models.py +0 -0
  414. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/compliance_actor_gate_smoke.py +0 -0
  415. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/compliance_policy_demo.py +0 -0
  416. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/curate_taxonomy_gaps.py +0 -0
  417. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/dg_model_ab.py +0 -0
  418. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/diagnose_acord_knn_expansion.py +0 -0
  419. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/diagnose_acord_knn_rerank.py +0 -0
  420. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/diagnose_acord_leg_pool.py +0 -0
  421. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/diagnose_acord_legs.py +0 -0
  422. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/diagnose_acord_pool.py +0 -0
  423. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/diagnose_acord_relstructure.py +0 -0
  424. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/diagnose_acord_retrieval.py +0 -0
  425. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/distill/eval_all.py +0 -0
  426. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/distill/eval_ce.py +0 -0
  427. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/distill/eval_listwise_b.py +0 -0
  428. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/distill/export_ce_dataset.py +0 -0
  429. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/distill/extract_features.py +0 -0
  430. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/distill/listwise_variants.py +0 -0
  431. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/distill/relational_features.py +0 -0
  432. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/distill/train_ce.py +0 -0
  433. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/distill/train_modal.py +0 -0
  434. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/enrich_edgar_candidates.py +0 -0
  435. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/eval_chunking_ab.py +0 -0
  436. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
  437. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/extract_arcadedb_docs.py +0 -0
  438. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/fetch_reference_models.py +0 -0
  439. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/generate_contract_python.py +0 -0
  440. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/git_post_commit_graphify.sh +0 -0
  441. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/graph_status.sh +0 -0
  442. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ingest_acord.py +0 -0
  443. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ingest_compliance_async_prod2.py +0 -0
  444. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ingest_compliance_document_prod2.py +0 -0
  445. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ingest_compliance_prod2.py +0 -0
  446. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ingest_cuad.py +0 -0
  447. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ingest_cuad_full.py +0 -0
  448. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ingest_ftc_compliance.py +0 -0
  449. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ingest_prod1.py +0 -0
  450. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ingest_prod1_async.py +0 -0
  451. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ingest_smoke.py +0 -0
  452. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/install_git_hooks.sh +0 -0
  453. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/label_new_functions.py +0 -0
  454. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/legb_function_gate_recall.py +0 -0
  455. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/make_compliance_fixtures.py +0 -0
  456. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/make_compliance_gold.py +0 -0
  457. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/mcp_compliance_agent_demo.py +0 -0
  458. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/mcp_intra_document_qa_smoke.py +0 -0
  459. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/mcp_query_legs_agent_demo.py +0 -0
  460. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/measure_silver.py +0 -0
  461. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/merge_docs_into_framework.py +0 -0
  462. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
  463. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/migrate_silver_evidence_autotag.py +0 -0
  464. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
  465. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/migrate_span_fields.py +0 -0
  466. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/mine_scarce_functions.py +0 -0
  467. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_arcadedb.py +0 -0
  468. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_backfill.py +0 -0
  469. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_exception_linking.py +0 -0
  470. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_granite_server.py +0 -0
  471. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_granite_throughput.py +0 -0
  472. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_query_app.py +0 -0
  473. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/modal_qwen3_vllm_server.py +0 -0
  474. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ocr_benchmark.py +0 -0
  475. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ocr_preprocess.py +0 -0
  476. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/ontology_dimension_check.py +0 -0
  477. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/populate_clause_kg.py +0 -0
  478. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/populate_entity_graph.py +0 -0
  479. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/populate_entity_graph_extracted.py +0 -0
  480. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/populate_property_store.py +0 -0
  481. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/prep_relational_verification.py +0 -0
  482. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/publish_manifests.py +0 -0
  483. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/reclassify_kg.py +0 -0
  484. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/refresh_framework_graph.sh +0 -0
  485. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/revert_reclass_flips.py +0 -0
  486. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/run_acord_retrieval.py +0 -0
  487. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/run_clause_exception_linking.py +0 -0
  488. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/snapshot_leg_a_eval.py +0 -0
  489. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/table_retrieval_smoke.py +0 -0
  490. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/train_function_classifier.py +0 -0
  491. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/train_legalbert_function.py +0 -0
  492. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/train_legalbert_modal.py +0 -0
  493. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/typed_rerank_validate.py +0 -0
  494. {rag_wright-0.5.0 → rag_wright-0.6.0}/scripts/verify_wheel_install.sh +0 -0
  495. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/authoring-a-capability/SKILL.md +0 -0
  496. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/building-an-ingestion-capability/SKILL.md +0 -0
  497. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
  498. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +0 -0
  499. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/laya/SKILL.md +0 -0
  500. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/setfit/SKILL.md +0 -0
  501. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/__init__.py +0 -0
  502. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/answers.py +0 -0
  503. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/config.py +0 -0
  504. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/discover.py +0 -0
  505. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/documents.py +0 -0
  506. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/ids.py +0 -0
  507. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/invoke.py +0 -0
  508. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/kg.py +0 -0
  509. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/mcp.py +0 -0
  510. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/tracing.py +0 -0
  511. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/usage.py +0 -0
  512. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/api/workspace.py +0 -0
  513. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/__init__.py +0 -0
  514. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/answer_generator.py +0 -0
  515. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/ard.py +0 -0
  516. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/chunk_read.py +0 -0
  517. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/chunk_write.py +0 -0
  518. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/disambiguation.py +0 -0
  519. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/document_parse.py +0 -0
  520. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/document_scope.py +0 -0
  521. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/embedding.py +0 -0
  522. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
  523. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/entity_resolution.py +0 -0
  524. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/fusion.py +0 -0
  525. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/graph_query.py +0 -0
  526. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/graph_storage.py +0 -0
  527. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/hybrid_search.py +0 -0
  528. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/invoke.py +0 -0
  529. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/jev_decision.py +0 -0
  530. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/manifests.py +0 -0
  531. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/parsing.py +0 -0
  532. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/registry.py +0 -0
  533. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/remote_encoders.py +0 -0
  534. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/reranking.py +0 -0
  535. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/retrieval_core.py +0 -0
  536. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/rlm_chunking.py +0 -0
  537. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
  538. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/scan_quality.py +0 -0
  539. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
  540. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/vision_to_text.py +0 -0
  541. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
  542. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/contracts/__init__.py +0 -0
  543. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/contracts/chunk.py +0 -0
  544. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/contracts/extraction.py +0 -0
  545. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/contracts/graph.py +0 -0
  546. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/contracts/identifiers.py +0 -0
  547. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/contracts/ingestion.py +0 -0
  548. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/contracts/provenance.py +0 -0
  549. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/contracts/span.py +0 -0
  550. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/corpus/__init__.py +0 -0
  551. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/corpus/canonicalize.py +0 -0
  552. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/corpus/document_parser.py +0 -0
  553. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/corpus/embedded.py +0 -0
  554. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/corpus/http.py +0 -0
  555. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/ingestion/__init__.py +0 -0
  556. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/ingestion/evaluate.py +0 -0
  557. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/ingestion/group.py +0 -0
  558. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/ingestion/layout.py +0 -0
  559. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/ingestion/segment.py +0 -0
  560. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/ingestion/tables.py +0 -0
  561. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/models/__init__.py +0 -0
  562. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/models/tag_structured.py +0 -0
  563. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/models/tracing.py +0 -0
  564. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/models/usage.py +0 -0
  565. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/models/weights.py +0 -0
  566. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/ontology/__init__.py +0 -0
  567. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/ontology/pack_schema.py +0 -0
  568. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/ontology/registry.py +0 -0
  569. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/pack_sdk/__init__.py +0 -0
  570. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/__init__.py +0 -0
  571. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/__init__.py +0 -0
  572. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
  573. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
  574. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
  575. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
  576. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
  577. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
  578. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/invokers.py +0 -0
  579. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
  580. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
  581. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
  582. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
  583. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
  584. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
  585. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/pack.py +0 -0
  586. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
  587. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
  588. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
  589. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
  590. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
  591. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
  592. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
  593. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
  594. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
  595. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
  596. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
  597. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
  598. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +0 -0
  599. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +0 -0
  600. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
  601. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/__init__.py +0 -0
  602. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
  603. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
  604. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
  605. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
  606. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
  607. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
  608. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
  609. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
  610. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +0 -0
  611. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
  612. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
  613. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
  614. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
  615. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
  616. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
  617. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
  618. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +0 -0
  619. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
  620. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
  621. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
  622. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
  623. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
  624. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
  625. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
  626. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
  627. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
  628. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
  629. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
  630. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
  631. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
  632. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/options.py +0 -0
  633. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/pack.py +0 -0
  634. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
  635. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
  636. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
  637. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
  638. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
  639. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
  640. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
  641. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
  642. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
  643. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
  644. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
  645. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
  646. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
  647. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
  648. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
  649. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
  650. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
  651. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
  652. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
  653. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
  654. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +0 -0
  655. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
  656. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
  657. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
  658. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
  659. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
  660. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/function_families.py +0 -0
  661. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +0 -0
  662. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
  663. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
  664. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
  665. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
  666. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
  667. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
  668. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
  669. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +0 -0
  670. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
  671. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
  672. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
  673. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +0 -0
  674. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
  675. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +0 -0
  676. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +0 -0
  677. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +0 -0
  678. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
  679. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +0 -0
  680. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
  681. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +0 -0
  682. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/packs/reference_seam.py +0 -0
  683. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/py.typed +0 -0
  684. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/skills/__init__.py +0 -0
  685. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/skills/generation/SKILL.md +0 -0
  686. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/skills/generation/__init__.py +0 -0
  687. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/skills/rlm/SKILL.md +0 -0
  688. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/skills/rlm/__init__.py +0 -0
  689. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/skills/rlm/agent.py +0 -0
  690. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
  691. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
  692. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
  693. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/spans/__init__.py +0 -0
  694. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/spans/page_map.py +0 -0
  695. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/store/__init__.py +0 -0
  696. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/store/arcadedb.py +0 -0
  697. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/store/chunk_text.py +0 -0
  698. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/store/seam.py +0 -0
  699. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/subgraphs/__init__.py +0 -0
  700. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
  701. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/subgraphs/observability.py +0 -0
  702. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/subgraphs/scaffold.py +0 -0
  703. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
  704. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/util/__init__.py +0 -0
  705. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/util/concurrent.py +0 -0
  706. {rag_wright-0.5.0 → rag_wright-0.6.0}/src/rag_wright/util/spacy_model.py +0 -0
  707. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/__init__.py +0 -0
  708. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/__init__.py +0 -0
  709. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_answers_exports.py +0 -0
  710. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_bytes_ingest.py +0 -0
  711. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_capability_reexports.py +0 -0
  712. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_decision_swap_doc_example.py +0 -0
  713. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_discover.py +0 -0
  714. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_documents.py +0 -0
  715. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_e2e.py +0 -0
  716. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_invoke.py +0 -0
  717. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_kg.py +0 -0
  718. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_mcp.py +0 -0
  719. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_metering_tracing_exports.py +0 -0
  720. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_model_role_export.py +0 -0
  721. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_open_workspace_reconfig.py +0 -0
  722. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_options.py +0 -0
  723. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_pack_sdk.py +0 -0
  724. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_pack_store.py +0 -0
  725. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_usage.py +0 -0
  726. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_workspace.py +0 -0
  727. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/api/test_workspace_models.py +0 -0
  728. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/arch/domain_vocabulary_baseline.json +0 -0
  729. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/arch/test_api_docs_current.py +0 -0
  730. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/arch/test_doc_references.py +0 -0
  731. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/arch/test_engine_domain_vocabulary.py +0 -0
  732. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/arch/test_import_contracts.py +0 -0
  733. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/arch/test_packs_use_store_primitives.py +0 -0
  734. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/arch/test_shipped_skills.py +0 -0
  735. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/async_helpers.py +0 -0
  736. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/__init__.py +0 -0
  737. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
  738. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_answer_generator.py +0 -0
  739. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_answer_generator_async.py +0 -0
  740. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_assertion_extraction.py +0 -0
  741. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_authoring_contract.py +0 -0
  742. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_chunk_read.py +0 -0
  743. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_chunk_write.py +0 -0
  744. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
  745. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_claim_extraction.py +0 -0
  746. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_clause_exception_linking.py +0 -0
  747. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_compliance_judgment.py +0 -0
  748. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_compliance_store.py +0 -0
  749. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_contract_kg_serve.py +0 -0
  750. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_contract_kg_store.py +0 -0
  751. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
  752. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
  753. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_dg_adapter.py +0 -0
  754. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_dg_async.py +0 -0
  755. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_dg_extraction.py +0 -0
  756. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_dg_model_seam.py +0 -0
  757. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_dg_private.py +0 -0
  758. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_disambiguation.py +0 -0
  759. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_document_scope.py +0 -0
  760. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_embedding.py +0 -0
  761. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_embedding_profiles.py +0 -0
  762. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_entity_resolution.py +0 -0
  763. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
  764. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_fusion.py +0 -0
  765. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_graph_extraction.py +0 -0
  766. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_graph_query.py +0 -0
  767. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_graph_storage.py +0 -0
  768. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_highlight_serve.py +0 -0
  769. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_hybrid_search.py +0 -0
  770. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_jev_decision.py +0 -0
  771. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_manifest_validation.py +0 -0
  772. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_manifests.py +0 -0
  773. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_parsing.py +0 -0
  774. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_parties_extraction.py +0 -0
  775. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
  776. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_query_function_classifier.py +0 -0
  777. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_query_understanding.py +0 -0
  778. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_registry.py +0 -0
  779. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_remote_encoders.py +0 -0
  780. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_repair_partition.py +0 -0
  781. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_requirement_extraction.py +0 -0
  782. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_reranking.py +0 -0
  783. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_retrieval_core.py +0 -0
  784. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_rlm_chunking.py +0 -0
  785. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_rlm_chunking_async.py +0 -0
  786. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_rlm_method.py +0 -0
  787. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_rlm_synthesis.py +0 -0
  788. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_runtime_registry.py +0 -0
  789. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_scan_quality.py +0 -0
  790. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_span_relevance_judgment.py +0 -0
  791. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
  792. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_structural_model_fallback.py +0 -0
  793. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
  794. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_tiered_ocr.py +0 -0
  795. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/capabilities/test_vlm_ocr.py +0 -0
  796. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/compliance_fakes.py +0 -0
  797. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/conftest.py +0 -0
  798. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/__init__.py +0 -0
  799. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_canonical_source_doc_id.py +0 -0
  800. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_chunk_record.py +0 -0
  801. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_compliance.py +0 -0
  802. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
  803. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_extraction.py +0 -0
  804. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_function.py +0 -0
  805. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_function_routing.py +0 -0
  806. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_identifiers.py +0 -0
  807. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_ingestion_hooks.py +0 -0
  808. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_jurisdiction.py +0 -0
  809. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_ontology.py +0 -0
  810. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_property.py +0 -0
  811. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_provenance.py +0 -0
  812. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/contracts/test_value_match.py +0 -0
  813. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/__init__.py +0 -0
  814. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/_ooxml_fixtures.py +0 -0
  815. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/test_canonicalize.py +0 -0
  816. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/test_cuad.py +0 -0
  817. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/test_cuad_ingestion.py +0 -0
  818. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/test_document_parser.py +0 -0
  819. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/test_edgar.py +0 -0
  820. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/test_embedded.py +0 -0
  821. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/test_gcs_ingestion.py +0 -0
  822. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/test_http.py +0 -0
  823. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/test_parse_wire2.py +0 -0
  824. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/corpus/test_selection.py +0 -0
  825. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/eval/test_contractnli_judge.py +0 -0
  826. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/eval/test_cuad_highlight_metrics.py +0 -0
  827. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/eval/test_kg_property_rerank.py +0 -0
  828. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/eval/test_nl_to_type_metrics.py +0 -0
  829. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/eval/test_relational_eval.py +0 -0
  830. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
  831. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
  832. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/fixtures/ingestion/textile_test_report.md +0 -0
  833. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/fixtures/leg_a_silver/README.md +0 -0
  834. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
  835. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/fixtures/table-bearing-contract.pdf +0 -0
  836. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/foundation/__init__.py +0 -0
  837. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/foundation/test_arcadedb_hybrid.py +0 -0
  838. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/foundation/test_model_seam_structured.py +0 -0
  839. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/__init__.py +0 -0
  840. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/test_builder.py +0 -0
  841. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
  842. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/test_document_metadata.py +0 -0
  843. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/test_evaluate.py +0 -0
  844. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/test_evaluate_labels.py +0 -0
  845. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/test_layout_segmenter.py +0 -0
  846. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/test_spreadsheet_content.py +0 -0
  847. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/test_table_rows.py +0 -0
  848. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/test_tuning.py +0 -0
  849. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/test_unit_grouper.py +0 -0
  850. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ingestion/test_unit_representative.py +0 -0
  851. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/journey/incidents_domain.py +0 -0
  852. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/journey/incidents_pack.ttl +0 -0
  853. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/journey/test_incidents_journey.py +0 -0
  854. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/journey/test_pack_schema.py +0 -0
  855. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/mcp/__init__.py +0 -0
  856. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/mcp/test_compliance_server.py +0 -0
  857. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/mcp/test_intra_document_qa_server.py +0 -0
  858. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
  859. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/mcp/test_relational_qa_server.py +0 -0
  860. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
  861. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/__init__.py +0 -0
  862. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_async_infra.py +0 -0
  863. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_classifier_heads_load_clean.py +0 -0
  864. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_models_dir.py +0 -0
  865. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_no_gemma_default.py +0 -0
  866. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_profile_routing.py +0 -0
  867. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_profile_seam.py +0 -0
  868. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_seam_async.py +0 -0
  869. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_seam_retry.py +0 -0
  870. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_seam_stream.py +0 -0
  871. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_serving_wiring.py +0 -0
  872. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_tag_structured.py +0 -0
  873. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_tag_structured_async.py +0 -0
  874. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_tracing.py +0 -0
  875. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/models/test_usage.py +0 -0
  876. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ontology/__init__.py +0 -0
  877. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ontology/test_clause_template.py +0 -0
  878. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
  879. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ontology/test_derivation.py +0 -0
  880. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ontology/test_entity_taxonomy.py +0 -0
  881. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
  882. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
  883. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ontology/test_template_captured_in_ttl.py +0 -0
  884. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
  885. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/reference/test_compliance_reference.py +0 -0
  886. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/reference/test_contract_seam.py +0 -0
  887. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/scripts/test_eval_chunking_ab.py +0 -0
  888. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/scripts/test_eval_classifier_ab.py +0 -0
  889. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/scripts/test_fetch_reference_models.py +0 -0
  890. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/skills/__init__.py +0 -0
  891. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/skills/test_ingestion_skill_example.py +0 -0
  892. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_boundary.py +0 -0
  893. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_classifier_property_extractor.py +0 -0
  894. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
  895. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_clause_function_classifier.py +0 -0
  896. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_clause_function_classifier_async.py +0 -0
  897. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_clause_kg_extractor.py +0 -0
  898. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_clause_kg_extractor_async.py +0 -0
  899. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_dim_classifier.py +0 -0
  900. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_dim_fleet_live.py +0 -0
  901. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_function_classifier.py +0 -0
  902. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_hybrid_classifier.py +0 -0
  903. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_hybrid_property_extractor.py +0 -0
  904. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_legalbert_classifier.py +0 -0
  905. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_model_capabilities.py +0 -0
  906. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_new_function_labels.py +0 -0
  907. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_page_map.py +0 -0
  908. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_property_extractor.py +0 -0
  909. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_property_grounding.py +0 -0
  910. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_reclassify.py +0 -0
  911. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_residual_decision.py +0 -0
  912. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_scarce_function_labels.py +0 -0
  913. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_segment.py +0 -0
  914. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_segmentation_vocab.py +0 -0
  915. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_semantic_judge.py +0 -0
  916. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_setfit_clause_adapter.py +0 -0
  917. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_setfit_probabilities.py +0 -0
  918. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_span_offsets.py +0 -0
  919. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_stage_labels_0005.py +0 -0
  920. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_symbolic_validation.py +0 -0
  921. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/spans/test_tag_clause_extractor.py +0 -0
  922. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/__init__.py +0 -0
  923. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_affiliation_backfill.py +0 -0
  924. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_arcadedb_clause_kg.py +0 -0
  925. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_arcadedb_contract.py +0 -0
  926. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_arcadedb_property.py +0 -0
  927. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_arcadedb_requirement_sources.py +0 -0
  928. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_arcadedb_schema.py +0 -0
  929. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_arcadedb_span.py +0 -0
  930. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_chunk_text.py +0 -0
  931. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_concurrent_writes.py +0 -0
  932. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_contract_kg_store_live.py +0 -0
  933. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_document_metadata_live.py +0 -0
  934. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_document_scope.py +0 -0
  935. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_engine_domain_neutral.py +0 -0
  936. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_entities_by_name.py +0 -0
  937. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_kg_edges.py +0 -0
  938. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_kg_mutations.py +0 -0
  939. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_kg_read.py +0 -0
  940. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_kg_write.py +0 -0
  941. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_neutral_schema.py +0 -0
  942. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/store/test_write_graph_idempotent.py +0 -0
  943. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/__init__.py +0 -0
  944. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_async_ingestion.py +0 -0
  945. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
  946. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_clause_results.py +0 -0
  947. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_compliance_check.py +0 -0
  948. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_compliance_ingestion.py +0 -0
  949. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
  950. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
  951. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
  952. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_graph_extraction.py +0 -0
  953. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_ingest_knobs.py +0 -0
  954. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
  955. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_intra_document_qa.py +0 -0
  956. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_observability.py +0 -0
  957. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_partial_entry_contract.py +0 -0
  958. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
  959. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_relational_qa.py +0 -0
  960. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_requirement_extraction.py +0 -0
  961. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_scaffold.py +0 -0
  962. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_semantic_chunking.py +0 -0
  963. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
  964. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
  965. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/test_backfill_clause_span_id.py +0 -0
  966. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/test_dg_model_ab.py +0 -0
  967. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/test_populate_clause_kg.py +0 -0
  968. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/test_populate_entity_graph.py +0 -0
  969. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/util/__init__.py +0 -0
  970. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/util/test_concurrent.py +0 -0
  971. {rag_wright-0.5.0 → rag_wright-0.6.0}/tests/util/test_spacy_model.py +0 -0
@@ -48,15 +48,17 @@ different servers (and URLs), for example one per tenant.
48
48
 
49
49
  **The exact working deploy (this succeeded):**
50
50
  ```
51
- MODAL_IMAGE_BUILDER_VERSION=2025.06 \
51
+ VLLM_API_KEY=<a long random string> MODAL_IMAGE_BUILDER_VERSION=2025.06 \
52
52
  APP_NAME=rw-qwen3-modal MODEL=Qwen/Qwen3.8-27B-FP8 KV_CACHE_DTYPE=fp8 \
53
53
  SERVED_NAME=Qwen/Qwen3.8-27B TOOL_PARSER=hermes REASONING_PARSER=qwen3 \
54
54
  GPU=A100-80GB:1 TP=1 MAX_LEN=16384 GPU_UTIL=0.95 MAX_NUM_SEQS=<target> \
55
55
  uv run --no-sync modal deploy scripts/modal_qwen3_vllm_server.py
56
56
  ```
57
57
  (From a product repo, deploy the copy in this skill's directory: `.claude/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py` once the skills are linked.)
58
- Then wire the engine: `.env` `VLLM_BASE_URL=https://<workspace>--rw-qwen3-modal-serve.modal.run/v1`,
59
- `VLLM_API_KEY=rw-vllm-dev-key`; the profile `qwen3.8-27b-modal` routes there. **Stop billing when done:**
58
+ The script refuses to deploy without `VLLM_API_KEY`: Modal's web endpoint is public and unauthenticated, so vLLM's
59
+ `--api-key` is the only gate on a billing A100, and there is no default key. Then wire the engine: `.env`
60
+ `VLLM_BASE_URL=https://<workspace>--rw-qwen3-modal-serve.modal.run/v1` and the same `VLLM_API_KEY`; the profile
61
+ `qwen3.8-27b-modal` routes there (the seam also refuses an unset key). **Stop billing when done:**
60
62
  `uv run --no-sync modal app stop rw-qwen3-modal --yes` (A100 is expensive).
61
63
 
62
64
  **The engine does NOT reach Modal by default.** Every role's default is `_PRODUCT_LLM = "qwen3.8-27b-modal-or"`,
@@ -34,7 +34,9 @@ SERVED = os.environ.get("SERVED_NAME", "qwen3-eval") # served-model-name
34
34
  TOOL_PARSER = os.environ.get("TOOL_PARSER", "") # "" off | "hermes" -> tool calling (the product agent)
35
35
  REASONING_PARSER = os.environ.get("REASONING_PARSER", "") # "" off | "qwen3" -> reasoning coexists with a tool call
36
36
  APP_NAME = os.environ.get("APP_NAME", "rw-qwen3-vllm-eval") # distinct app (=distinct URL) per purpose
37
- API_KEY = os.environ.get("VLLM_API_KEY", "rw-vllm-dev-key")
37
+ API_KEY = os.environ.get("VLLM_API_KEY") # vLLM's --api-key: the only gate on the server's public URL
38
+ if not API_KEY: # no default key (PS-21): a default would be public, and would gate a billing GPU
39
+ raise SystemExit("set VLLM_API_KEY to the server's API key (a long random string) before deploying")
38
40
 
39
41
  HF_CACHE = "/root/.cache/huggingface"
40
42
  VLLM_CACHE = "/root/.cache/vllm"
@@ -141,7 +141,11 @@ Work the domain-adaptation guide, grounding each engine call (step 2) and writin
141
141
  `server = await adeploy_model_server(ModelServerSpec(name="<app>", max_num_seqs=<concurrency target>))` (the locked
142
142
  setup of the `qwen-vllm-modal` skill; needs `rag-wright[modal]`, a Modal login and `VLLM_API_KEY` in `.env`), then
143
143
  `EngineConfig(models={"general": server.model_id, ...})`. Other processes reconnect with `amodel_server(spec)`;
144
- call `await_model_server(server)` before traffic (cold start is minutes); `stop_model_server(name)` stops billing.
144
+ call `await_model_server(server, timeout_s=<startup budget>)` before traffic (cold start is minutes; the default
145
+ waits 25 min); `stop_model_server(name)` stops billing. `amodel_server_status(spec)` looks without waking it (deployed,
146
+ running, healthy, weights cached). There is no default `VLLM_API_KEY`. Count concurrency end to end: `aingest` runs
147
+ `min(document_concurrency, documents) x extract_concurrency` calls per run, parallel runs add up, and the sum must
148
+ stay below `max_num_seqs` (`aingest` warns when its own peak exceeds it).
145
149
  Full walk-through: `docs/configuration.md`, "A self-hosted model server".
146
150
 
147
151
  **Using the decision model (Jev).** Register `jev_decision` (from `engine_capabilities()`) and set
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.6.0"
3
+ }
@@ -4,6 +4,24 @@ 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.6.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.5.1...0.6.0) (2026-10-10)
8
+
9
+
10
+ ### ⚠ BREAKING CHANGES
11
+
12
+ * **PS-21:** a self-hosted server call or deploy with VLLM_API_KEY (or the profile's api_key_env) unset now raises instead of using the default key "rw-vllm-dev-key".
13
+
14
+ ### Bug Fixes
15
+
16
+ * **PS-21:** no default model-server key; concurrency ceiling, status and clearer errors (ADR-0131) ([a73a4fd](https://github.com/fzaidi-dai/RAG_Wright/commit/a73a4fd9595a9f8d70d95d393147ba10a1f1718b))
17
+
18
+ ## [0.5.1](https://github.com/fzaidi-dai/RAG_Wright/compare/0.5.0...0.5.1) (2026-10-10)
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * **PS-19:** a runnable model-server example for products; async Modal URL lookup ([35cd80f](https://github.com/fzaidi-dai/RAG_Wright/commit/35cd80f003453dfbb648df020a03ffe85ef64826))
24
+
7
25
  ## [0.5.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.4.0...0.5.0) (2026-10-10)
8
26
 
9
27
 
@@ -55,10 +55,10 @@ 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-09): the public-surface workstream is COMPLETE and released as `rag-wright` 0.4.0** (ledger
58
+ > **CURRENT STATE (2026-10-09): the public-surface workstream is COMPLETE and released as `rag-wright` 0.5.0** (ledger
59
59
  > `docs/specs/public-surface/plan.md`, ADR-0128: two public tiers, `rag_wright.api` for a product's seam and
60
60
  > `rag_wright.pack_sdk` for a pack's code, enforced by import contracts and a domain-vocabulary guard). Next:
61
- > RuleWright moves from `docs/specs/public-surface/rulewright-migration-0.3.0.md` then `rulewright-migration-0.4.0.md`; PS-R4 (the unit-labelling eval) is done, unreleased. Before it,
61
+ > RuleWright moves from `docs/specs/public-surface/rulewright-migration-0.3.0.md` then `rulewright-migration-0.4.0.md`, `-0.5.0.md` and `-0.6.0.md`; PS-R4 (the unit-labelling eval) is done, unreleased. Before it,
62
62
  > the **ingestion-hooks** workstream (ADR-0124) is
63
63
  > COMPLETE and released as **`rag-wright` 0.2.0** (PyPI + GitHub tag/release `0.2.0`; release process
64
64
  > `docs/releasing.md`): the generic `build_ingestion` with hooks and domain-neutral defaults, the neutral default
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: rag-wright
3
- Version: 0.5.0
3
+ Version: 0.6.0
4
4
  Summary: A domain-retargetable, open-core engine for hybrid retrieval + knowledge-graph RAG: parsing, chunking, embedding, hybrid search, reranking, graph extraction, entity resolution, ontology-driven knowledge, and a capability runtime.
5
5
  Project-URL: Homepage, https://github.com/fzaidi-dai/RAG_Wright
6
6
  Project-URL: Repository, https://github.com/fzaidi-dai/RAG_Wright
@@ -0,0 +1,34 @@
1
+ # ADR-0131: No default server key anywhere; a model's concurrency ceiling travels with its id
2
+
3
+ **Status:** accepted · **Date:** 2026-10-11 · **Related:** ADR-0130 (deploy the model server from the engine),
4
+ ADR-0110 (`max_num_seqs` is the concurrency target), PS-21 (RuleWright's model-server review)
5
+
6
+ ## Context
7
+
8
+ RuleWright's first use of the model-server API found five gaps. The deploy script (and six dev scripts) fell back to
9
+ a key committed in the repo when `VLLM_API_KEY` was unset, and Modal's web endpoint is public and unauthenticated, so
10
+ the raw `modal deploy` path the skill documents put a billing A100 behind a published key; the seam sent the same
11
+ default. A product could not tell whether its load fits the server, because the engine's own ingestion fan-out
12
+ multiplies with the product's and nothing compared it to `max_num_seqs`. Cache state, a not-deployed error and the
13
+ startup timeout were also unclear.
14
+
15
+ ## Decision
16
+
17
+ 1. No default key. Every Modal vLLM server script raises on an unset `VLLM_API_KEY` (and bakes it into the image
18
+ env, which the container reads); the seam's `vllm` backend raises instead of sending a default. A test fails if
19
+ the old default string reappears under `src/`, `scripts/` or `docs/*.md`. Breaking, approved.
20
+ 2. `ModelProfile.max_concurrency` (optional; approved schema change): the most requests the model's server batches
21
+ at once. A deployed server registers its `max_num_seqs` there. `aingest` warns (a `RuntimeWarning` and a progress
22
+ line) when `min(document_concurrency, documents) x extract_concurrency` exceeds the ceiling of any model the
23
+ workspace resolves. It cannot see a product's other parallel runs; the docs give the arithmetic.
24
+ 3. `amodel_server_status(spec)`: deployed, running, healthy, weights cached. It asks `/health` only of a running
25
+ container (a request to a scaled-down server starts a cold start) and reads the weights Volume (`rw-hf-cache`,
26
+ pinned to the script by a test).
27
+ 4. `ModelServerNotDeployed` (a `RuntimeError`) replaces Modal's raw `NotFoundError`; `astop_model_server` is the async
28
+ stop.
29
+
30
+ ## Consequences
31
+
32
+ - A hand deploy or a client without `VLLM_API_KEY` now fails with a message naming the variable.
33
+ - The ingestion warning covers the generic pipeline's extractor fan-out; other callers (a pack's own concurrency,
34
+ queries) are covered by the documented arithmetic, not a check.
@@ -1,7 +1,7 @@
1
1
  # Architecture Decision Records — index
2
2
 
3
- 128 ADR files (0001–0119, plus 0120 — the former duplicate `0015`, renumbered 2026-10-05 to repair the collision —
4
- and 0121–0130). ADRs are an
3
+ 129 ADR files (0001–0119, plus 0120 — the former duplicate `0015`, renumbered 2026-10-05 to repair the collision —
4
+ and 0121–0131). ADRs are an
5
5
  immutable, cross-referenced decision log: nothing here is moved or renumbered — legacy records carry a `Status:`
6
6
  banner pointing to what replaced them. This index groups them so a newcomer isn't drowned.
7
7
 
@@ -186,4 +186,5 @@ framing that still appears in older ADRs and the root `SPEC.md`/`plan.md`.
186
186
  0127 Retire the OKF code ·
187
187
  0128 Two public tiers: `rag_wright.api` for products, `rag_wright.pack_sdk` for packs ·
188
188
  0129 The shipped Laya temperatures stay as fitted; scikit-learn floor at 1.9.1 ·
189
- 0130 A product deploys the self-hosted model server from the engine and uses it like any model
189
+ 0130 A product deploys the self-hosted model server from the engine and uses it like any model ·
190
+ 0131 No default server key anywhere; a model's concurrency ceiling travels with its id
@@ -40,6 +40,14 @@ The deploy command's settings, as the skill's documented command passes them.
40
40
 
41
41
  A deployed server: `model_id` is the model id to use (in `EngineConfig.models` or a `model=` argument); `base_url` is its OpenAI-compatible endpoint; `root` is its URL (for `/health`).
42
42
 
43
+ ### `ModelServerNotDeployed(name: 'str')`
44
+
45
+ No deployed model server has this name (never deployed, or stopped).
46
+
47
+ ### `ModelServerStatus(name: 'str', deployed: 'bool', running: 'bool', healthy: 'bool', weights_cached: 'bool') -> None`
48
+
49
+ What `amodel_server_status` found. `deployed`: the Modal app exists. `running`: a container is up (the GPU is billing); False when scaled to zero after idling. `healthy`: a running container answers `/health` (False while it starts). `weights_cached`: the spec's model weights are in the weights Volume, so a deploy or cold start skips the ~27 GB download (an empty `modal app list` says nothing about this).
50
+
43
51
  ### `ModelRole(*values)`
44
52
 
45
53
  Which model does which job. The mapping to ids lives in config, not in capability code.
@@ -256,7 +264,7 @@ Deploy (or redeploy) the server described by `spec` on Modal, register its model
256
264
 
257
265
  ### `amodel_server(spec: 'ModelServerSpec') -> 'ModelServer'`
258
266
 
259
- Reconnect to a server deployed earlier (by this process or another) without redeploying: look up its URL and register its model profile. `spec` must match the deployed server (its name and served model).
267
+ Reconnect to a server deployed earlier (by this process or another) without redeploying: look up its URL and register its model profile. `spec` must match the deployed server (its name and served model). Raises `ModelServerNotDeployed` when no server has that name.
260
268
 
261
269
  ### `await_model_server(server: 'ModelServer', *, timeout_s: 'float' = 1500, poll_s: 'float' = 15, progress: 'Callable[[str], object]' = print) -> 'ModelServer'`
262
270
 
@@ -266,6 +274,14 @@ Wait until the server answers `/health` (a cold start is about 8 minutes, ADR-01
266
274
 
267
275
  Stop the Modal app `name` (stops billing); its URL stops answering.
268
276
 
277
+ ### `amodel_server_status(spec: 'ModelServerSpec') -> 'ModelServerStatus'`
278
+
279
+ Look, without deploying or waking anything: is the server deployed, is a container running (billing), does it answer `/health`, and are its model weights cached. `/health` is asked only of a running container: a request to a scaled-down server would start a cold start.
280
+
281
+ ### `astop_model_server(name: 'str') -> 'None'`
282
+
283
+ `stop_model_server` for async code.
284
+
269
285
  ### `ainvoke_subgraph(name: 'str', inputs: 'dict', *, resources: 'WorkspaceHandle') -> 'Any'`
270
286
 
271
287
  Invoke a subgraph-kind capability by name over the workspace, inside a trace span. The implementation is resolved lazily from the manifest `impl_ref` (no central adapter dict). Retry/dead-letter comes from the LangGraph scaffold the subgraph is built on; usage is captured by the caller's `measure_usage()` (EP-API-5).
@@ -130,7 +130,9 @@ uv run modal token new # log in to Modal once per machine
130
130
  ```
131
131
 
132
132
  and put the server's API key in your `.env` (any secret string; the server is deployed with it and every call
133
- sends it): `VLLM_API_KEY=<a long random string>`. There is no default key.
133
+ sends it): `VLLM_API_KEY=<a long random string>`. There is no default key: Modal's web endpoint is public, so this key
134
+ is the only thing between the internet and a billing A100. Deploying (through the engine or the skill's raw
135
+ `modal deploy` command) and calling the server both refuse to run without it.
134
136
 
135
137
  **Deploy, then use it like any model.**
136
138
 
@@ -159,9 +161,37 @@ without redeploying, which only looks up the server and registers its model id:
159
161
  from rag_wright.api import amodel_server, await_model_server
160
162
 
161
163
  server = await amodel_server(ModelServerSpec(name="acme-qwen", max_num_seqs=32)) # same spec as the deploy
162
- await await_model_server(server) # returns at once if it is up; waits through a cold start if it scaled down
164
+ await await_model_server(server, timeout_s=600) # at once if it is up; through a cold start if it scaled down
163
165
  ```
164
166
 
167
+ `amodel_server` raises `ModelServerNotDeployed` (a `RuntimeError`) when no server has that name. Choose
168
+ `await_model_server`'s `timeout_s` for your startup: the default (1500 s) covers the worst cold start, but it also
169
+ holds a service's startup that long when the server is down. Pick what your orchestrator tolerates, and on
170
+ `TimeoutError` either fail the readiness check (the orchestrator retries) or start without the server and fall back
171
+ to a provider-served model id for those roles.
172
+
173
+ **Looking without waking it.** `await amodel_server_status(spec)` reports `deployed`, `running` (a container is up,
174
+ so the GPU is billing), `healthy` and `weights_cached`. It asks `/health` only of a running container, because any
175
+ request to a scaled-down server starts a cold start. `weights_cached` is what decides a deploy's cost: the weights
176
+ live in the Modal Volume `rw-hf-cache` (the vLLM compile cache in `rw-vllm-serve-compile-cache`), and stay there when
177
+ the app is stopped, so an empty `modal app list` does not mean a cold cache. With the weights cached, a deploy is a
178
+ short image build and a cold start; without them, it also downloads about 27 GB. `astop_model_server` is
179
+ `stop_model_server` for async code.
180
+
181
+ **Concurrency: the engine's fan-out multiplies with yours.** `max_num_seqs` is the most requests the server batches
182
+ at once; requests above it queue, and under load queued reasoning calls time out and retry. Count everything that
183
+ can call the server at the same moment:
184
+
185
+ - `build_ingestion`'s `aingest` runs up to `min(document_concurrency, documents) x extract_concurrency` extractor
186
+ calls at once (`IngestionTuning`, defaults 2 x 8 = 16), per `aingest` call. Two `aingest` runs in parallel are 32.
187
+ - The reference contracts pack runs `CLAUSE_CONCURRENCY` (default 8) extractions per document (Jev calls by default;
188
+ Qwen calls only when Qwen is its extraction model), capped process-wide by `RAG_EXTRACT_WORKERS` (default 32).
189
+ - Plus your own concurrent queries and answers.
190
+
191
+ The server's profile carries its ceiling (`max_concurrency`, set from `max_num_seqs`), and `aingest` warns before it
192
+ starts (a `RuntimeWarning` and an `[ingest] warning:` progress line) when its own peak can exceed the ceiling of a
193
+ model the workspace resolves. It cannot see your other parallel runs: keep their sum below `max_num_seqs`.
194
+
165
195
  **What to know before you rely on it.**
166
196
 
167
197
  - **Cold start.** A new or scaled-down server takes minutes to become ready (226 s in the last live run; up to about
@@ -169,13 +199,16 @@ await await_model_server(server) # returns at once if it is up; waits through
169
199
  deployed; the next request waits through a cold start, so call `await_model_server` before sending traffic.
170
200
  - **Cost.** An A100 bills while a container runs. `stop_model_server("acme-qwen")` removes the app entirely; deploy
171
201
  again to bring it back.
172
- - **Concurrency.** `max_num_seqs` is how many requests the server batches at once (ADR-0110 sets it to your real
173
- concurrency target); keep your own client concurrency below it.
174
202
  - **Timeouts.** Reasoning-on structured calls under full load can take about a minute; raise
175
203
  `RAG_STRUCTURED_TIMEOUT_S` (default 60) for bulk work, or calls time out and retry.
176
204
  - **Process-wide.** A registered server model id is known to the whole process, like every model profile; after a
177
205
  restart, call `amodel_server` again.
178
206
 
207
+ **A runnable example.** `examples/model_server.py` does all of this through `rag_wright.api`: `deploy` reports the
208
+ status, brings a server up, asks one question on it through a workspace, checks the call was metered on the
209
+ server's model id, then stops it and confirms it is gone; `reconnect` is the service-process path (look up, wait
210
+ with a startup timeout, ask, leave it running).
211
+
179
212
  The `qwen-vllm-modal` skill has the operational detail (the image fixes, serving gotchas, the manual `modal deploy`
180
213
  command) and ADR-0130 the design.
181
214
 
@@ -92,5 +92,6 @@ in two at the PS-6 gate so the store rewrite is its own visible task. One task,
92
92
  | PS-16 | A configuration change takes effect without a restart: `open_workspace` returns the cached handle only when the config is equal; a different config gets a new handle (the store and the embedder reused when their settings are unchanged), and calls already holding the old handle finish on the old config; docs (workspaces, configuration, the engine-usage skill, the RuleWright 0.4 guide) updated | hermetic tests; live check (re-open with new models, same store) | done: an equal config returns the cached handle; a different one a new handle that replaces it (store reused for unchanged store settings + pack, query embedder for an unchanged profile; in-flight calls keep the old config); workspaces/configuration/skill/RuleWright 0.4 guide updated; live on ArcadeDB: same connection, new models, data visible |
93
93
  | PS-17 | No Gemma by default anywhere (your decision: Gemma only through config or a product): `DEFAULT_GENERAL` (Gemma) removed from `models.profiles` and `rag_wright.pack_sdk`; the reference pack's legacy tag-parse extractor runs its second list model only when `RAG_INGEST_LIST_MODEL` or `list_model=` names one; text that calls Gemma the model in use corrected (benchmark notes kept); the Gemma profiles stay registered so config can select Gemma correctly | guard test (no role default, constant or default-on path is Gemma); full suite | done: `DEFAULT_GENERAL` removed (profiles + `pack_sdk`, 84 symbols); the legacy extractor's list model via `list_model_for` (only when named); ~20 statements now say the GENERAL role (benchmark notes and serving gotchas kept, labelled); overview's stale Gemma listwise rerank removed; Gemma profiles stay registered; guard test; `CLAUDE.md` / `SPEC.md` wording left as is (your call) |
94
94
  | PS-18 | RuleWright's request of 2026-10-10: raise the floor to `scikit-learn>=1.9.1` (8 shipped heads were pickled with 1.9.1) with a guard test that loads every shipped head with `InconsistentVersionWarning` as an error; the Laya temperatures (9 of 15 above Laya 0.3.22's [0.5, 5]) left as they are with the cause and the measured effect written down (ADR): fitted by Laya's training script within [0.1, 10], clamped at serving; labels unaffected (the fleet uses the ranking, not the probability; 5,400 paired predictions: 0 abstain changes, 45 rounding-tie differences); a reply to RuleWright | guard test; full suite | done: `scikit-learn>=1.9.1` (lock 1.9.0 -> 1.9.1); guard loads the 8 heads in the shipped model folders with the version warning as an error; ADR-0129; reference-pack note; the `laya` skill's post-training temperature checklist + scikit-learn lesson; reply to RuleWright; upstream Laya report drafted at `docs/upstream/laya-temperature-range-mismatch.md` (not filed) |
95
- | PS-19 | A product deploys the self-hosted Qwen server from the engine and uses it like any model: `ModelServerSpec` (defaults = the `qwen-vllm-modal` skill / ADR-0110 locked Config B: Qwen3.8-27B-FP8 + fp8 KV, 1x A100-80GB, TP 1, 16K, 0.95, served name `Qwen/Qwen3.8-27B`, hermes + qwen3 parsers, image builder 2025.06), `adeploy_model_server` (deploys the shipped script, waits for `/health` with X/N progress), reconnect by name, status, stop; each server registered as a model profile with its own endpoint (no `VLLM_BASE_URL` needed), so its `model_id` goes in `EngineConfig.models` or any `model=`; the API key from a named environment variable, never a default; `rag-wright[modal]` extra; Modal grounded in the framework graph | hermetic tests (Modal and HTTP mocked); live: deploy, one call through a workspace, stop, confirm stopped | done: `ModelServerSpec` (Config B defaults, `max_num_seqs` required), `adeploy_model_server` / `amodel_server` / `await_model_server` / `stop_model_server`; profiles carry an explicit `base_url`, `register_model_profile`; `rag-wright[modal]`; ADR-0130; configuration.md walk-through linked from the engine-usage skill, domain-adaptation guide, workspaces, templates; RuleWright 0.5 guide; live: ready in 226 s, one call metered on the server's model id, stopped (239 s of A100) |
95
+ | PS-19 | A product deploys the self-hosted Qwen server from the engine and uses it like any model: `ModelServerSpec` (defaults = the `qwen-vllm-modal` skill / ADR-0110 locked Config B: Qwen3.8-27B-FP8 + fp8 KV, 1x A100-80GB, TP 1, 16K, 0.95, served name `Qwen/Qwen3.8-27B`, hermes + qwen3 parsers, image builder 2025.06), `adeploy_model_server` (deploys the shipped script, waits for `/health` with X/N progress), reconnect by name, status, stop; each server registered as a model profile with its own endpoint (no `VLLM_BASE_URL` needed), so its `model_id` goes in `EngineConfig.models` or any `model=`; the API key from a named environment variable, never a default; `rag-wright[modal]` extra; Modal grounded in the framework graph | hermetic tests (Modal and HTTP mocked); live: deploy, one call through a workspace, stop, confirm stopped | done: `ModelServerSpec` (Config B defaults, `max_num_seqs` required), `adeploy_model_server` / `amodel_server` / `await_model_server` / `stop_model_server`; profiles carry an explicit `base_url`, `register_model_profile`; `rag-wright[modal]`; ADR-0130; configuration.md walk-through linked from the engine-usage skill, domain-adaptation guide, workspaces, templates; RuleWright 0.5 guide; live: ready in 226 s, one call metered on the server's model id, stopped (239 s of A100). Follow-up: `examples/model_server.py` (`deploy` and `reconnect` modes, public API only) for RuleWright and other products, and the URL lookup moved to Modal's async interface (no `AsyncUsageWarning`); live: all three steps passed (ready after a 254 s cold start, reconnect ready in 1 s, each call metered on the server's model id, stopped, no longer resolves) |
96
96
  | PS-20 | Cold start of the self-hosted Qwen server (~8 min, CPU-bound engine init + CUDA-graph capture; ADR-0109): GPU snapshot / sleep mode, measured against the current baseline. Later, by your decision | live cold-start measurement | todo (later) |
97
+ | PS-21 | RuleWright's model-server review (2026-10-11): (1) no default API key anywhere: every Modal vLLM server script raises on an unset `VLLM_API_KEY`, the seam's `vllm` backend raises instead of sending a default; (2) the concurrency ceiling made computable: `ModelProfile.max_concurrency` (approved schema change), set from `max_num_seqs` on registration, and `aingest` warns when `document_concurrency x extract_concurrency` can exceed a resolved model's ceiling, with the arithmetic documented; (3) `amodel_server_status` (deployed, healthy, weights cached) and the Volumes documented; (4) `ModelServerNotDeployed` instead of Modal's raw error; (5) startup timeout guidance; `astop_model_server`. Breaking (approved): an unset key now fails | hermetic tests; live: deploy, status, one call, stop, status, reconnect error | done: all five points and `astop_model_server`; 7 server scripts refuse an unset key (two Granite scripts also never baked the key into the container, fixed); status asks `/health` only of a running container; ADR-0131; RuleWright 0.6 guide; live: status before (weights cached), ready after 177 s, one call metered on the server id, stopped, status after (not deployed), reconnect gives the `ModelServerNotDeployed` message |
@@ -46,3 +46,13 @@ The engine's full walk-through is `docs/configuration.md`, "A self-hosted model
46
46
  Run RuleWright's suite against the engine checkout. If it moves a setting to a server: deploy (or reconnect), run
47
47
  one question inside `measure_usage()`, and check the call was metered on the server's model id; then stop the
48
48
  server if it was a test deployment.
49
+
50
+ The engine's `examples/model_server.py` is that check, written against the public API only, and the place to start
51
+ (read it from the engine checkout; it is not in the wheel):
52
+
53
+ - `uv run python examples/model_server.py deploy` brings a server up (`adeploy_model_server`), opens a workspace
54
+ whose `general` role is `server.model_id`, asks one question inside `measure_usage()`, checks the call was metered
55
+ on the server's model id, then stops the server (`stop_model_server`, always, even on failure) and confirms it no
56
+ longer resolves.
57
+ - `uv run python examples/model_server.py reconnect` is what each RuleWright service process does at startup:
58
+ `amodel_server` then `await_model_server`, one question, and the server left running.
@@ -0,0 +1,43 @@
1
+ # RuleWright: moving to rag-wright 0.6 (the model-server review)
2
+
3
+ The engine's answer to RuleWright's model-server review (2026-10-11), and what changes for RuleWright. Do the 0.3,
4
+ 0.4 and 0.5 guides first. Nothing here is edited from the engine repo. The design is ADR-0131.
5
+
6
+ **Short version.** One break: nothing defaults `VLLM_API_KEY` any more. Everything else is new API and docs that
7
+ answer the five points raised.
8
+
9
+ ## 1. The one break: no default server key
10
+
11
+ - The deploy script (the skill's raw `modal deploy` path too) refuses to run without `VLLM_API_KEY`, and so does the
12
+ model seam's `vllm` backend: a call to a self-hosted server with the variable unset raises
13
+ `ValueError("set VLLM_API_KEY ...")` instead of sending `rw-vllm-dev-key`. A profile's own `api_key_env` is
14
+ required the same way.
15
+ - RuleWright already deploys with a real key, so the only thing to check is that every process that calls the
16
+ server (services, workers, scripts, tests that reach a live server) has `VLLM_API_KEY` set. Hermetic tests that set
17
+ `RAG_SERVING=vllm` need a dummy key in the environment.
18
+ - RuleWright's product-side guards stay valid; the engine's own documented path is now guarded too (point 1 of the
19
+ review).
20
+
21
+ ## 2. The answers to the review
22
+
23
+ | Review point | What the engine did |
24
+ |---|---|
25
+ | 1. Published default key | Removed everywhere (above), with a test that fails if it returns. |
26
+ | 2. Concurrency ceiling not computable | `docs/configuration.md` "Concurrency: the engine's fan-out multiplies with yours" gives the arithmetic. A server's profile now carries its ceiling (`ModelProfile.max_concurrency`, from `max_num_seqs`), and `aingest` warns before it starts when its own peak, `min(document_concurrency, documents) x extract_concurrency`, can exceed it. Correction to the review: `RAG_EXTRACT_WORKERS` is a process-wide cap of 32 threads on the reference pack's docling-graph extraction, not a per-document fan-out; the per-document knob there is `CLAUSE_CONCURRENCY` (8). The warning cannot see RuleWright's own parallel runs, so their sum is still yours to keep below `max_num_seqs`. |
27
+ | 3. Cache state invisible | `await amodel_server_status(spec)` returns `deployed`, `running` (a container is up, billing), `healthy` and `weights_cached`. It never wakes a scaled-down server (it asks `/health` only of a running container). The Volumes (`rw-hf-cache` for weights, `rw-vllm-serve-compile-cache`) are documented. |
28
+ | 4. Modal's error leaks | `amodel_server` raises `ModelServerNotDeployed` (a `RuntimeError`) naming the server and saying to deploy it. |
29
+ | 5. 25-minute startup block | Docs on choosing `await_model_server(..., timeout_s=...)` for startup and what to do on `TimeoutError` (fail readiness, or start on a provider-served model id). The example uses 600 s. |
30
+ | `stop_model_server` is sync | `astop_model_server` added; the sync one stays. |
31
+
32
+ ## 3. What to change in RuleWright (optional except section 1)
33
+
34
+ - Replace the `asyncio.to_thread(stop_model_server, ...)` workaround with `await astop_model_server(name)`.
35
+ - Catch `ModelServerNotDeployed` at worker startup instead of Modal's `NotFoundError`.
36
+ - Give the worker's `await_model_server` a startup-sized `timeout_s`.
37
+ - Use `amodel_server_status` in the pre-flight instead of reading `modal app list`.
38
+
39
+ ## 4. Verify
40
+
41
+ The engine's `examples/model_server.py` (read it from the engine checkout) now prints the status before deploying
42
+ and confirms the server is gone with `amodel_server_status` after stopping; `reconnect` fails with the
43
+ `ModelServerNotDeployed` message when nothing is deployed.
@@ -0,0 +1,101 @@
1
+ """Bring up a self-hosted Qwen server through the engine, use it as a workspace's model, and bring it down.
2
+
3
+ Everything goes through `rag_wright.api`. The server is the locked setup of the `qwen-vllm-modal` skill (ADR-0110);
4
+ the walk-through is docs/configuration.md, "A self-hosted model server (Qwen on Modal)".
5
+
6
+ Prerequisites (see docs/installation.md):
7
+ - `uv add 'rag-wright[modal]'` and a Modal login (`uv run modal token new`).
8
+ - VLLM_API_KEY in .env: the server's API key (any long random string; there is no default).
9
+ - ArcadeDB running locally, with ARCADEDB_* set in .env.
10
+
11
+ Run from the repo root:
12
+ uv run python examples/model_server.py deploy # status, deploy, ask one question, stop, confirm it is gone
13
+ uv run python examples/model_server.py reconnect # reconnect to a server already deployed, ask one question
14
+
15
+ `deploy` is what an operator script or startup job does, and it always stops the server at the end (an A100 bills
16
+ while it runs). `reconnect` is what every service process does at startup: it never deploys, and it leaves the
17
+ server running. A cold start takes minutes; progress is printed as `i/N`.
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import asyncio
23
+ import sys
24
+ import time
25
+
26
+ from dotenv import load_dotenv
27
+
28
+ from rag_wright.api import (
29
+ EngineConfig,
30
+ EvidenceItem,
31
+ ModelRole,
32
+ ModelServer,
33
+ ModelServerNotDeployed,
34
+ ModelServerSpec,
35
+ StoreConfig,
36
+ adeploy_model_server,
37
+ agenerate_answer,
38
+ amodel_server,
39
+ amodel_server_status,
40
+ await_model_server,
41
+ measure_usage,
42
+ open_workspace,
43
+ stop_model_server,
44
+ )
45
+
46
+ # The same spec in every process: the name is the Modal app (and so the URL); max_num_seqs is the concurrency target.
47
+ SPEC = ModelServerSpec(name="rw-qwen3-example", max_num_seqs=16)
48
+
49
+
50
+ async def ask_one_question(server: ModelServer) -> None:
51
+ """Use the server like any model: name it for a role in the workspace's config, then call the engine."""
52
+ config = EngineConfig(store=StoreConfig.from_env(), models={ModelRole.GENERAL.value: server.model_id})
53
+ ws = open_workspace(config, corpus="model_server_example")
54
+ with measure_usage() as usage:
55
+ out = await agenerate_answer(
56
+ "How long is the warranty?",
57
+ [EvidenceItem(chunk_id="c1", text="The warranty period is 24 months from delivery.")],
58
+ ws=ws,
59
+ )
60
+ print(f"answer: {out.answer!r}")
61
+ print(f"metered on: {sorted(usage.by_model)} ({usage.calls} call)")
62
+ if sorted(usage.by_model) != [server.model_id]:
63
+ raise SystemExit(f"expected the call to be metered on {server.model_id}")
64
+
65
+
66
+ async def deploy() -> None:
67
+ before = await amodel_server_status(SPEC) # looks only: deploys nothing, wakes nothing
68
+ print(f"before: deployed={before.deployed} running={before.running} weights_cached={before.weights_cached} "
69
+ f"({'a short image build and a cold start' if before.weights_cached else 'plus a ~27 GB weight download'})")
70
+ start = time.monotonic()
71
+ try:
72
+ server = await adeploy_model_server(SPEC, poll_s=20) # deploys, waits for /health, registers the model id
73
+ print(f"ready in {time.monotonic() - start:.0f}s: model id {server.model_id}, endpoint {server.base_url}")
74
+ await ask_one_question(server)
75
+ finally:
76
+ stop_model_server(SPEC.name) # always, even if something above failed
77
+ after = await amodel_server_status(SPEC)
78
+ if after.deployed:
79
+ raise SystemExit(f"{SPEC.name} is still deployed after stop")
80
+ print(f"stopped: {SPEC.name} is no longer deployed (weights still cached: {after.weights_cached}); "
81
+ f"{time.monotonic() - start:.0f}s total")
82
+
83
+
84
+ async def reconnect() -> None:
85
+ try:
86
+ server = await amodel_server(SPEC) # looks the server up and registers its model id; does not deploy
87
+ except ModelServerNotDeployed as exc:
88
+ raise SystemExit(str(exc))
89
+ try: # a startup-sized timeout: on expiry, fail readiness (or fall back to a provider-served model id)
90
+ await await_model_server(server, timeout_s=600, poll_s=20)
91
+ except TimeoutError as exc:
92
+ raise SystemExit(f"{exc}; failing startup")
93
+ await ask_one_question(server)
94
+
95
+
96
+ if __name__ == "__main__":
97
+ load_dotenv() # VLLM_API_KEY and ARCADEDB_* from .env
98
+ mode = sys.argv[1] if len(sys.argv) > 1 else ""
99
+ if mode not in ("deploy", "reconnect"):
100
+ raise SystemExit("usage: uv run python examples/model_server.py deploy|reconnect")
101
+ asyncio.run(deploy() if mode == "deploy" else reconnect())
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "rag-wright"
3
- version = "0.5.0"
3
+ version = "0.6.0"
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"
@@ -11,7 +11,7 @@ Capped to a few §255.5 disclosure requirements to sidestep the CC-6 cross-produ
11
11
  # on Modal (A100 Granite judge + extraction, Modal compliance KG) -- MODAL-COMPLIANCE:
12
12
  ARCADEDB_HOST=farhan-zaidi--rw-arcadedb-serve.modal.run ARCADEDB_PORT=443 ARCADEDB_PROTOCOL=https \
13
13
  ARCADEDB_USER=root ARCADEDB_PASSWORD=rag_wright_dev_2026 \
14
- RAG_SERVING=vllm VLLM_BASE_URL=<a100>/v1 VLLM_API_KEY=rw-vllm-dev-key \
14
+ RAG_SERVING=vllm VLLM_BASE_URL=<a100>/v1 VLLM_API_KEY=<the server key> \
15
15
  uv run --no-sync python -m scripts.compliance_engine_smoke
16
16
  """
17
17
 
@@ -15,7 +15,7 @@ runs local or fully on Modal (KG on the rw-arcadedb Volume + Granite/BGE on the
15
15
  # fully on Modal (A100 Granite + A100 BGE + Modal compliance KG):
16
16
  ARCADEDB_HOST=farhan-zaidi--rw-arcadedb-serve.modal.run ARCADEDB_PORT=443 ARCADEDB_PROTOCOL=https \
17
17
  ARCADEDB_USER=root ARCADEDB_PASSWORD=rag_wright_dev_2026 \
18
- RAG_SERVING=vllm VLLM_BASE_URL=<a100>/v1 VLLM_API_KEY=rw-vllm-dev-key STACK_URL=<a100> \
18
+ RAG_SERVING=vllm VLLM_BASE_URL=<a100>/v1 VLLM_API_KEY=<the server key> STACK_URL=<a100> \
19
19
  uv run --no-sync python -m scripts.eval_compliance_gold
20
20
  """
21
21
 
@@ -67,7 +67,7 @@ def main() -> None:
67
67
  )
68
68
 
69
69
  vbase = os.environ["VLLM_URL"].rstrip("/") + "/v1"
70
- vkey = os.environ.get("VLLM_API_KEY", "rw-vllm-dev-key")
70
+ vkey = os.environ["VLLM_API_KEY"]
71
71
  n_docs = int(os.environ.get("DOCS", "4"))
72
72
  runs = int(os.environ.get("RUNS", "3"))
73
73
  model_id = "ibm-granite/granite-4.1-8b"
@@ -15,7 +15,7 @@ Metrics per strategy, over answerable queries where evidence is non-empty (so an
15
15
  Run on the A100 (streams X/N progress):
16
16
  ARCADEDB_HOST=<rw-arcadedb>.modal.run ARCADEDB_PORT=443 ARCADEDB_PROTOCOL=https ARCADEDB_USER=root \
17
17
  ARCADEDB_PASSWORD=rag_wright_dev_2026 ARCADEDB_DATABASE=ragwright_cuad_full \
18
- RAG_SERVING=vllm VLLM_BASE_URL=<a100>/v1 VLLM_API_KEY=rw-vllm-dev-key STACK_URL=<a100> \
18
+ RAG_SERVING=vllm VLLM_BASE_URL=<a100>/v1 VLLM_API_KEY=<the server key> STACK_URL=<a100> \
19
19
  uv run --no-sync python -m scripts.measure_generation_robustness [REPEATS] [N_SAMPLES]
20
20
  """
21
21
 
@@ -7,7 +7,7 @@ model config (no --quantization flag for the 4-bit dense model).
7
7
 
8
8
  MODEL=google/gemma-4-31B-it-qat-w4a16-ct uv run --no-sync modal deploy scripts/modal_gemma4_vllm.py
9
9
  # then, self-hosted silver run:
10
- # RAG_SERVING=vllm VLLM_BASE_URL=https://<app>.modal.run/v1 VLLM_API_KEY=rw-vllm-dev-key \
10
+ # RAG_SERVING=vllm VLLM_BASE_URL=https://<app>.modal.run/v1 VLLM_API_KEY=<the server key> \
11
11
  # SILVER_MODELS="gemma4-31b-qat:google/gemma-4-31B-it-qat-w4a16-ct" \
12
12
  # uv run --no-sync python -m scripts.measure_silver 3
13
13
  uv run --no-sync modal app stop rw-gemma4
@@ -24,7 +24,9 @@ import modal
24
24
  MODEL = os.environ.get("MODEL", "google/gemma-4-31B-it-qat-w4a16-ct")
25
25
  QUANT = os.environ.get("QUANT", "") # empty for the W4A16 compressed-tensors dense model (auto-detected);
26
26
  # for the 26B-A4B MoE (no 4-bit checkpoint) set QUANT=int8_per_channel_weight_only (Google's vLLM rec).
27
- API_KEY = os.environ.get("VLLM_API_KEY", "rw-vllm-dev-key")
27
+ API_KEY = os.environ.get("VLLM_API_KEY") # vLLM's --api-key: the only gate on the server's public URL
28
+ if not API_KEY: # no default key (PS-21): a default would be public, and would gate a billing GPU
29
+ raise SystemExit("set VLLM_API_KEY to the server's API key (a long random string) before deploying")
28
30
  GPU = os.environ.get("GPU", "A100-40GB")
29
31
  GPU_UTIL = os.environ.get("VLLM_GPU_UTIL", "0.80") # LEAVE HEADROOM: json_schema guided decoding (xgrammar)
30
32
  # needs GPU workspace beyond weights+KV; at 0.90 a guided request OOM-killed the engine. 0.80 keeps room.
@@ -33,7 +33,9 @@ import modal
33
33
 
34
34
  MODEL = os.environ.get("MODEL", "google/gemma-4-31B-it-qat-w4a16-ct")
35
35
  QUANT = os.environ.get("QUANT", "") # e.g. int8_per_channel_weight_only for the 26B-A4B MoE
36
- API_KEY = os.environ.get("VLLM_API_KEY", "rw-vllm-dev-key")
36
+ API_KEY = os.environ.get("VLLM_API_KEY") # vLLM's --api-key: the only gate on the server's public URL
37
+ if not API_KEY: # no default key (PS-21): a default would be public, and would gate a billing GPU
38
+ raise SystemExit("set VLLM_API_KEY to the server's API key (a long random string) before deploying")
37
39
  GPU = os.environ.get("GPU", "A100-40GB")
38
40
  GPU_UTIL = os.environ.get("VLLM_GPU_UTIL", "0.80")
39
41
  MAX_LEN = os.environ.get("VLLM_MAX_LEN", "16384")
@@ -16,7 +16,9 @@ import modal
16
16
 
17
17
  MODEL_HF = os.environ.get("GRANITE_HF", "ibm-granite/granite-4.1-8b")
18
18
  GPU = os.environ.get("GPU", "A100-40GB")
19
- API_KEY = os.environ.get("VLLM_API_KEY", "rw-vllm-dev-key") # vLLM's --api-key; clients send it as the bearer
19
+ API_KEY = os.environ.get("VLLM_API_KEY") # vLLM's --api-key: the only gate on the server's public URL
20
+ if not API_KEY: # no default key (PS-21): a default would be public, and would gate a billing GPU
21
+ raise SystemExit("set VLLM_API_KEY to the server's API key (a long random string) before deploying")
20
22
  HF_CACHE = "/root/.cache/huggingface"
21
23
 
22
24
  app = modal.App("rw-granite-vllm")
@@ -24,7 +26,7 @@ hf_vol = modal.Volume.from_name("rw-hf-cache", create_if_missing=True)
24
26
  vllm_image = (
25
27
  modal.Image.from_registry("nvidia/cuda:12.8.1-devel-ubuntu22.04", add_python="3.12")
26
28
  .pip_install("vllm", "huggingface_hub[hf_transfer]")
27
- .env({"HF_HUB_ENABLE_HF_TRANSFER": "1", "HF_HOME": HF_CACHE})
29
+ .env({"HF_HUB_ENABLE_HF_TRANSFER": "1", "HF_HOME": HF_CACHE, "VLLM_API_KEY": API_KEY}) # the container reads its own env
28
30
  )
29
31
 
30
32
 
@@ -35,7 +35,9 @@ KV_DTYPE = os.environ.get("KV_CACHE_DTYPE", "auto") # "auto" (unquantized)
35
35
  N = int(os.environ.get("N", "48")) # requests per concurrency level (small -> cheap, meaningful)
36
36
  MAX_TOK = int(os.environ.get("MAX_TOK", "256")) # output tokens/request (a clause-property JSON size)
37
37
  CSWEEP = [int(x) for x in os.environ.get("CSWEEP", "1,4,8,16,32,64").split(",")]
38
- API_KEY = os.environ.get("VLLM_API_KEY", "rw-vllm-dev-key")
38
+ API_KEY = os.environ.get("VLLM_API_KEY") # vLLM's --api-key: the only gate on the server's public URL
39
+ if not API_KEY: # no default key (PS-21): a default would be public, and would gate a billing GPU
40
+ raise SystemExit("set VLLM_API_KEY to the server's API key (a long random string) before deploying")
39
41
 
40
42
  app = modal.App("rw-qwen3-27b-bench")
41
43
 
@@ -23,7 +23,9 @@ import modal
23
23
  MODEL = os.environ.get("MODEL", "Qwen/Qwen3.8-27B")
24
24
  GPU = os.environ.get("GPU", "A100-80GB:2")
25
25
  TP = os.environ.get("TP", "2")
26
- API_KEY = os.environ.get("VLLM_API_KEY", "rw-vllm-dev-key")
26
+ API_KEY = os.environ.get("VLLM_API_KEY") # vLLM's --api-key: the only gate on the server's public URL
27
+ if not API_KEY: # no default key (PS-21): a default would be public, and would gate a billing GPU
28
+ raise SystemExit("set VLLM_API_KEY to the server's API key (a long random string) before deploying")
27
29
  GPU_UTIL = os.environ.get("VLLM_GPU_UTIL", "0.90")
28
30
  MAX_LEN = os.environ.get("VLLM_MAX_LEN", "16384")
29
31
  MAX_NUM_SEQS = os.environ.get("MAX_NUM_SEQS", "256")
@@ -23,7 +23,9 @@ import subprocess
23
23
  import modal
24
24
 
25
25
  MODEL_HF = os.environ.get("GRANITE_HF", "ibm-granite/granite-4.1-8b")
26
- API_KEY = os.environ.get("VLLM_API_KEY", "rw-vllm-dev-key")
26
+ API_KEY = os.environ.get("VLLM_API_KEY") # vLLM's --api-key: the only gate on the server's public URL
27
+ if not API_KEY: # no default key (PS-21): a default would be public, and would gate a billing GPU
28
+ raise SystemExit("set VLLM_API_KEY to the server's API key (a long random string) before deploying")
27
29
  GPU_UTIL = os.environ.get("VLLM_GPU_UTIL", "0.75") # leave ~10GB of the 40GB for BGE (~2.3GB) + LegalBERT (~0.5GB)
28
30
  HF_CACHE = "/root/.cache/huggingface"
29
31
  LEGALBERT_PATH = "/models/legalbert_function"
@@ -34,7 +36,7 @@ models_vol = modal.Volume.from_name("rw-models", create_if_missing=True)
34
36
  image = (
35
37
  modal.Image.from_registry("nvidia/cuda:12.8.1-devel-ubuntu22.04", add_python="3.12")
36
38
  .pip_install("vllm", "FlagEmbedding", "transformers", "fastapi", "httpx", "huggingface_hub[hf_transfer]")
37
- .env({"HF_HUB_ENABLE_HF_TRANSFER": "1", "HF_HOME": HF_CACHE})
39
+ .env({"HF_HUB_ENABLE_HF_TRANSFER": "1", "HF_HOME": HF_CACHE, "VLLM_API_KEY": API_KEY}) # the container reads its own env
38
40
  )
39
41
 
40
42
 
@@ -7,7 +7,7 @@ the STACK_URL adapters).
7
7
 
8
8
  ARCADEDB_HOST=<rw-arcadedb>.modal.run ARCADEDB_PORT=443 ARCADEDB_PROTOCOL=https \
9
9
  ARCADEDB_USER=root ARCADEDB_PASSWORD=rag_wright_dev_2026 ARCADEDB_DATABASE=ragwright_cuad_full \
10
- RAG_SERVING=vllm VLLM_BASE_URL=<a100>/v1 VLLM_API_KEY=rw-vllm-dev-key STACK_URL=<a100> \
10
+ RAG_SERVING=vllm VLLM_BASE_URL=<a100>/v1 VLLM_API_KEY=<the server key> STACK_URL=<a100> \
11
11
  uv run --no-sync python -m scripts.phase_a_leg_validate A
12
12
 
13
13
  Arg selects the leg(s): A (intra_document_qa), Crel (relational_qa, graph-structural), B