rag-wright 0.8.0__tar.gz → 0.9.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.8.0 → rag_wright-0.9.0}/.claude/skills/authoring-a-capability/SKILL.md +15 -8
- {rag_wright-0.8.0 → rag_wright-0.9.0}/.claude/skills/building-an-ingestion-capability/SKILL.md +23 -3
- {rag_wright-0.8.0 → rag_wright-0.9.0}/.claude/skills/creating-evals/SKILL.md +8 -6
- {rag_wright-0.8.0 → rag_wright-0.9.0}/.claude/skills/laya/SKILL.md +9 -7
- {rag_wright-0.8.0/src/rag_wright/.agents → rag_wright-0.9.0/.claude}/skills/qwen-vllm-modal/SKILL.md +13 -6
- {rag_wright-0.8.0/src/rag_wright/.agents → rag_wright-0.9.0/.claude}/skills/setfit/SKILL.md +7 -4
- {rag_wright-0.8.0/src/rag_wright/.agents → rag_wright-0.9.0/.claude}/skills/using-the-rag-wright-engine/SKILL.md +58 -7
- {rag_wright-0.8.0 → rag_wright-0.9.0}/.env.example +3 -2
- rag_wright-0.9.0/.release-please-manifest.json +3 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/CHANGELOG.md +9 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/CLAUDE.md +1 -1
- {rag_wright-0.8.0 → rag_wright-0.9.0}/PKG-INFO +3 -3
- {rag_wright-0.8.0 → rag_wright-0.9.0}/README.md +2 -2
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/ArcadeDB_Local.md +15 -7
- rag_wright-0.9.0/docs/adr/0139-the-agent-harness-substrate-is-engine-scope.md +95 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/README.md +4 -3
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/api/README.md +39 -1
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/api/pack_sdk.md +16 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/configuration.md +24 -1
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/domain-adaptation/README.md +11 -5
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/domain-adaptation/_engine-gaps.md +25 -3
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/domain-adaptation/authoring-capabilities.md +3 -2
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/domain-adaptation/classification-and-decision-models.md +7 -6
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/installation.md +36 -19
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/quickstart.md +1 -1
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/public-surface/plan.md +7 -0
- rag_wright-0.9.0/docs/specs/public-surface/rulewright-arcadedb-separation.md +67 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/templates/product-starter/CLAUDE.md.template +95 -24
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/templates/product-starter/README.md +12 -6
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/templates/product-starter/playbook.md.template +54 -14
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/workspaces.md +18 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/pyproject.toml +1 -1
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/.agents/skills/authoring-a-capability/SKILL.md +15 -8
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/.agents/skills/building-an-ingestion-capability/SKILL.md +23 -3
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +8 -6
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/.agents/skills/laya/SKILL.md +9 -7
- {rag_wright-0.8.0/.claude → rag_wright-0.9.0/src/rag_wright/.agents}/skills/qwen-vllm-modal/SKILL.md +13 -6
- {rag_wright-0.8.0/.claude → rag_wright-0.9.0/src/rag_wright/.agents}/skills/setfit/SKILL.md +7 -4
- {rag_wright-0.8.0/.claude → rag_wright-0.9.0/src/rag_wright/.agents}/skills/using-the-rag-wright-engine/SKILL.md +58 -7
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/__init__.py +17 -3
- rag_wright-0.9.0/src/rag_wright/api/agents.py +31 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/config.py +8 -3
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/workspace.py +57 -2
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/models/profiles.py +15 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/models/seam.py +78 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/pack_sdk/__init__.py +4 -1
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +9 -7
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +5 -5
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +5 -5
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +4 -4
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +3 -3
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +5 -4
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/store/arcadedb.py +10 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tasks.md +6 -3
- rag_wright-0.9.0/tests/api/test_agent_chat_model.py +213 -0
- rag_wright-0.9.0/tests/api/test_agent_chat_model_live.py +32 -0
- rag_wright-0.9.0/tests/api/test_drop_workspace.py +95 -0
- rag_wright-0.9.0/tests/api/test_drop_workspace_live.py +26 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_pack_sdk.py +4 -1
- rag_wright-0.9.0/tests/api/test_public_gaps_ps38.py +77 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/uv.lock +1 -1
- rag_wright-0.8.0/.release-please-manifest.json +0 -3
- {rag_wright-0.8.0 → rag_wright-0.9.0}/.claude/settings.json +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/.claude/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/.claude/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/.github/workflows/publish.yml +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/.github/workflows/release-please.yml +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/.gitignore +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/LICENSE +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/SPEC.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/conftest.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/OBSERVABILITY.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0001-stack-and-library-choices.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0004-entity-disambiguation.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0005-relational-golden-set.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0006-model-profile.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0007-arcadedb-store-schema.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0032-nl-to-type-two-step-reason-emit-on-gemma.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0038-full-cuad-kg-on-gcp-gpu-vm-and-gcs-backup.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0042-clause-level-span-id-provenance-and-content-hash-backfill.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0055-confidence-out-of-band.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0057-async-engine-architecture.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0058-structure-first-chunking.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0067-domain-pack-retargeting.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0086-streaming-cost-capture.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0090-affiliate-of-extraction.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0091-retire-partyto-edge.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0092-idempotent-write-graph.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0093-entities-by-name-seam.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0094-workspace-document-scope.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0095-span-page-provenance.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0098-invoke-time-document-scope.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0100-profile-based-model-routing.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0107-requirement-page-provenance.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0118-engine-core-api-vs-ard-adapter-free-impl-ref-client.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0119-jev-typed-decision-model-for-compliance-closed-set-fields.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0127-retire-the-okf-code.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0129-laya-temperatures-and-the-sklearn-floor.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0130-deploy-the-self-hosted-model-server-from-the-engine.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0131-model-server-hardening-after-rulewright-review.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0132-model-server-cold-start-from-a-gpu-snapshot.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0133-model-call-deadline-follows-the-timeout-and-a-thinking-cap.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0134-skills-for-product-developers-are-linked-per-project-never-globally.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0135-the-seam-gives-each-event-loop-its-own-async-http-client.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0136-spreadsheet-tables-are-glued-back-across-blank-rows.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0137-generated-answers-state-their-support-and-none-is-an-abstention.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/adr/0138-the-engine-reaches-pdfium-through-one-locked-door.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/architecture.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/README.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/design/deontic-applicability-routing.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/design/semantic-subject-segmentation.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/design/unify-subject-preprocessing.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/engine-issues/0037-closed-vocab-drops-verbatim-values-to-other.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.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.8.0 → rag_wright-0.9.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.8.0 → rag_wright-0.9.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.8.0 → rag_wright-0.9.0}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/engine-issues/0041-leg-b-discards-the-best-dense-matches-on-some-queries.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.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.8.0 → rag_wright-0.9.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.8.0 → rag_wright-0.9.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.8.0 → rag_wright-0.9.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.8.0 → rag_wright-0.9.0}/docs/archive/engine-issues/0046-appending-a-natural-follow-up-to-a-question-drops-the-clause-type.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/engine-issues/0047-an-exact-deepagents-pin-transitively-pins-every-consumer.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/engine-issues/0048-the-pinned-endpoints-latency-tail-makes-agent-runs-undebuggable-from-either-side.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-01_issue-0013-recall-first-actor-gate_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-04_issue-0016-thread-safe-embedder_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-05_tagparse-ingestion-and-granite-4.2_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-09_issue-0029-idempotent-write-graph_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-09_issue-0030-entities-by-name_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-09_rename-run-ad-compliance-check_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-failclosed-and-nodrift_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-validate-ingested-set_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-10_issue-0031-workspace-document-scope_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-10_issue-0032-span-page-provenance_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-10_issue-0034-invoke-time-document-scope_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-11_issue-0035-followup-derived-guard_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-11_issue-0035-mcp-no-model-tenant_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-14_document-signals-off-citation_0044_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-16_qwen3-27b-single-a100-serving-profile_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-18_fp8-kv-16k-single-a100_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-answers_from_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-scoping-questions_rulewright.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/misc/.gitkeep +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/plans/Corpus_Acquisition.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/plans/async-migration.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/plans/demo_plan.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/concepts.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/contract_pipeline_explainer.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/corpus_ingest_recipe.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/domain-adaptation/entity-resolution.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/domain-adaptation/evals-from-expert-files.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/domain-adaptation/kg-construction.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/domain-adaptation/ontology-authoring.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/classifier_model_ab.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/compliance_demo.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/compliance_gate_cc7.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/compliance_rung2_cc7.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/dg_model_ab.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/function_gate_recall.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/generation_robustness_b_vs_c.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/nl_to_type_cu-d2.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/ocr_benchmark.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/prod1_readiness.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/prod2_readiness.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/query_side_model_ab.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/silver_granite_vs_gemma4.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/silver_provider_routing.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/evals.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/playbook.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/product/capability_profiles.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/product/contracts_product_roadmap.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/product/engine-api-migration-handoff.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/product/engine_async_api.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/product/new-domain-build-sequence.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/product/seam-adaptation-guide.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/proposals/new-domain-developer-journey.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/proposals/ontology-induction.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/reference-pack.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/releasing.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/engine-platform/SPEC.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/engine-platform/TASKS.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/engine-prep/plan.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/evals/plan.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/ingestion-hooks/plan.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/public-surface/rulewright-migration-0.3.0.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/public-surface/rulewright-migration-0.4.0.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/public-surface/rulewright-migration-0.5.0.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/public-surface/rulewright-migration-0.6.0.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/public-surface/rulewright-migration-0.7.0.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/public-surface/rulewright-migration-0.8.0.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/specs/public-surface/rulewright-reply-2026-10-10-laya-and-sklearn.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/templates/product-starter/dependabot.yml +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/upstream/laya-temperature-range-mismatch.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/acord.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/acord_retrieval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/boundary_residue_gold.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/build_golden.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/compliance_demo/subjects/post_violation.txt +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/condensed_pipeline.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/contract_parity_live.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/contractnli_judge.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/cuad_highlight.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/embedded_eval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/full_pipeline_rerank.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/function_ceiling.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/function_property_rerank.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/function_rerank.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/gate1_chunker_ab.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/gate2_hybrid_rerank.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/golden/relational/set.json +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/golden.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/ground_discriminator_rerank.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/harness.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/ingestion_live_smoke.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/kg_primary.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/kg_property_rerank.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/listwise_rerank.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/multihop.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/nl_to_type.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/relational_eval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/residual_decision_gold.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/segmenter_eval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/semantic_judge_gold.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/test_acord.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/test_acord_retrieval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/test_harness.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/test_multihop_set.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/eval/unit_grouper_eval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/examples/model_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/examples/quickstart.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/plan.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/release-please-config.json +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ab_model_overlap.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/acord_unify.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/acquire_acord.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/acquire_cuad.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/acquire_ecfr.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/acquire_edgar.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/acquire_ftc_255.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/acquire_prod1_corpus.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/audit_reclass_flips.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/author_leg_a_silver_key.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/backfill_affiliations.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/backfill_clause_span_id.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/backfill_edge_source_doc_id.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/backup_kg_to_gcs.sh +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/bootstrap_template_capture.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/bootstrap_typed_edges.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/build_api_docs.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/build_api_docs.sh +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/build_cuad_clause_cache.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/build_function_routing_map.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_assemble_v2.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_assemble_v3.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_generate_hard_negatives.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_generate_hard_positives.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_generate_training.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_hybrid.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_hybrid2.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_jev_actor.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_jev_claimtypes.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_jev_operative.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_label_spans.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_laya_prep.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_laya_train.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_prep_operative.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_relabel_rubric.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_relabel_rubric2.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/cic1_train_operative.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/compare_extraction_models.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/compliance_actor_gate_smoke.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/compliance_engine_smoke.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/compliance_policy_demo.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/curate_taxonomy_gaps.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/dg_model_ab.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/diagnose_acord_knn_expansion.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/diagnose_acord_knn_rerank.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/diagnose_acord_leg_pool.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/diagnose_acord_legs.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/diagnose_acord_pool.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/diagnose_acord_relstructure.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/diagnose_acord_retrieval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/distill/eval_all.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/distill/eval_ce.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/distill/eval_listwise_b.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/distill/export_ce_dataset.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/distill/extract_features.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/distill/listwise_variants.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/distill/relational_features.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/distill/train_ce.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/distill/train_modal.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/enrich_edgar_candidates.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/eval_chunking_ab.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/eval_compliance_gold.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/extract_arcadedb_docs.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/fetch_reference_models.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/generate_contract_python.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/git_post_commit_graphify.sh +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/granite_chunker_assess.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/graph_status.sh +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ingest_acord.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ingest_compliance_async_prod2.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ingest_compliance_document_prod2.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ingest_compliance_prod2.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ingest_cuad.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ingest_cuad_full.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ingest_ftc_compliance.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ingest_prod1.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ingest_prod1_async.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ingest_smoke.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/install_git_hooks.sh +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/label_new_functions.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/legb_function_gate_recall.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/make_compliance_fixtures.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/make_compliance_gold.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/mcp_compliance_agent_demo.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/mcp_intra_document_qa_smoke.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/mcp_query_legs_agent_demo.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/measure_generation_robustness.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/measure_silver.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/merge_docs_into_framework.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/migrate_silver_evidence_autotag.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/migrate_span_fields.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/mine_scarce_functions.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_arcadedb.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_backfill.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_exception_linking.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_gemma4_vllm.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_gemma4_vllm_snapshot.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_granite_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_granite_throughput.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_granite_vllm_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_query_app.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_qwen3_27b_bench.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_qwen3_27b_snapshot.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/modal_stack_a100.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ocr_benchmark.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ocr_preprocess.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/ontology_dimension_check.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/phase_a_leg_validate.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/populate_clause_kg.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/populate_entity_graph.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/populate_entity_graph_extracted.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/populate_property_store.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/prep_relational_verification.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/publish_manifests.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/reclassify_kg.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/refresh_framework_graph.sh +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/revert_reclass_flips.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/run_acord_retrieval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/run_clause_exception_linking.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/semantic_judge_live_validate.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/semantic_judge_probe.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/snapshot_leg_a_eval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/stack_correctness_validate.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/table_retrieval_smoke.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/train_function_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/train_legalbert_function.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/train_legalbert_modal.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/typed_rerank_validate.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/verify_wheel_install.sh +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/vllm_extraction_ab.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/vllm_kg_query_validate.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/scripts/vllm_raw_diagnostic.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/answers.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/discover.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/documents.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/ids.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/invoke.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/kg.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/mcp.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/tracing.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/api/usage.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/answer_generator.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/ard.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/chunk_read.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/chunk_write.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/disambiguation.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/document_parse.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/document_scope.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/embedding.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/entity_resolution.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/fusion.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/graph_query.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/graph_storage.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/hybrid_search.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/invoke.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/jev_decision.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/manifests.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/parsing.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/registry.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/remote_encoders.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/reranking.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/retrieval_core.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/rlm_chunking.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/scan_quality.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/sheet_tables.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/vision_to_text.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/contracts/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/contracts/chunk.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/contracts/evals.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/contracts/extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/contracts/graph.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/contracts/identifiers.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/contracts/ingestion.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/contracts/provenance.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/contracts/span.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/corpus/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/corpus/canonicalize.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/corpus/document_parser.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/corpus/embedded.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/corpus/http.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/evals/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/evals/gold.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/evals/langfuse_backend.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/evals/runner.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/evals/scorers.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/ingestion/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/ingestion/builder.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/ingestion/evaluate.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/ingestion/group.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/ingestion/layout.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/ingestion/segment.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/ingestion/tables.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/models/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/models/model_servers.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/models/tag_structured.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/models/tracing.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/models/usage.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/models/weights.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/ontology/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/ontology/pack_schema.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/ontology/registry.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/invokers.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/pack.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/options.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/pack.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/function_families.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/packs/reference_seam.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/py.typed +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/skills/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/skills/generation/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/skills/generation/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/skills/rlm/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/skills/rlm/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/skills/rlm/agent.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/spans/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/spans/page_map.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/store/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/store/chunk_text.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/store/seam.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/subgraphs/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/subgraphs/observability.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/subgraphs/scaffold.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/util/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/util/concurrent.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/util/pdfium.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/src/rag_wright/util/spacy_model.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_answers_exports.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_bytes_ingest.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_capability_reexports.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_decision_swap_doc_example.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_discover.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_documents.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_e2e.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_invoke.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_kg.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_mcp.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_metering_tracing_exports.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_model_role_export.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_open_workspace_reconfig.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_options.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_pack_store.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_pdf_page_count.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_usage.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_workspace.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/api/test_workspace_models.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/arch/domain_vocabulary_baseline.json +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/arch/test_api_docs_current.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/arch/test_doc_references.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/arch/test_engine_domain_vocabulary.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/arch/test_import_contracts.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/arch/test_lock_version.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/arch/test_packs_use_store_primitives.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/arch/test_pdfium_door.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/arch/test_shipped_skills.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/async_helpers.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_answer_generator.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_answer_generator_async.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_assertion_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_authoring_contract.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_chunk_read.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_chunk_write.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_claim_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_clause_exception_linking.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_compliance_judgment.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_compliance_store.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_contract_kg_serve.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_contract_kg_store.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_dg_adapter.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_dg_async.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_dg_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_dg_model_seam.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_dg_private.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_disambiguation.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_document_scope.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_embedding.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_embedding_profiles.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_entity_resolution.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_fusion.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_graph_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_graph_query.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_graph_storage.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_highlight_serve.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_hybrid_search.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_jev_decision.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_manifest_validation.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_manifests.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_parsing.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_parties_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_query_function_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_query_understanding.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_registry.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_remote_encoders.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_repair_partition.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_requirement_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_reranking.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_retrieval_core.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_rlm_chunking.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_rlm_chunking_async.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_rlm_method.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_rlm_synthesis.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_runtime_registry.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_scan_quality.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_span_relevance_judgment.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_structural_model_fallback.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_tiered_ocr.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/capabilities/test_vlm_ocr.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/compliance_fakes.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/conftest.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_canonical_source_doc_id.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_chunk_record.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_compliance.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_function.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_function_routing.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_identifiers.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_ingestion_hooks.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_jurisdiction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_ontology.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_property.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_provenance.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/contracts/test_value_match.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/_ooxml_fixtures.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/test_canonicalize.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/test_cuad.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/test_cuad_ingestion.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/test_document_parser.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/test_edgar.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/test_embedded.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/test_gcs_ingestion.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/test_http.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/test_parse_wire2.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/corpus/test_selection.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/eval/test_contractnli_judge.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/eval/test_cuad_highlight_metrics.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/eval/test_kg_property_rerank.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/eval/test_nl_to_type_metrics.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/eval/test_relational_eval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/evals/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/evals/test_gold_contracts.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/evals/test_gold_import.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/evals/test_langfuse_backend.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/evals/test_runner.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/evals/test_scorer_parity.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/evals/test_scorers_a.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/evals/test_scorers_b.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/evals/test_scorers_c.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/evals/test_scorers_d.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/fixtures/ingestion/textile_test_report.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/fixtures/leg_a_silver/README.md +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/fixtures/table-bearing-contract.pdf +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/foundation/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/foundation/test_arcadedb_hybrid.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/foundation/test_model_seam_structured.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_aevaluate.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_builder.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_concurrency_ceiling.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_document_metadata.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_evaluate.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_evaluate_labels.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_layout_segmenter.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_sheet_continuations.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_spreadsheet_content.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_table_rows.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_tuning.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_unit_grouper.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ingestion/test_unit_representative.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/journey/incidents_domain.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/journey/incidents_pack.ttl +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/journey/test_incidents_journey.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/journey/test_pack_schema.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/mcp/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/mcp/test_compliance_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/mcp/test_intra_document_qa_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/mcp/test_relational_qa_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_async_infra.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_classifier_heads_load_clean.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_model_servers.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_models_dir.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_no_gemma_default.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_profile_routing.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_profile_seam.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_seam_async.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_seam_deadline_and_cap.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_seam_event_loops.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_seam_retry.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_seam_stream.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_serving_seam.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_serving_wiring.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_tag_structured.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_tag_structured_async.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_tracing.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/models/test_usage.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ontology/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ontology/test_clause_template.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ontology/test_derivation.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ontology/test_entity_taxonomy.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ontology/test_template_captured_in_ttl.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/reference/test_compliance_reference.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/reference/test_contract_seam.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/scripts/test_eval_chunking_ab.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/scripts/test_eval_classifier_ab.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/scripts/test_fetch_reference_models.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/scripts/test_generation_robustness_errors.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/skills/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/skills/test_creating_evals_skill_example.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/skills/test_ingestion_skill_example.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_boundary.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_classifier_property_extractor.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_clause_function_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_clause_function_classifier_async.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_clause_kg_extractor.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_clause_kg_extractor_async.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_dim_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_dim_fleet_live.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_function_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_hybrid_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_hybrid_property_extractor.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_legalbert_classifier.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_model_capabilities.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_new_function_labels.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_page_map.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_property_extractor.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_property_grounding.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_reclassify.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_residual_decision.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_scarce_function_labels.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_segment.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_segmentation_vocab.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_semantic_judge.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_setfit_clause_adapter.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_setfit_probabilities.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_span_offsets.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_stage_labels_0005.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_symbolic_validation.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/spans/test_tag_clause_extractor.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_affiliation_backfill.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_arcadedb_clause_kg.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_arcadedb_contract.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_arcadedb_property.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_arcadedb_requirement_sources.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_arcadedb_schema.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_arcadedb_span.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_chunk_text.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_concurrent_writes.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_contract_kg_store_live.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_document_metadata_live.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_document_scope.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_engine_domain_neutral.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_entities_by_name.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_kg_edges.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_kg_mutations.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_kg_read.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_kg_write.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_neutral_schema.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_store_create_flag.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/store/test_write_graph_idempotent.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_async_ingestion.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_clause_results.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_compliance_check.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_compliance_ingestion.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_graph_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_ingest_knobs.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_intra_document_qa.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_observability.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_partial_entry_contract.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_relational_qa.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_requirement_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_scaffold.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_semantic_chunking.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/test_backfill_clause_span_id.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/test_dg_model_ab.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/test_populate_clause_kg.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/test_populate_entity_graph.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/util/__init__.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/util/test_concurrent.py +0 -0
- {rag_wright-0.8.0 → rag_wright-0.9.0}/tests/util/test_spacy_model.py +0 -0
|
@@ -37,9 +37,13 @@ MCP) follows automatically for invokable kinds; 4b (a bespoke MCP server) is opt
|
|
|
37
37
|
1. **Implementation** — the real code, in that kind's home (see per-kind below).
|
|
38
38
|
2. **The invoke factory + `impl_ref`** (invokable kinds: subgraph/model) — write a co-located
|
|
39
39
|
`async def ainvoke(resources, inputs)` (subgraph) / `def <name>(resources, inputs)` (model) in the capability's
|
|
40
|
-
own module. A subgraph factory builds over the opaque `WorkspaceHandle
|
|
41
|
-
`resources
|
|
42
|
-
`resources
|
|
40
|
+
own module. A subgraph factory builds over the opaque `WorkspaceHandle`, never env: its store access with
|
|
41
|
+
`pack_store(resources, YourStore)` (your pack's store extension over the workspace's store) and its models with
|
|
42
|
+
`resources.model_id(role)`; its query embedder with `workspace_embedder(resources)` (`rag_wright.pack_sdk`, built
|
|
43
|
+
from the workspace's embedding profile) and its options with `resources.config`; a model factory is
|
|
44
|
+
store-independent and ignores `resources`. A builder that takes the store as a keyword goes through `pack_store`
|
|
45
|
+
too: `pack_store(resources, lambda store: production_x(store=store, ...))`. The handle's underscored attributes
|
|
46
|
+
are engine-internal; the reference pack's factories show the public form. The manifest's `impl_ref="module:attr"` points to it. The invoker imports
|
|
43
47
|
it LAZILY and calls it — there is **NO central adapter dict** (EP-CORE-2). A plain function/agent_skill/mcp_tool
|
|
44
48
|
declares no `impl_ref`.
|
|
45
49
|
3. **ARD manifest + register it** — a `CapabilityManifest(slug, kind, display_name, description,
|
|
@@ -57,8 +61,9 @@ MCP) follows automatically for invokable kinds; 4b (a bespoke MCP server) is opt
|
|
|
57
61
|
A downstream product can register without touching the canonical set (`register_capability` does not check
|
|
58
62
|
slugs), BUT `manifests.author()` rejects a non-canonical slug, so a product that publishes ARD JSON must call
|
|
59
63
|
`register_canonical_slugs` for its slugs first.
|
|
60
|
-
Publish
|
|
61
|
-
|
|
64
|
+
Publish the ARD JSON (`urn:air`) of what is registered with `publish(slug, root=...)` or `publish_all(root=...)`
|
|
65
|
+
from `rag_wright.api` (the root defaults to `ARD_REGISTRY_ROOT`, else `~/.air/registry`); a slug must be canonical
|
|
66
|
+
(`register_canonical_slugs`, above). The engine's `scripts/publish_manifests.py` does this for its reference pack.
|
|
62
67
|
Callable kinds get `ResponseBounds` (defaulted); `agent_skill` must NOT declare bounds (loaded, not called).
|
|
63
68
|
4. **Invocable + MCP for free** — once registered with an `impl_ref`, the capability is callable as
|
|
64
69
|
`ainvoke_subgraph(slug, inputs, resources=ws)` / `invoke_model(slug, inputs, resources=ws)` (or
|
|
@@ -79,7 +84,7 @@ MCP) follows automatically for invokable kinds; 4b (a bespoke MCP server) is opt
|
|
|
79
84
|
- **Invoke:** the co-located `async def ainvoke(resources, inputs)` factory (impl_ref target) builds + awaits the graph.
|
|
80
85
|
- Retry/dead-letter come from the graph scaffold, not the invoker. `CapabilityManifest` has no contract field (only
|
|
81
86
|
the internal `CapabilityRegistry.register(contract=...)` takes one); where the typed I/O must be declared, set
|
|
82
|
-
`capability_interface` on the manifest.
|
|
87
|
+
`capability_interface` on the manifest (`CapabilityInterface`, from `rag_wright.pack_sdk`).
|
|
83
88
|
|
|
84
89
|
### function — a plain, typed callable
|
|
85
90
|
- **Home:** `capabilities/<slug>.py` (generic) or `packs/<pack>/capabilities/<slug>.py` (domain). A deterministic or model-backed callable with a Pydantic in/out contract.
|
|
@@ -103,7 +108,9 @@ MCP) follows automatically for invokable kinds; 4b (a bespoke MCP server) is opt
|
|
|
103
108
|
- **Home:** `skills/<slug>/SKILL.md` (generic) or `packs/<pack>/skills/<slug>/SKILL.md` (domain, e.g.
|
|
104
109
|
`packs/compliance/skills/compliance_judgment/SKILL.md`) + the agent runtime (e.g. `skills/rlm/`). It is LOADED (progressive
|
|
105
110
|
disclosure), not called: no `ResponseBounds`. Declare `requires=(...)` for a closure over other skills and
|
|
106
|
-
`skill_runtime` for its intrinsic runtime.
|
|
111
|
+
`skill_runtime` (`SkillRuntime`, from `rag_wright.pack_sdk`) for its intrinsic runtime.
|
|
112
|
+
- A product's agent (a Deep Agents harness) is not a capability kind yet: an `agent` kind is a later engine workstream
|
|
113
|
+
(PS-33, engine ADR-0139). Build agents in the product, on `agent_chat_model` for their model.
|
|
107
114
|
|
|
108
115
|
### mcp_tool — a capability exposed over MCP
|
|
109
116
|
- A distinct ARD identity (`<slug>_mcp`) for the same underlying capability exposed as a cross-agent MCP tool.
|
|
@@ -129,7 +136,7 @@ add it to `_RESERVED_WITHOUT_MANIFEST` with a one-line reason. The engine's `tes
|
|
|
129
136
|
pack, so these tests see its slugs.
|
|
130
137
|
|
|
131
138
|
**The import boundary (engine repo).** `pyproject.toml` `[tool.importlinter]` has three forbidden contracts: every
|
|
132
|
-
generic engine package (`source_modules`: `rag_wright.api`, `capabilities`, `contracts`, `corpus`, `ingestion`,
|
|
139
|
+
generic engine package (`source_modules`: `rag_wright.api`, `capabilities`, `contracts`, `corpus`, `evals`, `ingestion`,
|
|
133
140
|
`models`, `ontology`, `pack_sdk`, `skills`, `spans`, `store`, `subgraphs`, `util`) must never import
|
|
134
141
|
`rag_wright.packs`; pack code (`rag_wright.packs`) imports only `rag_wright.api` and `rag_wright.pack_sdk` (plus
|
|
135
142
|
itself), never another engine package directly; and `rag_wright.packs.contracts` must never import
|
{rag_wright-0.8.0 → rag_wright-0.9.0}/.claude/skills/building-an-ingestion-capability/SKILL.md
RENAMED
|
@@ -149,12 +149,32 @@ network-bound work inside it; the engine runs up to `IngestionTuning.extract_con
|
|
|
149
149
|
to its parent, and an `AttachedTo` edge from the child to the table-row span it belongs to, with a confidence and
|
|
150
150
|
the identifier evidence (`IngestionTuning.identifier` sets what counts as an identifier). The report lists them in
|
|
151
151
|
`DocumentReport.children`, `links` and `unmapped_links`.
|
|
152
|
+
- **Record table or form, decided per table.** In `auto` mode a table is a database (one unit per row) when its
|
|
153
|
+
header has `RecordTableRule.min_header_cols`+ named columns, `distinct_ratio`+ of them distinct, and either a serial
|
|
154
|
+
first column in `serial_ratio`+ of the rows or `min_cols`+ columns; anything else stays whole (a form). A test log
|
|
155
|
+
or results sheet judged wrongly is fixed with `IngestionTuning(record_table=RecordTableRule(...))`, or per source
|
|
156
|
+
with `IngestSource(table_mode="record"|"block")`. Check the decision on your samples with
|
|
157
|
+
`evaluate_ingestion(..., table_labels=[{"pattern": <regex on the header row>, "label": "record"|"block"}])`
|
|
158
|
+
(first match wins): a block table split per row, or a wide record table not split, is a failure, and tables no
|
|
159
|
+
pattern matched are listed in `unlabelled_tables`.
|
|
160
|
+
- **How an embedded file finds its row.** An identifier is a token of 4+ characters containing a digit that appears
|
|
161
|
+
on at most `IdentifierRule.max_rows` table rows and in at most `max_files` embedded files (defaults 3 and 3; set
|
|
162
|
+
them with `IngestionTuning(identifier=IdentifierRule(...))`). A file whose identifiers match no row, or too many,
|
|
163
|
+
stays a child document with no `AttachedTo` edge and is listed in `unmapped_links`: for a workbook with dozens of
|
|
164
|
+
embedded lab reports, check `links` against what you expect before trusting the graph.
|
|
165
|
+
- **Nesting.** A file embedded in an embedded file is ingested; anything deeper is listed in
|
|
166
|
+
`DocumentReport.embedded_skipped`, not walked.
|
|
167
|
+
- **Stable ids.** `IngestSource(doc_id=...)` gives a document your own id (an upload's record id, say), so a re-ingest
|
|
168
|
+
of the same file lands on the same `Document`.
|
|
152
169
|
|
|
153
170
|
## 6. Verify (definition of done)
|
|
154
171
|
|
|
155
|
-
1. `evaluate_ingestion` passes on a representative sample of YOUR documents (not a hand-picked easy one)
|
|
156
|
-
units carry labels, its `labels` report on your gold
|
|
157
|
-
|
|
172
|
+
1. `evaluate_ingestion` passes on a representative sample of YOUR documents (not a hand-picked easy one), with
|
|
173
|
+
`table_labels` covering every table type you have. If your units carry labels, its `labels` report on your gold
|
|
174
|
+
meets the bar you set, with the confusions understood. Inside a web backend use `aevaluate_ingestion` (with
|
|
175
|
+
`progress`) as a background job.
|
|
176
|
+
2. A live ingest of that sample, in a disposable database (`with temporary_workspace(config, prefix="trial") as ws:`),
|
|
177
|
+
no dead letters, `extraction_failures` explained, records cite spans
|
|
158
178
|
(`kg_read(ws, "<your type>", fields=["span_id"])`), and `span_positions(ws, doc_id)` gives the citation positions.
|
|
159
179
|
3. A hermetic test of your extractor on fixed units (no model calls in the default suite; the engine's test network
|
|
160
180
|
guard fails any unmarked test that reaches the network).
|
|
@@ -63,8 +63,10 @@ worked examples; your evals live in your repo.
|
|
|
63
63
|
GoldMapping(id=..., input=..., expected=..., group=...), name=..., version=...)` reads them as written -- the header
|
|
64
64
|
found under a title, blank rows skipped, values kept exactly, each item's place recorded -- and refuses anything
|
|
65
65
|
that would make the gold wrong (a missing column, a row without its id, a duplicate id) with where it is. Map
|
|
66
|
-
`group` to the source document so splits stay leakage-safe. A
|
|
67
|
-
|
|
66
|
+
`group` to the source document so splits stay leakage-safe. A workbook with several sheets: name one with
|
|
67
|
+
`sheet=`. Say how the gold was made with `provenance=` (`hand`, `silver` or `generated`; or a per-row column through
|
|
68
|
+
`GoldMapping(provenance=...)`), so silver is never conflated with gold. A gold set is `local_only` by default:
|
|
69
|
+
client data never leaves the machine.
|
|
68
70
|
- **Gold stays local when the corpus is restrictively licensed** (CUAD/ACORD-derived gold lives under the
|
|
69
71
|
gitignored `data/eval/`); commit the builder and the scorer, never the data.
|
|
70
72
|
|
|
@@ -145,10 +147,10 @@ or a plain function, which runs off the event loop) on every item, `repeats` tim
|
|
|
145
147
|
answer), scores each repeat, and passes a scorer only if it passes on every repeat (its gate is the worst repeat;
|
|
146
148
|
`per_repeat_gate` lists each). `run_eval` is the synchronous form; inside a web backend, await `arun_eval` as a
|
|
147
149
|
background job. What is still yours:
|
|
148
|
-
- **Isolate the capability under test**: the task calls ONE capability, injected (a seam
|
|
149
|
-
injected `retrieve`), so the eval measures it, not the whole pipeline. Invoke production code THROUGH the
|
|
150
|
+
- **Isolate the capability under test**: the task calls ONE capability, injected (a seam, such as the reference pack's
|
|
151
|
+
`extract_override` or an injected `retrieve`), so the eval measures it, not the whole pipeline. Invoke production code THROUGH the
|
|
150
152
|
capability layer (`ainvoke_subgraph`/`ainvoke_model`), never a hand-built copy. Score the **shipped request** (the
|
|
151
|
-
exact prompt/question builder production uses, e.g. `judge_request`), not a copy of it re-typed in the eval.
|
|
153
|
+
exact prompt/question builder production uses, e.g. the reference pack's `judge_request`), not a copy of it re-typed in the eval.
|
|
152
154
|
- **Repeatability for non-deterministic models.** Use `repeats` and read `report.flips`; flips cluster near the
|
|
153
155
|
threshold and usually mean the QUESTION is ambiguous: fix the question, do not vote it away (Jev flipped 5/181
|
|
154
156
|
answers at scores 0.47-0.56; temperature/seed did not help, majority voting barely helped, rewriting the ambiguous
|
|
@@ -160,7 +162,7 @@ background job. What is still yours:
|
|
|
160
162
|
- **Keep the report.** `report.model_dump_json()` holds every item's outputs; save it next to the gold version.
|
|
161
163
|
`rescore_eval(report, gold, scorers)` re-scores it with new thresholds, a new scorer or a corrected gold, free. An
|
|
162
164
|
eval kept only as aggregate numbers can never be checked again.
|
|
163
|
-
- **Pre-flight paid bulk** (>~50 paid calls): print the exact count + cost and wait
|
|
165
|
+
- **Pre-flight paid bulk** (>~50 paid calls): print the exact count + cost and wait for approval before launching.
|
|
164
166
|
- **Hermetic tests never touch the network**: `tests/conftest.py` fails a test that resolves a non-local host unless
|
|
165
167
|
it carries a live marker (`model`, `store`, ...). Live evals run as scripts (outside pytest) or carry a live
|
|
166
168
|
marker.
|
|
@@ -25,9 +25,10 @@ you can fine-tune. In RAG_Wright a decision model is wired as a `kind="model"` c
|
|
|
25
25
|
|
|
26
26
|
**Swapping Jev for Laya is config, but not free.** `DECISION_PROFILES` has only Jev entries (`jev-1.13`, the
|
|
27
27
|
default, and `jev-latest`). A Laya swap needs (1) a server that speaks the Decisions API (POST
|
|
28
|
-
`{model, state, questions}`, return `{answers: {<id>: {type, noul|choice|score}}}`), and (2)
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
`{model, state, questions}`, return `{answers: {<id>: {type, noul|choice|score}}}`), and (2) its profile, registered
|
|
29
|
+
at startup from your product: `register_decision_profile(DecisionModelProfile(model_id="laya-onprem",
|
|
30
|
+
served_model_id=..., endpoint=..., api_key_env=...))`, both on `rag_wright.api` (an unregistered id falls back to the
|
|
31
|
+
OpenRouter endpoint). Then select it with `RAG_DECISION_MODEL=<profile id>` (or the `jev_decision` input `model`);
|
|
31
32
|
`RAG_JEV_TIMEOUT_S` overrides the request timeout.
|
|
32
33
|
|
|
33
34
|
**Batch the questions.** One call carries one `state` and many keyed questions, so ask everything about a unit in
|
|
@@ -68,7 +69,7 @@ server you swap in.
|
|
|
68
69
|
## Data — the JSONL schema + criteria (the differentiator)
|
|
69
70
|
One JSONL line per case (`research/scripts/finetune_single_device.py` reads this exact shape):
|
|
70
71
|
```
|
|
71
|
-
{"state": "<
|
|
72
|
+
{"state": "<unit text>",
|
|
72
73
|
"questions": {"<dim>": {"type":"choice","instructions":"<the question>","criteria":{"<value>":"<description>", ...}}},
|
|
73
74
|
"gold": {"<dim>": {"probabilities": {"<value>": <p>, ...}, "label": "<value>"}}}
|
|
74
75
|
```
|
|
@@ -78,7 +79,7 @@ One JSONL line per case (`research/scripts/finetune_single_device.py` reads this
|
|
|
78
79
|
- **`gold` is a DISTRIBUTION (soft targets), not a hard label** — RLCD trains on the teacher's probability per option.
|
|
79
80
|
One-hot (`{gold:1.0, other:0.0}`) works and is the pragmatic start; true soft targets (teacher per-option probs)
|
|
80
81
|
are the design-intended enhancement.
|
|
81
|
-
- Reuse your existing **
|
|
82
|
+
- Reuse your existing **document-disjoint, symmetric splits** so floors are directly comparable to SetFit. Silver
|
|
82
83
|
goes in TRAIN only; val/test stay gold.
|
|
83
84
|
|
|
84
85
|
## Fine-tune — single T4, RLCD, calibration built in
|
|
@@ -116,11 +117,12 @@ One JSONL line per case (`research/scripts/finetune_single_device.py` reads this
|
|
|
116
117
|
the model from the engine (never a hardcoded/stale id; bulk teacher labeling on Modal Qwen, not OpenRouter), load
|
|
117
118
|
`.env` by EXPLICIT path from an out-of-repo script, SMOKE one item before the fan-out, and stream X/N to a log you
|
|
118
119
|
actively monitor. Those exact mistakes cost runs on 2026-10-04.
|
|
119
|
-
- **Modal harness =
|
|
120
|
+
- **Modal harness = follow the [[setfit]] hardened pattern** (the pattern described there; that harness's code is
|
|
121
|
+
not shipped): `.uv_pip_install("laya")` + `.add_local_file` the
|
|
120
122
|
finetune script; launcher BLOCKS on `.get()` per spawn (no spawn-and-return), stamps + verifies a `data_sha`,
|
|
121
123
|
writes a manifest, streams X/N; snapshot keepers server-side to a `/checkpoints/<name>` path (a small copy fn) —
|
|
122
124
|
the laya volume has no built-in snapshot, add one. Never lose a fine-tune.
|
|
123
|
-
- **ACCOUNT CONTAINER CAP
|
|
125
|
+
- **ACCOUNT CONTAINER CAP (10 on the engine authors' account; check your workspace's).** Spawning more than 10 fine-tunes at once does NOT run them all —
|
|
124
126
|
Modal queues the rest and runs ~10 at a time (correct, but ~N/10 waves of wall-clock, and a "why only 10 running?"
|
|
125
127
|
surprise). Size a `groupbake`/dimbatch fan-out to ≤10 in flight (chunk into waves + gather between), or state the
|
|
126
128
|
wave count honestly. This is a DIFFERENT knob from the vLLM `max_containers=1` + `@modal.concurrent` batching in the
|
{rag_wright-0.8.0/src/rag_wright/.agents → rag_wright-0.9.0/.claude}/skills/qwen-vllm-modal/SKILL.md
RENAMED
|
@@ -46,7 +46,13 @@ config = EngineConfig(store=..., models={"general": server.model_id}) # or any
|
|
|
46
46
|
stop_model_server("acme-qwen") # only to retire it: stopping discards the snapshots (see "Cold start & cost")
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
`
|
|
49
|
+
`server.model_id` is `qwen3.8-27b-modal@<name>`: a copy of the `qwen3.8-27b-modal` profile pointed at this server
|
|
50
|
+
(reasoning on for structured calls and agent turns, off for free text). Use that id, never `VLLM_BASE_URL`. A
|
|
51
|
+
reasoning-off structured pick (bulk closed-vocab labeling) has no `@<name>` variant: point `VLLM_BASE_URL` at
|
|
52
|
+
`server.base_url` and use the `qwen3.8-27b-modal-nothink` profile.
|
|
53
|
+
`amodel_server(spec)` reconnects to a server deployed earlier (a restart, another process) without redeploying;
|
|
54
|
+
`await_model_server(server, timeout_s=...)` waits for readiness; `amodel_server_status(spec)` looks without waking it
|
|
55
|
+
(`deployed`, `running` (a container bills), `healthy`, `weights_cached`); `astop_model_server(name)` is the async stop.
|
|
50
56
|
The API key comes from the variable `ModelServerSpec.api_key_env` names (default `VLLM_API_KEY`); there is no default
|
|
51
57
|
key, so set a real one. Needs `rag-wright[modal]` and a Modal login. One app per server name: different names give
|
|
52
58
|
different servers (and URLs), for example one per tenant.
|
|
@@ -66,8 +72,9 @@ The script refuses to deploy without `VLLM_API_KEY`: Modal's web endpoint is pub
|
|
|
66
72
|
`qwen3.8-27b-modal` routes there (the seam also refuses an unset key). When to stop it: "Cold start & cost" below.
|
|
67
73
|
|
|
68
74
|
**The engine does NOT reach Modal by default.** Every role's default is `_PRODUCT_LLM = "qwen3.8-27b-modal-or"`,
|
|
69
|
-
the same model routed through OpenRouter (a Modal cold start can still take minutes when Modal builds a snapshot). To send calls to the Modal server,
|
|
70
|
-
`
|
|
75
|
+
the same model routed through OpenRouter (a Modal cold start can still take minutes when Modal builds a snapshot). To send calls to the Modal server, put
|
|
76
|
+
`server.model_id` in `EngineConfig.models` (the API route), or on the raw route set `RAG_MODEL_ALL=qwen3.8-27b-modal`
|
|
77
|
+
(all roles) or a per-role `RAG_MODEL_<ROLE>`. For bulk
|
|
71
78
|
closed-vocab labeling, the reasoning-off profile `qwen3.8-27b-modal-nothink` exists (opt-in; see the reasoning
|
|
72
79
|
caveat below). `VISION_OCR` now defaults to the product LLM too, but image inputs through the Modal vLLM server are
|
|
73
80
|
UNVERIFIED (the serve script passes no multimodal flags): confirm an image call works before pointing
|
|
@@ -130,7 +137,7 @@ the OFFICIAL prebuilt vLLM image** rather than pip-building vLLM:
|
|
|
130
137
|
- **When to stop it -- one rule (EV-6; it used to contradict the line above).** The A100 is billed only while a
|
|
131
138
|
container runs; the server scales to zero after 10 idle minutes (`scaledown_window=600`, no warm minimum) and then
|
|
132
139
|
costs nothing and KEEPS its snapshots, so the next request is back in ~13 s. `modal app stop` saves at most those
|
|
133
|
-
10 minutes and makes the next deploy pay a 9
|
|
140
|
+
10 minutes and makes the next deploy pay a snapshot-building boot (usually 4-9 min; 15 min seen once) (2026-10-12: a stop after a failed smoke
|
|
134
141
|
run, then a redeploy, cost a 911 s boot).
|
|
135
142
|
1. **Deploy once per server name**; reuse the name (a new name builds new snapshots).
|
|
136
143
|
2. **Build the consumer first** (the bulk / label / eval script, its smoke test, its progress logging) while no
|
|
@@ -138,8 +145,8 @@ the OFFICIAL prebuilt vLLM image** rather than pip-building vLLM:
|
|
|
138
145
|
a smoke-warmed A100 sat idle ~20 min while unrelated work ran).
|
|
139
146
|
3. **Between runs, and when you are done, let it scale to zero.** Never stop it between runs; a script's error
|
|
140
147
|
path must not stop it either when a fix-and-rerun is likely.
|
|
141
|
-
4. **Check it reached zero**: `modal app list` shows the app
|
|
142
|
-
last call. If tasks remain past the window, find out why (that is the 2026-10-04 burn) and stop it.
|
|
148
|
+
4. **Check it reached zero**: `amodel_server_status(spec).running` is False (or `modal app list` shows the app
|
|
149
|
+
`deployed` with 0 tasks) about 10 minutes after the last call. If tasks remain past the window, find out why (that is the 2026-10-04 burn) and stop it.
|
|
143
150
|
5. **Stop (`modal app stop <app> --yes`, or `stop_model_server`) only to retire a server**: you will not use it
|
|
144
151
|
for a long time and do not want its endpoint up, or you are replacing its deployment. Expect the next deploy to
|
|
145
152
|
rebuild the snapshots.
|
|
@@ -219,11 +219,14 @@ after the 21-classifier runs — each one cost real time and each is avoidable w
|
|
|
219
219
|
order before you fan out any bulk job.
|
|
220
220
|
|
|
221
221
|
1. **Resolve the model from the engine, never hardcode a model id.** A hardcoded id rots: `ibm-granite/granite-4.1-8b`
|
|
222
|
-
now 404s on OpenRouter ("No endpoints found"). Use the engine resolver (`
|
|
222
|
+
now 404s on OpenRouter ("No endpoints found"). Use the engine resolver (`rag_wright.pack_sdk.model_for(ModelRole.<ROLE>)`,
|
|
223
223
|
or `ws.model_id(role)` on a workspace; the model-profile seam) so the id and backend come from config, and **confirm it with a one-call smoke before any
|
|
224
224
|
bulk run**. Bulk teacher labeling runs on **self-hosted Qwen on Modal** (`qwen-vllm-modal` skill + ADR-0110), NOT
|
|
225
|
-
OpenRouter (flat
|
|
226
|
-
|
|
225
|
+
OpenRouter (a flat GPU rate, not a per-call bill: before more than ~50 paid calls, print the exact count and cost
|
|
226
|
+
and wait for approval); reasoning ON for label fidelity; client concurrency below the server's `max_num_seqs`
|
|
227
|
+
(counting every concurrent run); raise the structured timeout for reasoning-ON bulk; between runs let the server
|
|
228
|
+
scale to zero, and stop it only to retire it (`qwen-vllm-modal`, "Cold start & cost": a stop discards its
|
|
229
|
+
snapshots).
|
|
227
230
|
2. **Load `.env` by EXPLICIT path in any script run from outside the repo root** (a scratchpad / one-off script).
|
|
228
231
|
`load_dotenv()` with no path searches the CALLING SCRIPT's directory, so a script in `/tmp/...` silently misses
|
|
229
232
|
the project `.env` → `KeyError` or wrong creds. Pass the repo `.env` path (`load_dotenv("/abs/repo/.env")`) or
|
|
@@ -257,7 +260,7 @@ Concrete tool gotchas from a real run; following them saves real time.
|
|
|
257
260
|
per-run progress log on the volume. A run whose app shows `stopped / 0 tasks` seconds after launch did NOT train —
|
|
258
261
|
confirm via the platform task count and the registry, not by assuming.
|
|
259
262
|
- **Mind the ACCOUNT CONTAINER CAP when sizing the fan-out.** A workspace has a max concurrent-container count (10 on
|
|
260
|
-
the
|
|
263
|
+
the engine authors' account; check your own workspace's limit). Spawning more than that does NOT run them all at once — the excess QUEUES and runs in waves
|
|
261
264
|
(correct + no double-spend, but ~N/cap× the wall-clock, and only `cap` show as running). Size the wave to ≤ the cap
|
|
262
265
|
(chunk spawns + gather between waves) or report the wave count honestly. Distinct from any in-container concurrency.
|
|
263
266
|
- **When multiple entrypoints exist, name the one to run** (`script.py::entrypoint`) and use the FULL script path;
|
|
@@ -17,14 +17,18 @@ open-core and domain-neutral; your product brings the domain. Hard rules:
|
|
|
17
17
|
- **You own your capabilities.** The engine's catalog starts empty; your seam registers everything you invoke, at
|
|
18
18
|
startup (section 1). The contract/compliance capabilities are the engine's reference pack, not the engine.
|
|
19
19
|
- **Product → Engine, one way.** Never fork, edit, or reach into engine internals. If the engine needs a change,
|
|
20
|
-
|
|
20
|
+
write an engine request (section 6) — don't work around it here: a product-side patch hides the defect from
|
|
21
|
+
every other product built on the engine.
|
|
22
|
+
- **Your product owns its store and its data; the engine mediates access.** Your product runs its own ArcadeDB and
|
|
23
|
+
has no ArcadeDB client of its own (section 1).
|
|
21
24
|
- **The public surface is `rag_wright.api`; a pack also uses `rag_wright.pack_sdk`.** From `rag_wright.api` import
|
|
22
|
-
`EngineConfig`/`StoreConfig` (`StoreConfig.from_env()` reads `ARCADEDB_*`)/`open_workspace
|
|
25
|
+
`EngineConfig`/`StoreConfig` (`StoreConfig.from_env()` reads `ARCADEDB_*`)/`open_workspace`
|
|
26
|
+
(`temporary_workspace`/`drop_workspace` for disposable and removed databases), the invokers
|
|
23
27
|
(`ainvoke_subgraph`/`invoke_model`/`ainvoke_model`), discovery (`capability_index`/`discover`), the KG accessors
|
|
24
28
|
(`kg_read` with `key_range`, `kg_write`, `kg_edges` with `NOT_NULL`, `kg_count`/`kg_delete`/`kg_update`,
|
|
25
29
|
`entities_by_name`, `span_positions`), `pack_store(ws, cls)` (build your pack's store extension over the
|
|
26
30
|
workspace's store; the store itself stays private), metering and tracing (`measure_usage`, `record_usage`,
|
|
27
|
-
`traced_run`/`traced_step`), answers (`agenerate_answer`, `ajudge_spans` with `EvidenceItem`/`Condition`, the
|
|
31
|
+
`traced_run`/`traced_step`), `agent_chat_model` (an agent's chat model from an engine model id), answers (`agenerate_answer`, `ajudge_spans` with `EvidenceItem`/`Condition`, the
|
|
28
32
|
models from the workspace's roles, your domain wording via `guidance=`), `ModelRole`, pack loading
|
|
29
33
|
(`register_capability`/`load_pack`/`engine_capabilities`/`load_reference_pack`), the document helpers
|
|
30
34
|
(`parse_document`/`aparse_document`, `parse_document_bytes`/`aparse_document_bytes` for uploads,
|
|
@@ -47,13 +51,19 @@ open-core and domain-neutral; your product brings the domain. Hard rules:
|
|
|
47
51
|
## 1. Install
|
|
48
52
|
|
|
49
53
|
```sh
|
|
50
|
-
uv add 'rag-wright>=0.
|
|
54
|
+
uv add 'rag-wright>=0.8.0' # released-product mode (PyPI); see below for local co-development
|
|
51
55
|
```
|
|
52
56
|
|
|
53
57
|
Stand up the runtime prerequisites you provide: ArcadeDB (the store), a model provider (OpenRouter or self-hosted
|
|
54
58
|
vLLM), and — only for NER — `uv add 'rag-wright[ner]'` + `uv run python -m spacy download en_core_web_sm`.
|
|
55
59
|
Read the engine's **installation** + **configuration** docs for the exact `.env` and `EngineConfig` fields.
|
|
56
60
|
|
|
61
|
+
**ArcadeDB is your product's, all of it.** Run your own instance (installation, "Run your product's ArcadeDB"): its
|
|
62
|
+
own container name, its own host ports (a pair no other instance on the machine uses; the engine's test instance
|
|
63
|
+
uses 2480/2424), its data directory in your repo (gitignored) or on storage you manage. Make your settings default
|
|
64
|
+
to your own port, so an unset variable cannot reach another instance and appear to work. Your product code has no
|
|
65
|
+
ArcadeDB client: every read and write goes through `rag_wright.api`.
|
|
66
|
+
|
|
57
67
|
**Local co-development** (engine and product developed together on one machine): keep the floor and add an editable
|
|
58
68
|
source so engine changes are picked up immediately: `[tool.uv.sources] rag-wright = { path = "<engine checkout>",
|
|
59
69
|
editable = true }`. Check against the published release with `uv sync --no-sources` (never with `--locked`; never
|
|
@@ -78,6 +88,18 @@ per implementation chosen per tenant in your code.
|
|
|
78
88
|
(`use_workspace_models(ws)` for a call that does not). To change a tenant's config, open its corpus again with the
|
|
79
89
|
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
90
|
|
|
91
|
+
**Databases.** `open_workspace(config, corpus=...)` creates a missing database by default (and logs
|
|
92
|
+
`created database '<name>'`); where the database must already exist (a read path, a query service, an explicit
|
|
93
|
+
override), pass `create=False`, which raises `LookupError` naming the databases that do exist instead of opening an
|
|
94
|
+
empty graph. A probe, measurement or test that needs its own database uses
|
|
95
|
+
`with temporary_workspace(config, prefix="probe") as ws:`; the database is dropped when the block exits, also when it
|
|
96
|
+
raises. Remove a database with `drop_workspace(config, corpus=...)` (it refuses a blank name and cannot be undone);
|
|
97
|
+
never delete its files or call the ArcadeDB server yourself.
|
|
98
|
+
|
|
99
|
+
**Hermetic tests stub the door the code opens.** Your code reaches the store through `open_workspace`; a fast test
|
|
100
|
+
stubs that. A stub on an entry point the code no longer calls lets the test reach a real store and create a database
|
|
101
|
+
on every run, without failing.
|
|
102
|
+
|
|
81
103
|
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.
|
|
82
104
|
|
|
83
105
|
## 2. Ground before you write (graphify)
|
|
@@ -135,7 +157,25 @@ Work the domain-adaptation guide, grounding each engine call (step 2) and writin
|
|
|
135
157
|
`build_ingestion(document_hook=...)`, which runs once per document after its records are written; a
|
|
136
158
|
first-class resolver config is still engine gap G1. → `kg-construction.md`, `entity-resolution.md`.
|
|
137
159
|
6. **Build the product seam** — your thin layer over the engine API + registered caps (tenancy, orchestration,
|
|
138
|
-
the product tool surface). Wrap `open_workspace`/the invokers/`kg_read`/`measure_usage`.
|
|
160
|
+
the product tool surface). Wrap `open_workspace`/the invokers/`kg_read`/`measure_usage`. Classify each operation
|
|
161
|
+
before building it: deterministic (the backend calls a pre-wired workflow), agent-fronted (a fixed workflow
|
|
162
|
+
reached through an agent), or composed by a model at run time; build each workflow once, as a tool that both the
|
|
163
|
+
UI and an agent call, and never put a model in the path of an unambiguous button click.
|
|
164
|
+
|
|
165
|
+
**PDFs.** Call the parse and ingest functions concurrently as you like: the engine parses one PDF at a time inside
|
|
166
|
+
the process (a crash in the PDF library otherwise, engine ADR-0138) and keeps everything after the parse concurrent.
|
|
167
|
+
Count an upload's pages with `pdf_page_count(data)`, which reads under the same lock; product code never imports the
|
|
168
|
+
PDF library itself.
|
|
169
|
+
|
|
170
|
+
**Agents.** Build a product agent (Deep Agents or LangGraph) on the model the engine gives it, by engine model id:
|
|
171
|
+
`create_deep_agent(model=agent_chat_model("<model id>", max_retries=0), tools=[...])` (`None` takes the `GENERAL`
|
|
172
|
+
role's model). The profile decides endpoint, key and the agent turn's reasoning flag, so your code names no model,
|
|
173
|
+
vendor or vendor flag; every call, a subagent's included, is recorded into `measure_usage()` with the provider's
|
|
174
|
+
real cost and traced when tracing is on. The generic harness substrate (the loop, error levels and deadlines,
|
|
175
|
+
retries, interrupts and human-in-the-loop, replay on resume, memory practice, metering) is engine scope (engine
|
|
176
|
+
ADR-0139, PS-32): it arrives as a third public tier with the `building-an-agent-harness` skill. Until your installed
|
|
177
|
+
engine has it, keep agents thin and never write a substrate of your own; your product keeps its agents, tools,
|
|
178
|
+
prompts, skills, guardrails and decision models.
|
|
139
179
|
|
|
140
180
|
**Using a self-hosted model (Qwen on Modal).** Deploy it from the engine and use its model id like any model:
|
|
141
181
|
`server = await adeploy_model_server(ModelServerSpec(name="<app>", max_num_seqs=<concurrency target>))` (the locked
|
|
@@ -181,8 +221,15 @@ engine PR:
|
|
|
181
221
|
|
|
182
222
|
- Depend on a floor (`rag-wright>=X.Y.Z`, never `==`); `uv.lock` holds the exact version. Dependabot (uv ecosystem)
|
|
183
223
|
opens a PR per new release; your CI — with a LIVE engine-seam test — gates it.
|
|
184
|
-
- Found an engine bug
|
|
185
|
-
|
|
224
|
+
- Found an engine bug, or need something the engine does not have? Write an **engine request** in your repo,
|
|
225
|
+
`docs/engine-requests/YYYY-MM-DD-<slug>.md`: what you found, the evidence (a reproduction, a measurement, the
|
|
226
|
+
exact error), what you want, and what you do meanwhile. The engine fixes it in its own repo (a `fix(scope): …`
|
|
227
|
+
commit, so the next release carries it); never patch around it in the product. Read the engine's
|
|
228
|
+
`docs/domain-adaptation/_engine-gaps.md` first: the gap may be known.
|
|
229
|
+
- An engine symbol on the engine's main branch but not yet released is reached through the editable path
|
|
230
|
+
(local co-development), never through an internal import; move your floor only for a released symbol.
|
|
231
|
+
- Keep a committed snapshot of the installed `rag_wright.api.__all__` and a test that compares them: a change to the
|
|
232
|
+
surface you build on is then named the day it arrives, and any other engine change needs nothing from you.
|
|
186
233
|
- Need that fix before the next release? Temporarily pin
|
|
187
234
|
`[tool.uv.sources] rag-wright = { git = "https://github.com/fzaidi-dai/RAG_Wright", rev = "<merged-sha>" }` and
|
|
188
235
|
`uv lock`; drop the override when the release containing it arrives.
|
|
@@ -214,3 +261,7 @@ link). Link these, and any product-building skills another repo writes for produ
|
|
|
214
261
|
domain instead of authoring your own `.ttl`.
|
|
215
262
|
- Hand-constructing a capability's logic instead of invoking it by name through the invoker.
|
|
216
263
|
- Skipping the eval: write it before the implementation.
|
|
264
|
+
- Patching around an engine defect in product code instead of writing the engine request.
|
|
265
|
+
- Giving product code an ArcadeDB client, pointing it at another product's or the engine's instance, or deleting a
|
|
266
|
+
database's files by hand (`drop_workspace` removes one; `temporary_workspace` keeps scratch from piling up).
|
|
267
|
+
- Naming a model, vendor or vendor flag in product code; writing your own agent harness substrate.
|
|
@@ -6,8 +6,9 @@ OPENROUTER_API_KEY=
|
|
|
6
6
|
# OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
|
|
7
7
|
|
|
8
8
|
# --- ArcadeDB (single store: hybrid retrieval index + knowledge graph) ---
|
|
9
|
-
#
|
|
10
|
-
#
|
|
9
|
+
# Working on the engine: its own test instance, run locally with Docker (see docs/ArcadeDB_Local.md).
|
|
10
|
+
# A product sets these in its own .env, pointing at its own instance (docs/installation.md).
|
|
11
|
+
# The password below is the container's root password; set the same value here and in the `docker run` JAVA_OPTS.
|
|
11
12
|
ARCADEDB_HOST=localhost
|
|
12
13
|
ARCADEDB_PORT=2480
|
|
13
14
|
ARCADEDB_USER=root
|
|
@@ -4,6 +4,15 @@ 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.9.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.8.0...0.9.0) (2026-10-13)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* **PS-36:** agent_chat_model, an agent's chat model from a model profile, metered and traced ([f1af92a](https://github.com/fzaidi-dai/RAG_Wright/commit/f1af92a848c2de7dd02cf1d99ce61cd3df8d20d9))
|
|
13
|
+
* **PS-37:** drop_workspace and temporary_workspace, so a product removes the databases it creates ([44c0c78](https://github.com/fzaidi-dai/RAG_Wright/commit/44c0c78b0b8dd02724920391a564f3cda006c41c))
|
|
14
|
+
* **PS-38:** close the public-surface gaps a new product hits (G12, G14, G22, G23) and require ARCADEDB_PORT ([0d0c1f1](https://github.com/fzaidi-dai/RAG_Wright/commit/0d0c1f16b95bc763dec348a59965de2e8b4a22c9))
|
|
15
|
+
|
|
7
16
|
## [0.8.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.7.0...0.8.0) (2026-10-12)
|
|
8
17
|
|
|
9
18
|
|
|
@@ -55,7 +55,7 @@ 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-12): the evals workstream is COMPLETE
|
|
58
|
+
> **CURRENT STATE (2026-10-12): the evals workstream is COMPLETE and RELEASED as `rag-wright` 0.8.0** (PyPI + GitHub release `0.8.0`; ledger
|
|
59
59
|
> `docs/specs/evals/plan.md`, EV-0..EV-6; EV-7 optional): gold sets from experts' files, a scorer per capability kind,
|
|
60
60
|
> the runner `arun_eval` with an optional Langfuse backend, `EvalReport`, `aevaluate_ingestion`; the reference is
|
|
61
61
|
> `docs/evals.md`. With it in 0.8.0: PS-24 (async calls on every event loop, ADR-0135), PS-25 (the release PR bumps
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rag-wright
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.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
|
|
@@ -132,8 +132,8 @@ from git or a local path to get them (see [`docs/installation.md`](docs/installa
|
|
|
132
132
|
0.1.0 migrates with the
|
|
133
133
|
[breaking-changes record](docs/specs/ingestion-hooks/ing8-breaking-changes.md).
|
|
134
134
|
|
|
135
|
-
Runtime prerequisites: **ArcadeDB** (the store
|
|
136
|
-
[`docs/installation.md`](docs/installation.md)); **a model provider** (an OpenRouter key by default, or a self-hosted
|
|
135
|
+
Runtime prerequisites: **ArcadeDB** (the store: your product runs its own instance and owns its data, including
|
|
136
|
+
the knowledge graph; see [`docs/installation.md`](docs/installation.md)); **a model provider** (an OpenRouter key by default, or a self-hosted
|
|
137
137
|
endpoint); and, only for NER (named entity recognition), the optional extra `uv add 'rag-wright[ner]'` +
|
|
138
138
|
`uv run python -m spacy download en_core_web_sm`.
|
|
139
139
|
|
|
@@ -76,8 +76,8 @@ from git or a local path to get them (see [`docs/installation.md`](docs/installa
|
|
|
76
76
|
0.1.0 migrates with the
|
|
77
77
|
[breaking-changes record](docs/specs/ingestion-hooks/ing8-breaking-changes.md).
|
|
78
78
|
|
|
79
|
-
Runtime prerequisites: **ArcadeDB** (the store
|
|
80
|
-
[`docs/installation.md`](docs/installation.md)); **a model provider** (an OpenRouter key by default, or a self-hosted
|
|
79
|
+
Runtime prerequisites: **ArcadeDB** (the store: your product runs its own instance and owns its data, including
|
|
80
|
+
the knowledge graph; see [`docs/installation.md`](docs/installation.md)); **a model provider** (an OpenRouter key by default, or a self-hosted
|
|
81
81
|
endpoint); and, only for NER (named entity recognition), the optional extra `uv add 'rag-wright[ner]'` +
|
|
82
82
|
`uv run python -m spacy download en_core_web_sm`.
|
|
83
83
|
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ArcadeDB for engine development
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
**This page is for working on the engine itself.** A product runs its own ArcadeDB instance and owns its data,
|
|
4
|
+
including the knowledge graph: see [Run your product's ArcadeDB](installation.md#run-your-products-arcadedb-the-single-store).
|
|
5
|
+
The instance below is the engine developer's own: it holds the databases the engine's live store tests
|
|
6
|
+
(`pytest -m store`) and its evals build, on public or locally acquired evaluation corpora. No product points at it,
|
|
7
|
+
and no product's data goes in it.
|
|
8
|
+
|
|
9
|
+
It runs as a local Docker container, pinned to **ArcadeDB 26.7.1** (the latest stable tag; `:latest` resolves to a
|
|
10
|
+
moving `-SNAPSHOT` dev build, which we deliberately do not use). This is the version the engine's schema and the
|
|
11
|
+
`vector.fuse` hybrid retrieval are validated on. Sparse vector index and server-side hybrid retrieval exist since
|
|
12
|
+
26.5.1.
|
|
6
13
|
|
|
7
14
|
## Start
|
|
8
15
|
|
|
@@ -16,9 +23,10 @@ docker run -d --name arcadedb-ragwright \
|
|
|
16
23
|
```
|
|
17
24
|
|
|
18
25
|
- Port `2480` is the HTTP API the `arcadedb_python` client uses; `2424` is the binary protocol.
|
|
19
|
-
- Data persists under
|
|
26
|
+
- Data persists under this checkout's gitignored `data/arcadedb/`: engine test and eval databases only, never
|
|
27
|
+
committed.
|
|
20
28
|
- `ARCADEDB_OPTS_MEMORY` sets the JVM heap, the store's capacity limit (the image default is `-Xms2G -Xmx2G`, which
|
|
21
|
-
ran out of memory part-way through the full CUAD knowledge graph). It is read at container start, so changing it
|
|
29
|
+
ran out of memory part-way through the full CUAD evaluation knowledge graph). It is read at container start, so changing it
|
|
22
30
|
means recreating the container.
|
|
23
31
|
- Set the same password in `.env` as `ARCADEDB_PASSWORD` (with `ARCADEDB_HOST=localhost`,
|
|
24
32
|
`ARCADEDB_PORT=2480`, `ARCADEDB_USER=root`, `ARCADEDB_DATABASE=rag_wright`). `.env` is gitignored.
|
|
@@ -58,5 +66,5 @@ A database created before the `Span` field rename (`contract_id`, `function`, `f
|
|
|
58
66
|
|
|
59
67
|
```bash
|
|
60
68
|
docker stop arcadedb-ragwright && docker rm arcadedb-ragwright # stop (data persists in the volume)
|
|
61
|
-
rm -rf data/arcadedb # wipe
|
|
69
|
+
rm -rf data/arcadedb # wipe the engine's local test databases
|
|
62
70
|
```
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# ADR-0139: The agent harness substrate is engine scope
|
|
2
|
+
|
|
3
|
+
**Status:** accepted · **Date:** 2026-10-12 · **Supersedes in part:** ADR-0052 (the placement of the agent harness
|
|
4
|
+
in the product) · **Amends later:** ADR-0041 (an `agent` capability kind, PS-33) · **Related:** ADR-0128 (the public
|
|
5
|
+
tiers), ADR-0134 (skill placement), ADR-0015 (the RLM Deep Agent), RuleWright's request of 2026-10-12 and its
|
|
6
|
+
ADR-0021 amendment
|
|
7
|
+
|
|
8
|
+
## Context
|
|
9
|
+
|
|
10
|
+
ADR-0052 put the agent harness in the product: each product would hand-build its orchestration. RuleWright has
|
|
11
|
+
since built one on Deep Agents and LangGraph, and measured it: 32 modules, 7,514 lines. Only three import anything
|
|
12
|
+
from the product, and 21 name no domain concept. What it found expensive is domain-free: the loop, error levels and
|
|
13
|
+
deadlines, retry composition, human-in-the-loop and the interrupt protocol, replay on resume, chat interaction,
|
|
14
|
+
per-layer context management, memory practice (including cross-tenant namespaces), metering, bounded grading,
|
|
15
|
+
repeat suppression and the decision registry. Each of those cost it a real defect to get right. What makes the
|
|
16
|
+
product what it is lies elsewhere: its tools and the capabilities it gives each agent, the guardrails that read
|
|
17
|
+
content, its prompts and skills, its decision models.
|
|
18
|
+
|
|
19
|
+
Two more products on the engine are planned, and each needs a harness. Left in the product, the substrate would be
|
|
20
|
+
written three times and drift three ways. Since ADR-0052 the engine has also been de-domained into a substrate for
|
|
21
|
+
building domain products (ADR-0124, ADR-0128); driving its capabilities with agents is part of that job.
|
|
22
|
+
|
|
23
|
+
A second reason surfaced on review. `create_deep_agent(...)` returns a LangGraph `CompiledStateGraph`, the same type
|
|
24
|
+
as the engine's workflow subgraphs, and the capability invoker resolves any `impl_ref` factory without knowing what
|
|
25
|
+
is behind it (`capabilities/invoke.py`). So a harness, customised for one job, can itself be registered as a
|
|
26
|
+
capability: an agentic capability beside the deterministic functions, the models and the workflow subgraphs. The
|
|
27
|
+
RLM capabilities already are this, built by hand (ADR-0015). Only the engine owns the capability layer and ARD, so
|
|
28
|
+
only the engine can make that a supported pattern.
|
|
29
|
+
|
|
30
|
+
## Decision
|
|
31
|
+
|
|
32
|
+
1. **The agent harness substrate moves into the engine**, as a third public tier, `rag_wright.harness`, beside
|
|
33
|
+
`rag_wright.api` (a product's seam) and `rag_wright.pack_sdk` (a pack's code).
|
|
34
|
+
2. **The substrate is what exists, separated; it is not redesigned for products not yet built.** It is RuleWright's
|
|
35
|
+
working harness with its product parts removed. No protocol is added to serve a future product's needs; a
|
|
36
|
+
product customises the substrate through what the agent framework already provides (middleware, tools, prompts,
|
|
37
|
+
skills, subagents and plain functions), and a need it cannot meet that way is an engine request like any other.
|
|
38
|
+
3. **RuleWright does the separation**, because the code and the analysis are in its repo. It moves the substrate
|
|
39
|
+
into a package that imports nothing from the product and names no domain concept, its product parts consume
|
|
40
|
+
that package, and it hands the package over. The engine then adopts it (PS-32): the harness imports engine
|
|
41
|
+
code only through `rag_wright.api`, no other engine module imports the harness (import contracts), the
|
|
42
|
+
domain-vocabulary guard covers it, and its deployment-specific dependencies (the Postgres checkpointer) sit in an
|
|
43
|
+
optional extra, `rag-wright[harness]`, so a plain engine install stays as it is.
|
|
44
|
+
4. **The product keeps** its tools and operations, its agents and their roster, prompts and skills, the guardrails
|
|
45
|
+
that read content, its decision models, its tenancy model and its UI.
|
|
46
|
+
5. **The blueprint ships with the code.** RuleWright's `building-an-agent-harness` skill moves into
|
|
47
|
+
`src/rag_wright/.agents/skills/` (ADR-0134), version-matched to the substrate it describes.
|
|
48
|
+
6. **Agentic capabilities are a later, separate workstream (PS-33).** It adds an `agent` capability kind (amending
|
|
49
|
+
ADR-0041: invoked like a subgraph, but declared as non-deterministic, tool-using, possibly pausing for a human,
|
|
50
|
+
and spending against a budget), typed contracts at the boundary, interrupts across the capability boundary,
|
|
51
|
+
deadlines and budgets passed down nested agents, and a worked example on public data. Not started until agreed.
|
|
52
|
+
|
|
53
|
+
## Consequences
|
|
54
|
+
|
|
55
|
+
- One substrate, fixed once, for every product's chat agent and later for agentic capabilities.
|
|
56
|
+
- The engine's support surface and public API grow; a harness change ships as an engine release. The tier may
|
|
57
|
+
change between minor releases until a second product uses it, and every change goes in that release's migration
|
|
58
|
+
guide.
|
|
59
|
+
- `deepagents`, `langgraph` and `langchain-quickjs`, until now used only by the parked RLM agent, move onto a
|
|
60
|
+
supported path. Their floors stay floors (ADR-0112). A product still declares its own floors for the agent
|
|
61
|
+
framework it calls directly (RuleWright's ADR-0021, decision 1).
|
|
62
|
+
- Publishing the substrate in the open core cannot be undone. It is accepted because the substrate is not where a
|
|
63
|
+
product's value lies; the product keeps its tools, guardrails, prompts, skills and decision models closed.
|
|
64
|
+
|
|
65
|
+
## Alternatives considered
|
|
66
|
+
|
|
67
|
+
- **Each product writes its own** (ADR-0052 as it stood): the same expensive code three times, the same defects
|
|
68
|
+
rediscovered.
|
|
69
|
+
- **Wait for a second product's harness, then decide:** guarantees a second copy to merge later.
|
|
70
|
+
- **A separate open package, its own repo:** clean scope, but a second CI and release line and an engine-by-harness
|
|
71
|
+
compatibility matrix, every seam change becoming two releases; and agentic capabilities would still need the
|
|
72
|
+
capability layer, which is the engine's.
|
|
73
|
+
- **A private shared package:** right only if the harness were where a product's value lies; RuleWright's
|
|
74
|
+
measurement says it is not.
|
|
75
|
+
|
|
76
|
+
## Correction, 2026-10-13
|
|
77
|
+
|
|
78
|
+
RuleWright re-measured its harness before starting the separation (its engine request
|
|
79
|
+
`2026-10-12-correction-to-the-harness-measurement.md`). The Context's figures were wrong: **13** modules import
|
|
80
|
+
something from the product (6 of them a domain package), not three; **18** name no domain concept once comments and
|
|
81
|
+
docstrings are stripped, not 21; **12 modules (2,193 lines) lift unchanged and 20 modules (5,321 lines) need work**,
|
|
82
|
+
so the separation is staged work, not three imports turned into protocols. A third axis, invisible to both of those
|
|
83
|
+
measurements, also keeps code product-shaped: deployment choice, vendor names and tenancy shape (a model id and an
|
|
84
|
+
`is_openrouter()` helper in code, a direct `psycopg` import, a `(customer, workspace)` memory namespace).
|
|
85
|
+
|
|
86
|
+
The decision is unchanged; its reasons did not rest on these figures. Two details of it are sharpened:
|
|
87
|
+
|
|
88
|
+
- **The substrate's seams are the agent framework's own types**, not new protocols: it accepts a LangGraph
|
|
89
|
+
checkpointer, a memory namespace prefix from the caller, and a chat model (or a model profile name), and names no
|
|
90
|
+
model, vendor, database driver or tenancy shape. The product builds the Postgres checkpointer and passes it in, so
|
|
91
|
+
**the engine needs no `rag-wright[harness]` Postgres extra** (Decision 3's extra is withdrawn).
|
|
92
|
+
- **PS-32's acceptance gains two checks:** RuleWright's third guard (deployment, vendor and tenancy shape) runs over
|
|
93
|
+
`rag_wright.harness` in the engine's suite, and the engine repeats all three measurements itself at handover.
|
|
94
|
+
Building an agent's chat model from a model profile, with tracing and usage metering, goes on `rag_wright.api`
|
|
95
|
+
first (PS-36), so the product's model code is deleted rather than moved.
|