rag-wright 0.5.1__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.
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.claude/skills/qwen-vllm-modal/SKILL.md +5 -3
- {rag_wright-0.5.1/src/rag_wright/.agents → rag_wright-0.6.0/.claude}/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +3 -1
- {rag_wright-0.5.1/src/rag_wright/.agents → rag_wright-0.6.0/.claude}/skills/using-the-rag-wright-engine/SKILL.md +5 -1
- rag_wright-0.6.0/.release-please-manifest.json +3 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/CHANGELOG.md +11 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/CLAUDE.md +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/PKG-INFO +1 -1
- rag_wright-0.6.0/docs/adr/0131-model-server-hardening-after-rulewright-review.md +34 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/README.md +4 -3
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/api/README.md +17 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/configuration.md +36 -7
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/public-surface/plan.md +1 -0
- rag_wright-0.6.0/docs/specs/public-surface/rulewright-migration-0.6.0.md +43 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/examples/model_server.py +19 -9
- {rag_wright-0.5.1 → rag_wright-0.6.0}/pyproject.toml +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/compliance_engine_smoke.py +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/eval_compliance_gold.py +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/granite_chunker_assess.py +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/measure_generation_robustness.py +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_gemma4_vllm.py +4 -2
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_gemma4_vllm_snapshot.py +3 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_granite_vllm_server.py +4 -2
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_qwen3_27b_bench.py +3 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_qwen3_27b_snapshot.py +3 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_stack_a100.py +4 -2
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/phase_a_leg_validate.py +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/semantic_judge_live_validate.py +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/semantic_judge_probe.py +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/stack_correctness_validate.py +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/vllm_extraction_ab.py +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/vllm_kg_query_validate.py +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/vllm_raw_diagnostic.py +1 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/SKILL.md +5 -3
- {rag_wright-0.5.1/.claude → rag_wright-0.6.0/src/rag_wright/.agents}/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +3 -1
- {rag_wright-0.5.1/.claude → rag_wright-0.6.0/src/rag_wright/.agents}/skills/using-the-rag-wright-engine/SKILL.md +5 -1
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/__init__.py +5 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/ingestion/builder.py +23 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/models/model_servers.py +74 -4
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/models/profiles.py +3 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/models/seam.py +12 -5
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +1 -1
- rag_wright-0.6.0/tests/ingestion/test_concurrency_ceiling.py +59 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_model_servers.py +123 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_serving_seam.py +23 -2
- rag_wright-0.5.1/.release-please-manifest.json +0 -3
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.claude/settings.json +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.claude/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.claude/skills/building-an-ingestion-capability/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.claude/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.claude/skills/laya/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.claude/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.env.example +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.github/workflows/publish.yml +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.github/workflows/release-please.yml +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/.gitignore +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/LICENSE +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/README.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/SPEC.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/conftest.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/ArcadeDB_Local.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/OBSERVABILITY.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0001-stack-and-library-choices.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0004-entity-disambiguation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0005-relational-golden-set.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0006-model-profile.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0007-arcadedb-store-schema.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0032-nl-to-type-two-step-reason-emit-on-gemma.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0038-full-cuad-kg-on-gcp-gpu-vm-and-gcs-backup.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0042-clause-level-span-id-provenance-and-content-hash-backfill.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0055-confidence-out-of-band.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0057-async-engine-architecture.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0058-structure-first-chunking.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0067-domain-pack-retargeting.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0086-streaming-cost-capture.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0090-affiliate-of-extraction.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0091-retire-partyto-edge.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0092-idempotent-write-graph.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0093-entities-by-name-seam.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0094-workspace-document-scope.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0095-span-page-provenance.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0098-invoke-time-document-scope.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0100-profile-based-model-routing.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0107-requirement-page-provenance.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0118-engine-core-api-vs-ard-adapter-free-impl-ref-client.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0119-jev-typed-decision-model-for-compliance-closed-set-fields.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0127-retire-the-okf-code.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0129-laya-temperatures-and-the-sklearn-floor.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/adr/0130-deploy-the-self-hosted-model-server-from-the-engine.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/api/pack_sdk.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/architecture.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/README.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/design/deontic-applicability-routing.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/design/semantic-subject-segmentation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/design/unify-subject-preprocessing.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/engine-issues/0037-closed-vocab-drops-verbatim-values-to-other.md +0 -0
- {rag_wright-0.5.1 → 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
- {rag_wright-0.5.1 → 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
- {rag_wright-0.5.1 → 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
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/engine-issues/0041-leg-b-discards-the-best-dense-matches-on-some-queries.md +0 -0
- {rag_wright-0.5.1 → 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
- {rag_wright-0.5.1 → 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
- {rag_wright-0.5.1 → 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
- {rag_wright-0.5.1 → 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
- {rag_wright-0.5.1 → 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
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/engine-issues/0047-an-exact-deepagents-pin-transitively-pins-every-consumer.md +0 -0
- {rag_wright-0.5.1 → 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
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-01_issue-0013-recall-first-actor-gate_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-04_issue-0016-thread-safe-embedder_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-05_tagparse-ingestion-and-granite-4.2_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_issue-0029-idempotent-write-graph_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_issue-0030-entities-by-name_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_rename-run-ad-compliance-check_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-failclosed-and-nodrift_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-validate-ingested-set_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0031-workspace-document-scope_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0032-span-page-provenance_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-10_issue-0034-invoke-time-document-scope_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-11_issue-0035-followup-derived-guard_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-11_issue-0035-mcp-no-model-tenant_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-14_document-signals-off-citation_0044_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-16_qwen3-27b-single-a100-serving-profile_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-18_fp8-kv-16k-single-a100_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-answers_from_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-scoping-questions_rulewright.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/misc/.gitkeep +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/plans/Corpus_Acquisition.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/plans/async-migration.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/plans/demo_plan.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/concepts.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/contract_pipeline_explainer.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/corpus_ingest_recipe.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/domain-adaptation/README.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/domain-adaptation/_engine-gaps.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/domain-adaptation/authoring-capabilities.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/domain-adaptation/classification-and-decision-models.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/domain-adaptation/entity-resolution.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/domain-adaptation/kg-construction.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/domain-adaptation/ontology-authoring.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/classifier_model_ab.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/compliance_demo.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/compliance_gate_cc7.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/compliance_rung2_cc7.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/dg_model_ab.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/function_gate_recall.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/generation_robustness_b_vs_c.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/nl_to_type_cu-d2.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/ocr_benchmark.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/prod1_readiness.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/prod2_readiness.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/query_side_model_ab.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/silver_granite_vs_gemma4.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/silver_provider_routing.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/installation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/playbook.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/product/capability_profiles.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/product/contracts_product_roadmap.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/product/engine-api-migration-handoff.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/product/engine_async_api.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/product/new-domain-build-sequence.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/product/seam-adaptation-guide.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/proposals/new-domain-developer-journey.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/proposals/ontology-induction.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/quickstart.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/reference-pack.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/releasing.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/engine-platform/SPEC.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/engine-platform/TASKS.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/engine-prep/plan.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/ingestion-hooks/plan.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/public-surface/rulewright-migration-0.3.0.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/public-surface/rulewright-migration-0.4.0.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/public-surface/rulewright-migration-0.5.0.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/specs/public-surface/rulewright-reply-2026-10-10-laya-and-sklearn.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/templates/product-starter/CLAUDE.md.template +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/templates/product-starter/README.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/templates/product-starter/dependabot.yml +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/templates/product-starter/playbook.md.template +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/upstream/laya-temperature-range-mismatch.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/docs/workspaces.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/acord.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/acord_retrieval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/boundary_residue_gold.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/build_golden.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/compliance_demo/subjects/post_violation.txt +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/condensed_pipeline.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/contract_parity_live.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/contractnli_judge.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/cuad_highlight.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/embedded_eval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/full_pipeline_rerank.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/function_ceiling.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/function_property_rerank.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/function_rerank.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/gate1_chunker_ab.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/gate2_hybrid_rerank.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/golden/relational/set.json +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/golden.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/ground_discriminator_rerank.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/harness.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/ingestion_live_smoke.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/kg_primary.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/kg_property_rerank.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/listwise_rerank.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/multihop.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/nl_to_type.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/relational_eval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/residual_decision_gold.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/segmenter_eval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/semantic_judge_gold.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/test_acord.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/test_acord_retrieval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/test_harness.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/test_multihop_set.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/eval/unit_grouper_eval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/examples/quickstart.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/plan.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/release-please-config.json +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ab_model_overlap.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/acord_unify.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/acquire_acord.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/acquire_cuad.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/acquire_ecfr.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/acquire_edgar.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/acquire_ftc_255.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/acquire_prod1_corpus.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/audit_reclass_flips.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/author_leg_a_silver_key.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/backfill_affiliations.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/backfill_clause_span_id.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/backfill_edge_source_doc_id.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/backup_kg_to_gcs.sh +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/bootstrap_template_capture.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/bootstrap_typed_edges.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/build_api_docs.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/build_api_docs.sh +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/build_cuad_clause_cache.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/build_function_routing_map.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_assemble_v2.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_assemble_v3.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_generate_hard_negatives.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_generate_hard_positives.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_generate_training.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_hybrid.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_hybrid2.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_jev_actor.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_jev_claimtypes.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_jev_operative.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_label_spans.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_laya_prep.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_laya_train.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_prep_operative.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_relabel_rubric.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_relabel_rubric2.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/cic1_train_operative.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/compare_extraction_models.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/compliance_actor_gate_smoke.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/compliance_policy_demo.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/curate_taxonomy_gaps.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/dg_model_ab.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/diagnose_acord_knn_expansion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/diagnose_acord_knn_rerank.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/diagnose_acord_leg_pool.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/diagnose_acord_legs.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/diagnose_acord_pool.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/diagnose_acord_relstructure.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/diagnose_acord_retrieval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/distill/eval_all.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/distill/eval_ce.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/distill/eval_listwise_b.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/distill/export_ce_dataset.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/distill/extract_features.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/distill/listwise_variants.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/distill/relational_features.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/distill/train_ce.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/distill/train_modal.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/enrich_edgar_candidates.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/eval_chunking_ab.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/extract_arcadedb_docs.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/fetch_reference_models.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/generate_contract_python.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/git_post_commit_graphify.sh +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/graph_status.sh +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ingest_acord.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ingest_compliance_async_prod2.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ingest_compliance_document_prod2.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ingest_compliance_prod2.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ingest_cuad.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ingest_cuad_full.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ingest_ftc_compliance.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ingest_prod1.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ingest_prod1_async.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ingest_smoke.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/install_git_hooks.sh +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/label_new_functions.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/legb_function_gate_recall.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/make_compliance_fixtures.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/make_compliance_gold.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/mcp_compliance_agent_demo.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/mcp_intra_document_qa_smoke.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/mcp_query_legs_agent_demo.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/measure_silver.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/merge_docs_into_framework.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/migrate_silver_evidence_autotag.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/migrate_span_fields.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/mine_scarce_functions.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_arcadedb.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_backfill.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_exception_linking.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_granite_server.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_granite_throughput.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_query_app.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ocr_benchmark.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ocr_preprocess.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/ontology_dimension_check.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/populate_clause_kg.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/populate_entity_graph.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/populate_entity_graph_extracted.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/populate_property_store.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/prep_relational_verification.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/publish_manifests.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/reclassify_kg.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/refresh_framework_graph.sh +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/revert_reclass_flips.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/run_acord_retrieval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/run_clause_exception_linking.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/snapshot_leg_a_eval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/table_retrieval_smoke.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/train_function_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/train_legalbert_function.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/train_legalbert_modal.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/typed_rerank_validate.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/scripts/verify_wheel_install.sh +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/building-an-ingestion-capability/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/laya/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/.agents/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/answers.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/config.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/discover.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/documents.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/ids.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/invoke.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/kg.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/mcp.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/tracing.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/usage.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/api/workspace.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/answer_generator.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/ard.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/chunk_read.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/chunk_write.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/disambiguation.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/document_parse.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/document_scope.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/embedding.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/entity_resolution.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/fusion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/graph_query.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/graph_storage.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/hybrid_search.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/invoke.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/jev_decision.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/manifests.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/parsing.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/registry.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/remote_encoders.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/reranking.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/retrieval_core.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/rlm_chunking.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/scan_quality.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/vision_to_text.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/contracts/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/contracts/chunk.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/contracts/extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/contracts/graph.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/contracts/identifiers.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/contracts/ingestion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/contracts/provenance.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/contracts/span.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/corpus/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/corpus/canonicalize.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/corpus/document_parser.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/corpus/embedded.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/corpus/http.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/ingestion/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/ingestion/evaluate.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/ingestion/group.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/ingestion/layout.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/ingestion/segment.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/ingestion/tables.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/models/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/models/tag_structured.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/models/tracing.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/models/usage.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/models/weights.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/ontology/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/ontology/pack_schema.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/ontology/registry.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/pack_sdk/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/invokers.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/pack.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/options.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/pack.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/function_families.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/packs/reference_seam.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/py.typed +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/skills/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/skills/generation/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/skills/generation/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/skills/rlm/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/skills/rlm/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/skills/rlm/agent.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/spans/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/spans/page_map.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/store/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/store/arcadedb.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/store/chunk_text.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/store/seam.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/subgraphs/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/subgraphs/observability.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/subgraphs/scaffold.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/util/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/util/concurrent.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/src/rag_wright/util/spacy_model.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tasks.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_answers_exports.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_bytes_ingest.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_capability_reexports.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_decision_swap_doc_example.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_discover.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_documents.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_e2e.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_invoke.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_kg.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_mcp.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_metering_tracing_exports.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_model_role_export.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_open_workspace_reconfig.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_options.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_pack_sdk.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_pack_store.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_usage.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_workspace.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/api/test_workspace_models.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/arch/domain_vocabulary_baseline.json +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/arch/test_api_docs_current.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/arch/test_doc_references.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/arch/test_engine_domain_vocabulary.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/arch/test_import_contracts.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/arch/test_packs_use_store_primitives.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/arch/test_shipped_skills.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/async_helpers.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_answer_generator.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_answer_generator_async.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_assertion_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_authoring_contract.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_chunk_read.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_chunk_write.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_claim_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_clause_exception_linking.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_compliance_judgment.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_compliance_store.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_contract_kg_serve.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_contract_kg_store.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_dg_adapter.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_dg_async.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_dg_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_dg_model_seam.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_dg_private.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_disambiguation.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_document_scope.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_embedding.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_embedding_profiles.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_entity_resolution.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_fusion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_graph_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_graph_query.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_graph_storage.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_highlight_serve.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_hybrid_search.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_jev_decision.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_manifest_validation.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_manifests.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_parsing.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_parties_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_query_function_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_query_understanding.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_registry.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_remote_encoders.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_repair_partition.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_requirement_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_reranking.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_retrieval_core.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_rlm_chunking.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_rlm_chunking_async.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_rlm_method.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_rlm_synthesis.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_runtime_registry.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_scan_quality.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_span_relevance_judgment.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_structural_model_fallback.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_tiered_ocr.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/capabilities/test_vlm_ocr.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/compliance_fakes.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/conftest.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_canonical_source_doc_id.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_chunk_record.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_compliance.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_function.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_function_routing.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_identifiers.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_ingestion_hooks.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_jurisdiction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_ontology.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_property.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_provenance.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/contracts/test_value_match.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/_ooxml_fixtures.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/test_canonicalize.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/test_cuad.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/test_cuad_ingestion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/test_document_parser.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/test_edgar.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/test_embedded.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/test_gcs_ingestion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/test_http.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/test_parse_wire2.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/corpus/test_selection.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/eval/test_contractnli_judge.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/eval/test_cuad_highlight_metrics.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/eval/test_kg_property_rerank.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/eval/test_nl_to_type_metrics.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/eval/test_relational_eval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/fixtures/ingestion/textile_test_report.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/fixtures/leg_a_silver/README.md +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/fixtures/table-bearing-contract.pdf +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/foundation/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/foundation/test_arcadedb_hybrid.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/foundation/test_model_seam_structured.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/test_builder.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/test_document_metadata.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/test_evaluate.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/test_evaluate_labels.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/test_layout_segmenter.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/test_spreadsheet_content.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/test_table_rows.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/test_tuning.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/test_unit_grouper.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ingestion/test_unit_representative.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/journey/incidents_domain.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/journey/incidents_pack.ttl +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/journey/test_incidents_journey.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/journey/test_pack_schema.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/mcp/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/mcp/test_compliance_server.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/mcp/test_intra_document_qa_server.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/mcp/test_relational_qa_server.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_async_infra.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_classifier_heads_load_clean.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_models_dir.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_no_gemma_default.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_profile_routing.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_profile_seam.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_seam_async.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_seam_retry.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_seam_stream.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_serving_wiring.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_tag_structured.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_tag_structured_async.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_tracing.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/models/test_usage.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ontology/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ontology/test_clause_template.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ontology/test_derivation.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ontology/test_entity_taxonomy.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ontology/test_template_captured_in_ttl.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/reference/test_compliance_reference.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/reference/test_contract_seam.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/scripts/test_eval_chunking_ab.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/scripts/test_eval_classifier_ab.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/scripts/test_fetch_reference_models.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/skills/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/skills/test_ingestion_skill_example.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_boundary.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_classifier_property_extractor.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_clause_function_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_clause_function_classifier_async.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_clause_kg_extractor.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_clause_kg_extractor_async.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_dim_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_dim_fleet_live.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_function_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_hybrid_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_hybrid_property_extractor.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_legalbert_classifier.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_model_capabilities.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_new_function_labels.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_page_map.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_property_extractor.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_property_grounding.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_reclassify.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_residual_decision.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_scarce_function_labels.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_segment.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_segmentation_vocab.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_semantic_judge.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_setfit_clause_adapter.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_setfit_probabilities.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_span_offsets.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_stage_labels_0005.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_symbolic_validation.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/spans/test_tag_clause_extractor.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_affiliation_backfill.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_arcadedb_clause_kg.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_arcadedb_contract.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_arcadedb_property.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_arcadedb_requirement_sources.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_arcadedb_schema.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_arcadedb_span.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_chunk_text.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_concurrent_writes.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_contract_kg_store_live.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_document_metadata_live.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_document_scope.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_engine_domain_neutral.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_entities_by_name.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_kg_edges.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_kg_mutations.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_kg_read.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_kg_write.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_neutral_schema.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/store/test_write_graph_idempotent.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_async_ingestion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_clause_results.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_compliance_check.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_compliance_ingestion.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_graph_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_ingest_knobs.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_intra_document_qa.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_observability.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_partial_entry_contract.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_relational_qa.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_requirement_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_scaffold.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_semantic_chunking.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/test_backfill_clause_span_id.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/test_dg_model_ab.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/test_populate_clause_kg.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/test_populate_entity_graph.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/util/__init__.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/util/test_concurrent.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/tests/util/test_spacy_model.py +0 -0
- {rag_wright-0.5.1 → rag_wright-0.6.0}/uv.lock +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
|
-
|
|
59
|
-
|
|
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"
|
|
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
|
|
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
|
|
@@ -4,6 +4,17 @@ 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
|
+
|
|
7
18
|
## [0.5.1](https://github.com/fzaidi-dai/RAG_Wright/compare/0.5.0...0.5.1) (2026-10-10)
|
|
8
19
|
|
|
9
20
|
|
|
@@ -58,7 +58,7 @@ The failure mode to avoid, which has happened before: a command fails with "modu
|
|
|
58
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` and `-0.
|
|
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.
|
|
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
|
-
|
|
4
|
-
and 0121–
|
|
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)
|
|
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,16 +199,15 @@ 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
|
|
|
179
|
-
**A runnable example.** `examples/model_server.py` does all of this through `rag_wright.api`: `deploy`
|
|
180
|
-
server up, asks one question on it through a workspace, checks the call was metered on the
|
|
181
|
-
stops it and confirms it is gone; `reconnect` is the service-process path (look up, wait
|
|
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).
|
|
182
211
|
|
|
183
212
|
The `qwen-vllm-modal` skill has the operational detail (the image fixes, serving gotchas, the manual `modal deploy`
|
|
184
213
|
command) and ADR-0130 the design.
|
|
@@ -94,3 +94,4 @@ in two at the PS-6 gate so the store rewrite is its own visible task. One task,
|
|
|
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
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 |
|
|
@@ -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.
|
|
@@ -9,7 +9,7 @@ Prerequisites (see docs/installation.md):
|
|
|
9
9
|
- ArcadeDB running locally, with ARCADEDB_* set in .env.
|
|
10
10
|
|
|
11
11
|
Run from the repo root:
|
|
12
|
-
uv run python examples/model_server.py deploy # deploy, ask one question
|
|
12
|
+
uv run python examples/model_server.py deploy # status, deploy, ask one question, stop, confirm it is gone
|
|
13
13
|
uv run python examples/model_server.py reconnect # reconnect to a server already deployed, ask one question
|
|
14
14
|
|
|
15
15
|
`deploy` is what an operator script or startup job does, and it always stops the server at the end (an A100 bills
|
|
@@ -30,11 +30,13 @@ from rag_wright.api import (
|
|
|
30
30
|
EvidenceItem,
|
|
31
31
|
ModelRole,
|
|
32
32
|
ModelServer,
|
|
33
|
+
ModelServerNotDeployed,
|
|
33
34
|
ModelServerSpec,
|
|
34
35
|
StoreConfig,
|
|
35
36
|
adeploy_model_server,
|
|
36
37
|
agenerate_answer,
|
|
37
38
|
amodel_server,
|
|
39
|
+
amodel_server_status,
|
|
38
40
|
await_model_server,
|
|
39
41
|
measure_usage,
|
|
40
42
|
open_workspace,
|
|
@@ -62,6 +64,9 @@ async def ask_one_question(server: ModelServer) -> None:
|
|
|
62
64
|
|
|
63
65
|
|
|
64
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'})")
|
|
65
70
|
start = time.monotonic()
|
|
66
71
|
try:
|
|
67
72
|
server = await adeploy_model_server(SPEC, poll_s=20) # deploys, waits for /health, registers the model id
|
|
@@ -69,17 +74,22 @@ async def deploy() -> None:
|
|
|
69
74
|
await ask_one_question(server)
|
|
70
75
|
finally:
|
|
71
76
|
stop_model_server(SPEC.name) # always, even if something above failed
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
raise SystemExit(f"{SPEC.name} still resolves after stop")
|
|
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")
|
|
78
82
|
|
|
79
83
|
|
|
80
84
|
async def reconnect() -> None:
|
|
81
|
-
|
|
82
|
-
|
|
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")
|
|
83
93
|
await ask_one_question(server)
|
|
84
94
|
|
|
85
95
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "rag-wright"
|
|
3
|
-
version = "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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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
|
|
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
|
|
@@ -50,7 +50,7 @@ def main() -> None:
|
|
|
50
50
|
from rag_wright.util.concurrent import map_concurrent
|
|
51
51
|
|
|
52
52
|
vbase = os.environ["VLLM_URL"].rstrip("/") + "/v1"
|
|
53
|
-
vkey = os.environ
|
|
53
|
+
vkey = os.environ["VLLM_API_KEY"]
|
|
54
54
|
n = int(os.environ.get("N", "12"))
|
|
55
55
|
model_id = "ibm-granite/granite-4.1-8b"
|
|
56
56
|
|
|
@@ -48,7 +48,7 @@ def main() -> None:
|
|
|
48
48
|
from rag_wright.packs.contracts.spans.semantic_judge import build_semantic_judge_fn
|
|
49
49
|
|
|
50
50
|
vbase = os.environ["VLLM_URL"].rstrip("/") + "/v1"
|
|
51
|
-
vkey = os.environ
|
|
51
|
+
vkey = os.environ["VLLM_API_KEY"]
|
|
52
52
|
method = os.environ.get("METHOD", "json_schema")
|
|
53
53
|
model_id = "ibm-granite/granite-4.1-8b"
|
|
54
54
|
print(f"[probe] METHOD={method} ; warming {model_id}", flush=True)
|
|
@@ -23,7 +23,7 @@ from dotenv import load_dotenv
|
|
|
23
23
|
def _post(url: str, payload: dict, timeout: int = 60) -> dict:
|
|
24
24
|
req = urllib.request.Request(url, data=json.dumps(payload).encode(), method="POST",
|
|
25
25
|
headers={"Content-Type": "application/json",
|
|
26
|
-
"Authorization": "Bearer
|
|
26
|
+
"Authorization": f"Bearer {os.environ['VLLM_API_KEY']}"})
|
|
27
27
|
with urllib.request.urlopen(req, timeout=timeout) as r:
|
|
28
28
|
return json.loads(r.read())
|
|
29
29
|
|
|
@@ -38,7 +38,7 @@ def main() -> None:
|
|
|
38
38
|
from rag_wright.util.concurrent import map_concurrent
|
|
39
39
|
|
|
40
40
|
vllm_base = os.environ["VLLM_URL"].rstrip("/") + "/v1"
|
|
41
|
-
key = os.environ
|
|
41
|
+
key = os.environ["VLLM_API_KEY"]
|
|
42
42
|
n = int(os.environ.get("N", "30"))
|
|
43
43
|
temp = float(os.environ.get("TEMP", "0")) # pin to 0 (greedy) to isolate model diff from sampling noise
|
|
44
44
|
mode = os.environ.get("MODE", "vllm") # "vllm" = vLLM-vs-OpenRouter; "control" = OpenRouter-vs-OpenRouter
|
|
@@ -36,7 +36,7 @@ def main() -> None:
|
|
|
36
36
|
from rag_wright.util.concurrent import map_concurrent
|
|
37
37
|
|
|
38
38
|
vbase = os.environ["VLLM_URL"].rstrip("/") + "/v1"
|
|
39
|
-
vkey = os.environ
|
|
39
|
+
vkey = os.environ["VLLM_API_KEY"]
|
|
40
40
|
n = int(os.environ.get("N", "15"))
|
|
41
41
|
|
|
42
42
|
# a DIVERSE sample: distinct functions so the queries span the property space
|
|
@@ -60,7 +60,7 @@ def _show(name: str, res: dict) -> None:
|
|
|
60
60
|
def main() -> None:
|
|
61
61
|
load_dotenv()
|
|
62
62
|
vbase = os.environ["VLLM_URL"].rstrip("/") + "/v1"
|
|
63
|
-
vkey = os.environ
|
|
63
|
+
vkey = os.environ["VLLM_API_KEY"]
|
|
64
64
|
obase = os.getenv("OPENROUTER_BASE_URL", "https://openrouter.ai/api/v1")
|
|
65
65
|
okey = os.environ["OPENROUTER_API_KEY"]
|
|
66
66
|
m = "ibm-granite/granite-4.1-8b"
|