rag-wright 0.4.0__tar.gz → 0.5.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.4.0 → rag_wright-0.5.0}/.claude/skills/laya/SKILL.md +20 -0
- {rag_wright-0.4.0/src/rag_wright/.agents → rag_wright-0.5.0/.claude}/skills/qwen-vllm-modal/SKILL.md +20 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.claude/skills/using-the-rag-wright-engine/SKILL.md +7 -0
- rag_wright-0.5.0/.release-please-manifest.json +3 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/CHANGELOG.md +12 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/CLAUDE.md +2 -2
- {rag_wright-0.4.0 → rag_wright-0.5.0}/PKG-INFO +4 -2
- rag_wright-0.5.0/docs/adr/0129-laya-temperatures-and-the-sklearn-floor.md +47 -0
- rag_wright-0.5.0/docs/adr/0130-deploy-the-self-hosted-model-server-from-the-engine.md +32 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/README.md +4 -2
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/api/README.md +28 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/configuration.md +65 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/domain-adaptation/README.md +3 -1
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/installation.md +2 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/reference-pack.md +6 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/specs/public-surface/plan.md +3 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/specs/public-surface/rulewright-migration-0.4.0.md +2 -0
- rag_wright-0.5.0/docs/specs/public-surface/rulewright-migration-0.5.0.md +48 -0
- rag_wright-0.5.0/docs/specs/public-surface/rulewright-reply-2026-10-10-laya-and-sklearn.md +44 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/templates/product-starter/CLAUDE.md.template +3 -1
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/templates/product-starter/playbook.md.template +2 -0
- rag_wright-0.5.0/docs/upstream/laya-temperature-range-mismatch.md +49 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/workspaces.md +1 -1
- {rag_wright-0.4.0 → rag_wright-0.5.0}/pyproject.toml +5 -2
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/laya/SKILL.md +20 -0
- {rag_wright-0.4.0/.claude → rag_wright-0.5.0/src/rag_wright/.agents}/skills/qwen-vllm-modal/SKILL.md +20 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/using-the-rag-wright-engine/SKILL.md +7 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/__init__.py +10 -0
- rag_wright-0.5.0/src/rag_wright/models/model_servers.py +166 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/models/profiles.py +8 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/models/seam.py +4 -3
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tasks.md +5 -4
- rag_wright-0.5.0/tests/models/test_classifier_heads_load_clean.py +38 -0
- rag_wright-0.5.0/tests/models/test_model_servers.py +127 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/uv.lock +15 -11
- rag_wright-0.4.0/.release-please-manifest.json +0 -3
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.claude/settings.json +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.claude/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.claude/skills/building-an-ingestion-capability/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.claude/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.claude/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.claude/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.env.example +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.github/workflows/publish.yml +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.github/workflows/release-please.yml +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/.gitignore +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/LICENSE +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/README.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/SPEC.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/conftest.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/ArcadeDB_Local.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/OBSERVABILITY.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0001-stack-and-library-choices.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0004-entity-disambiguation.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0005-relational-golden-set.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0006-model-profile.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0007-arcadedb-store-schema.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0032-nl-to-type-two-step-reason-emit-on-gemma.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0038-full-cuad-kg-on-gcp-gpu-vm-and-gcs-backup.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0042-clause-level-span-id-provenance-and-content-hash-backfill.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0055-confidence-out-of-band.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0057-async-engine-architecture.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0058-structure-first-chunking.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0067-domain-pack-retargeting.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0086-streaming-cost-capture.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0090-affiliate-of-extraction.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0091-retire-partyto-edge.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0092-idempotent-write-graph.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0093-entities-by-name-seam.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0094-workspace-document-scope.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0095-span-page-provenance.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0098-invoke-time-document-scope.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0100-profile-based-model-routing.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0107-requirement-page-provenance.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0118-engine-core-api-vs-ard-adapter-free-impl-ref-client.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0119-jev-typed-decision-model-for-compliance-closed-set-fields.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0127-retire-the-okf-code.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/api/pack_sdk.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/architecture.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/README.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/design/deontic-applicability-routing.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/design/semantic-subject-segmentation.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/design/unify-subject-preprocessing.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/engine-issues/0037-closed-vocab-drops-verbatim-values-to-other.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.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.4.0 → rag_wright-0.5.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.4.0 → rag_wright-0.5.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.4.0 → rag_wright-0.5.0}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/engine-issues/0041-leg-b-discards-the-best-dense-matches-on-some-queries.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.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.4.0 → rag_wright-0.5.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.4.0 → rag_wright-0.5.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.4.0 → rag_wright-0.5.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.4.0 → rag_wright-0.5.0}/docs/archive/engine-issues/0046-appending-a-natural-follow-up-to-a-question-drops-the-clause-type.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/engine-issues/0047-an-exact-deepagents-pin-transitively-pins-every-consumer.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/engine-issues/0048-the-pinned-endpoints-latency-tail-makes-agent-runs-undebuggable-from-either-side.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-01_issue-0013-recall-first-actor-gate_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-04_issue-0016-thread-safe-embedder_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-05_tagparse-ingestion-and-granite-4.2_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_issue-0029-idempotent-write-graph_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_issue-0030-entities-by-name_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_rename-run-ad-compliance-check_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-failclosed-and-nodrift_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-validate-ingested-set_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0031-workspace-document-scope_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0032-span-page-provenance_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0034-invoke-time-document-scope_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-11_issue-0035-followup-derived-guard_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-11_issue-0035-mcp-no-model-tenant_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-14_document-signals-off-citation_0044_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-16_qwen3-27b-single-a100-serving-profile_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-18_fp8-kv-16k-single-a100_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-answers_from_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-scoping-questions_rulewright.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/misc/.gitkeep +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/plans/Corpus_Acquisition.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/plans/async-migration.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/plans/demo_plan.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/concepts.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/contract_pipeline_explainer.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/corpus_ingest_recipe.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/domain-adaptation/_engine-gaps.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/domain-adaptation/authoring-capabilities.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/domain-adaptation/classification-and-decision-models.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/domain-adaptation/entity-resolution.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/domain-adaptation/kg-construction.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/domain-adaptation/ontology-authoring.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/classifier_model_ab.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/compliance_demo.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/compliance_gate_cc7.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/compliance_rung2_cc7.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/dg_model_ab.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/function_gate_recall.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/generation_robustness_b_vs_c.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/nl_to_type_cu-d2.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/ocr_benchmark.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/prod1_readiness.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/prod2_readiness.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/query_side_model_ab.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/silver_granite_vs_gemma4.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/silver_provider_routing.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/playbook.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/product/capability_profiles.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/product/contracts_product_roadmap.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/product/engine-api-migration-handoff.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/product/engine_async_api.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/product/new-domain-build-sequence.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/product/seam-adaptation-guide.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/proposals/new-domain-developer-journey.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/proposals/ontology-induction.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/quickstart.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/releasing.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/specs/engine-platform/SPEC.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/specs/engine-platform/TASKS.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/specs/engine-prep/plan.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/specs/ingestion-hooks/plan.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/specs/public-surface/rulewright-migration-0.3.0.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/templates/product-starter/README.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/templates/product-starter/dependabot.yml +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/acord.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/acord_retrieval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/boundary_residue_gold.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/build_golden.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/compliance_demo/subjects/post_violation.txt +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/condensed_pipeline.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/contract_parity_live.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/contractnli_judge.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/cuad_highlight.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/embedded_eval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/full_pipeline_rerank.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/function_ceiling.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/function_property_rerank.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/function_rerank.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/gate1_chunker_ab.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/gate2_hybrid_rerank.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/golden/relational/set.json +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/golden.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/ground_discriminator_rerank.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/harness.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/ingestion_live_smoke.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/kg_primary.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/kg_property_rerank.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/listwise_rerank.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/multihop.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/nl_to_type.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/relational_eval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/residual_decision_gold.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/segmenter_eval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/semantic_judge_gold.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/test_acord.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/test_acord_retrieval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/test_harness.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/test_multihop_set.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/eval/unit_grouper_eval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/examples/quickstart.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/plan.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/release-please-config.json +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ab_model_overlap.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/acord_unify.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/acquire_acord.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/acquire_cuad.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/acquire_ecfr.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/acquire_edgar.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/acquire_ftc_255.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/acquire_prod1_corpus.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/audit_reclass_flips.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/author_leg_a_silver_key.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/backfill_affiliations.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/backfill_clause_span_id.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/backfill_edge_source_doc_id.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/backup_kg_to_gcs.sh +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/bootstrap_template_capture.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/bootstrap_typed_edges.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/build_api_docs.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/build_api_docs.sh +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/build_cuad_clause_cache.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/build_function_routing_map.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_assemble_v2.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_assemble_v3.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_generate_hard_negatives.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_generate_hard_positives.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_generate_training.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_hybrid.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_hybrid2.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_jev_actor.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_jev_claimtypes.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_jev_operative.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_label_spans.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_laya_prep.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_laya_train.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_prep_operative.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_relabel_rubric.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_relabel_rubric2.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/cic1_train_operative.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/compare_extraction_models.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/compliance_actor_gate_smoke.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/compliance_engine_smoke.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/compliance_policy_demo.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/curate_taxonomy_gaps.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/dg_model_ab.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/diagnose_acord_knn_expansion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/diagnose_acord_knn_rerank.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/diagnose_acord_leg_pool.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/diagnose_acord_legs.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/diagnose_acord_pool.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/diagnose_acord_relstructure.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/diagnose_acord_retrieval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/distill/eval_all.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/distill/eval_ce.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/distill/eval_listwise_b.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/distill/export_ce_dataset.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/distill/extract_features.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/distill/listwise_variants.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/distill/relational_features.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/distill/train_ce.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/distill/train_modal.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/enrich_edgar_candidates.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/eval_chunking_ab.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/eval_compliance_gold.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/extract_arcadedb_docs.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/fetch_reference_models.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/generate_contract_python.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/git_post_commit_graphify.sh +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/granite_chunker_assess.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/graph_status.sh +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ingest_acord.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ingest_compliance_async_prod2.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ingest_compliance_document_prod2.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ingest_compliance_prod2.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ingest_cuad.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ingest_cuad_full.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ingest_ftc_compliance.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ingest_prod1.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ingest_prod1_async.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ingest_smoke.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/install_git_hooks.sh +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/label_new_functions.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/legb_function_gate_recall.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/make_compliance_fixtures.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/make_compliance_gold.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/mcp_compliance_agent_demo.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/mcp_intra_document_qa_smoke.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/mcp_query_legs_agent_demo.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/measure_generation_robustness.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/measure_silver.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/merge_docs_into_framework.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/migrate_silver_evidence_autotag.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/migrate_span_fields.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/mine_scarce_functions.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_arcadedb.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_backfill.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_exception_linking.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_gemma4_vllm.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_gemma4_vllm_snapshot.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_granite_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_granite_throughput.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_granite_vllm_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_query_app.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_qwen3_27b_bench.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_qwen3_27b_snapshot.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/modal_stack_a100.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ocr_benchmark.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ocr_preprocess.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/ontology_dimension_check.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/phase_a_leg_validate.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/populate_clause_kg.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/populate_entity_graph.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/populate_entity_graph_extracted.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/populate_property_store.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/prep_relational_verification.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/publish_manifests.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/reclassify_kg.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/refresh_framework_graph.sh +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/revert_reclass_flips.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/run_acord_retrieval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/run_clause_exception_linking.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/semantic_judge_live_validate.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/semantic_judge_probe.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/snapshot_leg_a_eval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/stack_correctness_validate.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/table_retrieval_smoke.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/train_function_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/train_legalbert_function.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/train_legalbert_modal.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/typed_rerank_validate.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/verify_wheel_install.sh +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/vllm_extraction_ab.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/vllm_kg_query_validate.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/scripts/vllm_raw_diagnostic.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/building-an-ingestion-capability/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/answers.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/config.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/discover.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/documents.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/ids.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/invoke.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/kg.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/mcp.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/tracing.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/usage.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/api/workspace.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/answer_generator.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/ard.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/chunk_read.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/chunk_write.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/disambiguation.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/document_parse.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/document_scope.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/embedding.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/entity_resolution.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/fusion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/graph_query.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/graph_storage.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/hybrid_search.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/invoke.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/jev_decision.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/manifests.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/parsing.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/registry.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/remote_encoders.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/reranking.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/retrieval_core.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/rlm_chunking.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/scan_quality.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/vision_to_text.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/contracts/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/contracts/chunk.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/contracts/extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/contracts/graph.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/contracts/identifiers.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/contracts/ingestion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/contracts/provenance.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/contracts/span.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/corpus/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/corpus/canonicalize.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/corpus/document_parser.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/corpus/embedded.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/corpus/http.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/ingestion/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/ingestion/builder.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/ingestion/evaluate.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/ingestion/group.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/ingestion/layout.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/ingestion/segment.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/ingestion/tables.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/models/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/models/tag_structured.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/models/tracing.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/models/usage.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/models/weights.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/ontology/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/ontology/pack_schema.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/ontology/registry.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/pack_sdk/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/invokers.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/pack.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/options.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/pack.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/function_families.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/packs/reference_seam.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/py.typed +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/skills/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/skills/generation/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/skills/generation/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/skills/rlm/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/skills/rlm/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/skills/rlm/agent.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/spans/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/spans/page_map.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/store/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/store/arcadedb.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/store/chunk_text.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/store/seam.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/subgraphs/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/subgraphs/observability.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/subgraphs/scaffold.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/util/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/util/concurrent.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/src/rag_wright/util/spacy_model.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_answers_exports.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_bytes_ingest.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_capability_reexports.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_decision_swap_doc_example.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_discover.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_documents.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_e2e.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_invoke.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_kg.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_mcp.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_metering_tracing_exports.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_model_role_export.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_open_workspace_reconfig.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_options.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_pack_sdk.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_pack_store.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_usage.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_workspace.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/api/test_workspace_models.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/arch/domain_vocabulary_baseline.json +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/arch/test_api_docs_current.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/arch/test_doc_references.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/arch/test_engine_domain_vocabulary.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/arch/test_import_contracts.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/arch/test_packs_use_store_primitives.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/arch/test_shipped_skills.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/async_helpers.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_answer_generator.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_answer_generator_async.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_assertion_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_authoring_contract.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_chunk_read.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_chunk_write.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_claim_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_clause_exception_linking.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_compliance_judgment.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_compliance_store.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_contract_kg_serve.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_contract_kg_store.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_dg_adapter.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_dg_async.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_dg_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_dg_model_seam.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_dg_private.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_disambiguation.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_document_scope.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_embedding.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_embedding_profiles.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_entity_resolution.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_fusion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_graph_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_graph_query.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_graph_storage.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_highlight_serve.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_hybrid_search.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_jev_decision.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_manifest_validation.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_manifests.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_parsing.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_parties_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_query_function_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_query_understanding.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_registry.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_remote_encoders.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_repair_partition.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_requirement_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_reranking.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_retrieval_core.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_rlm_chunking.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_rlm_chunking_async.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_rlm_method.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_rlm_synthesis.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_runtime_registry.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_scan_quality.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_span_relevance_judgment.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_structural_model_fallback.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_tiered_ocr.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/capabilities/test_vlm_ocr.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/compliance_fakes.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/conftest.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_canonical_source_doc_id.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_chunk_record.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_compliance.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_function.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_function_routing.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_identifiers.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_ingestion_hooks.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_jurisdiction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_ontology.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_property.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_provenance.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/contracts/test_value_match.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/_ooxml_fixtures.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/test_canonicalize.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/test_cuad.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/test_cuad_ingestion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/test_document_parser.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/test_edgar.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/test_embedded.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/test_gcs_ingestion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/test_http.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/test_parse_wire2.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/corpus/test_selection.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/eval/test_contractnli_judge.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/eval/test_cuad_highlight_metrics.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/eval/test_kg_property_rerank.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/eval/test_nl_to_type_metrics.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/eval/test_relational_eval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/fixtures/ingestion/textile_test_report.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/fixtures/leg_a_silver/README.md +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/fixtures/table-bearing-contract.pdf +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/foundation/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/foundation/test_arcadedb_hybrid.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/foundation/test_model_seam_structured.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/test_builder.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/test_document_metadata.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/test_evaluate.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/test_evaluate_labels.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/test_layout_segmenter.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/test_spreadsheet_content.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/test_table_rows.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/test_tuning.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/test_unit_grouper.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ingestion/test_unit_representative.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/journey/incidents_domain.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/journey/incidents_pack.ttl +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/journey/test_incidents_journey.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/journey/test_pack_schema.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/mcp/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/mcp/test_compliance_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/mcp/test_intra_document_qa_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/mcp/test_relational_qa_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_async_infra.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_models_dir.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_no_gemma_default.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_profile_routing.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_profile_seam.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_seam_async.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_seam_retry.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_seam_stream.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_serving_seam.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_serving_wiring.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_tag_structured.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_tag_structured_async.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_tracing.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/models/test_usage.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ontology/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ontology/test_clause_template.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ontology/test_derivation.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ontology/test_entity_taxonomy.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ontology/test_template_captured_in_ttl.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/reference/test_compliance_reference.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/reference/test_contract_seam.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/scripts/test_eval_chunking_ab.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/scripts/test_eval_classifier_ab.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/scripts/test_fetch_reference_models.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/skills/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/skills/test_ingestion_skill_example.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_boundary.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_classifier_property_extractor.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_clause_function_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_clause_function_classifier_async.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_clause_kg_extractor.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_clause_kg_extractor_async.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_dim_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_dim_fleet_live.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_function_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_hybrid_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_hybrid_property_extractor.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_legalbert_classifier.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_model_capabilities.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_new_function_labels.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_page_map.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_property_extractor.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_property_grounding.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_reclassify.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_residual_decision.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_scarce_function_labels.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_segment.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_segmentation_vocab.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_semantic_judge.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_setfit_clause_adapter.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_setfit_probabilities.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_span_offsets.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_stage_labels_0005.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_symbolic_validation.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/spans/test_tag_clause_extractor.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_affiliation_backfill.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_arcadedb_clause_kg.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_arcadedb_contract.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_arcadedb_property.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_arcadedb_requirement_sources.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_arcadedb_schema.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_arcadedb_span.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_chunk_text.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_concurrent_writes.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_contract_kg_store_live.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_document_metadata_live.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_document_scope.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_engine_domain_neutral.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_entities_by_name.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_kg_edges.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_kg_mutations.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_kg_read.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_kg_write.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_neutral_schema.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/store/test_write_graph_idempotent.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_async_ingestion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_clause_results.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_compliance_check.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_compliance_ingestion.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_graph_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_ingest_knobs.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_intra_document_qa.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_observability.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_partial_entry_contract.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_relational_qa.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_requirement_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_scaffold.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_semantic_chunking.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/test_backfill_clause_span_id.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/test_dg_model_ab.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/test_populate_clause_kg.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/test_populate_entity_graph.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/util/__init__.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/util/test_concurrent.py +0 -0
- {rag_wright-0.4.0 → rag_wright-0.5.0}/tests/util/test_spacy_model.py +0 -0
|
@@ -86,6 +86,26 @@ One JSONL line per case (`research/scripts/finetune_single_device.py` reads this
|
|
|
86
86
|
- Runs on **one 16 GB GPU (T4)** — ~1–2 h for large data, minutes for our small dims. RLCD = soft-CE + GRPO-style
|
|
87
87
|
policy gradient on proper scoring rules. Calibration (one temperature per type) is fitted inside the run on a
|
|
88
88
|
held-out slice; **argmax/accuracy unchanged, only confidence moves** — always fit before gating on confidence.
|
|
89
|
+
- **Check the fitted temperatures against the SERVING runtime's range (a known Laya mismatch).** The research
|
|
90
|
+
fine-tuning script fits each type's temperature and clips it to [0.1, 10]
|
|
91
|
+
(`research/scripts/finetune_single_device.py:154`); the Laya runtime (0.3.22) serves only [0.5, 5]
|
|
92
|
+
(`laya.common.TEMP_MIN` / `TEMP_MAX`) and clamps the rest, with a load-time `RuntimeWarning` ("... values outside
|
|
93
|
+
[0.5, 5] ... treat confidence ... as uncalibrated"). A clamped `choice` temperature leaves the ranking alone (one
|
|
94
|
+
scale per question: argmax, top-k and `none`-abstains are stable) but makes the probabilities sharper than
|
|
95
|
+
fitted, so they are overconfident. So, after every training run:
|
|
96
|
+
1. read `temperature` in each checkpoint's `rl_agent_config.json` and compare it with the runtime range;
|
|
97
|
+
2. if you only rank (top-k, abstain on `none`), an out-of-range value changes no label: record it and move on;
|
|
98
|
+
3. if anything gates on `probabilities` or `answer_confidence`, refit within the runtime range with the runtime
|
|
99
|
+
calibrator on a held-out labelled slice (`laya.calibrate.records_from_labeled(agent, pairs)` ->
|
|
100
|
+
`fit_temperature_map(records)`, whose fits are clamped to the runtime range), save it with
|
|
101
|
+
`Agent.save_calibration(path)` and serve with `Agent.load_calibration(path)`.
|
|
102
|
+
|
|
103
|
+
The engine's reference fleet has nine such checkpoints and only ranks (ADR-0129). A report to Laya upstream is
|
|
104
|
+
drafted in the engine repository (`docs/upstream/laya-temperature-range-mismatch.md`, not yet filed); check the
|
|
105
|
+
Laya release notes before relying on either range. Repository paths in this skill (`docs/`) are in the engine repository:
|
|
106
|
+
read them there or on GitHub.
|
|
107
|
+
- **Train with the scikit-learn your serving environment runs** (or raise the serving floor with it): a SetFit
|
|
108
|
+
head pickled by a newer scikit-learn warns on load and can change predictions without an error.
|
|
89
109
|
- **OOM knobs:** ModernBERT-large (~400M) is tight on a 16 GB T4/L4. The single-device script has NO batch or
|
|
90
110
|
sequence flags: it fixes `micro_batch = 8`, `max_tokens_per_batch = 4096`, `max_len = 1024` and `head_max_len = 256`
|
|
91
111
|
in code, and turns on gradient checkpointing on CUDA. Our short-clause dims ran with it unchanged. If a run still
|
{rag_wright-0.4.0/src/rag_wright/.agents → rag_wright-0.5.0/.claude}/skills/qwen-vllm-modal/SKILL.md
RENAMED
|
@@ -26,6 +26,26 @@ This skill is the operational checklist that ties them together.
|
|
|
26
26
|
- Served-model-name is `Qwen/Qwen3.8-27B` (what the engine profile `qwen3.8-27b-modal` asks for), even though the
|
|
27
27
|
weights are the `-FP8` repo.
|
|
28
28
|
|
|
29
|
+
**From the engine (PS-19): deploy, then use the server like any model.** `ModelServerSpec`'s defaults ARE the
|
|
30
|
+
locked config below (FP8 weights + FP8 KV, one A100-80GB, TP 1, 16K, 0.95, served `Qwen/Qwen3.8-27B`, hermes +
|
|
31
|
+
qwen3 parsers, image builder 2025.06); state only the concurrency target, which ADR-0110 leaves to you.
|
|
32
|
+
`adeploy_model_server` runs the deploy below with those settings, waits for `/health` (with progress; a cold start is
|
|
33
|
+
~8 min), and registers a model profile with the server's own endpoint, so no `VLLM_BASE_URL` is needed:
|
|
34
|
+
|
|
35
|
+
```python
|
|
36
|
+
from rag_wright.api import EngineConfig, ModelServerSpec, adeploy_model_server, stop_model_server
|
|
37
|
+
|
|
38
|
+
server = await adeploy_model_server(ModelServerSpec(name="acme-qwen", max_num_seqs=32)) # key from VLLM_API_KEY
|
|
39
|
+
config = EngineConfig(store=..., models={"general": server.model_id}) # or any model= argument
|
|
40
|
+
...
|
|
41
|
+
stop_model_server("acme-qwen") # stop billing
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`amodel_server(spec)` reconnects to a server deployed earlier (a restart, another process) without redeploying.
|
|
45
|
+
The API key comes from the variable `ModelServerSpec.api_key_env` names (default `VLLM_API_KEY`); there is no default
|
|
46
|
+
key, so set a real one. Needs `rag-wright[modal]` and a Modal login. One app per server name: different names give
|
|
47
|
+
different servers (and URLs), for example one per tenant.
|
|
48
|
+
|
|
29
49
|
**The exact working deploy (this succeeded):**
|
|
30
50
|
```
|
|
31
51
|
MODAL_IMAGE_BUILDER_VERSION=2025.06 \
|
|
@@ -137,6 +137,13 @@ Work the domain-adaptation guide, grounding each engine call (step 2) and writin
|
|
|
137
137
|
6. **Build the product seam** — your thin layer over the engine API + registered caps (tenancy, orchestration,
|
|
138
138
|
the product tool surface). Wrap `open_workspace`/the invokers/`kg_read`/`measure_usage`.
|
|
139
139
|
|
|
140
|
+
**Using a self-hosted model (Qwen on Modal).** Deploy it from the engine and use its model id like any model:
|
|
141
|
+
`server = await adeploy_model_server(ModelServerSpec(name="<app>", max_num_seqs=<concurrency target>))` (the locked
|
|
142
|
+
setup of the `qwen-vllm-modal` skill; needs `rag-wright[modal]`, a Modal login and `VLLM_API_KEY` in `.env`), then
|
|
143
|
+
`EngineConfig(models={"general": server.model_id, ...})`. Other processes reconnect with `amodel_server(spec)`;
|
|
144
|
+
call `await_model_server(server)` before traffic (cold start is minutes); `stop_model_server(name)` stops billing.
|
|
145
|
+
Full walk-through: `docs/configuration.md`, "A self-hosted model server".
|
|
146
|
+
|
|
140
147
|
**Using the decision model (Jev).** Register `jev_decision` (from `engine_capabilities()`) and set
|
|
141
148
|
`OPENROUTER_API_KEY` (`RAG_DECISION_MODEL` overrides the default profile `jev-1.13`). Without both, the reference
|
|
142
149
|
pack's decision paths silently fall back (to deterministic rules or the LLM); your own
|
|
@@ -4,6 +4,18 @@ 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.5.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.4.0...0.5.0) (2026-10-10)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* **PS-19:** deploy the self-hosted model server from the engine and use it like any model ([5cd4d22](https://github.com/fzaidi-dai/RAG_Wright/commit/5cd4d22b6e684052b2d75162df32078fdf1cf2e6))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **PS-18:** scikit-learn floor 1.9.1 for the shipped heads; Laya temperatures recorded (ADR-0129) ([2350de4](https://github.com/fzaidi-dai/RAG_Wright/commit/2350de44a877bd74ad4e920c39a1557d43a0f2c8))
|
|
18
|
+
|
|
7
19
|
## [0.4.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.3.1...0.4.0) (2026-10-09)
|
|
8
20
|
|
|
9
21
|
|
|
@@ -55,10 +55,10 @@ The failure mode to avoid, which has happened before: a command fails with "modu
|
|
|
55
55
|
|
|
56
56
|
## Start of every session
|
|
57
57
|
|
|
58
|
-
> **CURRENT STATE (2026-10-09): the public-surface workstream is COMPLETE and released as `rag-wright` 0.
|
|
58
|
+
> **CURRENT STATE (2026-10-09): the public-surface workstream is COMPLETE and released as `rag-wright` 0.4.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
|
|
61
|
+
> RuleWright moves from `docs/specs/public-surface/rulewright-migration-0.3.0.md` then `rulewright-migration-0.4.0.md`; PS-R4 (the unit-labelling eval) is done, unreleased. Before it,
|
|
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.5.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
|
|
@@ -39,9 +39,11 @@ Requires-Dist: pydantic>=2.0
|
|
|
39
39
|
Requires-Dist: pypdfium2>=5.11
|
|
40
40
|
Requires-Dist: pyshacl>=0.40.1
|
|
41
41
|
Requires-Dist: python-dotenv>=1.2
|
|
42
|
-
Requires-Dist: scikit-learn>=1.9.
|
|
42
|
+
Requires-Dist: scikit-learn>=1.9.1
|
|
43
43
|
Requires-Dist: sentence-transformers>=6.1.0
|
|
44
44
|
Requires-Dist: transformers<5.9,>=5.4
|
|
45
|
+
Provides-Extra: modal
|
|
46
|
+
Requires-Dist: modal>=1.5.3; extra == 'modal'
|
|
45
47
|
Provides-Extra: ner
|
|
46
48
|
Requires-Dist: spacy>=3.8.14; extra == 'ner'
|
|
47
49
|
Provides-Extra: ocr-bench
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# ADR-0129: The shipped Laya temperatures stay as fitted; scikit-learn floor at 1.9.1
|
|
2
|
+
|
|
3
|
+
**Status:** accepted · **Date:** 2026-10-10 · **Related:** ADR-0116 (Laya property classifiers), ADR-0119 (decision
|
|
4
|
+
models), PS-5 (reference weights on GCS)
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
RuleWright reported (its engine request of 2026-10-10) two findings in the shared reference weights:
|
|
9
|
+
|
|
10
|
+
1. Laya 0.3.22 warns on loading 9 of the 15 Laya checkpoints: their `choice` temperature (`temperature[0]`, from
|
|
11
|
+
5.64 to 10.0) is outside the runtime's accepted [0.5, 5], so it is clamped to 5 and the probabilities are
|
|
12
|
+
"uncalibrated".
|
|
13
|
+
2. Eight shipped SetFit heads (the three clause-function heads, five property-dimension heads) were pickled with
|
|
14
|
+
scikit-learn 1.9.1 while the engine declared and ran 1.9.0, so each warns on load (`InconsistentVersionWarning`).
|
|
15
|
+
|
|
16
|
+
## Findings
|
|
17
|
+
|
|
18
|
+
- **Cause of the temperatures.** Laya's own fine-tuning script (`research/scripts/finetune_single_device.py:154`)
|
|
19
|
+
fits one temperature per question type by log-likelihood on a held-out slice and clips it to [0.1, 10]; the
|
|
20
|
+
runtime accepts [0.5, 5]. The values are fitted, not left uninitialised; the three at 10.0 hit the training clip.
|
|
21
|
+
The mismatch is between Laya's training script and its runtime.
|
|
22
|
+
- **Effect on labels.** The reference pack's classifier lane (`_classifier_assertions`) emits the top-k options by
|
|
23
|
+
rank and abstains when `none` is among them; it never reads the probability value. One temperature scales every
|
|
24
|
+
option of a question alike, so it cannot reorder them. Measured on 300 CUAD paragraphs, every affected
|
|
25
|
+
checkpoint and dimension, served (5) vs shipped temperature, 5,400 paired predictions: 0 abstain decisions
|
|
26
|
+
changed; 45 emitted label sets (0.8%) differed, every one between options equal to 4 decimals (Laya rounds its
|
|
27
|
+
probabilities, and the sort breaks the tie); 1 primary label changed, on a `damage_type` answer with all options
|
|
28
|
+
between 0.17 and 0.22. Scoring twice at one temperature is identical.
|
|
29
|
+
- **Effect on probabilities.** For these 9 checkpoints the served probabilities are up to 0.22 sharper than the
|
|
30
|
+
fitted calibration, so they are overconfident. Nothing in the engine reads them.
|
|
31
|
+
|
|
32
|
+
## Decision
|
|
33
|
+
|
|
34
|
+
1. The nine checkpoints are not re-exported; the cause and the measured effect are recorded here, in the reference
|
|
35
|
+
pack's documentation and in the `laya` skill. A re-export at temperature 5.0 would serve identically and only
|
|
36
|
+
silence the warning; widening the accepted range is Laya's decision, not the engine's. A report to Laya is
|
|
37
|
+
drafted (`docs/upstream/laya-temperature-range-mismatch.md`, not filed).
|
|
38
|
+
2. A product that gates on these classifiers' probabilities must not treat them as calibrated (or must refit within
|
|
39
|
+
the runtime's range).
|
|
40
|
+
3. The engine requires `scikit-learn>=1.9.1`, the version the shipped heads were pickled with, and
|
|
41
|
+
`tests/models/test_classifier_heads_load_clean.py` fails when any shipped head warns on load.
|
|
42
|
+
|
|
43
|
+
## Consequences
|
|
44
|
+
|
|
45
|
+
- Labels from the reference fleet are as they were; the warning on loading those 9 checkpoints remains.
|
|
46
|
+
- A future training run checks `rl_agent_config.json` against the serving runtime's temperature range, and the
|
|
47
|
+
training image's scikit-learn version is the engine's floor (or the floor moves with it).
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# ADR-0130: A product deploys the self-hosted model server from the engine and uses it like any model
|
|
2
|
+
|
|
3
|
+
**Status:** accepted · **Date:** 2026-10-10 · **Related:** ADR-0110 (the locked Qwen config), ADR-0109 (cold start),
|
|
4
|
+
ADR-0100 (model strings carry their backend), PS-14 (per-workspace models)
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
The self-hosted Qwen server was stood up by hand: the `qwen-vllm-modal` skill's `modal deploy` command, then
|
|
9
|
+
`VLLM_BASE_URL` / `VLLM_API_KEY` in the environment. A product could not deploy it through the engine, and every
|
|
10
|
+
vLLM profile read one process-wide endpoint, so two servers (one per tenant) needed custom profiles and variables.
|
|
11
|
+
|
|
12
|
+
## Decision
|
|
13
|
+
|
|
14
|
+
1. `ModelServerSpec` describes one server; its defaults are the skill's locked Config B (ADR-0110), and the
|
|
15
|
+
concurrency target (`max_num_seqs`) has no default because ADR-0110 leaves it to the deployment.
|
|
16
|
+
2. `adeploy_model_server(spec)` runs the deploy script shipped with the skill (Modal's own CLI, the documented
|
|
17
|
+
command), waits for `/health` with progress, and registers a model profile for the server: the
|
|
18
|
+
`qwen3.8-27b-modal` profile's Qwen settings, the server's own endpoint, and the API-key variable the spec names.
|
|
19
|
+
`amodel_server(spec)` reconnects without redeploying; `stop_model_server(name)` stops it.
|
|
20
|
+
3. A model profile can carry an explicit `base_url`, which wins over its `base_url_env`; `register_model_profile`
|
|
21
|
+
adds one at run time. So a deployed server is just another model id (`qwen3.8-27b-modal@<name>`) for
|
|
22
|
+
`EngineConfig.models` or any `model=` argument.
|
|
23
|
+
4. The API key has no default: deploying refuses when the named variable is unset. `modal` is an optional extra
|
|
24
|
+
(`rag-wright[modal]`).
|
|
25
|
+
|
|
26
|
+
## Consequences
|
|
27
|
+
|
|
28
|
+
- Live (2026-10-10): deploy through the API, ready after 226 s, one answer through a workspace metered on the
|
|
29
|
+
server's model id, stopped (the app no longer resolves); 239 s of A100 in all.
|
|
30
|
+
- Cold start remains a separate task (PS-20, ADR-0109); the readiness wait reports it, it does not shorten it.
|
|
31
|
+
- Registered server profiles are process-wide, like every profile; a restarted process reconnects with
|
|
32
|
+
`amodel_server`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Architecture Decision Records — index
|
|
2
2
|
|
|
3
3
|
128 ADR files (0001–0119, plus 0120 — the former duplicate `0015`, renumbered 2026-10-05 to repair the collision —
|
|
4
|
-
and 0121–
|
|
4
|
+
and 0121–0130). 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
|
|
|
@@ -184,4 +184,6 @@ framing that still appears in older ADRs and the root `SPEC.md`/`plan.md`.
|
|
|
184
184
|
0125 Qwen3.8-27b on OpenRouter is unpinned (no provider routing; supersedes 0111) ·
|
|
185
185
|
0126 Which span represents a unit is a domain hook; the reference pack votes over operative spans ·
|
|
186
186
|
0127 Retire the OKF code ·
|
|
187
|
-
0128 Two public tiers: `rag_wright.api` for products, `rag_wright.pack_sdk` for packs
|
|
187
|
+
0128 Two public tiers: `rag_wright.api` for products, `rag_wright.pack_sdk` for packs ·
|
|
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
|
|
@@ -28,6 +28,18 @@ An opaque handle to a resolved engine workspace. Public surface: `model_id(role)
|
|
|
28
28
|
|
|
29
29
|
Resolve a model role to its id: the `EngineConfig.models` override wins, else the profile default.
|
|
30
30
|
|
|
31
|
+
### `ModelServerSpec(max_num_seqs: 'int', name: 'str' = 'rw-qwen3-modal', model: 'str' = 'Qwen/Qwen3.8-27B-FP8', kv_cache_dtype: 'str' = 'fp8', served_name: 'str' = 'Qwen/Qwen3.8-27B', gpu: 'str' = 'A100-80GB:1', tensor_parallel: 'int' = 1, max_len: 'int' = 16384, gpu_util: 'float' = 0.95, tool_parser: 'str' = 'hermes', reasoning_parser: 'str' = 'qwen3', image_builder_version: 'str' = '2025.06', api_key_env: 'str' = 'VLLM_API_KEY') -> None`
|
|
32
|
+
|
|
33
|
+
One self-hosted Qwen server on Modal. The defaults are the locked setup of the `qwen-vllm-modal` skill (ADR-0110, Config B): FP8 weights + FP8 KV cache, one A100-80GB, tensor parallel 1, 16K context, 0.95 GPU memory, served as `Qwen/Qwen3.8-27B` with the hermes tool parser and the qwen3 reasoning parser, image builder 2025.06. `max_num_seqs` has no default: ADR-0110 sets it to the real concurrency target (keep client concurrency below it). `name` is the Modal app name, and so the server's URL. `api_key_env` names the environment variable that holds the server's API key.
|
|
34
|
+
|
|
35
|
+
#### `ModelServerSpec.deploy_env(self) -> 'dict[str, str]'`
|
|
36
|
+
|
|
37
|
+
The deploy command's settings, as the skill's documented command passes them.
|
|
38
|
+
|
|
39
|
+
### `ModelServer(name: 'str', root: 'str', base_url: 'str', model_id: 'str', served_model_id: 'str', api_key_env: 'str') -> None`
|
|
40
|
+
|
|
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
|
+
|
|
31
43
|
### `ModelRole(*values)`
|
|
32
44
|
|
|
33
45
|
Which model does which job. The mapping to ids lives in config, not in capability code.
|
|
@@ -238,6 +250,22 @@ Build a pack's store extension (or any object that wraps the workspace store) ov
|
|
|
238
250
|
|
|
239
251
|
Resolve every model role through `ws`'s `EngineConfig.models` inside the block (PS-14), ahead of the `RAG_MODEL_*` environment. The engine's own entry points that take a workspace (`aingest`, the invokers) do this for you; use it around engine calls that take no workspace, such as `parse_document_bytes` (OCR) or a `default_chunk_discoverer` run, when the workspace overrides those roles. Per call, never shared: concurrent blocks for different workspaces each see their own models.
|
|
240
252
|
|
|
253
|
+
### `adeploy_model_server(spec: 'ModelServerSpec', *, wait: 'bool' = True, timeout_s: 'float' = 1500, poll_s: 'float' = 15, progress: 'Callable[[str], object]' = print) -> 'ModelServer'`
|
|
254
|
+
|
|
255
|
+
Deploy (or redeploy) the server described by `spec` on Modal, register its model profile, and (with `wait`) wait for it to be ready. Returns the `ModelServer`; use `server.model_id` as the model. Raises `RuntimeError` when the API-key variable is unset (nothing is deployed). The server runs (and bills) until `stop_model_server`, or until Modal scales it down after 10 idle minutes.
|
|
256
|
+
|
|
257
|
+
### `amodel_server(spec: 'ModelServerSpec') -> 'ModelServer'`
|
|
258
|
+
|
|
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).
|
|
260
|
+
|
|
261
|
+
### `await_model_server(server: 'ModelServer', *, timeout_s: 'float' = 1500, poll_s: 'float' = 15, progress: 'Callable[[str], object]' = print) -> 'ModelServer'`
|
|
262
|
+
|
|
263
|
+
Wait until the server answers `/health` (a cold start is about 8 minutes, ADR-0109); progress as `i/N`. Raises `TimeoutError` after `timeout_s`.
|
|
264
|
+
|
|
265
|
+
### `stop_model_server(name: 'str') -> 'None'`
|
|
266
|
+
|
|
267
|
+
Stop the Modal app `name` (stops billing); its URL stops answering.
|
|
268
|
+
|
|
241
269
|
### `ainvoke_subgraph(name: 'str', inputs: 'dict', *, resources: 'WorkspaceHandle') -> 'Any'`
|
|
242
270
|
|
|
243
271
|
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).
|
|
@@ -106,6 +106,7 @@ and how to manage workspaces.
|
|
|
106
106
|
call. Override one role with `RAG_MODEL_<ROLE>` (e.g. `RAG_MODEL_VISION_OCR`, `RAG_MODEL_GENERAL`), or every
|
|
107
107
|
role at once with `RAG_MODEL_ALL`; the role-specific variable wins.
|
|
108
108
|
- **Structured output** is client-side tag-parse (ADR-0045); any provider flags live in the profile.
|
|
109
|
+
- **A self-hosted Qwen server**: see [A self-hosted model server](#a-self-hosted-model-server-qwen-on-modal) below.
|
|
109
110
|
- **Decision models** (e.g. Jev) are reached through a `DecisionModelProfile` (default `jev-1.13`;
|
|
110
111
|
`RAG_DECISION_MODEL` only overrides which profile). The reference contract pipeline uses the decision model
|
|
111
112
|
whenever its key (`OPENROUTER_API_KEY`) is set **and** the `jev_decision` capability is registered
|
|
@@ -114,6 +115,70 @@ and how to manage workspaces.
|
|
|
114
115
|
(deterministic boundaries; the LLM judge and residual call). `RAG_SEMANTIC_JUDGE=llm` / `RAG_RESIDUAL_EXTRACTOR=llm`
|
|
115
116
|
switch the judge / the residual values back to the LLM.
|
|
116
117
|
|
|
118
|
+
## A self-hosted model server (Qwen on Modal)
|
|
119
|
+
|
|
120
|
+
By default every role uses Qwen3.8-27B through OpenRouter. A product can instead run its own Qwen server on Modal,
|
|
121
|
+
deployed from the engine, and use it like any other model. The server's setup is the locked one from the
|
|
122
|
+
`qwen-vllm-modal` skill (ADR-0110: FP8 weights and KV cache on one A100-80GB, 16K context); you choose only its name
|
|
123
|
+
and its concurrency target.
|
|
124
|
+
|
|
125
|
+
**One-time setup.**
|
|
126
|
+
|
|
127
|
+
```sh
|
|
128
|
+
uv add 'rag-wright[modal]' # Modal is an optional extra
|
|
129
|
+
uv run modal token new # log in to Modal once per machine
|
|
130
|
+
```
|
|
131
|
+
|
|
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.
|
|
134
|
+
|
|
135
|
+
**Deploy, then use it like any model.**
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
from rag_wright.api import (EngineConfig, ModelServerSpec, StoreConfig, adeploy_model_server, open_workspace,
|
|
139
|
+
stop_model_server)
|
|
140
|
+
|
|
141
|
+
spec = ModelServerSpec(name="acme-qwen", max_num_seqs=32) # name = the Modal app (and URL); 32 = concurrency target
|
|
142
|
+
server = await adeploy_model_server(spec) # deploys, waits for /health, prints progress
|
|
143
|
+
|
|
144
|
+
ws = open_workspace(EngineConfig(store=StoreConfig.from_env(), models={"general": server.model_id,
|
|
145
|
+
"structured_reasoning": server.model_id}),
|
|
146
|
+
corpus="acme")
|
|
147
|
+
# every engine call for this workspace that uses those roles now runs on the server
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
`server.model_id` (here `qwen3.8-27b-modal@acme-qwen`) is an ordinary model id: put it in `EngineConfig.models`
|
|
151
|
+
for the roles it should serve, or pass it as a `model=` argument. Its profile carries the server's own endpoint and
|
|
152
|
+
the Qwen thinking settings, so no `VLLM_BASE_URL` is needed, and two servers (one per tenant, say) are just two
|
|
153
|
+
model ids in two workspaces' configs.
|
|
154
|
+
|
|
155
|
+
**In a service.** Deploy from one place (a startup job or an operator script). Every other process reconnects
|
|
156
|
+
without redeploying, which only looks up the server and registers its model id:
|
|
157
|
+
|
|
158
|
+
```python
|
|
159
|
+
from rag_wright.api import amodel_server, await_model_server
|
|
160
|
+
|
|
161
|
+
server = await amodel_server(ModelServerSpec(name="acme-qwen", max_num_seqs=32)) # same spec as the deploy
|
|
162
|
+
await await_model_server(server) # returns at once if it is up; waits through a cold start if it scaled down
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**What to know before you rely on it.**
|
|
166
|
+
|
|
167
|
+
- **Cold start.** A new or scaled-down server takes minutes to become ready (226 s in the last live run; up to about
|
|
168
|
+
8 minutes, ADR-0109). After 10 idle minutes Modal scales the container to zero (no GPU billing) but keeps the app
|
|
169
|
+
deployed; the next request waits through a cold start, so call `await_model_server` before sending traffic.
|
|
170
|
+
- **Cost.** An A100 bills while a container runs. `stop_model_server("acme-qwen")` removes the app entirely; deploy
|
|
171
|
+
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
|
+
- **Timeouts.** Reasoning-on structured calls under full load can take about a minute; raise
|
|
175
|
+
`RAG_STRUCTURED_TIMEOUT_S` (default 60) for bulk work, or calls time out and retry.
|
|
176
|
+
- **Process-wide.** A registered server model id is known to the whole process, like every model profile; after a
|
|
177
|
+
restart, call `amodel_server` again.
|
|
178
|
+
|
|
179
|
+
The `qwen-vllm-modal` skill has the operational detail (the image fixes, serving gotchas, the manual `modal deploy`
|
|
180
|
+
command) and ADR-0130 the design.
|
|
181
|
+
|
|
117
182
|
## Environment variables (reference)
|
|
118
183
|
|
|
119
184
|
Prefer config; use env for secrets and for non-API callers. The common ones the engine reads:
|
|
@@ -18,7 +18,9 @@ ADR-0117/0118 engine API + capability runtime). Read [Concepts](../concepts.md)
|
|
|
18
18
|
catalog: the generic ingest `tuning`, plus your pack's own options under `EngineOptions.packs`) and
|
|
19
19
|
`open_workspace(config, corpus=…) -> WorkspaceHandle`. `corpus` is the backend DB name; tenancy is
|
|
20
20
|
product-side: one corpus and one config per tenant, with the settings that stay per process listed in
|
|
21
|
-
[Workspaces](../workspaces.md).
|
|
21
|
+
[Workspaces](../workspaces.md). To run on your own Qwen server instead of OpenRouter, deploy it from the engine
|
|
22
|
+
and use its model id in `EngineConfig.models` ([A self-hosted model server](../configuration.md#a-self-hosted-model-server-qwen-on-modal)).
|
|
23
|
+
→ [Configuration](../configuration.md).
|
|
22
24
|
|
|
23
25
|
3. **Author the domain `.ttl` pack.** The domain KNOWLEDGE — closed value sets, the KG schema, SHACL constraints,
|
|
24
26
|
mappings — lives in the ontology, declaratively, never in Python (ADR-0066). It co-evolves with step 4 (it
|
|
@@ -47,6 +47,8 @@ to reach the network (mock the call, or mark the test). The live markers, declar
|
|
|
47
47
|
uv add 'rag-wright[ner]' # in a product; working on the engine itself: uv sync --extra ner
|
|
48
48
|
uv run python -m spacy download en_core_web_sm # configurable via RAG_SPACY_MODEL
|
|
49
49
|
```
|
|
50
|
+
- **`rag-wright[modal]`**: Modal, for deploying the self-hosted Qwen server from the engine
|
|
51
|
+
(`adeploy_model_server`; see [Configuration](configuration.md)). Log in once with `uv run modal token new`.
|
|
50
52
|
- **`rag-wright[ocr-bench]`** — the OCR-benchmark extras (`mlx-vlm`, `ocrmac`, `onnxruntime`, `scikit-image`).
|
|
51
53
|
|
|
52
54
|
### Skills for coding agents
|
|
@@ -112,6 +112,12 @@ to `build_ingestion(unit_representative=...)`.
|
|
|
112
112
|
|
|
113
113
|
## Its trained weights: fetched, not shipped
|
|
114
114
|
|
|
115
|
+
Two things to know about these weights (ADR-0129). Nine of the 15 Laya checkpoints carry a `choice` temperature
|
|
116
|
+
above the Laya runtime's accepted range, so Laya clamps it and warns on load. The fleet's labels are unaffected,
|
|
117
|
+
because it emits options by rank and never reads the probability, but those nine checkpoints' probabilities are
|
|
118
|
+
sharper than calibrated: do not gate on them. The SetFit heads were pickled with scikit-learn 1.9.1, the engine's
|
|
119
|
+
floor.
|
|
120
|
+
|
|
115
121
|
The pack's two `model` capabilities load trained weights that are not in the wheel or the repository (about 16 GB):
|
|
116
122
|
the clause-type SetFit ensemble and the 29-dimension SetFit/Laya property fleet. They load from the models root
|
|
117
123
|
(`RAG_MODELS_DIR`; default the engine checkout's `data/models` when it exists, else `./data/models`). Fetch them
|
|
@@ -91,3 +91,6 @@ in two at the PS-6 gate so the store rewrite is its own visible task. One task,
|
|
|
91
91
|
| PS-15 | Docs, after PS-13 and PS-14: one place that says what is per workspace, per config object and per process (corpus and store, `EngineConfig` and its models, the capability catalog, environment variables, classifier weights, caches) and how a product manages workspaces (one corpus per workspace, its own `EngineConfig`, its own `cache_dir`, document metadata); linked from `architecture.md`, `configuration.md`, the domain-adaptation guide, the `using-the-rag-wright-engine` skill and the product-starter templates; a RuleWright section in its 0.3 guide (or the next release's) on managing its workspaces this way; in the user guides, PS-13's two behaviours: a re-ingest only adds or updates the metadata keys it is given (to remove a value, `kg_update` it to `None`), and `IngestSource.metadata` is a new public field shipped in the next minor release (products pin accordingly) | doc-reference test; full suite | done: `docs/workspaces.md` (what applies per workspace / per call / per process, managing workspaces, the two metadata behaviours, config changes need a restart); RuleWright guide `rulewright-migration-0.4.0.md` (customer workspaces, per-customer models vs `answer_model_id`, cache per customer, metadata); linked from README, architecture, configuration, the domain-adaptation guide, the engine-usage skill, both product-starter templates, the 0.3 guide and CLAUDE.md |
|
|
92
92
|
| PS-16 | A configuration change takes effect without a restart: `open_workspace` returns the cached handle only when the config is equal; a different config gets a new handle (the store and the embedder reused when their settings are unchanged), and calls already holding the old handle finish on the old config; docs (workspaces, configuration, the engine-usage skill, the RuleWright 0.4 guide) updated | hermetic tests; live check (re-open with new models, same store) | done: an equal config returns the cached handle; a different one a new handle that replaces it (store reused for unchanged store settings + pack, query embedder for an unchanged profile; in-flight calls keep the old config); workspaces/configuration/skill/RuleWright 0.4 guide updated; live on ArcadeDB: same connection, new models, data visible |
|
|
93
93
|
| PS-17 | No Gemma by default anywhere (your decision: Gemma only through config or a product): `DEFAULT_GENERAL` (Gemma) removed from `models.profiles` and `rag_wright.pack_sdk`; the reference pack's legacy tag-parse extractor runs its second list model only when `RAG_INGEST_LIST_MODEL` or `list_model=` names one; text that calls Gemma the model in use corrected (benchmark notes kept); the Gemma profiles stay registered so config can select Gemma correctly | guard test (no role default, constant or default-on path is Gemma); full suite | done: `DEFAULT_GENERAL` removed (profiles + `pack_sdk`, 84 symbols); the legacy extractor's list model via `list_model_for` (only when named); ~20 statements now say the GENERAL role (benchmark notes and serving gotchas kept, labelled); overview's stale Gemma listwise rerank removed; Gemma profiles stay registered; guard test; `CLAUDE.md` / `SPEC.md` wording left as is (your call) |
|
|
94
|
+
| PS-18 | RuleWright's request of 2026-10-10: raise the floor to `scikit-learn>=1.9.1` (8 shipped heads were pickled with 1.9.1) with a guard test that loads every shipped head with `InconsistentVersionWarning` as an error; the Laya temperatures (9 of 15 above Laya 0.3.22's [0.5, 5]) left as they are with the cause and the measured effect written down (ADR): fitted by Laya's training script within [0.1, 10], clamped at serving; labels unaffected (the fleet uses the ranking, not the probability; 5,400 paired predictions: 0 abstain changes, 45 rounding-tie differences); a reply to RuleWright | guard test; full suite | done: `scikit-learn>=1.9.1` (lock 1.9.0 -> 1.9.1); guard loads the 8 heads in the shipped model folders with the version warning as an error; ADR-0129; reference-pack note; the `laya` skill's post-training temperature checklist + scikit-learn lesson; reply to RuleWright; upstream Laya report drafted at `docs/upstream/laya-temperature-range-mismatch.md` (not filed) |
|
|
95
|
+
| PS-19 | A product deploys the self-hosted Qwen server from the engine and uses it like any model: `ModelServerSpec` (defaults = the `qwen-vllm-modal` skill / ADR-0110 locked Config B: Qwen3.8-27B-FP8 + fp8 KV, 1x A100-80GB, TP 1, 16K, 0.95, served name `Qwen/Qwen3.8-27B`, hermes + qwen3 parsers, image builder 2025.06), `adeploy_model_server` (deploys the shipped script, waits for `/health` with X/N progress), reconnect by name, status, stop; each server registered as a model profile with its own endpoint (no `VLLM_BASE_URL` needed), so its `model_id` goes in `EngineConfig.models` or any `model=`; the API key from a named environment variable, never a default; `rag-wright[modal]` extra; Modal grounded in the framework graph | hermetic tests (Modal and HTTP mocked); live: deploy, one call through a workspace, stop, confirm stopped | done: `ModelServerSpec` (Config B defaults, `max_num_seqs` required), `adeploy_model_server` / `amodel_server` / `await_model_server` / `stop_model_server`; profiles carry an explicit `base_url`, `register_model_profile`; `rag-wright[modal]`; ADR-0130; configuration.md walk-through linked from the engine-usage skill, domain-adaptation guide, workspaces, templates; RuleWright 0.5 guide; live: ready in 226 s, one call metered on the server's model id, stopped (239 s of A100) |
|
|
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) |
|
{rag_wright-0.4.0 → rag_wright-0.5.0}/docs/specs/public-surface/rulewright-migration-0.4.0.md
RENAMED
|
@@ -72,3 +72,5 @@ store per database from the environment, and `export_engine_env` republishes the
|
|
|
72
72
|
Run RuleWright's suite against the engine checkout (editable path) and its live engine-seam test. If you move to
|
|
73
73
|
customer workspaces: open two customers with different `general` models, run a question for each concurrently
|
|
74
74
|
inside `measure_usage()`, and check each call was metered on its own customer's model.
|
|
75
|
+
|
|
76
|
+
Next: `docs/specs/public-surface/rulewright-migration-0.5.0.md` (its own Qwen server; the scikit-learn floor).
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# RuleWright: moving to rag-wright 0.5 (its own Qwen server)
|
|
2
|
+
|
|
3
|
+
What the release after 0.4.0 adds for RuleWright, written from a read-only scan of the RuleWright repo
|
|
4
|
+
(2026-10-10). Do the 0.3 and 0.4 guides first. Nothing here is edited from the engine repo.
|
|
5
|
+
|
|
6
|
+
**Short version.** Nothing breaks. RuleWright can now deploy its own Qwen server from the engine and point any of
|
|
7
|
+
its model settings at it by changing a string. The scikit-learn floor it asked for is in.
|
|
8
|
+
|
|
9
|
+
## 1. Nothing breaks
|
|
10
|
+
|
|
11
|
+
- **scikit-learn.** The engine now requires `scikit-learn>=1.9.1` (RuleWright's request, ADR-0129); RuleWright
|
|
12
|
+
already declares the same floor.
|
|
13
|
+
- **Model profiles** can carry an explicit endpoint. Existing profiles have none, so every model RuleWright uses
|
|
14
|
+
today resolves exactly as before.
|
|
15
|
+
|
|
16
|
+
## 2. Running on its own Qwen server (optional)
|
|
17
|
+
|
|
18
|
+
Today RuleWright's model settings are model-id strings: `rulewright_answer_model`, `rulewright_query_model` and
|
|
19
|
+
`rulewright_ingest_model`, all `qwen3.8-27b-modal-or` (Qwen through OpenRouter). Its `config.py` already notes that
|
|
20
|
+
pointing at its own server "is a string change here, not a code change". The engine now makes that string come from
|
|
21
|
+
a server it deploys:
|
|
22
|
+
|
|
23
|
+
1. **One-time setup.** `uv add 'rag-wright[modal]'`, `uv run modal token new`, and a real `VLLM_API_KEY` in its
|
|
24
|
+
settings (there is no default key; the server is deployed with it).
|
|
25
|
+
2. **Deploy once,** from an operator script or a startup job, with the locked setup of the `qwen-vllm-modal` skill:
|
|
26
|
+
`server = await adeploy_model_server(ModelServerSpec(name="rulewright-qwen", max_num_seqs=<target>))`.
|
|
27
|
+
`max_num_seqs` is RuleWright's real concurrency target (ADR-0110); keep its client concurrency below it.
|
|
28
|
+
3. **Every service process reconnects at startup** without redeploying, then waits for readiness:
|
|
29
|
+
`server = await amodel_server(spec)`, then `await await_model_server(server)`.
|
|
30
|
+
4. **Use `server.model_id`** (`qwen3.8-27b-modal@rulewright-qwen`) as the value of those three settings, or in a
|
|
31
|
+
customer workspace's `EngineConfig.models` (0.4 guide, section 2). It is an ordinary model id: the seam, answer
|
|
32
|
+
generation and the ported pack's docling-graph extraction (`default_extraction_model`, which resolves through
|
|
33
|
+
the profile) all reach the server's own endpoint. `VLLM_BASE_URL` and `RAG_SERVING` are not needed for it.
|
|
34
|
+
5. **A server per customer,** if wanted: one `ModelServerSpec` name per customer gives one server and one model id
|
|
35
|
+
each, used in that customer's `EngineConfig.models`.
|
|
36
|
+
|
|
37
|
+
Two cautions. The ported pack's `vllm_model()` helper (`packs/contracts/capabilities/dg_extraction.py`) reads
|
|
38
|
+
`VLLM_BASE_URL` directly and so cannot see a deployed server's endpoint; nothing calls it, so do not start using it.
|
|
39
|
+
And a server scales to zero after 10 idle minutes: the next request waits through a cold start (minutes), so call
|
|
40
|
+
`await_model_server` before sending traffic; `stop_model_server(name)` removes it entirely.
|
|
41
|
+
|
|
42
|
+
The engine's full walk-through is `docs/configuration.md`, "A self-hosted model server"; the design is ADR-0130.
|
|
43
|
+
|
|
44
|
+
## 3. Verify
|
|
45
|
+
|
|
46
|
+
Run RuleWright's suite against the engine checkout. If it moves a setting to a server: deploy (or reconnect), run
|
|
47
|
+
one question inside `measure_usage()`, and check the call was metered on the server's model id; then stop the
|
|
48
|
+
server if it was a test deployment.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Reply to RuleWright: Laya temperatures and the scikit-learn floor (2026-10-10)
|
|
2
|
+
|
|
3
|
+
Answers RuleWright's `docs/engine-requests/2026-10-10-laya-temperatures-and-sklearn-floor.md`. The decision record is
|
|
4
|
+
ADR-0129. Nothing here is edited in the RuleWright repo.
|
|
5
|
+
|
|
6
|
+
## 1. The Laya temperatures: not a bug, and labels are unaffected; T-7.23 can proceed
|
|
7
|
+
|
|
8
|
+
**The values are fitted.** Laya's own fine-tuning script fits one temperature per question type by log-likelihood on
|
|
9
|
+
a held-out slice and clips it to [0.1, 10] (`research/scripts/finetune_single_device.py:154`); the Laya runtime
|
|
10
|
+
(0.3.22) accepts [0.5, 5] and clamps the rest. The three at (or within 0.002 of) 10.0 hit the training clip: the fit
|
|
11
|
+
wanted an even softer scale. So it is a range mismatch between Laya's training script and its runtime, not an
|
|
12
|
+
uninitialised value.
|
|
13
|
+
|
|
14
|
+
**The engine's classifier lane does not gate on the probability.** `_classifier_assertions`
|
|
15
|
+
(`rag_wright/packs/contracts/spans/property_extractor.py`) emits the top-k options by rank, abstains when `none` is
|
|
16
|
+
among them, and never reads the probability value. One temperature scales every option of a question alike, so it
|
|
17
|
+
cannot reorder them. Measured on 300 CUAD paragraphs, every affected checkpoint and dimension, served temperature
|
|
18
|
+
(5) against the shipped one, 5,400 paired predictions:
|
|
19
|
+
|
|
20
|
+
| | result |
|
|
21
|
+
|---|---|
|
|
22
|
+
| abstain decisions changed | 0 |
|
|
23
|
+
| emitted label sets changed | 45 (0.8%), every one between options equal to 4 decimals (Laya rounds probabilities; the sort breaks the tie) |
|
|
24
|
+
| primary label changed | 1, on a `damage_type` answer with all five options between 0.17 and 0.22 |
|
|
25
|
+
| the same temperature scored twice | identical |
|
|
26
|
+
|
|
27
|
+
So the clamp does not produce missing labels in the engine's pack, and measuring recall now gives the same answer
|
|
28
|
+
it would after any temperature change. **One thing to check on your side:** if your ported pack added a confidence
|
|
29
|
+
threshold to this lane, the clamp matters there, because those nine checkpoints' probabilities are up to 0.22
|
|
30
|
+
sharper than calibrated.
|
|
31
|
+
|
|
32
|
+
**What the engine did:** recorded the cause and the measurement (ADR-0129, the reference-pack docs, the `laya`
|
|
33
|
+
skill). It did not re-export the nine: a re-export at 5.0 would serve identically and only silence the warning.
|
|
34
|
+
Widening Laya's accepted range is Laya's decision; a report to Laya upstream is drafted in the engine repo
|
|
35
|
+
(`docs/upstream/laya-temperature-range-mismatch.md`, not yet filed). The `laya` skill now says what to check after
|
|
36
|
+
every training run.
|
|
37
|
+
|
|
38
|
+
## 2. The scikit-learn floor: done, and wider than the three heads
|
|
39
|
+
|
|
40
|
+
The engine now requires `scikit-learn>=1.9.1`. Eight shipped heads were pickled with 1.9.1, not three: the three
|
|
41
|
+
clause-function heads and five property-dimension heads (`cap_basis`, `carve_out`, `covered_parties`, `mutuality`,
|
|
42
|
+
`nonsolicit_target`). `tests/models/test_classifier_heads_load_clean.py` now loads every head inside the shipped
|
|
43
|
+
model directories with the version warning as an error, so a future skew fails the engine's suite. This ships in the
|
|
44
|
+
next engine release; RuleWright's own `>=1.9.1` already matches.
|
|
@@ -130,7 +130,9 @@ are re-made after every engine upgrade.
|
|
|
130
130
|
## Engine documentation (not shipped in the wheel — read in the engine repo / on GitHub)
|
|
131
131
|
|
|
132
132
|
- **Concepts** + **Architecture** — the mental model and the engine/product boundary.
|
|
133
|
-
- **Installation** + **Configuration** + **Quickstart** — `uv add`, ArcadeDB, the model provider, `EngineConfig
|
|
133
|
+
- **Installation** + **Configuration** + **Quickstart** — `uv add`, ArcadeDB, the model provider, `EngineConfig`;
|
|
134
|
+
Configuration's "A self-hosted model server" deploys your own Qwen server (`adeploy_model_server`) and uses its
|
|
135
|
+
model id like any model.
|
|
134
136
|
- **Workspaces** (`docs/workspaces.md`) — one corpus and one `EngineConfig` per tenant; what applies per
|
|
135
137
|
workspace, per call and per process; document metadata; how a config change takes effect.
|
|
136
138
|
- **Domain adaptation** (`docs/domain-adaptation/`) — the build sequence + companions (ontology, KG, ER,
|
|
@@ -114,6 +114,8 @@ code-review-and-quality, using-agent-skills · plus **Graphify** (builds/queries
|
|
|
114
114
|
your own libs against `project`.
|
|
115
115
|
- The reference pack (contract/compliance) is the engine's EXAMPLE, not your domain — author your
|
|
116
116
|
own .ttl pack + capabilities.
|
|
117
|
+
- Self-hosted model: deploy it with adeploy_model_server (the locked qwen-vllm-modal setup) and put
|
|
118
|
+
server.model_id in EngineConfig.models; never hand-edit VLLM_BASE_URL for it.
|
|
117
119
|
- Workspaces: one corpus + one EngineConfig + one cache_dir per tenant; register capabilities once
|
|
118
120
|
per process; the engine's docs/workspaces.md says what is per workspace, per call, per process.
|
|
119
121
|
- Per task: ground, define the contract, failing test (TDD), implement to green, verify, short ADR
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# DRAFT, not filed: Laya issue on the temperature range mismatch
|
|
2
|
+
|
|
3
|
+
A draft issue for the Laya repository (https://github.com/NandhaKishorM/laya). Not filed; filing it is a separate,
|
|
4
|
+
explicit step. It names no customer, product or dataset beyond what is public. Background: ADR-0129.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
**Title:** `finetune_single_device.py` fits temperatures in [0.1, 10] but the runtime only serves [0.5, 5]
|
|
9
|
+
|
|
10
|
+
**Summary.** The research fine-tuning script fits each question type's temperature by NLL and clips it to
|
|
11
|
+
[0.1, 10]. The runtime accepts [0.5, 5] (`laya/common.py`, `TEMP_MIN = 0.5`, `TEMP_MAX = 5.0`) and clamps anything
|
|
12
|
+
outside, with a load-time `RuntimeWarning` ("this checkpoint ships invalid temperatures or values outside [0.5, 5]
|
|
13
|
+
... Treat confidence from the affected entries as uncalibrated"). So a checkpoint produced by the documented
|
|
14
|
+
training path can load with a temperature the runtime will not serve.
|
|
15
|
+
|
|
16
|
+
**Where.**
|
|
17
|
+
|
|
18
|
+
- Training: `research/scripts/finetune_single_device.py`, line 154 (at the 0.3.22 commit, `6d942c9`):
|
|
19
|
+
`return float(torch.clamp(log_t.exp(), 0.1, 10.0).item())`
|
|
20
|
+
- Runtime: `laya/common.py`, `TEMP_MIN = 0.5`, `TEMP_MAX = 5.0`, applied by `clamp_temperature` when an `Agent` loads
|
|
21
|
+
`rl_agent_config.json`. The runtime's own calibrator (`laya.calibrate.fit_one_temperature`) already clamps to the
|
|
22
|
+
runtime range, so only the research script disagrees.
|
|
23
|
+
|
|
24
|
+
**What we saw.** 15 checkpoints fine-tuned from the English ModernBERT-large base with this script (laya 0.3.22,
|
|
25
|
+
single device). 9 of 15 have a `choice` temperature (`temperature[0]`) above 5: 10.0, 9.998, 10.0, 7.280, 7.129,
|
|
26
|
+
6.402, 6.202, 6.109, 5.637. The three at or near 10.0 sit on the script's clip, so their unconstrained fit was
|
|
27
|
+
higher still. The other six are within range.
|
|
28
|
+
|
|
29
|
+
**Effect.** For `choice` questions the clamp leaves the option ranking unchanged (one scale per question), so
|
|
30
|
+
argmax and top-k are stable: across 5,400 paired predictions (served 5.0 against the shipped value) no abstain
|
|
31
|
+
decision changed and every top-k difference was a tie between options equal at 4 decimals. The probabilities do
|
|
32
|
+
change, by up to 0.22 here, and in the direction of overconfidence (a sharper distribution than the fit chose).
|
|
33
|
+
Anyone gating on `probabilities` or `answer_confidence` for these checkpoints is gating on uncalibrated values,
|
|
34
|
+
and the only signal is a load-time warning.
|
|
35
|
+
|
|
36
|
+
**Suggested fixes (any one).**
|
|
37
|
+
|
|
38
|
+
1. Clip the research script's fit to the runtime range (`TEMP_MIN`, `TEMP_MAX` from `laya.common`), or reuse
|
|
39
|
+
`laya.calibrate.fit_one_temperature`, so a trained checkpoint is always servable as fitted.
|
|
40
|
+
2. If temperatures above 5 are legitimate for small fine-tunes (the fit says the model is overconfident), widen the
|
|
41
|
+
runtime range to match the training clip, so the shipped value is served and the warning is not raised for a
|
|
42
|
+
valid fit.
|
|
43
|
+
3. At minimum, have the training script warn (or record `"temperature_bound_limited": true` in
|
|
44
|
+
`rl_agent_config.json`) when the fit lands outside the runtime range, so the mismatch is caught at training time
|
|
45
|
+
rather than at load.
|
|
46
|
+
|
|
47
|
+
**Workaround we use.** We rank by the answer and do not gate on its probability, and we document that these
|
|
48
|
+
checkpoints' probabilities are uncalibrated. A refit with the runtime calibrator (`records_from_labeled` +
|
|
49
|
+
`fit_temperature_map`, saved with `Agent.save_calibration`) would give in-range values.
|
|
@@ -21,7 +21,7 @@ crosses corpora: every read and write goes through the handle's store.
|
|
|
21
21
|
| scope | what | how you set it |
|
|
22
22
|
|---|---|---|
|
|
23
23
|
| **per workspace** | the corpus and everything stored in it, including document metadata | `open_workspace(config, corpus=...)`; `IngestSource(metadata=...)` |
|
|
24
|
-
| per workspace | the model for each role (`ModelRole`) | `EngineConfig.models`: ahead of `RAG_MODEL_<ROLE>` / `RAG_MODEL_ALL` for every engine call that takes the workspace (`aingest`, the invokers and the MCP tools on them, `agenerate_answer`, `ajudge_spans`) |
|
|
24
|
+
| per workspace | the model for each role (`ModelRole`), including a self-hosted server's `model_id` ([A self-hosted model server](configuration.md#a-self-hosted-model-server-qwen-on-modal)) | `EngineConfig.models`: ahead of `RAG_MODEL_<ROLE>` / `RAG_MODEL_ALL` for every engine call that takes the workspace (`aingest`, the invokers and the MCP tools on them, `agenerate_answer`, `ajudge_spans`) |
|
|
25
25
|
| per workspace | the embedding profile, the ingestion tuning, each pack's options | `EngineConfig.embeddings`, `EngineConfig.options` |
|
|
26
26
|
| **per call** | the caches (parse, chunk, decisions) | the `cache_dir` you pass to `aingest` / `evaluate_ingestion` |
|
|
27
27
|
| per call | usage metering and trace grouping | `measure_usage()`, `traced_run(...)` around the call |
|