rag-wright 0.3.1__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.3.1/src/rag_wright/.agents → rag_wright-0.5.0/.claude}/skills/building-an-ingestion-capability/SKILL.md +9 -4
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.claude/skills/creating-evals/SKILL.md +11 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.claude/skills/laya/SKILL.md +20 -0
- {rag_wright-0.3.1/src/rag_wright/.agents → rag_wright-0.5.0/.claude}/skills/qwen-vllm-modal/SKILL.md +20 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.claude/skills/using-the-rag-wright-engine/SKILL.md +21 -2
- rag_wright-0.5.0/.release-please-manifest.json +3 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/CHANGELOG.md +31 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/CLAUDE.md +4 -4
- {rag_wright-0.3.1 → rag_wright-0.5.0}/PKG-INFO +6 -3
- {rag_wright-0.3.1 → rag_wright-0.5.0}/README.md +2 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/ARCHITECTURE_OVERVIEW.md +2 -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.3.1 → rag_wright-0.5.0}/docs/adr/README.md +4 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/api/README.md +46 -6
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/api/pack_sdk.md +3 -9
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/architecture.md +10 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/concepts.md +4 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/configuration.md +81 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/domain-adaptation/README.md +4 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/domain-adaptation/authoring-capabilities.md +6 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/domain-adaptation/kg-construction.md +33 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/installation.md +2 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/reference-pack.md +6 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/specs/public-surface/plan.md +10 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/specs/public-surface/rulewright-migration-0.3.0.md +7 -2
- rag_wright-0.5.0/docs/specs/public-surface/rulewright-migration-0.4.0.md +76 -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.3.1 → rag_wright-0.5.0}/docs/templates/product-starter/CLAUDE.md.template +5 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/templates/product-starter/playbook.md.template +4 -0
- rag_wright-0.5.0/docs/upstream/laya-temperature-range-mismatch.md +49 -0
- rag_wright-0.5.0/docs/workspaces.md +76 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/pyproject.toml +5 -2
- {rag_wright-0.3.1/.claude → rag_wright-0.5.0/src/rag_wright/.agents}/skills/building-an-ingestion-capability/SKILL.md +9 -4
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +11 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/laya/SKILL.md +20 -0
- {rag_wright-0.3.1/.claude → rag_wright-0.5.0/src/rag_wright/.agents}/skills/qwen-vllm-modal/SKILL.md +20 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/using-the-rag-wright-engine/SKILL.md +21 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/__init__.py +14 -4
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/invoke.py +4 -4
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/workspace.py +39 -6
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/__init__.py +1 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/answer_generator.py +1 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/manifests.py +2 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/rlm_chunking.py +1 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/vision_to_text.py +2 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/contracts/ingestion.py +26 -3
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/ingestion/builder.py +16 -6
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/ingestion/evaluate.py +126 -6
- rag_wright-0.5.0/src/rag_wright/models/__init__.py +8 -0
- rag_wright-0.5.0/src/rag_wright/models/model_servers.py +166 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/models/profiles.py +38 -11
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/models/seam.py +4 -3
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/pack_sdk/__init__.py +2 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +2 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +1 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +4 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/function_families.py +2 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +3 -3
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +2 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +11 -7
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +4 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/skills/rlm/agent.py +2 -2
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/store/arcadedb.py +2 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/util/concurrent.py +3 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tasks.md +6 -4
- rag_wright-0.5.0/tests/api/test_open_workspace_reconfig.py +84 -0
- rag_wright-0.5.0/tests/api/test_workspace_models.py +130 -0
- rag_wright-0.5.0/tests/ingestion/test_document_metadata.py +56 -0
- rag_wright-0.5.0/tests/ingestion/test_evaluate_labels.py +106 -0
- 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.5.0/tests/models/test_no_gemma_default.py +42 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_profile_seam.py +1 -1
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_clause_function_classifier.py +15 -0
- rag_wright-0.5.0/tests/store/test_document_metadata_live.py +57 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_kg_read.py +8 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/uv.lock +15 -11
- rag_wright-0.3.1/.release-please-manifest.json +0 -3
- rag_wright-0.3.1/src/rag_wright/models/__init__.py +0 -8
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.claude/settings.json +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.claude/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.claude/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.claude/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.env.example +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.github/workflows/publish.yml +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.github/workflows/release-please.yml +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/.gitignore +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/LICENSE +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/SPEC.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/conftest.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/ArcadeDB_Local.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/OBSERVABILITY.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0001-stack-and-library-choices.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0004-entity-disambiguation.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0005-relational-golden-set.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0006-model-profile.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0007-arcadedb-store-schema.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0032-nl-to-type-two-step-reason-emit-on-gemma.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0038-full-cuad-kg-on-gcp-gpu-vm-and-gcs-backup.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0042-clause-level-span-id-provenance-and-content-hash-backfill.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0055-confidence-out-of-band.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0057-async-engine-architecture.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0058-structure-first-chunking.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0067-domain-pack-retargeting.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0086-streaming-cost-capture.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0090-affiliate-of-extraction.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0091-retire-partyto-edge.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0092-idempotent-write-graph.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0093-entities-by-name-seam.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0094-workspace-document-scope.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0095-span-page-provenance.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0098-invoke-time-document-scope.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0100-profile-based-model-routing.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0107-requirement-page-provenance.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0118-engine-core-api-vs-ard-adapter-free-impl-ref-client.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0119-jev-typed-decision-model-for-compliance-closed-set-fields.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0127-retire-the-okf-code.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/README.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/design/deontic-applicability-routing.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/design/semantic-subject-segmentation.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/design/unify-subject-preprocessing.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/engine-issues/0037-closed-vocab-drops-verbatim-values-to-other.md +0 -0
- {rag_wright-0.3.1 → 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.3.1 → 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.3.1 → 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.3.1 → rag_wright-0.5.0}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
- {rag_wright-0.3.1 → 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.3.1 → 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.3.1 → 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.3.1 → 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.3.1 → 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.3.1 → 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.3.1 → rag_wright-0.5.0}/docs/archive/engine-issues/0047-an-exact-deepagents-pin-transitively-pins-every-consumer.md +0 -0
- {rag_wright-0.3.1 → 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.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-01_issue-0013-recall-first-actor-gate_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-04_issue-0016-thread-safe-embedder_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-05_tagparse-ingestion-and-granite-4.2_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_issue-0029-idempotent-write-graph_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_issue-0030-entities-by-name_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_rename-run-ad-compliance-check_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-failclosed-and-nodrift_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-validate-ingested-set_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0031-workspace-document-scope_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0032-span-page-provenance_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-10_issue-0034-invoke-time-document-scope_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-11_issue-0035-followup-derived-guard_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-11_issue-0035-mcp-no-model-tenant_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-14_document-signals-off-citation_0044_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-16_qwen3-27b-single-a100-serving-profile_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-18_fp8-kv-16k-single-a100_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-answers_from_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-scoping-questions_rulewright.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/misc/.gitkeep +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/plans/Corpus_Acquisition.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/plans/async-migration.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/plans/demo_plan.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/contract_pipeline_explainer.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/corpus_ingest_recipe.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/domain-adaptation/_engine-gaps.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/domain-adaptation/classification-and-decision-models.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/domain-adaptation/entity-resolution.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/domain-adaptation/ontology-authoring.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/classifier_model_ab.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/compliance_demo.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/compliance_gate_cc7.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/compliance_rung2_cc7.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/dg_model_ab.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/function_gate_recall.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/generation_robustness_b_vs_c.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/nl_to_type_cu-d2.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/ocr_benchmark.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/prod1_readiness.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/prod2_readiness.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/query_side_model_ab.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/silver_granite_vs_gemma4.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/silver_provider_routing.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/playbook.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/product/capability_profiles.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/product/contracts_product_roadmap.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/product/engine-api-migration-handoff.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/product/engine_async_api.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/product/new-domain-build-sequence.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/product/seam-adaptation-guide.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/proposals/new-domain-developer-journey.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/proposals/ontology-induction.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/quickstart.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/releasing.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/specs/engine-platform/SPEC.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/specs/engine-platform/TASKS.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/specs/engine-prep/plan.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/specs/ingestion-hooks/plan.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/templates/product-starter/README.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/templates/product-starter/dependabot.yml +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/acord.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/acord_retrieval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/boundary_residue_gold.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/build_golden.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/compliance_demo/subjects/post_violation.txt +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/condensed_pipeline.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/contract_parity_live.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/contractnli_judge.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/cuad_highlight.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/embedded_eval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/full_pipeline_rerank.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/function_ceiling.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/function_property_rerank.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/function_rerank.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/gate1_chunker_ab.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/gate2_hybrid_rerank.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/golden/relational/set.json +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/golden.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/ground_discriminator_rerank.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/harness.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/ingestion_live_smoke.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/kg_primary.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/kg_property_rerank.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/listwise_rerank.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/multihop.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/nl_to_type.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/relational_eval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/residual_decision_gold.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/segmenter_eval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/semantic_judge_gold.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/test_acord.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/test_acord_retrieval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/test_harness.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/test_multihop_set.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/eval/unit_grouper_eval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/examples/quickstart.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/plan.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/release-please-config.json +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ab_model_overlap.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/acord_unify.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/acquire_acord.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/acquire_cuad.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/acquire_ecfr.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/acquire_edgar.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/acquire_ftc_255.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/acquire_prod1_corpus.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/audit_reclass_flips.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/author_leg_a_silver_key.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/backfill_affiliations.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/backfill_clause_span_id.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/backfill_edge_source_doc_id.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/backup_kg_to_gcs.sh +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/bootstrap_template_capture.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/bootstrap_typed_edges.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/build_api_docs.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/build_api_docs.sh +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/build_cuad_clause_cache.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/build_function_routing_map.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_assemble_v2.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_assemble_v3.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_generate_hard_negatives.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_generate_hard_positives.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_generate_training.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_hybrid.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_hybrid2.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_jev_actor.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_jev_claimtypes.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_jev_operative.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_label_spans.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_laya_prep.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_laya_train.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_prep_operative.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_relabel_rubric.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_relabel_rubric2.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/cic1_train_operative.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/compare_extraction_models.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/compliance_actor_gate_smoke.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/compliance_engine_smoke.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/compliance_policy_demo.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/curate_taxonomy_gaps.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/dg_model_ab.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/diagnose_acord_knn_expansion.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/diagnose_acord_knn_rerank.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/diagnose_acord_leg_pool.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/diagnose_acord_legs.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/diagnose_acord_pool.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/diagnose_acord_relstructure.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/diagnose_acord_retrieval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/distill/eval_all.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/distill/eval_ce.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/distill/eval_listwise_b.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/distill/export_ce_dataset.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/distill/extract_features.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/distill/listwise_variants.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/distill/relational_features.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/distill/train_ce.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/distill/train_modal.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/enrich_edgar_candidates.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/eval_chunking_ab.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/eval_compliance_gold.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/extract_arcadedb_docs.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/fetch_reference_models.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/generate_contract_python.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/git_post_commit_graphify.sh +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/granite_chunker_assess.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/graph_status.sh +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ingest_acord.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ingest_compliance_async_prod2.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ingest_compliance_document_prod2.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ingest_compliance_prod2.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ingest_cuad.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ingest_cuad_full.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ingest_ftc_compliance.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ingest_prod1.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ingest_prod1_async.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ingest_smoke.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/install_git_hooks.sh +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/label_new_functions.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/legb_function_gate_recall.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/make_compliance_fixtures.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/make_compliance_gold.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/mcp_compliance_agent_demo.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/mcp_intra_document_qa_smoke.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/mcp_query_legs_agent_demo.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/measure_generation_robustness.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/measure_silver.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/merge_docs_into_framework.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/migrate_silver_evidence_autotag.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/migrate_span_fields.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/mine_scarce_functions.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_arcadedb.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_backfill.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_exception_linking.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_gemma4_vllm.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_gemma4_vllm_snapshot.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_granite_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_granite_throughput.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_granite_vllm_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_query_app.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_qwen3_27b_bench.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_qwen3_27b_snapshot.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/modal_stack_a100.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ocr_benchmark.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ocr_preprocess.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/ontology_dimension_check.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/phase_a_leg_validate.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/populate_clause_kg.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/populate_entity_graph.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/populate_entity_graph_extracted.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/populate_property_store.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/prep_relational_verification.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/publish_manifests.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/reclassify_kg.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/refresh_framework_graph.sh +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/revert_reclass_flips.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/run_acord_retrieval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/run_clause_exception_linking.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/semantic_judge_live_validate.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/semantic_judge_probe.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/snapshot_leg_a_eval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/stack_correctness_validate.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/table_retrieval_smoke.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/train_function_classifier.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/train_legalbert_function.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/train_legalbert_modal.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/typed_rerank_validate.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/verify_wheel_install.sh +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/vllm_extraction_ab.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/vllm_kg_query_validate.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/scripts/vllm_raw_diagnostic.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/.agents/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/answers.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/config.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/discover.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/documents.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/ids.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/kg.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/mcp.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/tracing.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/api/usage.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/ard.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/chunk_read.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/chunk_write.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/disambiguation.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/document_parse.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/document_scope.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/embedding.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/entity_resolution.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/fusion.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/graph_query.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/graph_storage.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/hybrid_search.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/invoke.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/jev_decision.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/parsing.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/registry.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/remote_encoders.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/reranking.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/retrieval_core.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/scan_quality.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/contracts/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/contracts/chunk.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/contracts/extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/contracts/graph.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/contracts/identifiers.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/contracts/provenance.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/contracts/span.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/corpus/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/corpus/canonicalize.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/corpus/document_parser.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/corpus/embedded.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/corpus/http.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/ingestion/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/ingestion/group.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/ingestion/layout.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/ingestion/segment.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/ingestion/tables.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/models/tag_structured.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/models/tracing.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/models/usage.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/models/weights.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/ontology/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/ontology/pack_schema.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/ontology/registry.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/invokers.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/pack.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/options.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/pack.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/packs/reference_seam.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/py.typed +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/skills/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/skills/generation/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/skills/generation/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/skills/rlm/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/skills/rlm/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/spans/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/spans/page_map.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/store/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/store/chunk_text.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/store/seam.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/subgraphs/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/subgraphs/observability.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/subgraphs/scaffold.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/util/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/src/rag_wright/util/spacy_model.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_answers_exports.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_bytes_ingest.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_capability_reexports.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_decision_swap_doc_example.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_discover.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_documents.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_e2e.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_invoke.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_kg.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_mcp.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_metering_tracing_exports.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_model_role_export.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_options.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_pack_sdk.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_pack_store.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_usage.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/api/test_workspace.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/arch/domain_vocabulary_baseline.json +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/arch/test_api_docs_current.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/arch/test_doc_references.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/arch/test_engine_domain_vocabulary.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/arch/test_import_contracts.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/arch/test_packs_use_store_primitives.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/arch/test_shipped_skills.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/async_helpers.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_answer_generator.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_answer_generator_async.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_assertion_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_authoring_contract.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_chunk_read.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_chunk_write.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_claim_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_clause_exception_linking.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_compliance_judgment.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_compliance_store.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_contract_kg_serve.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_contract_kg_store.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_dg_adapter.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_dg_async.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_dg_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_dg_model_seam.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_dg_private.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_disambiguation.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_document_scope.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_embedding.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_embedding_profiles.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_entity_resolution.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_fusion.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_graph_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_graph_query.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_graph_storage.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_highlight_serve.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_hybrid_search.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_jev_decision.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_manifest_validation.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_manifests.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_parsing.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_parties_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_query_function_classifier.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_query_understanding.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_registry.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_remote_encoders.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_repair_partition.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_requirement_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_reranking.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_retrieval_core.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_rlm_chunking.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_rlm_chunking_async.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_rlm_method.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_rlm_synthesis.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_runtime_registry.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_scan_quality.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_span_relevance_judgment.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_structural_model_fallback.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_tiered_ocr.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/capabilities/test_vlm_ocr.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/compliance_fakes.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/conftest.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_canonical_source_doc_id.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_chunk_record.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_compliance.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_function.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_function_routing.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_identifiers.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_ingestion_hooks.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_jurisdiction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_ontology.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_property.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_provenance.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/contracts/test_value_match.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/_ooxml_fixtures.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/test_canonicalize.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/test_cuad.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/test_cuad_ingestion.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/test_document_parser.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/test_edgar.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/test_embedded.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/test_gcs_ingestion.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/test_http.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/test_parse_wire2.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/corpus/test_selection.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/eval/test_contractnli_judge.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/eval/test_cuad_highlight_metrics.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/eval/test_kg_property_rerank.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/eval/test_nl_to_type_metrics.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/eval/test_relational_eval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/fixtures/ingestion/textile_test_report.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/fixtures/leg_a_silver/README.md +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/fixtures/table-bearing-contract.pdf +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/foundation/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/foundation/test_arcadedb_hybrid.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/foundation/test_model_seam_structured.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ingestion/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ingestion/test_builder.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ingestion/test_evaluate.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ingestion/test_layout_segmenter.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ingestion/test_spreadsheet_content.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ingestion/test_table_rows.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ingestion/test_tuning.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ingestion/test_unit_grouper.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ingestion/test_unit_representative.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/journey/incidents_domain.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/journey/incidents_pack.ttl +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/journey/test_incidents_journey.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/journey/test_pack_schema.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/mcp/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/mcp/test_compliance_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/mcp/test_intra_document_qa_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/mcp/test_relational_qa_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_async_infra.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_models_dir.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_profile_routing.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_seam_async.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_seam_retry.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_seam_stream.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_serving_seam.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_serving_wiring.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_tag_structured.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_tag_structured_async.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_tracing.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/models/test_usage.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ontology/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ontology/test_clause_template.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ontology/test_derivation.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ontology/test_entity_taxonomy.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ontology/test_template_captured_in_ttl.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/reference/test_compliance_reference.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/reference/test_contract_seam.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/scripts/test_eval_chunking_ab.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/scripts/test_eval_classifier_ab.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/scripts/test_fetch_reference_models.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/skills/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/skills/test_ingestion_skill_example.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_boundary.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_classifier_property_extractor.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_clause_function_classifier_async.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_clause_kg_extractor.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_clause_kg_extractor_async.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_dim_classifier.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_dim_fleet_live.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_function_classifier.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_hybrid_classifier.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_hybrid_property_extractor.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_legalbert_classifier.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_model_capabilities.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_new_function_labels.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_page_map.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_property_extractor.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_property_grounding.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_reclassify.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_residual_decision.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_scarce_function_labels.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_segment.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_segmentation_vocab.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_semantic_judge.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_setfit_clause_adapter.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_setfit_probabilities.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_span_offsets.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_stage_labels_0005.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_symbolic_validation.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/spans/test_tag_clause_extractor.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_affiliation_backfill.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_arcadedb_clause_kg.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_arcadedb_contract.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_arcadedb_property.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_arcadedb_requirement_sources.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_arcadedb_schema.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_arcadedb_span.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_chunk_text.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_concurrent_writes.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_contract_kg_store_live.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_document_scope.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_engine_domain_neutral.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_entities_by_name.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_kg_edges.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_kg_mutations.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_kg_write.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_neutral_schema.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/store/test_write_graph_idempotent.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_async_ingestion.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_clause_results.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_compliance_check.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_compliance_ingestion.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_graph_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_ingest_knobs.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_intra_document_qa.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_observability.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_partial_entry_contract.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_relational_qa.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_requirement_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_scaffold.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_semantic_chunking.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/test_backfill_clause_span_id.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/test_dg_model_ab.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/test_populate_clause_kg.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/test_populate_entity_graph.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/util/__init__.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/util/test_concurrent.py +0 -0
- {rag_wright-0.3.1 → rag_wright-0.5.0}/tests/util/test_spacy_model.py +0 -0
|
@@ -49,7 +49,9 @@ The unit is the text one extractor call reads. Get it right first; every other c
|
|
|
49
49
|
- Units are capped at `IngestionTuning.max_unit_chars` (default 6000); a split table repeats its header row in each
|
|
50
50
|
continuation unit.
|
|
51
51
|
- A source is a file path or uploaded bytes: `IngestSource(path=...)`, or `IngestSource(data=..., name=...)` (the
|
|
52
|
-
name's extension picks the format), so an upload from object storage needs no temp file.
|
|
52
|
+
name's extension picks the format), so an upload from object storage needs no temp file. Attach your own fields to
|
|
53
|
+
a document with `IngestSource(metadata={...})`: they land on its `Document` node (and its embedded files') in the
|
|
54
|
+
same write, for `kg_read(ws, "Document", where=...)` to filter on.
|
|
53
55
|
- If your documents mark units in a way layout does not show (a numbering scheme, a domain heading convention),
|
|
54
56
|
override `unit_grouper=` or pass a `boundary_decider=` (candidate line texts -> "starts a new unit?" per text) to
|
|
55
57
|
settle the lines the default grouper is unsure of. Domain conventions belong in your pack, never in the engine.
|
|
@@ -59,8 +61,10 @@ The unit is the text one extractor call reads. Get it right first; every other c
|
|
|
59
61
|
Without it a unit is represented by its first member, which is usually its heading: the weakest text to tag and a
|
|
60
62
|
poor citation. The reference contracts pack passes `provision_vote` (ADR-0126): the label with the highest
|
|
61
63
|
probability summed over the non-heading members, cited by the member most confident in it; on 510 CUAD contracts
|
|
62
|
-
that beat heading-first by about 10 points.
|
|
63
|
-
|
|
64
|
+
that beat heading-first by about 10 points. Build the gold BEFORE you choose a rule: for a sample of your documents,
|
|
65
|
+
a short snippet from each unit you can label, with its expected label. Then compare rules with
|
|
66
|
+
`evaluate_ingestion(..., span_tagger=..., unit_representative=..., unit_labels=...)` (leave out
|
|
67
|
+
`unit_representative` for the first-member baseline) and keep the rule that labels best (the creating-evals skill).
|
|
64
68
|
|
|
65
69
|
## 3. Declare your record types in the pack `.ttl`
|
|
66
70
|
|
|
@@ -143,7 +147,8 @@ network-bound work inside it; the engine runs up to `IngestionTuning.extract_con
|
|
|
143
147
|
|
|
144
148
|
## 6. Verify (definition of done)
|
|
145
149
|
|
|
146
|
-
1. `evaluate_ingestion` passes on a representative sample of YOUR documents (not a hand-picked easy one).
|
|
150
|
+
1. `evaluate_ingestion` passes on a representative sample of YOUR documents (not a hand-picked easy one). If your
|
|
151
|
+
units carry labels, its `labels` report on your gold meets the bar you set, with the confusions understood.
|
|
147
152
|
2. A live ingest of that sample: no dead letters, `extraction_failures` explained, records cite spans
|
|
148
153
|
(`kg_read(ws, "<your type>", fields=["span_id"])`), and `span_positions(ws, doc_id)` gives the citation positions.
|
|
149
154
|
3. A hermetic test of your extractor on fixed units (no model calls in the default suite; the engine's test network
|
|
@@ -90,6 +90,17 @@ on a diagnostic).
|
|
|
90
90
|
- **Ingestion structure**: `evaluate_ingestion` (in `rag_wright.api`) is the packaged structural eval of the
|
|
91
91
|
ingestion hooks (tiling, table-row integrity, layout respect, coverage) on your own sample documents. Gate
|
|
92
92
|
patterns: `eval/segmenter_eval.py`, `eval/unit_grouper_eval.py`.
|
|
93
|
+
- **Unit labelling** (when a unit's leading tag is a label something acts on): the same call with your
|
|
94
|
+
`span_tagger`, any `unit_representative` and `unit_labels`, the gold `{<file name>: [{"text": <a snippet that
|
|
95
|
+
occurs in exactly one unit>, "label": <expected, "" for none>}]}`. It needs no knowledge graph, so build it before
|
|
96
|
+
the first ingest: label the units of a representative sample (headings, short fragments and units that should
|
|
97
|
+
carry no label included, not only clean examples). `labels` reports accuracy, per-label recall and precision, and
|
|
98
|
+
the confusion pairs, scored per unit. A snippet found in no unit or in several, and a unit whose snippets carry
|
|
99
|
+
different labels, are failures, because that gold cannot be scored (if your units hold several labelled things,
|
|
100
|
+
label the unit, not each thing in it).
|
|
101
|
+
Compare candidate representatives (and the first-member baseline) on the same gold. Reference example, numbers
|
|
102
|
+
only: the reference pack chose its rule this way on 510 documents with gold (ADR-0126): a vote over the non-heading
|
|
103
|
+
members labelled 56.6% of units correctly, against 46.8% for the first member (usually the heading).
|
|
93
104
|
|
|
94
105
|
## 3. Build the gold cheaply (without faking it)
|
|
95
106
|
- **Silver bootstrapping**: a higher-capability teacher (LLM, or a decision model) labels candidate items; CURATE
|
|
@@ -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.3.1/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 \
|
|
@@ -33,7 +33,8 @@ open-core and domain-neutral; your product brings the domain. Hard rules:
|
|
|
33
33
|
`IngestionReport`), its hook contracts (`Segmenter`, `SpanTagger`, `UnitGrouper`, `BoundaryDecider`,
|
|
34
34
|
`UnitRepresentative`, `BoundaryDiscoverer` with `default_chunk_discoverer(guidance=...)`, `Extractor`,
|
|
35
35
|
`RecordWriter`, `DocumentHook`, checked by `check_tiling`/`check_units`/`check_extraction`), `IngestionTuning`,
|
|
36
|
-
`IngestSource` (a `path`, or `data` + `name` for bytes; `table_mode`, `include_hidden_sheets`
|
|
36
|
+
`IngestSource` (a `path`, or `data` + `name` for bytes; `table_mode`, `include_hidden_sheets`, your own `metadata`
|
|
37
|
+
for the document's `Document` node) and
|
|
37
38
|
`evaluate_ingestion`. Your **pack's own code** (its capabilities, stores, graphs) also imports
|
|
38
39
|
`rag_wright.pack_sdk`: identifiers and provenance, the model seam, the LangGraph scaffold, the `Store` protocol, the
|
|
39
40
|
entity-graph building blocks (`build_graph_extraction`, `disambiguate`, `resolve_entities`, `EntityRules`,
|
|
@@ -67,6 +68,16 @@ contract/compliance worked example. The engine's `src/rag_wright/packs/reference
|
|
|
67
68
|
registers in its constructor). Without it `ainvoke_subgraph` raises `KeyError` and the decision-model paths fall back
|
|
68
69
|
silently to the LLM.
|
|
69
70
|
|
|
71
|
+
The catalog is **one per process** (a known limitation): it is shared by every workspace, and registering a slug
|
|
72
|
+
replaces it for all of them. Workspaces can differ in store, corpus and configuration, not in which implementation a
|
|
73
|
+
slug resolves to. Tenants that need different implementations of one slug run in separate processes, or use one slug
|
|
74
|
+
per implementation chosen per tenant in your code.
|
|
75
|
+
|
|
76
|
+
**Workspaces.** One corpus and one `EngineConfig` per tenant, a `cache_dir` per tenant, document metadata on
|
|
77
|
+
`IngestSource(metadata=...)`; models follow the workspace's `EngineConfig.models` in every call that takes it
|
|
78
|
+
(`use_workspace_models(ws)` for a call that does not). To change a tenant's config, open its corpus again with the
|
|
79
|
+
new config: a different config replaces the cached handle, no restart needed. `docs/workspaces.md` lists what applies per workspace, per call and per process.
|
|
80
|
+
|
|
70
81
|
Repository paths in this skill (`docs/`, `eval/`, `scripts/`, `tests/`, `src/`) are in the engine repository: read them there or on GitHub, at the tag matching your installed engine.
|
|
71
82
|
|
|
72
83
|
## 2. Ground before you write (graphify)
|
|
@@ -97,7 +108,8 @@ The engine's `docs/` are NOT shipped in the wheel — read them in the engine re
|
|
|
97
108
|
or on GitHub. Start with **Concepts** and **Architecture**, then the **domain-adaptation guide**
|
|
98
109
|
(`docs/domain-adaptation/README.md`) — the 9-step sequence this skill operationalizes — and its companions
|
|
99
110
|
(ontology authoring, KG construction, entity resolution, authoring capabilities, classification & decision models),
|
|
100
|
-
plus **Quickstart**, **
|
|
111
|
+
plus **Quickstart**, **Workspaces** (`docs/workspaces.md`: per workspace, per call, per process), **Reference
|
|
112
|
+
pack**, and the generated **API reference** (`docs/api/`).
|
|
101
113
|
|
|
102
114
|
## 4. Follow the build sequence
|
|
103
115
|
|
|
@@ -125,6 +137,13 @@ Work the domain-adaptation guide, grounding each engine call (step 2) and writin
|
|
|
125
137
|
6. **Build the product seam** — your thin layer over the engine API + registered caps (tenancy, orchestration,
|
|
126
138
|
the product tool surface). Wrap `open_workspace`/the invokers/`kg_read`/`measure_usage`.
|
|
127
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
|
+
|
|
128
147
|
**Using the decision model (Jev).** Register `jev_decision` (from `engine_capabilities()`) and set
|
|
129
148
|
`OPENROUTER_API_KEY` (`RAG_DECISION_MODEL` overrides the default profile `jev-1.13`). Without both, the reference
|
|
130
149
|
pack's decision paths silently fall back (to deterministic rules or the LLM); your own
|
|
@@ -4,6 +4,37 @@ 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
|
+
|
|
19
|
+
## [0.4.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.3.1...0.4.0) (2026-10-09)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### ⚠ BREAKING CHANGES
|
|
23
|
+
|
|
24
|
+
* **PS-17:** rag_wright.pack_sdk.DEFAULT_GENERAL is removed (name the model you want instead), and the legacy tag-parse extractor no longer runs a Gemma list pass by default (set RAG_INGEST_LIST_MODEL to keep one).
|
|
25
|
+
|
|
26
|
+
### Features
|
|
27
|
+
|
|
28
|
+
* **PS-13:** document metadata on IngestSource ([cf2372d](https://github.com/fzaidi-dai/RAG_Wright/commit/cf2372d6ed9ecde761b823d322f7944a221f59d5))
|
|
29
|
+
* **PS-14:** every role-based model call honours the workspace's EngineConfig.models ([a2d086a](https://github.com/fzaidi-dai/RAG_Wright/commit/a2d086a30026146fd78e068c647c12a3a2bd3c69))
|
|
30
|
+
* **PS-16:** a workspace's configuration change takes effect without a restart ([d5f0bcd](https://github.com/fzaidi-dai/RAG_Wright/commit/d5f0bcd5f3dc6a88634caf4a64d6728078a22752))
|
|
31
|
+
* **PS-R4:** unit-labelling eval in evaluate_ingestion ([2d33a31](https://github.com/fzaidi-dai/RAG_Wright/commit/2d33a3178a220b18c5c745d6f30168e1240a2abc))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Code Refactoring
|
|
35
|
+
|
|
36
|
+
* **PS-17:** no Gemma default anywhere ([427fac0](https://github.com/fzaidi-dai/RAG_Wright/commit/427fac0f88b1772c2bb3fbbe47f1ec09f4f16d15))
|
|
37
|
+
|
|
7
38
|
## [0.3.1](https://github.com/fzaidi-dai/RAG_Wright/compare/0.3.0...0.3.1) (2026-10-09)
|
|
8
39
|
|
|
9
40
|
|
|
@@ -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
|
|
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
|
-
> `rag_wright.pack_sdk` for a pack's code, enforced by import contracts and a domain-vocabulary guard). Next:
|
|
61
|
-
>
|
|
60
|
+
> `rag_wright.pack_sdk` for a pack's code, enforced by import contracts and a domain-vocabulary guard). Next:
|
|
61
|
+
> RuleWright moves from `docs/specs/public-surface/rulewright-migration-0.3.0.md` then `rulewright-migration-0.4.0.md`; PS-R4 (the unit-labelling eval) is done, unreleased. Before it,
|
|
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
|
|
@@ -76,7 +76,7 @@ The failure mode to avoid, which has happened before: a command fails with "modu
|
|
|
76
76
|
> historical/superseded docs are under `docs/archive/`, and the ADR index is `docs/adr/README.md`.
|
|
77
77
|
>
|
|
78
78
|
> **The consolidated doc set** (engine-prep WS2/WS4, audited in ING-5): `docs/concepts.md`, `docs/architecture.md`,
|
|
79
|
-
> `docs/installation.md`, `docs/configuration.md`, `docs/quickstart.md` (+ `examples/quickstart.py`),
|
|
79
|
+
> `docs/installation.md`, `docs/configuration.md`, `docs/workspaces.md`, `docs/quickstart.md` (+ `examples/quickstart.py`),
|
|
80
80
|
> `docs/reference-pack.md`, the generated `docs/api/`, and the domain-adaptation guide
|
|
81
81
|
> `docs/domain-adaptation/` (ontology authoring, KG construction, entity resolution, authoring capabilities,
|
|
82
82
|
> classification & decision models) + `_engine-gaps.md`. The product-starter templates are
|
|
@@ -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
|
|
@@ -105,7 +107,8 @@ here so the engine is demoable out of the box — your product brings its own do
|
|
|
105
107
|
The whole doc set is under [`docs/`](docs/). Pick your path:
|
|
106
108
|
|
|
107
109
|
- **New here?** Read [Concepts](docs/concepts.md) (the mental model), then run the [Quickstart](docs/quickstart.md).
|
|
108
|
-
- **Installing / configuring?** [Installation](docs/installation.md) → [Configuration](docs/configuration.md)
|
|
110
|
+
- **Installing / configuring?** [Installation](docs/installation.md) → [Configuration](docs/configuration.md) →
|
|
111
|
+
[Workspaces](docs/workspaces.md) (what applies per workspace, per call and per process).
|
|
109
112
|
- **Building a product on the engine?** The [domain-adaptation guide](docs/domain-adaptation/) walks the whole
|
|
110
113
|
sequence (author a `.ttl` pack → build & register capabilities → eval-first → ingest → entity resolution → the
|
|
111
114
|
product seam); a coding agent should drive it with the `using-the-rag-wright-engine` skill.
|
|
@@ -52,7 +52,8 @@ here so the engine is demoable out of the box — your product brings its own do
|
|
|
52
52
|
The whole doc set is under [`docs/`](docs/). Pick your path:
|
|
53
53
|
|
|
54
54
|
- **New here?** Read [Concepts](docs/concepts.md) (the mental model), then run the [Quickstart](docs/quickstart.md).
|
|
55
|
-
- **Installing / configuring?** [Installation](docs/installation.md) → [Configuration](docs/configuration.md)
|
|
55
|
+
- **Installing / configuring?** [Installation](docs/installation.md) → [Configuration](docs/configuration.md) →
|
|
56
|
+
[Workspaces](docs/workspaces.md) (what applies per workspace, per call and per process).
|
|
56
57
|
- **Building a product on the engine?** The [domain-adaptation guide](docs/domain-adaptation/) walks the whole
|
|
57
58
|
sequence (author a `.ttl` pack → build & register capabilities → eval-first → ingest → entity resolution → the
|
|
58
59
|
product seam); a coding agent should drive it with the `using-the-rag-wright-engine` skill.
|
|
@@ -113,7 +113,7 @@ flowchart LR
|
|
|
113
113
|
dv --> fuse["vector.fuse"]
|
|
114
114
|
sv --> fuse
|
|
115
115
|
fuse --> pool["candidate pool (+ property/metadata boost)"]
|
|
116
|
-
pool --> rr["rerank (BGE reranker
|
|
116
|
+
pool --> rr["rerank (BGE reranker)"]
|
|
117
117
|
rr --> top["top-k, cited"]
|
|
118
118
|
```
|
|
119
119
|
|
|
@@ -210,7 +210,7 @@ Two registries:
|
|
|
210
210
|
| Chunking (single-call / RLM discoverer) | ingestion `chunk` |
|
|
211
211
|
| Embedding (BGE-M3, dense+sparse) | `index_spans`, query |
|
|
212
212
|
| Hybrid search (dense+sparse fuse) | `hybrid_search` / `span_hybrid_search` |
|
|
213
|
-
| Reranking (BGE reranker
|
|
213
|
+
| Reranking (BGE reranker) | query rerank stage |
|
|
214
214
|
| Graph extraction | clauses (classifier fleet + Jev residual values) + parties (docling-graph) + affiliations (tag-parse, only when a cue word is present) |
|
|
215
215
|
| Entity resolution | `resolve` (canonical id from the configured registry; EDGAR CIK for the CUAD corpus) |
|
|
216
216
|
| Ontology-driven schema/vocab | the `.ttl` layer (all stages) |
|
|
@@ -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.
|
|
@@ -124,9 +136,9 @@ When `auto` treats a table as a DATABASE (one unit per row): a header of `min_he
|
|
|
124
136
|
|
|
125
137
|
What counts as a record IDENTIFIER when linking an embedded file to a row: a token (4+ chars, contains a digit) on at most `max_rows` table rows and in at most `max_files` embedded files.
|
|
126
138
|
|
|
127
|
-
### `IngestSource(*, path: Optional[str] = None, data: Optional[bytes] = None, name: Optional[str] = None, doc_id: Optional[str] = None, table_mode: Literal['auto', 'record', 'block'] = 'auto', include_hidden_sheets: bool = True) -> None`
|
|
139
|
+
### `IngestSource(*, path: Optional[str] = None, data: Optional[bytes] = None, name: Optional[str] = None, doc_id: Optional[str] = None, table_mode: Literal['auto', 'record', 'block'] = 'auto', include_hidden_sheets: bool = True, metadata: Optional[dict[str, Any]] = None) -> None`
|
|
128
140
|
|
|
129
|
-
One document to ingest: either a file `path`, or in-memory `data` (bytes, e.g. an upload) with its file `name` (the extension picks the format); its `doc_id` (default: derived from the file name), how its tables are grouped (`auto` decides per table; `record` / `block` force one mode),
|
|
141
|
+
One document to ingest: either a file `path`, or in-memory `data` (bytes, e.g. an upload) with its file `name` (the extension picks the format); its `doc_id` (default: derived from the file name), how its tables are grouped (`auto` decides per table; `record` / `block` force one mode), whether hidden spreadsheet sheets are ingested, and the product's own `metadata` (PS-13): written onto the document's `Document` node in the same write as the engine's fields, and onto each embedded file's. Keys are identifiers that do not shadow an engine field (`doc_id`, `parent_doc_id`, `filename`, `media_type`, `sha256`); values are strings, numbers, booleans, None or lists of those. Read or filter it with `kg_read(ws, "Document", where={...})`; change it later with `kg_update`.
|
|
130
142
|
|
|
131
143
|
#### `IngestSource.read_bytes(self) -> 'bytes'`
|
|
132
144
|
|
|
@@ -142,7 +154,7 @@ Advanced: the individual stage functions bound to a workspace (its store, ingest
|
|
|
142
154
|
|
|
143
155
|
#### `IngestionPipeline.aingest(self, ws: 'Any', sources: 'Sequence[Union[str, Path, IngestSource]]', *, cache_dir: 'Union[str, Path]') -> 'IngestionReport'`
|
|
144
156
|
|
|
145
|
-
Ingest every source (and its embedded children) into the workspace `ws` (from `open_workspace`). `sources` are file paths or `IngestSource`s (a path, or in-memory bytes with a file name); `cache_dir` holds the content-hash-gated parse and chunk caches (a re-ingest of an unchanged file re-uses them). Documents run concurrently up to `tuning.document_concurrency`; a document that fails is dead-lettered in its `DocumentReport`, never raised. Returns the `IngestionReport`.
|
|
157
|
+
Ingest every source (and its embedded children) into the workspace `ws` (from `open_workspace`). `sources` are file paths or `IngestSource`s (a path, or in-memory bytes with a file name); `cache_dir` holds the content-hash-gated parse and chunk caches (a re-ingest of an unchanged file re-uses them). Documents run concurrently up to `tuning.document_concurrency`; a document that fails is dead-lettered in its `DocumentReport`, never raised. Returns the `IngestionReport`. Every model role resolves through the workspace's `EngineConfig.models` (PS-14).
|
|
146
158
|
|
|
147
159
|
### `IngestionReport(documents: 'list[DocumentReport]' = <factory>) -> None`
|
|
148
160
|
|
|
@@ -152,14 +164,18 @@ The result of `IngestionPipeline.aingest`: one `DocumentReport` per document (em
|
|
|
152
164
|
|
|
153
165
|
What ingesting one document did. Counts: `chunks`, `spans` (indexed), `units` (extracted), `records` (nodes written). `extraction_failures` (`{unit, anchor, reason}`) / `span_failures` (`{span_id, reason}`): the units / spans whose extraction or indexing failed; the rest of the document still lands. `skipped_hidden_sheets`: hidden spreadsheet sheets left out (`IngestSource.include_hidden_sheets=False`). `children`: the ids of embedded files and PDF attachments ingested as child documents (`parent_doc_id` is set on theirs); `embedded_skipped`: embedded files that could not be ingested. `links`: `AttachedTo` record links written, by confidence; `unmapped_links`: links whose record row could not be found. `dead_letter`: why the whole document failed (None when it landed).
|
|
154
166
|
|
|
155
|
-
### `IngestionEvaluation(documents: 'list[DocumentEvaluation]' = <factory>, failures: 'list[str]' = <factory>, unlabelled_tables: 'list[str]' = <factory
|
|
167
|
+
### `IngestionEvaluation(documents: 'list[DocumentEvaluation]' = <factory>, failures: 'list[str]' = <factory>, unlabelled_tables: 'list[str]' = <factory>, labels: 'Optional[LabelEvaluation]' = None) -> None`
|
|
156
168
|
|
|
157
169
|
The result of `evaluate_ingestion`: per-document measures, the `failures` (each check that did not hold, by document) and `unlabelled_tables` (tables no `table_labels` pattern matched). `passed` (property) is True when there are no failures.
|
|
158
170
|
|
|
159
|
-
### `DocumentEvaluation(doc: 'str', tiles: 'bool' = True, spans: 'int' = 0, units: 'int' = 0, table_rows: 'int' = 0, table_row_integrity: 'Optional[float]' = None, layout_respect: 'Optional[float]' = None, bare_heading_spans: 'int' = 0, headings_start_units: 'Optional[float]' = None, tables: 'int' = 0, tables_whole: 'Optional[float]' = None, furniture_in_units: 'int' = 0, coverage: 'Optional[float]' = None, cap_ok: 'bool' = True, table_modes: 'list[dict]' = <factory>, embedded_children: 'int' = 0, error: 'Optional[str]' = None) -> None`
|
|
171
|
+
### `DocumentEvaluation(doc: 'str', tiles: 'bool' = True, spans: 'int' = 0, units: 'int' = 0, table_rows: 'int' = 0, table_row_integrity: 'Optional[float]' = None, layout_respect: 'Optional[float]' = None, bare_heading_spans: 'int' = 0, headings_start_units: 'Optional[float]' = None, tables: 'int' = 0, tables_whole: 'Optional[float]' = None, furniture_in_units: 'int' = 0, coverage: 'Optional[float]' = None, cap_ok: 'bool' = True, table_modes: 'list[dict]' = <factory>, embedded_children: 'int' = 0, label_results: 'list[dict]' = <factory>, error: 'Optional[str]' = None) -> None`
|
|
160
172
|
|
|
161
173
|
One sample document's structural measures. Segmentation: `tiles` (spans tile every chunk), `table_row_integrity` (share of table rows that are their own span), `layout_respect` (share of spans inside one layout item), `bare_heading_spans`. Grouping: `headings_start_units` (share of headings that start a unit), `tables_whole` (share of tables kept whole or split by the record/header rule), `furniture_in_units` (page furniture that leaked into units), `coverage` (share of content spans in some unit), `cap_ok` (every unit within `max_unit_chars`). `table_modes`: the mode chosen per table. `error`: why the document could not be evaluated.
|
|
162
174
|
|
|
175
|
+
### `LabelEvaluation(gold: 'int' = 0, correct: 'int' = 0, accuracy: 'Optional[float]' = None, per_label: 'dict[str, dict]' = <factory>, confusions: 'list[dict]' = <factory>, unmatched: 'list[str]' = <factory>, ambiguous: 'list[str]' = <factory>, conflicting: 'list[str]' = <factory>) -> None`
|
|
176
|
+
|
|
177
|
+
Unit labelling against the gold (`evaluate_ingestion(unit_labels=...)`), scored per UNIT: snippets that land in the same unit with the same label count once. `gold`: units scored; `correct`: those whose label matches; `accuracy`: correct / gold. `per_label`: `{label: {gold, predicted, correct, recall, precision}}` over the gold units (precision is among the gold units predicted with that label; `None` when none were). `confusions`: `{gold, predicted, count}` for every wrong pair, most frequent first. `unmatched` / `ambiguous`: `"<doc>: <snippet>"` for a snippet found in no unit / in several. `conflicting`: `"<doc>: unit <i>: <labels>"` for a unit whose snippets carry different labels (not scored: one label cannot match them all). An empty label means the unit should carry none.
|
|
178
|
+
|
|
163
179
|
### `TableRow(*, table_ref: str, sheet: Optional[str] = None, page: Optional[int] = None, row_index: int, columns: list[str], values: list[str]) -> None`
|
|
164
180
|
|
|
165
181
|
ING-7: one data row of a parsed table, read from the parse's cell GRID (exact cell text, whitespace collapsed) -- whole even when the chunker split the table. `columns` is the table's first row as parsed; `row_index` is the 0-based grid row (data rows start at 1). Domain-neutral: what a column MEANS is the domain's decision.
|
|
@@ -224,10 +240,32 @@ The semantic boundary-discovery seam: decide chunk boundaries as a partition of
|
|
|
224
240
|
|
|
225
241
|
Resolve (and cache) the workspace for `corpus` (the backend database name) from `config`. Ensures the schema: the neutral engine types, plus `config.pack`'s declared types when set. Raises `RuntimeError` on a database whose `Span` type still has the pre-ING-8d field names (migrate it with `scripts/migrate_span_fields.py`). Returns an opaque `WorkspaceHandle`. `reset=True` drops + recreates the database (test/clean-slate) and bypasses the cache.
|
|
226
242
|
|
|
243
|
+
One handle per store and corpus is cached for the process. An equal `config` returns it; a different one (new models, options, credentials or pack) returns a new handle that replaces it from then on, so a configuration change takes effect without a restart (PS-16). The new handle reuses the store when the store settings and the pack are unchanged, and the query embedder when the embedding profile is unchanged; a call still holding the old handle finishes on the old config.
|
|
244
|
+
|
|
227
245
|
### `pack_store(ws: 'WorkspaceHandle', cls: 'Callable[..., _T]', *args: 'Any', **kwargs: 'Any') -> '_T'`
|
|
228
246
|
|
|
229
247
|
Build a pack's store extension (or any object that wraps the workspace store) over the workspace's store: `cls(<store>, *args, **kwargs)`, e.g. `pack_store(ws, MyPackStore)`. The store it receives implements the engine's `Store` protocol (`kg_read` / `kg_write` / `kg_edges` / `kg_count` / `kg_delete` / `kg_update` and the rest); the workspace keeps the store itself private, so this is the one way a product hands it to a pack.
|
|
230
248
|
|
|
249
|
+
### `use_workspace_models(ws: 'Any') -> 'Iterator[None]'`
|
|
250
|
+
|
|
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.
|
|
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
|
+
|
|
231
269
|
### `ainvoke_subgraph(name: 'str', inputs: 'dict', *, resources: 'WorkspaceHandle') -> 'Any'`
|
|
232
270
|
|
|
233
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).
|
|
@@ -380,10 +418,12 @@ The engine's generic ingestion pipeline: pass your `extractor` (a `Unit` -> `Uni
|
|
|
380
418
|
|
|
381
419
|
PS-R5b: the engine's default chunk-boundary rule (structural boundaries first; `chunk_model` refines only an over-cap section, through a domain-neutral prompt) with your domain's `guidance` added to that prompt (e.g. what a coherent unit is in your documents). Pass it as `build_ingestion(chunk_discoverer=...)`.
|
|
382
420
|
|
|
383
|
-
### `evaluate_ingestion(sources: 'Sequence[Union[str, Path, IngestSource]]', *, cache_dir: 'Union[str, Path]', tuning: 'Optional[IngestionTuning]' = None, segmenter: 'Optional[Segmenter]' = None, unit_grouper: 'Optional[UnitGrouper]' = None, table_labels: 'Optional[list[dict[str, Any]]]' = None) -> 'IngestionEvaluation'`
|
|
421
|
+
### `evaluate_ingestion(sources: 'Sequence[Union[str, Path, IngestSource]]', *, cache_dir: 'Union[str, Path]', tuning: 'Optional[IngestionTuning]' = None, segmenter: 'Optional[Segmenter]' = None, unit_grouper: 'Optional[UnitGrouper]' = None, table_labels: 'Optional[list[dict[str, Any]]]' = None, span_tagger: 'Optional[SpanTagger]' = None, unit_representative: 'Optional[UnitRepresentative]' = None, unit_labels: 'Optional[dict[str, list[dict[str, str]]]]' = None) -> 'IngestionEvaluation'`
|
|
384
422
|
|
|
385
423
|
Measure the ingestion hooks' structural fidelity on YOUR sample documents, before trusting them. Runs parse, chunk, segment and group only (no store, no model calls) with the default hooks or the `segmenter` / `unit_grouper` you pass, under `tuning`. Checks: spans tile the text, table rows stay whole, spans respect layout items, no bare-heading spans, headings start units, tables stay whole (or split per row for a record table), no page furniture in units, full coverage, units within the cap. `table_labels` (`[{"pattern": <regex on the header row>, "label": "record" | "block"}]`, first match wins) also checks each table's mode. Returns an `IngestionEvaluation`; tune `IngestionTuning` until `passed`.
|
|
386
424
|
|
|
425
|
+
Labelling (PS-R4): pass your `span_tagger` (and any `unit_representative`) with `unit_labels`, the gold `{<document file name>: [{"text": <a snippet that occurs in exactly one unit>, "label": <expected label, "" for none>}]}`, and `labels` (a `LabelEvaluation`) reports each gold unit's label against it: accuracy, per-label results, confusion pairs. The tagger is yours, so it may call models; nothing else does.
|
|
426
|
+
|
|
387
427
|
### `table_rows(source_document: 'Any') -> 'list[TableRow]'`
|
|
388
428
|
|
|
389
429
|
Every data row of every table in a parsed document (`parse_document` output), in document order.
|
|
@@ -184,9 +184,9 @@ Group into units (checked), attach table rows, extract each unit concurrently (p
|
|
|
184
184
|
|
|
185
185
|
Persist the records (the domain's writer, else `kg_write`). Returns the number of record nodes.
|
|
186
186
|
|
|
187
|
-
#### `IngestionStages.write_document_node(self, doc_id: 'str', *, parent_id: 'Optional[str]', filename: 'str', media_type: 'str', sha256: 'str') -> 'None'`
|
|
187
|
+
#### `IngestionStages.write_document_node(self, doc_id: 'str', *, parent_id: 'Optional[str]', filename: 'str', media_type: 'str', sha256: 'str', metadata: 'Optional[dict]' = None) -> 'None'`
|
|
188
188
|
|
|
189
|
-
|
|
189
|
+
The `Document` node: the engine's fields plus the product's `metadata` (PS-13), in one write.
|
|
190
190
|
|
|
191
191
|
#### `IngestionStages.write_child_links(self, parent_id: 'str', child: 'Any', row_spans: 'dict', rep: 'DocumentReport') -> 'None'`
|
|
192
192
|
|
|
@@ -244,12 +244,6 @@ str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str
|
|
|
244
244
|
|
|
245
245
|
Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to 'strict'.
|
|
246
246
|
|
|
247
|
-
### `DEFAULT_GENERAL`
|
|
248
|
-
|
|
249
|
-
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str
|
|
250
|
-
|
|
251
|
-
Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to 'strict'.
|
|
252
|
-
|
|
253
247
|
### `DEFAULT_RETRY`
|
|
254
248
|
|
|
255
249
|
Configuration for retrying nodes.
|
|
@@ -294,7 +288,7 @@ Composes `doc_start = chunk_doc_start + op.start`, `doc_end = chunk_doc_start +
|
|
|
294
288
|
|
|
295
289
|
### `model_for(role: 'ModelRole') -> 'str'`
|
|
296
290
|
|
|
297
|
-
Resolve a role to a model id. Precedence (
|
|
291
|
+
Resolve a role to a model id. Precedence: the active workspace's `EngineConfig.models` (PS-14, see `scoped_models`) > the ROLE-SPECIFIC override (`RAG_MODEL_<ROLE>`) > the ALL-ROLES override (`RAG_MODEL_ALL`, to point every role at one model for a quick cross-model test) > the documented default.
|
|
298
292
|
|
|
299
293
|
### `profile_for(model_id: 'str') -> 'ModelProfile'`
|
|
300
294
|
|
|
@@ -106,6 +106,16 @@ graph structure. The reference query capabilities are `intra_document_qa`, `type
|
|
|
106
106
|
See [`concepts.md`](concepts.md) for both seams in context, and [`configuration.md`](configuration.md) for the
|
|
107
107
|
knobs.
|
|
108
108
|
|
|
109
|
+
## Known limitations
|
|
110
|
+
|
|
111
|
+
- **One capability catalog per process.** The runtime catalog that `register_capability` fills is shared by every
|
|
112
|
+
workspace in the process, and registering a slug replaces it for all of them, including the later steps of a run
|
|
113
|
+
already in progress. Workspaces in one process can differ in store, corpus and configuration, but not in which
|
|
114
|
+
implementation a slug resolves to. A product whose tenants need different implementations of the same slug runs
|
|
115
|
+
them in separate processes. There is no plan to change this; raise it if a product needs it.
|
|
116
|
+
- **One handle per corpus, and per-process settings.** What applies per workspace, per call and per process, and
|
|
117
|
+
how a configuration change for an open corpus takes effect, is in [`workspaces.md`](workspaces.md).
|
|
118
|
+
|
|
109
119
|
## Pointers
|
|
110
120
|
|
|
111
121
|
- [`ARCHITECTURE_OVERVIEW.md`](ARCHITECTURE_OVERVIEW.md) — the detailed as-built pipeline (diagrams, model defaults,
|
|
@@ -118,9 +118,11 @@ report = await pipeline.aingest(ws, sources, cache_dir="cache/")
|
|
|
118
118
|
row), and the default writer uses `kg_write`. `document_hook(ws, source_document, chunks)` runs once per document
|
|
119
119
|
after its records are written (for example, a domain's entity graph).
|
|
120
120
|
- **Inputs and tuning.** `sources` are paths or `IngestSource` objects (a per-document `doc_id`, `table_mode` of
|
|
121
|
-
`auto`/`record`/`block`, `include_hidden_sheets
|
|
121
|
+
`auto`/`record`/`block`, `include_hidden_sheets`, and your own `metadata`, stored on the document's `Document`
|
|
122
|
+
node). Every structural threshold is in `IngestionTuning`; set it from
|
|
122
123
|
`evaluate_ingestion(sources, cache_dir=...)`, which scores tiling, layout respect, table-row integrity and coverage
|
|
123
|
-
on your own samples without any model call
|
|
124
|
+
on your own samples without any model call, and (given your span tagger and a small gold set of unit labels) how
|
|
125
|
+
well units are labelled. `table_rows(source_document)` reads a parsed table's rows from the
|
|
124
126
|
cell grid, whole even when the chunker split the table.
|
|
125
127
|
|
|
126
128
|
The reference contract pipeline (`contract_ingestion_pipeline`) drives these same stages with legal hooks. Hook signatures are in the
|