rag-wright 0.13.0__tar.gz → 0.14.1__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.13.0/src/rag_wright/.agents → rag_wright-0.14.1/.claude}/skills/authoring-a-capability/SKILL.md +9 -3
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/building-an-ingestion-capability/SKILL.md +10 -1
- {rag_wright-0.13.0/src/rag_wright/.agents → rag_wright-0.14.1/.claude}/skills/using-the-rag-wright-engine/SKILL.md +2 -1
- rag_wright-0.14.1/.release-please-manifest.json +3 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/CHANGELOG.md +17 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/CLAUDE.md +11 -1
- {rag_wright-0.13.0 → rag_wright-0.14.1}/PKG-INFO +1 -1
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +25 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/api/README.md +19 -1
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/architecture.md +4 -2
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/concepts.md +6 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/ontology-authoring.md +6 -1
- rag_wright-0.14.1/docs/specs/langgraph-ingestion/plan.md +77 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/plan.md +2 -0
- rag_wright-0.14.1/docs/specs/public-surface/rulewright-migration-0.13.0.md +34 -0
- rag_wright-0.14.1/docs/specs/public-surface/rulewright-migration-0.14.0.md +45 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/templates/product-starter/CLAUDE.md.template +2 -1
- {rag_wright-0.13.0 → rag_wright-0.14.1}/pyproject.toml +1 -1
- {rag_wright-0.13.0/.claude → rag_wright-0.14.1/src/rag_wright/.agents}/skills/authoring-a-capability/SKILL.md +9 -3
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/building-an-ingestion-capability/SKILL.md +10 -1
- {rag_wright-0.13.0/.claude → rag_wright-0.14.1/src/rag_wright/.agents}/skills/using-the-rag-wright-engine/SKILL.md +2 -1
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/builder.py +304 -60
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/store/arcadedb.py +63 -11
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tasks.md +7 -1
- rag_wright-0.14.1/tests/fixtures/ingestion/parity.json +3195 -0
- rag_wright-0.14.1/tests/fixtures/ingestion/parity_blank.pdf +29 -0
- rag_wright-0.14.1/tests/fixtures/ingestion/parity_cover_with_attachment.pdf +0 -0
- rag_wright-0.14.1/tests/fixtures/ingestion/parity_db_with_a_broken_report.xlsx +0 -0
- rag_wright-0.14.1/tests/fixtures/ingestion/parity_db_with_reports.xlsx +0 -0
- rag_wright-0.14.1/tests/fixtures/ingestion/parity_grid.xlsx +0 -0
- rag_wright-0.14.1/tests/ingestion/test_graph_live.py +84 -0
- rag_wright-0.14.1/tests/ingestion/test_graph_parity.py +424 -0
- rag_wright-0.14.1/tests/store/test_concurrent_writes.py +108 -0
- rag_wright-0.14.1/tests/store/test_pack_schema_properties.py +54 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/uv.lock +1 -1
- rag_wright-0.13.0/.release-please-manifest.json +0 -3
- rag_wright-0.13.0/tests/store/test_concurrent_writes.py +0 -50
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/settings.json +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/building-a-product-backend/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/building-a-product-frontend/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/building-an-agent-harness/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/laya/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/qwen-vllm-modal/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/specifying-a-product-on-the-engine/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.env.example +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.github/workflows/publish.yml +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.github/workflows/release-please.yml +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/.gitignore +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/LICENSE +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/README.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/SPEC.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/conftest.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/ArcadeDB_Local.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/OBSERVABILITY.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0001-stack-and-library-choices.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0004-entity-disambiguation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0005-relational-golden-set.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0006-model-profile.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0007-arcadedb-store-schema.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0032-nl-to-type-two-step-reason-emit-on-gemma.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0038-full-cuad-kg-on-gcp-gpu-vm-and-gcs-backup.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0042-clause-level-span-id-provenance-and-content-hash-backfill.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0055-confidence-out-of-band.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0057-async-engine-architecture.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0058-structure-first-chunking.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0067-domain-pack-retargeting.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0086-streaming-cost-capture.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0090-affiliate-of-extraction.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0091-retire-partyto-edge.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0092-idempotent-write-graph.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0093-entities-by-name-seam.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0094-workspace-document-scope.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0095-span-page-provenance.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0098-invoke-time-document-scope.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0100-profile-based-model-routing.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0107-requirement-page-provenance.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0118-engine-core-api-vs-ard-adapter-free-impl-ref-client.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0119-jev-typed-decision-model-for-compliance-closed-set-fields.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0127-retire-the-okf-code.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0129-laya-temperatures-and-the-sklearn-floor.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0130-deploy-the-self-hosted-model-server-from-the-engine.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0131-model-server-hardening-after-rulewright-review.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0132-model-server-cold-start-from-a-gpu-snapshot.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0133-model-call-deadline-follows-the-timeout-and-a-thinking-cap.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0134-skills-for-product-developers-are-linked-per-project-never-globally.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0135-the-seam-gives-each-event-loop-its-own-async-http-client.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0136-spreadsheet-tables-are-glued-back-across-blank-rows.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0137-generated-answers-state-their-support-and-none-is-an-abstention.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0138-the-engine-reaches-pdfium-through-one-locked-door.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0139-the-agent-harness-substrate-is-engine-scope.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/README.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/api/harness.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/api/pack_sdk.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/README.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/design/deontic-applicability-routing.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/design/semantic-subject-segmentation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/design/unify-subject-preprocessing.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0037-closed-vocab-drops-verbatim-values-to-other.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/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.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0039-the-provision-detector-reads-text-but-docling-puts-the-section-number-in-marker.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/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.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0041-leg-b-discards-the-best-dense-matches-on-some-queries.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/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.13.0 → rag_wright-0.14.1}/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.13.0 → rag_wright-0.14.1}/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.13.0 → rag_wright-0.14.1}/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.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0046-appending-a-natural-follow-up-to-a-question-drops-the-clause-type.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0047-an-exact-deepagents-pin-transitively-pins-every-consumer.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/engine-issues/0048-the-pinned-endpoints-latency-tail-makes-agent-runs-undebuggable-from-either-side.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-01_issue-0013-recall-first-actor-gate_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-04_issue-0016-thread-safe-embedder_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-05_tagparse-ingestion-and-granite-4.2_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_issue-0029-idempotent-write-graph_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_issue-0030-entities-by-name_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_rename-run-ad-compliance-check_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0031-followup-failclosed-and-nodrift_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0031-followup-validate-ingested-set_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0031-workspace-document-scope_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0032-span-page-provenance_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-10_issue-0034-invoke-time-document-scope_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-11_issue-0035-followup-derived-guard_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-11_issue-0035-mcp-no-model-tenant_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-14_document-signals-off-citation_0044_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-16_qwen3-27b-single-a100-serving-profile_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-18_fp8-kv-16k-single-a100_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-21_0048-part2-modal-answers_from_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/handoffs/2026-09-21_0048-part2-modal-scoping-questions_rulewright.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/misc/.gitkeep +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/Corpus_Acquisition.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/async-migration.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/demo_plan.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/configuration.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/contract_pipeline_explainer.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/corpus_ingest_recipe.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/README.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/_engine-gaps.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/authoring-capabilities.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/classification-and-decision-models.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/entity-resolution.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/evals-from-expert-files.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/domain-adaptation/kg-construction.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/classifier_model_ab.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/compliance_demo.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/compliance_gate_cc7.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/compliance_rung2_cc7.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/dg_model_ab.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/function_gate_recall.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/generation_robustness_b_vs_c.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/nl_to_type_cu-d2.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/ocr_benchmark.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/prod1_readiness.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/prod2_readiness.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/query_side_model_ab.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/silver_granite_vs_gemma4.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/silver_provider_routing.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/evals.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/harness.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/installation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/playbook.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/capability_profiles.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/contracts_product_roadmap.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/engine-api-migration-handoff.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/engine_async_api.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/new-domain-build-sequence.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/product/seam-adaptation-guide.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/proposals/new-domain-developer-journey.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/proposals/ontology-induction.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/quickstart.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/reference-pack.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/releasing.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/engine-platform/SPEC.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/engine-platform/TASKS.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/engine-prep/plan.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/evals/plan.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/ingestion-hooks/plan.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-arcadedb-separation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.10.0.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.11.0.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.12.0.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.3.0.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.4.0.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.5.0.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.6.0.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.7.0.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.8.0.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-migration-0.9.0.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/specs/public-surface/rulewright-reply-2026-10-10-laya-and-sklearn.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/templates/product-starter/README.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/templates/product-starter/dependabot.yml +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/templates/product-starter/playbook.md.template +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/upstream/laya-temperature-range-mismatch.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/docs/workspaces.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/acord.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/acord_retrieval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/boundary_residue_gold.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/build_golden.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/compliance_demo/subjects/post_violation.txt +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/condensed_pipeline.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/contract_parity_live.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/contractnli_judge.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/cuad_highlight.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/embedded_eval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/full_pipeline_rerank.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/function_ceiling.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/function_property_rerank.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/function_rerank.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/gate1_chunker_ab.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/gate2_hybrid_rerank.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/golden/relational/set.json +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/golden.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/ground_discriminator_rerank.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/harness.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/ingestion_live_smoke.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/kg_primary.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/kg_property_rerank.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/listwise_rerank.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/multihop.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/nl_to_type.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/relational_eval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/residual_decision_gold.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/segmenter_eval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/semantic_judge_gold.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/test_acord.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/test_acord_retrieval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/test_harness.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/test_multihop_set.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/eval/unit_grouper_eval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/examples/model_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/examples/quickstart.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/plan.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/release-please-config.json +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ab_model_overlap.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acord_unify.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_acord.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_cuad.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_ecfr.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_edgar.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_ftc_255.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/acquire_prod1_corpus.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/audit_reclass_flips.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/author_leg_a_silver_key.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/backfill_affiliations.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/backfill_clause_span_id.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/backfill_edge_source_doc_id.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/backup_kg_to_gcs.sh +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/bootstrap_template_capture.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/bootstrap_typed_edges.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/build_api_docs.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/build_api_docs.sh +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/build_cuad_clause_cache.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/build_function_routing_map.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/build_harness_doc.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_assemble_v2.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_assemble_v3.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_generate_hard_negatives.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_generate_hard_positives.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_generate_training.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_hybrid.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_hybrid2.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_jev_actor.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_jev_claimtypes.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_jev_operative.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_label_spans.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_laya_prep.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_laya_train.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_prep_operative.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_relabel_rubric.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_relabel_rubric2.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/cic1_train_operative.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/compare_extraction_models.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/compliance_actor_gate_smoke.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/compliance_engine_smoke.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/compliance_policy_demo.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/curate_taxonomy_gaps.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/dg_model_ab.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_knn_expansion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_knn_rerank.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_leg_pool.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_legs.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_pool.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_relstructure.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/diagnose_acord_retrieval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/eval_all.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/eval_ce.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/eval_listwise_b.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/export_ce_dataset.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/extract_features.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/listwise_variants.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/relational_features.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/train_ce.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/distill/train_modal.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/enrich_edgar_candidates.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/eval_chunking_ab.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/eval_compliance_gold.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/extract_arcadedb_docs.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/fetch_reference_models.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/generate_contract_python.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/git_post_commit_graphify.sh +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/granite_chunker_assess.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/graph_status.sh +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_acord.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_compliance_async_prod2.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_compliance_document_prod2.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_compliance_prod2.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_cuad.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_cuad_full.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_ftc_compliance.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_prod1.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_prod1_async.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ingest_smoke.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/install_git_hooks.sh +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/label_new_functions.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/legb_function_gate_recall.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/make_compliance_fixtures.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/make_compliance_gold.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/mcp_compliance_agent_demo.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/mcp_intra_document_qa_smoke.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/mcp_query_legs_agent_demo.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/measure_generation_robustness.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/measure_harness_genericity.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/measure_silver.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/merge_docs_into_framework.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/migrate_silver_evidence_autotag.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/migrate_span_fields.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/mine_scarce_functions.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_arcadedb.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_backfill.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_exception_linking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_gemma4_vllm.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_gemma4_vllm_snapshot.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_granite_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_granite_throughput.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_granite_vllm_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_query_app.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_qwen3_27b_bench.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_qwen3_27b_snapshot.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/modal_stack_a100.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ocr_benchmark.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ocr_preprocess.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/ontology_dimension_check.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/phase_a_leg_validate.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/populate_clause_kg.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/populate_entity_graph.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/populate_entity_graph_extracted.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/populate_property_store.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/prep_relational_verification.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/publish_manifests.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/reclassify_kg.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/refresh_framework_graph.sh +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/revert_reclass_flips.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/run_acord_retrieval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/run_clause_exception_linking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/semantic_judge_live_validate.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/semantic_judge_probe.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/snapshot_leg_a_eval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/stack_correctness_validate.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/table_retrieval_smoke.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/train_function_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/train_legalbert_function.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/train_legalbert_modal.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/typed_rerank_validate.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/verify_wheel_install.sh +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/vllm_extraction_ab.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/vllm_kg_query_validate.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/scripts/vllm_raw_diagnostic.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/building-a-product-backend/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/building-a-product-frontend/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/building-an-agent-harness/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/laya/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/qwen-vllm-modal/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/.agents/skills/specifying-a-product-on-the-engine/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/agents.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/answers.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/config.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/discover.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/documents.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/ids.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/invoke.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/kg.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/mcp.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/tracing.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/usage.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/api/workspace.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/answer_generator.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/ard.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/chunk_read.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/chunk_write.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/disambiguation.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/document_parse.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/document_scope.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/embedding.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/entity_resolution.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/fusion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/graph_query.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/graph_storage.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/hybrid_search.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/invoke.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/jev_decision.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/manifests.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/parse_audit.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/parsing.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/registry.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/remote_encoders.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/reranking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/retrieval_core.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/rlm_chunking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/scan_quality.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/sheet_tables.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/span_search.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/vision_to_text.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/chunk.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/evals.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/graph.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/identifiers.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/ingestion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/provenance.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/contracts/span.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/corpus/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/corpus/canonicalize.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/corpus/document_parser.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/corpus/embedded.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/corpus/http.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/evals/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/evals/gold.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/evals/langfuse_backend.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/evals/runner.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/evals/scorers.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/accounting.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/agent.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/batch.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/clarify.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/confirm.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/decisions.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/definition.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/dispatch.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/errors.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/events.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/filesystem.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/grading.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/interpreter.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/memory.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/models.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/rules.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/runs.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/scope.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/seen.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/skills.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/thinking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/tiers.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/tracing.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/withhold.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/harness/workers.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/evaluate.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/group.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/layout.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/segment.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ingestion/tables.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/model_servers.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/profiles.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/seam.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/tag_structured.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/tracing.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/usage.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/models/weights.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ontology/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ontology/pack_schema.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/ontology/registry.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/pack_sdk/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/invokers.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/pack.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/options.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/pack.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/function_families.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/packs/reference_seam.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/py.typed +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/generation/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/generation/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/rlm/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/rlm/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/rlm/agent.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/spans/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/spans/page_map.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/store/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/store/chunk_text.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/store/seam.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/subgraphs/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/subgraphs/observability.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/subgraphs/scaffold.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/util/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/util/concurrent.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/util/pdfium.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/src/rag_wright/util/spacy_model.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_agent_chat_model.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_agent_chat_model_live.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_answers_exports.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_api_embedder_ps39.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_bytes_ingest.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_capability_reexports.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_decision_swap_doc_example.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_discover.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_documents.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_drop_workspace.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_drop_workspace_live.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_e2e.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_invoke.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_kg.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_mcp.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_metering_tracing_exports.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_migrate_span_fields.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_model_role_export.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_open_workspace_reconfig.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_options.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_pack_sdk.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_pack_store.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_pdf_page_count.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_public_gaps_ps38.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_tracing_helpers_ps32.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_usage.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_workspace.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/api/test_workspace_models.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/domain_vocabulary_baseline.json +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_api_docs_current.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_doc_references.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_engine_domain_vocabulary.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_import_contracts.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_lock_version.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_packs_use_store_primitives.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_pdfium_door.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/arch/test_shipped_skills.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/async_helpers.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_answer_generator.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_answer_generator_async.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_assertion_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_authoring_contract.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_chunk_read.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_chunk_write.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_claim_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_clause_exception_linking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_compliance_judgment.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_compliance_store.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_contract_kg_serve.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_contract_kg_store.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_dg_adapter.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_dg_async.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_dg_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_dg_model_seam.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_dg_private.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_disambiguation.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_document_scope.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_embedding.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_embedding_profiles.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_entity_resolution.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_fusion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_graph_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_graph_query.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_graph_storage.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_highlight_serve.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_hybrid_search.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_jev_decision.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_manifest_validation.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_manifests.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_parse_audit.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_parsing.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_parties_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_query_function_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_query_understanding.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_registry.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_remote_encoders.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_repair_partition.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_requirement_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_reranking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_retrieval_core.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_rlm_chunking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_rlm_chunking_async.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_rlm_method.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_rlm_synthesis.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_runtime_registry.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_scan_quality.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_span_relevance_judgment.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_span_search.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_structural_model_fallback.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_tiered_ocr.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/capabilities/test_vlm_ocr.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/compliance_fakes.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/conftest.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_canonical_source_doc_id.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_chunk_record.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_compliance.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_function.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_function_routing.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_identifiers.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_ingestion_hooks.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_jurisdiction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_ontology.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_property.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_provenance.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/contracts/test_value_match.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/_ooxml_fixtures.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_canonicalize.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_cuad.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_cuad_ingestion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_document_parser.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_edgar.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_embedded.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_gcs_ingestion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_http.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_parse_wire2.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/corpus/test_selection.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/eval/test_contractnli_judge.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/eval/test_cuad_highlight_metrics.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/eval/test_kg_property_rerank.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/eval/test_nl_to_type_metrics.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/eval/test_relational_eval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_gold_contracts.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_gold_import.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_langfuse_backend.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_runner.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_scorer_parity.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_scorers_a.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_scorers_b.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_scorers_c.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/evals/test_scorers_d.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/ingestion/textile_test_report.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/leg_a_silver/README.md +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/fixtures/table-bearing-contract.pdf +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/foundation/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/foundation/test_arcadedb_hybrid.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/foundation/test_model_seam_structured.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_greenfield_conformance.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_accounting.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_engine_wiring.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_genericity.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_live.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_recorder.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/harness/test_harness_thinking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_aevaluate.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_builder.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_concurrency_ceiling.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_document_metadata.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_evaluate.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_evaluate_labels.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_layout_segmenter.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_sheet_continuations.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_spreadsheet_content.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_table_rows.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_tuning.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_unit_grouper.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ingestion/test_unit_representative.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/journey/incidents_domain.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/journey/incidents_pack.ttl +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/journey/test_incidents_journey.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/journey/test_pack_schema.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/test_compliance_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/test_intra_document_qa_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/test_relational_qa_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_async_infra.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_classifier_heads_load_clean.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_model_servers.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_models_dir.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_no_gemma_default.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_profile_routing.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_profile_seam.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_seam_async.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_seam_deadline_and_cap.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_seam_event_loops.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_seam_retry.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_seam_stream.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_serving_seam.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_serving_wiring.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_tag_structured.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_tag_structured_async.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_tracing.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/models/test_usage.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_clause_template.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_derivation.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_entity_taxonomy.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_template_captured_in_ttl.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/reference/test_compliance_reference.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/reference/test_contract_seam.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/scripts/test_eval_chunking_ab.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/scripts/test_eval_classifier_ab.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/scripts/test_fetch_reference_models.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/scripts/test_generation_robustness_errors.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/skills/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/skills/test_creating_evals_skill_example.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/skills/test_ingestion_skill_example.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_boundary.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_classifier_property_extractor.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_clause_function_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_clause_function_classifier_async.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_clause_kg_extractor.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_clause_kg_extractor_async.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_dim_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_dim_fleet_live.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_function_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_hybrid_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_hybrid_property_extractor.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_legalbert_classifier.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_model_capabilities.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_new_function_labels.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_page_map.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_property_extractor.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_property_grounding.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_reclassify.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_residual_decision.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_scarce_function_labels.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_segment.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_segmentation_vocab.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_semantic_judge.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_setfit_clause_adapter.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_setfit_probabilities.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_span_offsets.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_stage_labels_0005.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_symbolic_validation.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/spans/test_tag_clause_extractor.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_affiliation_backfill.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_clause_kg.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_contract.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_property.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_requirement_sources.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_schema.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_arcadedb_span.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_chunk_text.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_contract_kg_store_live.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_document_metadata_live.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_document_scope.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_engine_domain_neutral.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_entities_by_name.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_kg_edges.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_kg_mutations.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_kg_range.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_kg_read.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_kg_write.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_neutral_schema.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_store_create_flag.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/store/test_write_graph_idempotent.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_async_ingestion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_clause_results.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_compliance_check.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_compliance_ingestion.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_graph_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_ingest_knobs.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_intra_document_qa.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_observability.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_partial_entry_contract.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_relational_qa.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_requirement_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_scaffold.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_semantic_chunking.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/test_backfill_clause_span_id.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/test_dg_model_ab.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/test_populate_clause_kg.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/test_populate_entity_graph.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/util/__init__.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/util/test_concurrent.py +0 -0
- {rag_wright-0.13.0 → rag_wright-0.14.1}/tests/util/test_spacy_model.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: authoring-a-capability
|
|
3
3
|
description: >-
|
|
4
|
-
How to author a new RAG_Wright
|
|
5
|
-
so it is registered, ARD-discoverable, and invokable by name
|
|
6
|
-
|
|
4
|
+
How to author a new capability on RAG_Wright, in your product's own pack or in the engine, of any kind
|
|
5
|
+
(subgraph, function, model, agent_skill, mcp_tool), so it is registered, ARD-discoverable, and invokable by name
|
|
6
|
+
through the engine API. Use it whenever a product (or the engine) adds a capability: it gives the shared registration + ARD + invocation
|
|
7
7
|
contract (the four surfaces + the definition of done), the per-kind implementation specifics, and the
|
|
8
8
|
conformance guardrail that keeps the catalog honest. Grounded against the real code; keep it in step with it.
|
|
9
9
|
---
|
|
@@ -93,6 +93,12 @@ MCP) follows automatically for invokable kinds; 4b (a bespoke MCP server) is opt
|
|
|
93
93
|
(the reference pack: `packs/contracts/subgraphs/typed_property_retrieval.py`). A `production_<slug>(*, store, ...) -> CompiledGraph` builder: `g = StateGraph(_State)`,
|
|
94
94
|
add nodes/edges with `START`/`END`, `return g.compile()`. Nodes call functions/models (compose).
|
|
95
95
|
- **Invoke:** the co-located `async def ainvoke(resources, inputs)` factory (impl_ref target) builds + awaits the graph.
|
|
96
|
+
- **An ingestion capability already has its graph.** `build_ingestion(...)` compiles one (LGI, ADR-0124): its
|
|
97
|
+
`production_<slug>` returns `pipeline.graph(ws, cache_dir=...)` (the whole run: each source through the
|
|
98
|
+
per-document graph parse -> chunk -> segment -> index -> extract -> write -> hooks -> children), and its `ainvoke`
|
|
99
|
+
runs `await pipeline.aingest(resources, sources, cache_dir=...)`. Do not wrap it in a second `StateGraph`. For a
|
|
100
|
+
long ingest, pass your own LangGraph checkpointer and a `run_id` to `aingest` so an interrupted run resumes
|
|
101
|
+
(`building-an-ingestion-capability`).
|
|
96
102
|
- Retry/dead-letter come from the graph scaffold, not the invoker. `CapabilityManifest` has no contract field (only
|
|
97
103
|
the internal `CapabilityRegistry.register(contract=...)` takes one); where the typed I/O must be declared, set
|
|
98
104
|
`capability_interface` on the manifest (`CapabilityInterface`, from `rag_wright.pack_sdk`).
|
{rag_wright-0.13.0 → rag_wright-0.14.1}/.claude/skills/building-an-ingestion-capability/SKILL.md
RENAMED
|
@@ -197,6 +197,13 @@ category.
|
|
|
197
197
|
whose continuation rows sit under its main row needs a `unit_grouper=` that keeps them together, or a
|
|
198
198
|
`document_hook=` that reads the whole table with `table_rows` and writes the grouped record. An entity several units
|
|
199
199
|
mention (a case its trial rows share) is emitted by its key from each unit and upserted by that key.
|
|
200
|
+
- **Resume a long ingest instead of restarting it.** Pass a LangGraph checkpointer (yours, for example a Postgres
|
|
201
|
+
saver; the engine ships none) and a `run_id` naming the run:
|
|
202
|
+
`await pipeline.aingest(ws, sources, cache_dir=CACHE, checkpointer=saver, run_id=batch_id)`. If the process stops,
|
|
203
|
+
call it again with the same sources, `cache_dir`, checkpointer and `run_id`: each document carries on from its last
|
|
204
|
+
finished stage, and nothing that finished runs again (no repeat extractor calls). A finished `run_id`, or different
|
|
205
|
+
sources, raise `ValueError`: a new run gets a new id. The graph state is built-in values only, so it works under
|
|
206
|
+
LangGraph's strict msgpack mode; a tuple inside a record's free-form `props` comes back as a list after a resume.
|
|
200
207
|
- **Re-ingest.** Parsing is cached by content hash, so re-running is cheap. The default writer upserts nodes by their
|
|
201
208
|
key but is not fully idempotent for edges (engine gap G8): when a source is re-run, remove its previous records
|
|
202
209
|
first (`kg_delete` on the provenance your records carry, such as a per-source property) and write again.
|
|
@@ -216,7 +223,9 @@ category.
|
|
|
216
223
|
cost per document before a bulk run.
|
|
217
224
|
5. **Register the pipeline as a capability** (`authoring-a-capability`): a subgraph whose `ainvoke(resources, inputs)`
|
|
218
225
|
builds it with `build_ingestion` over the workspace and runs `aingest`, so your product's ingest workflow, an
|
|
219
|
-
agent and an eval all invoke it by name.
|
|
226
|
+
agent and an eval all invoke it by name. The pipeline IS a LangGraph graph: `pipeline.graph(ws, cache_dir=...)`
|
|
227
|
+
returns the compiled run (each source through the per-document graph), which is what your `production_<slug>`
|
|
228
|
+
returns; do not wrap it in another graph.
|
|
220
229
|
6. **Field-level accuracy, not only structure**: `evaluate_ingestion` checks units; the records' values are checked
|
|
221
230
|
against gold records (`creating-evals`, extraction scoring over what `kg_read` returns).
|
|
222
231
|
|
|
@@ -41,7 +41,8 @@ open-core and domain-neutral; your product brings the domain. Hard rules:
|
|
|
41
41
|
(`parse_document`/`aparse_document`, `parse_document_bytes`/`aparse_document_bytes` for uploads,
|
|
42
42
|
`source_document`/`table_rows`, `decode_bbox`, `document_of`), and the **ingestion surface**: `build_ingestion`
|
|
43
43
|
(returns an `IngestionPipeline`; `await pipeline.aingest(ws, sources, cache_dir=...)` returns an
|
|
44
|
-
`IngestionReport
|
|
44
|
+
`IngestionReport`; the pipeline is a LangGraph graph, `pipeline.graph(ws, cache_dir=...)`, and `aingest` with
|
|
45
|
+
`checkpointer=` and `run_id=` resumes an interrupted run), its hook contracts (`Segmenter`, `SpanTagger`, `UnitGrouper`, `BoundaryDecider`,
|
|
45
46
|
`UnitRepresentative`, `BoundaryDiscoverer` with `default_chunk_discoverer(guidance=...)`, `Extractor`,
|
|
46
47
|
`RecordWriter`, `DocumentHook`, checked by `check_tiling`/`check_units`/`check_extraction`), `IngestionTuning`,
|
|
47
48
|
`IngestSource` (a `path`, or `data` + `name` for bytes; `table_mode`, `include_hidden_sheets`, your own `metadata`
|
|
@@ -4,6 +4,23 @@ 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.14.1](https://github.com/fzaidi-dai/RAG_Wright/compare/0.14.0...0.14.1) (2026-10-28)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* **PS-49:** a retried ArcadeDB write conflict no longer prints as an error ([32f649f](https://github.com/fzaidi-dai/RAG_Wright/commit/32f649f94ac1b864ee5b22460d3ef401dabbbf6a))
|
|
13
|
+
* **PS-50:** ensure_pack_schema declares a property a pack gains on an existing type ([c27cf40](https://github.com/fzaidi-dai/RAG_Wright/commit/c27cf40dba2512f809ba1ff06affc58d7f25f45f))
|
|
14
|
+
|
|
15
|
+
## [0.14.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.13.0...0.14.0) (2026-10-17)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
* **LGI-1:** each document is ingested through a LangGraph graph of the stages ([24c15df](https://github.com/fzaidi-dai/RAG_Wright/commit/24c15dfc692b463382f18b183c551127e7092c0c))
|
|
21
|
+
* **LGI-2:** the whole ingest run is one LangGraph graph ([e38e9c8](https://github.com/fzaidi-dai/RAG_Wright/commit/e38e9c8733fb0bcb4da51e71e3e7093fbde4b9c3))
|
|
22
|
+
* **LGI-3:** an interrupted ingest resumes from its last finished stage ([9970189](https://github.com/fzaidi-dai/RAG_Wright/commit/9970189d6d5759dc4a1eeaccb35d734cc05e886e))
|
|
23
|
+
|
|
7
24
|
## [0.13.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.12.0...0.13.0) (2026-10-15)
|
|
8
25
|
|
|
9
26
|
|
|
@@ -55,7 +55,17 @@ 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-
|
|
58
|
+
> **CURRENT STATE (2026-10-17): the LangGraph ingestion workstream is RELEASED as `rag-wright` 0.14.0** (PR #16; LGI-1..5,
|
|
59
|
+
> `docs/specs/langgraph-ingestion/plan.md`, ADR-0124 amended): `build_ingestion` is a LangGraph graph
|
|
60
|
+
> (`IngestionPipeline.graph`, per-document `document_graph`), `aingest(..., checkpointer=, run_id=)` resumes an
|
|
61
|
+
> interrupted run (built-in state, strict msgpack safe), `IngestionReport.from_dict`; live old-vs-new parity identical;
|
|
62
|
+
> guide `rulewright-migration-0.14.0.md`. Next: PS-48 (harness tests onto the fabric fixture,
|
|
63
|
+
> proposed, not started), EV-7, PS-30, PS-33. Before it,
|
|
64
|
+
> **(2026-10-15): `rag-wright` 0.13.0 is RELEASED** (PR #15): PS-35 `migrate_span_fields` on the API,
|
|
65
|
+
> PS-44 `Range` KG filters (TexWright ER-1), PS-45 `span_search` (G24), PS-46 blank PDF pages never sent to the VLM
|
|
66
|
+
> (TexWright's report; ADR-0062 amended), PS-47 `find_blank_pages_with_text` (audit of pre-fix parse caches); guide
|
|
67
|
+
> `rulewright-migration-0.13.0.md`. Open: harness behaviour tests onto the fabric fixture, EV-7, PS-30, PS-33. Before it,
|
|
68
|
+
> **`rag-wright` 0.11.0 is RELEASED** (PR #13: PS-40 the product-building skills ship,
|
|
59
69
|
> PS-41 the skills audit, PS-42 by-slug registration; RuleWright's guide `docs/specs/public-surface/rulewright-migration-0.11.0.md`).
|
|
60
70
|
> **PS-43 RELEASED as 0.12.0 (2026-10-15, PR #14)**: `worker_spec(definition=)`, `docs/harness.md` (tables generated by
|
|
61
71
|
> `scripts/build_harness_doc.py`), the harness source cleared of RuleWright's vocabulary with a guard; guide
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rag-wright
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.1
|
|
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
|
{rag_wright-0.13.0 → rag_wright-0.14.1}/docs/adr/0124-generic-ingestion-builder-and-hooks.md
RENAMED
|
@@ -253,3 +253,28 @@ writing to change one decision (engine gaps G3/G4).
|
|
|
253
253
|
(7,297 blocks, 14,059 spans) fingerprint identically before and after; a live Aimmune re-ingest is record-identical
|
|
254
254
|
to ING-8e. `tests/spans/test_segmentation_vocab.py` locks the vocabulary and checks the built patterns decide as the
|
|
255
255
|
original literals did.
|
|
256
|
+
|
|
257
|
+
## LGI-1 addendum (2026-10-17): each document runs through a LangGraph graph
|
|
258
|
+
|
|
259
|
+
- **Context.** Products register their `build_ingestion` pipeline as a `subgraph` capability, but the generic path
|
|
260
|
+
was plain asyncio: no graph existed, so the capability kind's promise (a compiled `StateGraph`) did not hold, and
|
|
261
|
+
the graph version of ingestion (ADR-0050) lived only in the reference pack.
|
|
262
|
+
- **Decision.** `IngestionPipeline.document_graph(ws, stages)` builds the per-document graph over the same
|
|
263
|
+
`IngestionStages`: parse -> chunk -> segment -> index -> extract -> write -> document_hook -> document_node ->
|
|
264
|
+
children, with every stage routing a failure to a `dead_letter` node (never raised). Embedded files run through the
|
|
265
|
+
same graph. `aingest` drives it, one compiled graph per run. Stages stay sequential per document (index before
|
|
266
|
+
extract), as before. Plan and ledger: `docs/specs/langgraph-ingestion/plan.md` (LGI-2 the run graph, LGI-3 resume).
|
|
267
|
+
- **Consequences.** No public signature, report or progress line changed. Parity is held by a record captured from
|
|
268
|
+
the asyncio driver before the change (`tests/fixtures/ingestion/parity.json`, 11 scenarios: reports, store
|
|
269
|
+
contents, hook calls, progress lines), with the scenario inputs committed because freshly built PDFs and OOXML
|
|
270
|
+
files carry random ids and timestamps.
|
|
271
|
+
- **LGI-2 (2026-10-17): the run is one graph.** `IngestionPipeline.graph(ws, *, cache_dir)` compiles the whole run:
|
|
272
|
+
`start` sends each source to `document` (the per-document graph; at most `document_concurrency` in flight, by a
|
|
273
|
+
semaphore in the node so a direct caller needs no config), `finish` builds the `IngestionReport`. `aingest` runs
|
|
274
|
+
it. The report's documents are now in source order (they were in completion order, which varied run to run).
|
|
275
|
+
- **LGI-3 (2026-10-17): an interrupted run resumes.** `aingest(..., checkpointer=, run_id=)` checkpoints every stage
|
|
276
|
+
of every document (embedded children included) on the thread `run_id`; calling it again with the same sources and
|
|
277
|
+
`run_id` resumes from each document's last finished stage. A finished run, different sources, or only one of the
|
|
278
|
+
two arguments raise `ValueError`. The graph state holds built-in values only (each node loads the typed values it
|
|
279
|
+
needs), because LangGraph's strict msgpack mode blocks the engine's types; a tuple in a record's free-form `props`
|
|
280
|
+
comes back as a list after a resume. `IngestionReport.from_dict` rebuilds the report from `graph()`'s output.
|
|
@@ -186,10 +186,28 @@ Built by `build_ingestion`; run with `await pipeline.aingest(ws, sources, cache_
|
|
|
186
186
|
|
|
187
187
|
Advanced: the individual stage functions bound to a workspace (its store, ingest embedder and tuning), for a domain that drives the stages itself (the reference contract pipeline does). Most domains only need `aingest`.
|
|
188
188
|
|
|
189
|
-
#### `IngestionPipeline.aingest(self, ws: 'Any', sources: 'Sequence[Union[str, Path, IngestSource]]', *, cache_dir: 'Union[str, Path]') -> 'IngestionReport'`
|
|
189
|
+
#### `IngestionPipeline.aingest(self, ws: 'Any', sources: 'Sequence[Union[str, Path, IngestSource]]', *, cache_dir: 'Union[str, Path]', checkpointer: 'Any' = None, run_id: 'Optional[str]' = None) -> 'IngestionReport'`
|
|
190
190
|
|
|
191
191
|
Ingest every source (and its embedded children) into the workspace `ws` (from `open_workspace`). `sources` are file paths or `IngestSource`s (a path, or in-memory bytes with a file name); `cache_dir` holds the content-hash-gated parse and chunk caches (a re-ingest of an unchanged file re-uses them). Documents run concurrently up to `tuning.document_concurrency`; a document that fails is dead-lettered in its `DocumentReport`, never raised. Returns the `IngestionReport`. Every model role resolves through the workspace's `EngineConfig.models` (PS-14).
|
|
192
192
|
|
|
193
|
+
LGI-3, resuming: pass a LangGraph `checkpointer` (yours, e.g. a Postgres saver) and a `run_id` naming the run. If the process stops mid-run, call `aingest` again with the same sources, `cache_dir`, checkpointer and `run_id`: it carries on from the last finished stage of each document, re-running none that finished. A `run_id` whose run finished raises `ValueError` (start a new run with a new id), as do different sources.
|
|
194
|
+
|
|
195
|
+
#### `IngestionPipeline.graph(self, ws: 'Any', *, cache_dir: 'Union[str, Path]', checkpointer: 'Any' = None) -> 'Any'`
|
|
196
|
+
|
|
197
|
+
LGI-2: the whole run as one compiled LangGraph `StateGraph`, bound to the workspace `ws`:
|
|
198
|
+
|
|
199
|
+
start --(one Send per source)--> document --> finish
|
|
200
|
+
|
|
201
|
+
`document` runs one source through `document_graph` (embedded files included); at most `tuning.document_concurrency` documents are in flight. The input is `{"sources": [...]}` (file paths or `IngestSource`s); the output's `report` is the `IngestionReport` as plain data (`IngestionReport.from_dict` rebuilds it), its documents in source order. This is what `aingest` runs (without `aingest`'s workspace model scoping: wrap the call in `use_workspace_models(ws)` when the workspace overrides model roles). Progress goes to the pipeline's `progress` callback. With a `checkpointer`, every stage of every document is checkpointed on the thread named by the call's `configurable.thread_id` (see `aingest` for resuming). The state holds only built-in values (dicts, lists, strings, numbers, bytes, dates), so it round-trips through any saver, including LangGraph's strict msgpack mode; a tuple inside a record's free-form `props` comes back from a checkpoint as a list.
|
|
202
|
+
|
|
203
|
+
#### `IngestionPipeline.document_graph(self, ws: 'Any', stages: 'IngestionStages') -> 'Any'`
|
|
204
|
+
|
|
205
|
+
LGI-1: the per-document ingestion graph, a compiled LangGraph `StateGraph` over `stages` (bound to `ws`):
|
|
206
|
+
|
|
207
|
+
parse -> chunk -> segment -> index -> extract -> write -> document_hook -> document_node -> children
|
|
208
|
+
|
|
209
|
+
A stage that raises routes to `dead_letter`, which ends the document with its `DocumentReport.dead_letter` set (never raised, so one bad document never stops the run). `children` ingests each embedded file through this same graph, then links it to its parent. The input is `{doc_id, source, parent_id, child, depth}`; the output's `reports` is the document's `DocumentReport` followed by its children's.
|
|
210
|
+
|
|
193
211
|
### `IngestionReport(documents: 'list[DocumentReport]' = <factory>) -> None`
|
|
194
212
|
|
|
195
213
|
The result of `IngestionPipeline.aingest`: one `DocumentReport` per document (embedded children included). `failed` counts the dead-lettered documents and `succeeded` the rest (properties).
|
|
@@ -30,7 +30,7 @@ Everything a product touches is re-exported from `rag_wright.api`; the packages
|
|
|
30
30
|
| `api/` | the stable, domain-agnostic public surface: config, workspace, invokers, KG accessors, ids, usage | **yes** (in the enforced source set) |
|
|
31
31
|
| `pack_sdk/` | the pack-author tier (PS-8b): re-exports of the engine building blocks a domain pack's code needs beyond `api` (identifiers, the model seam, the LangGraph scaffold, the store protocol, the generic capabilities a pack composes); a pack imports only `api` and `pack_sdk` | **yes** |
|
|
32
32
|
| `capabilities/` | the capability catalog + ARD runtime — `CapabilityManifest`, `registry`, `manifests`, the adapter-free `invoke` client; plus the generic primitives (graph query, retrieval core, embedding, disambiguation, entity resolution, the decision model) | **yes** |
|
|
33
|
-
| `ingestion/` | the generic ingestion mechanism (ADR-0124): `build_ingestion`
|
|
33
|
+
| `ingestion/` | the generic ingestion mechanism (ADR-0124): `build_ingestion` (a LangGraph graph over the shared `IngestionStages`, resumable), the default layout segmenter and structural unit grouper, `table_rows`, `evaluate_ingestion` | **yes** |
|
|
34
34
|
| `subgraphs/` | the generic LangGraph scaffolding (`scaffold.py`), semantic chunking, graph extraction and observability; domain graphs live in their pack | **yes** |
|
|
35
35
|
| `models/` | the model-profile seam: `ModelRole`, `profiles`, `seam`, `tag_structured`, usage/tracing | **yes** |
|
|
36
36
|
| `store/` | the single ArcadeDB store behind the seam: `arcadedb` (only the engine types and generic reads/writes; a pack's own store methods live in the pack, e.g. `ContractKGStore`, `ComplianceStore`), `seam` (`KgNode`/`KgEdge`/`NOT_NULL`), `chunk_text` | **yes** |
|
|
@@ -76,7 +76,9 @@ expensive stages are content-hash gated so re-ingest is cheap. Entity extraction
|
|
|
76
76
|
attachments become child documents linked by `EmbeddedIn` / `AttachedTo`).
|
|
77
77
|
|
|
78
78
|
A new domain does not build this pipeline: it calls `build_ingestion(extractor, ...)` (in `rag_wright.ingestion`,
|
|
79
|
-
re-exported from `rag_wright.api`) with its hooks. The
|
|
79
|
+
re-exported from `rag_wright.api`) with its hooks. The pipeline is a LangGraph graph (`IngestionPipeline.graph`: one
|
|
80
|
+
run graph sending each source to a per-document graph of the stages), so a product's ingestion capability is a real
|
|
81
|
+
`subgraph`, and a run given a checkpointer and a `run_id` resumes where it stopped. The engine owns parse, chunk, segment, index, group and write;
|
|
80
82
|
the domain supplies the extractor and overrides only the hooks it needs. The default segmenter follows the docling
|
|
81
83
|
layout and the default unit grouper is structural. The reference `contract_ingestion_pipeline` drives the same
|
|
82
84
|
shared `IngestionStages` with legal hooks (a legal segmenter, a clause-function span tagger, a provision grouper
|
|
@@ -106,6 +106,12 @@ pipeline = build_ingestion(extractor, segmenter=None, span_tagger=None, unit_gro
|
|
|
106
106
|
report = await pipeline.aingest(ws, sources, cache_dir="cache/")
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
+
- **It is a LangGraph graph.** `pipeline.graph(ws, cache_dir=...)` is the compiled run: each source goes through the
|
|
110
|
+
per-document graph (parse, chunk, segment, index, extract, write, the document hook, the `Document` node, then its
|
|
111
|
+
embedded files through the same graph), at most `document_concurrency` documents at a time; a stage that fails
|
|
112
|
+
dead-letters its document, never the run. `aingest` runs it, and with `checkpointer=` and `run_id=` an interrupted
|
|
113
|
+
run resumes from each document's last finished stage.
|
|
114
|
+
|
|
109
115
|
- **The engine owns the mechanism:** parse (PDF, Office, spreadsheets incl. hidden sheets), chunk, segment each chunk
|
|
110
116
|
into spans that tile it, index the spans (dense + sparse), group spans into extraction **units**, run the
|
|
111
117
|
extractor on each unit concurrently, write, and record one `Document` node per document. Embedded files and PDF
|
|
@@ -18,7 +18,12 @@ The store creates the vertex and edge types your pack declares. The generic read
|
|
|
18
18
|
`rag_wright.ontology.pack_schema.load_kg_schema(path)`, called by the store's `ensure_pack_schema(ttl)`, which
|
|
19
19
|
`ensure_schema()` calls only when a pack is configured (`EngineConfig.pack`). It creates the `eng:KgVertexType`
|
|
20
20
|
vertex types with their properties and unique indexes, and the `eng:KgStructuralEdge` edge types; nothing else in
|
|
21
|
-
the pack is read by the engine.
|
|
21
|
+
the pack is read by the engine. Each is created when absent, so a pack that later gains a property gets it declared
|
|
22
|
+
on the existing database the next time a process opens the workspace (`open_workspace` runs `ensure_schema`); no
|
|
23
|
+
fresh database is needed. Nothing is altered or dropped: a property whose declared type changed is logged as a
|
|
24
|
+
warning and left as it is (a migration is yours to run), and a numeric property declared over values stored before it
|
|
25
|
+
is logged too, since those values are not converted until a re-ingest rewrites them (a value that does not
|
|
26
|
+
convert, `'195 GSM'` for a `DOUBLE`, fails its write and dead-letters that document). A minimal, domain-neutral example:
|
|
22
27
|
|
|
23
28
|
```turtle
|
|
24
29
|
@prefix eng: <https://ragwright.local/ontology/engine#> .
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# LangGraph ingestion: plan and ledger (LGI)
|
|
2
|
+
|
|
3
|
+
Status: COMPLETE 2026-10-17 (LGI-1 to LGI-5); approved 2026-10-17 (decisions: sequential index then extract; run graph + document subgraph; serialization measured in LGI-3). Runs before PS-48 (the harness tests onto the fabric fixture).
|
|
4
|
+
|
|
5
|
+
## Why
|
|
6
|
+
|
|
7
|
+
`build_ingestion` (ADR-0124) is the engine's generic ingestion path, and every product's ingestion capability is
|
|
8
|
+
built on it (TexWright's `texwright_ingestion` and `texwright_screen_ingestion`). It is plain asyncio: `aingest`
|
|
9
|
+
runs `IngestionStages` per document with `asyncio.gather` and a semaphore. No LangGraph graph exists on that path.
|
|
10
|
+
Yet the `authoring-a-capability` skill defines the `subgraph` kind as "a compiled LangGraph `StateGraph`", and
|
|
11
|
+
`building-an-ingestion-capability` tells a product to register its pipeline as a `subgraph`. So every product
|
|
12
|
+
registers a "subgraph" that has no graph, and gets none of what the graph gives: durable resume of a long ingest
|
|
13
|
+
from a checkpointer, per-node streaming, and the substrate for a later `interrupt()` review step. The graph
|
|
14
|
+
version (ADR-0050's async ingestion) exists only in the reference pack (`contract_ingestion_pipeline`,
|
|
15
|
+
`async_ingestion`), not on the generic path.
|
|
16
|
+
|
|
17
|
+
## Goal
|
|
18
|
+
|
|
19
|
+
`build_ingestion` builds a LangGraph graph, and `aingest` runs it. A product's ingestion capability is then a real
|
|
20
|
+
`subgraph`: its `production_<slug>` returns `pipeline.graph(...)`, its `ainvoke` stays `pipeline.aingest(...)`.
|
|
21
|
+
|
|
22
|
+
**Nothing breaks.** `build_ingestion`'s parameters, `aingest(ws, sources, *, cache_dir)`, `IngestionReport` /
|
|
23
|
+
`DocumentReport`, the `[ingest] i/N` progress lines, dead-letter semantics and `IngestionStages` (used directly by
|
|
24
|
+
RuleWright's and the reference pack's contract pipelines) are unchanged. Additions only, so a `feat:` (0.14.0).
|
|
25
|
+
|
|
26
|
+
## Design
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
run graph (IngestionPipeline.graph(ws, *, cache_dir, checkpointer=None))
|
|
30
|
+
START --Send per source--> document (the per-document subgraph) --> END report = reducer over documents
|
|
31
|
+
at most tuning.document_concurrency documents in flight (a semaphore in the node)
|
|
32
|
+
|
|
33
|
+
document subgraph
|
|
34
|
+
parse -> chunk -> segment -> index -> extract -> write -> document_hook -> document_node -> children --> END
|
|
35
|
+
|any stage raises: the document's DocumentReport.dead_letter = "<Type>: <message>" --> END (never raised)
|
|
36
|
+
children: each embedded file / attachment through the same document subgraph (depth cap 2, as today),
|
|
37
|
+
then its EmbeddedIn / AttachedTo links
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
- **The nodes ARE `IngestionStages`.** One implementation of each stage, now with three drivers' worth of reuse:
|
|
41
|
+
the generic graph, the reference pack's contract graph, and any product driving the stages itself.
|
|
42
|
+
- **Order and semantics match today's driver exactly**: stages sequential per document (index before extract),
|
|
43
|
+
documents concurrent up to `document_concurrency`, children after their parent, same dead-letter strings, same
|
|
44
|
+
progress lines. Parity is the acceptance gate, measured, not assumed.
|
|
45
|
+
- **State stays small and serializable.** The parse is not held in state: the `parse` node fills the
|
|
46
|
+
content-hash parse cache and later nodes reload from it (they already do, through `IngestionStages.parsed`).
|
|
47
|
+
State holds the chunks, tagged spans, units/extractions and the report fields.
|
|
48
|
+
- **Durable resume is opt-in.** `checkpointer=` (any LangGraph saver; the product supplies its own, e.g. Postgres,
|
|
49
|
+
as with the harness: ADR-0139, no Postgres extra in the engine) plus a `run_id` used as the thread id. Re-running
|
|
50
|
+
an interrupted ingest with the same `run_id` skips documents and stages already checkpointed. Without a
|
|
51
|
+
checkpointer, behaviour is today's.
|
|
52
|
+
- **No retry policy added.** Today a stage failure dead-letters the document; that stays (a `RetryPolicy` would
|
|
53
|
+
change behaviour and cost). The graph makes it a one-line addition later if a product asks.
|
|
54
|
+
|
|
55
|
+
## Open questions (decide before LGI-1)
|
|
56
|
+
|
|
57
|
+
1. **Parallel index and extract after segment?** The reference pack fans them out; on the generic path they are
|
|
58
|
+
independent (embedding vs the extractor). A wall-clock gain on model-backed extractors, but a change of order
|
|
59
|
+
in store writes. **Recommendation: keep sequential here (parity), measure the gain in a later task.**
|
|
60
|
+
2. **Run graph or per-document graph only?** The run graph (one `aingest` call over its sources; a "run", named by `run_id`; not a `corpus`, which is the database name) (Send fan-out) makes the whole ingest one
|
|
61
|
+
compiled graph, so the capability is one graph and a checkpointer covers the run. **Recommendation: both, as
|
|
62
|
+
designed (the per-document subgraph is a node of the run graph).**
|
|
63
|
+
3. **Checkpoint serialization of the stage values** (pydantic chunks/spans/units, dataclass `KgNode`/`KgEdge`):
|
|
64
|
+
LangGraph's serializer must round-trip them. Measured in LGI-3; if a type does not round-trip, it is converted
|
|
65
|
+
at the node boundary, never by changing the public contracts.
|
|
66
|
+
|
|
67
|
+
## Ledger
|
|
68
|
+
|
|
69
|
+
| Id | Task | Acceptance (verify) | Status |
|
|
70
|
+
|---|---|---|---|
|
|
71
|
+
| LGI-1 | The per-document subgraph over `IngestionStages` (nodes above, dead-letter route, children through the same subgraph); `aingest` drives it per document, documents still fanned out as today. Parity fixture recorded FIRST from the current driver: `IngestionReport`s and store contents for the existing hermetic ingestion fixtures (text, PDF, spreadsheet with embedded children and links, a failing extractor, a failing document) | the recorded parity fixture equal after the change; the whole existing ingestion suite green unchanged; ADR-0124 amended (and ADR-0050's note that the generic path is not a graph) | done 2026-10-17 (`document_graph`; parity 11/11 scenarios; suite 2297 passed) |
|
|
72
|
+
| LGI-2 | The run graph: `IngestionPipeline.graph(ws, *, cache_dir)` public, Send fan-out per source, at most `document_concurrency` documents in flight (a semaphore inside the `document` node, so a direct `graph()` caller gets it without passing a config), the report reduced from the documents; `aingest` = run the run graph | parity fixture equal; a concurrency test (peak documents in flight = `document_concurrency`); progress lines identical (the `[ingest] start N=` / `i/N` / `done` lines asserted); API docs regenerated | done 2026-10-17 (`graph()`; parity 11/11; source-order report; suite 2304 passed) |
|
|
73
|
+
| LGI-3 | Durable resume: `checkpointer=` and `run_id=` on `graph()` and `aingest`; state round-trips through the saver | hermetic, `InMemorySaver`: an ingest interrupted mid-run (a node raises a non-dead-letter interruption on document 2) resumed with the same `run_id` re-runs no completed stage (extractor and embedder call counts) and yields the same report as an uninterrupted run; without a checkpointer behaviour is unchanged | done 2026-10-17 (`checkpointer=`/`run_id=`; built-in state, strict serde green; suite 2311 passed) |
|
|
74
|
+
| LGI-4 | The capability shape and docs: `authoring-a-capability` (the `subgraph` kind: an ingestion capability's `production_<slug>` returns `pipeline.graph(...)`), `building-an-ingestion-capability` step 5 (resume with the product's checkpointer, the run id), `docs/architecture.md` / `concepts.md` ingestion sections; the product-starter templates if they show the ingest | doc-reference, shipped-skills and ingestion-skill-example guards green; the skill example runs the graph | done 2026-10-17 (both skills, concepts, architecture, the consumer skill and the starter template) |
|
|
75
|
+
| LGI-5 | Live parity and handover: a live `build_ingestion` run on real parses (the PS-47 workbook with an embedded PDF, and a PDF set) before and after: same `IngestionReport`, same store counts per type; a live resume with a real checkpointer; RuleWright and TexWright notes (nothing to change; the new optional resume) | live tests green; the migration notes written | done 2026-10-17 (live old-vs-new identical: 10 documents, 394 spans, 55 records, links; live crash-and-resume green; RuleWright guide 0.14.0) |
|
|
76
|
+
|
|
77
|
+
Each task is one approval gate; one commit per approved task.
|
|
@@ -120,3 +120,5 @@ in two at the PS-6 gate so the store rewrite is its own visible task. One task,
|
|
|
120
120
|
| PS-45 | Engine gap G24: a public hybrid span search. `span_search(ws, query, *, k, documents, tag, dense_floor)` and `aspan_search` on `rag_wright.api`, over the span index ingestion fills: the store-side RRF fusion of the dense and sparse legs plus the dense floor (ADR-0104), returning citation-ready `SpanHit`s (text, document, offsets, pages, box, `found_by`); no reranking (the caller composes `BGEReranker`). G24 closed; the guide, the authoring page and the specifying and consumer skills name it | hermetic tests of the composition and the public call; a live test on real ArcadeDB and BGE-M3 (found by meaning, scoped, cited) | done 2026-10-15 |
|
|
121
121
|
| PS-46 | TexWright's 2026-10-15 report: a blank page escalated to the VLM came back as an invented document the parse kept. The scan-quality gate gains `ScanQuality.BLANK` (no OCR text and no ink: `ink_frac`, pixels < 200, at most 1e-4; the heavy faint scan measures ~0.08) and `TieredOCRParser` never escalates or flags a blank page, reporting it in `TieredOCRReport.blank_pages`. The post-check stays a flag, not a filter (a verbatim transcription of a page with few common English words fails it). ADR-0062 amended | hermetic gate and tiered tests (a real 2-page PDF: the VLM gets page 1 only); a live docling parse reports the blank page; the heavy fixture still escalates all 10 pages | done 2026-10-15 |
|
|
122
122
|
| PS-47 | The audit for PS-46: a parse cached before the fix keeps a blank page's invented text (the cache is keyed on content). `find_blank_pages_with_text(cache_dir, sources=(), *, progress)` and `BlankPageText` on `rag_wright.api` list every page blank in the source PDF (no ink, no text layer) with text in its cached parse, and the cache files to delete before re-ingesting. Searches the cache recursively (`aingest` keeps parses in `parsed/`); embedded files are audited from the cache's own copies; top-level sources are passed as paths or `(name, bytes)` | hermetic tests; a live `build_ingestion` of a workbook embedding a blank-tail PDF: clean, then a planted page found with nothing passed, then clean after delete and re-ingest | done 2026-10-15 |
|
|
123
|
+
| PS-49 | TexWright's request (`docs/engine-requests/2026-10-17-concurrent-modification-printed-during-a-clean-ingest.md`, their repo): a clean keeper ingest printed `ArcadeDB Error Response ... ConcurrentModificationException` lines that read as failures. The retry is the engine's (`_retry_on_conflict`, every store write, since ING-5); the line is the client library's own ERROR log, printed before it raises. A log filter drops that line while the retry handles the call; the retry logs INFO `retried N times; the write landed`, or ERROR `gave up after 10 attempts` and raises | three hermetic tests (red before, green after); live 8-thread concurrent writes: 240/240 landed, 130 error lines before the fix, 0 after (62 INFO retried lines) | done 2026-10-17 |
|
|
124
|
+
| PS-50 | TexWright's request (`docs/engine-requests/2026-10-28-ensure_pack_schema-does-not-declare-a-new-property-on-an-existing-type.md`, their repo): `ensure_pack_schema` declared a type's properties only when it created the type. It now creates every declared property the type lacks, on existing types too; a property whose declared type differs is logged and left as it is; a property the pack dropped stays; a non-STRING property declared over values stored before it is logged (they are not converted; a re-ingest rewrites them, and a value that does not convert fails its write) | a live test (red before, green after: added, mismatch reported, nothing dropped, the unconverted-values warning, a second run issues no DDL); live probe of a re-ingest over the new DOUBLE | done 2026-10-28 |
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# RuleWright: moving to rag-wright 0.13
|
|
2
|
+
|
|
3
|
+
What 0.13.0 changes for RuleWright (released 2026-10-15: PyPI and GitHub release `0.13.0`, PR #15). Do the 0.12
|
|
4
|
+
guide first. Nothing here is edited from the engine repo, and nothing breaks an existing call: four items add calls
|
|
5
|
+
and one changes how blank PDF pages are parsed.
|
|
6
|
+
|
|
7
|
+
## 1. Audit your parse cache for invented blank-page text (PS-46, PS-47) — do this one
|
|
8
|
+
|
|
9
|
+
**What changed.** Before 0.13.0 a blank PDF page (no ink, no text layer) was escalated to the `VISION_OCR` model,
|
|
10
|
+
which invents a page when asked to transcribe an empty one, and the parse kept that text (TexWright, 2026-10-15).
|
|
11
|
+
Now the scan-quality gate returns `ScanQuality.BLANK` for such a page: never escalated, never in
|
|
12
|
+
`ocr_unreadable_pages`, listed in `TieredOCRReport.blank_pages`.
|
|
13
|
+
|
|
14
|
+
**Why RuleWright is likely affected.** You ingest with an OpenRouter key set (`VISION_OCR` is configured), a blank
|
|
15
|
+
separator page in a born-digital contract has no text layer, and invented English text passes the post-escalation
|
|
16
|
+
check. The parse cache is keyed on content, so the fix does not redo an old parse.
|
|
17
|
+
|
|
18
|
+
**What to do.** Run `find_blank_pages_with_text(cache_dir, sources, progress=...)` from `rag_wright.api`:
|
|
19
|
+
`cache_dir` is your parse-cache root (searched recursively), `sources` your contract PDFs as paths or
|
|
20
|
+
`(name, bytes)` (a top-level source's bytes are not in the cache; embedded files are found there). For each finding,
|
|
21
|
+
delete its `cache_files` and re-ingest that contract. Tell us how many documents and pages it found.
|
|
22
|
+
|
|
23
|
+
## 2. New calls, optional
|
|
24
|
+
|
|
25
|
+
- `migrate_span_fields(config, *, corpus=...)` (PS-35): the pre-0.2.0 `Span` field migration through the public
|
|
26
|
+
API, replacing the engine's `scripts/migrate_span_fields.py`.
|
|
27
|
+
- `Range(gt=, ge=, lt=, le=)` (PS-44): a `where` value for comparisons evaluated in the store, on every KG call that
|
|
28
|
+
takes `where`; `kg_read` now accepts `NOT_NULL` too.
|
|
29
|
+
- `span_search(ws, query, ...)` / `aspan_search` returning `SpanHit` (PS-45): the engine's hybrid span search with
|
|
30
|
+
the dense floor (ADR-0104), citation-ready, no reranking.
|
|
31
|
+
|
|
32
|
+
## Verify
|
|
33
|
+
|
|
34
|
+
Your fast and db suites green on `>=0.13.0`; bump the floor. No harness name changed.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# RuleWright: moving to rag-wright 0.14
|
|
2
|
+
|
|
3
|
+
What 0.14.0 changes for RuleWright (released 2026-10-17: PyPI and GitHub release `0.14.0`, PR #16; the LangGraph ingestion workstream, `docs/specs/langgraph-ingestion/plan.md`,
|
|
4
|
+
LGI-1 to LGI-5; ADR-0124 amended). Do the 0.13 guide first. Nothing here is edited from the engine repo, and nothing
|
|
5
|
+
breaks an existing call.
|
|
6
|
+
|
|
7
|
+
## 1. `build_ingestion` is a LangGraph graph (nothing to change)
|
|
8
|
+
|
|
9
|
+
`IngestionPipeline.aingest` now runs a compiled LangGraph graph: one run graph sends each source to a per-document
|
|
10
|
+
graph of the stages (parse, chunk, segment, index, extract, write, the document hook, the `Document` node, then the
|
|
11
|
+
embedded files through the same graph). `pipeline.graph(ws, cache_dir=...)` returns it. Arguments, the
|
|
12
|
+
`IngestionReport`, dead-lettering and the progress lines are unchanged: a recorded parity fixture (11 scenarios) and
|
|
13
|
+
a live before/after ingest (7 sources, 10 documents, 394 spans) are identical.
|
|
14
|
+
|
|
15
|
+
Two small differences:
|
|
16
|
+
|
|
17
|
+
- `IngestionReport.documents` is in source order (it was completion order, which varied run to run).
|
|
18
|
+
- Hooks and the writer receive equal, freshly built objects between stages (the graph state holds plain values).
|
|
19
|
+
|
|
20
|
+
**Your contract pipeline is unaffected**: it drives `IngestionStages` directly (`pack_sdk.IngestionStages`), which did
|
|
21
|
+
not change.
|
|
22
|
+
|
|
23
|
+
## 2. Resuming a long ingest (optional)
|
|
24
|
+
|
|
25
|
+
`aingest(ws, sources, cache_dir=..., checkpointer=<your LangGraph saver>, run_id="<batch id>")` checkpoints every
|
|
26
|
+
stage of every document. If the process stops, the same call with the same sources and `run_id` carries on from each
|
|
27
|
+
document's last finished stage; no finished stage runs again. A finished `run_id`, or different sources, raise
|
|
28
|
+
`ValueError`. The state is built-in values only, so it works under LangGraph's strict msgpack mode; a tuple in a
|
|
29
|
+
record's free-form `props` comes back as a list after a resume. The engine ships no saver: pass yours (the
|
|
30
|
+
Postgres saver you use for the harness fits).
|
|
31
|
+
|
|
32
|
+
## 3. The skills that changed
|
|
33
|
+
|
|
34
|
+
Re-read these if you link them (ADR-0134; from your installed engine):
|
|
35
|
+
|
|
36
|
+
- **`building-an-ingestion-capability`**: section 6 step 5 (the pipeline IS a LangGraph graph; a capability's
|
|
37
|
+
`production_<slug>` returns `pipeline.graph(...)`), and a new item, "Resume a long ingest instead of restarting
|
|
38
|
+
it" (your checkpointer, the `run_id`, what a resume skips, the `ValueError` cases, strict msgpack mode).
|
|
39
|
+
- **`authoring-a-capability`**: the `subgraph` section's new bullet, "An ingestion capability already has its graph".
|
|
40
|
+
- **`using-the-rag-wright-engine`**: the ingestion-surface line names `IngestionPipeline.graph` and
|
|
41
|
+
`checkpointer=` / `run_id=`.
|
|
42
|
+
|
|
43
|
+
## Verify
|
|
44
|
+
|
|
45
|
+
Your fast and db suites green on `>=0.14.0`; bump the floor.
|
|
@@ -79,7 +79,8 @@ engine — a separate repo that depends on the open-core engine, one way.
|
|
|
79
79
|
`agent_chat_model`, answers (`agenerate_answer`/`ajudge_spans`), the eval toolkit (`aload_gold_set`/`arun_eval`/
|
|
80
80
|
`EvalReport`), the document helpers (`aparse_document_bytes`, `pdf_page_count`),
|
|
81
81
|
`register_capability`/`load_reference_pack`,
|
|
82
|
-
and the ingestion surface (`build_ingestion` -> `IngestionPipeline.aingest` -> `IngestionReport
|
|
82
|
+
and the ingestion surface (`build_ingestion` -> `IngestionPipeline.aingest` -> `IngestionReport`; the pipeline is a
|
|
83
|
+
LangGraph graph, `IngestionPipeline.graph`, and `aingest(..., checkpointer=, run_id=)` resumes an interrupted run,
|
|
83
84
|
`IngestionTuning`, `IngestSource`, `evaluate_ingestion`, `table_rows`/`TableRow`, the hook contracts
|
|
84
85
|
`Unit`/`UnitExtraction`/`KgNode`/`KgEdge`, the hook protocols and `DocumentHook`, and the checks
|
|
85
86
|
`check_tiling`/`check_units`/`check_extraction`; `NOT_NULL` for `kg_edges` presence filters) — never engine internals (`ArcadeDBStore`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "rag-wright"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.14.1"
|
|
4
4
|
description = "A domain-retargetable, open-core engine for hybrid retrieval + knowledge-graph RAG: parsing, chunking, embedding, hybrid search, reranking, graph extraction, entity resolution, ontology-driven knowledge, and a capability runtime."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12,<3.13"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: authoring-a-capability
|
|
3
3
|
description: >-
|
|
4
|
-
How to author a new RAG_Wright
|
|
5
|
-
so it is registered, ARD-discoverable, and invokable by name
|
|
6
|
-
|
|
4
|
+
How to author a new capability on RAG_Wright, in your product's own pack or in the engine, of any kind
|
|
5
|
+
(subgraph, function, model, agent_skill, mcp_tool), so it is registered, ARD-discoverable, and invokable by name
|
|
6
|
+
through the engine API. Use it whenever a product (or the engine) adds a capability: it gives the shared registration + ARD + invocation
|
|
7
7
|
contract (the four surfaces + the definition of done), the per-kind implementation specifics, and the
|
|
8
8
|
conformance guardrail that keeps the catalog honest. Grounded against the real code; keep it in step with it.
|
|
9
9
|
---
|
|
@@ -93,6 +93,12 @@ MCP) follows automatically for invokable kinds; 4b (a bespoke MCP server) is opt
|
|
|
93
93
|
(the reference pack: `packs/contracts/subgraphs/typed_property_retrieval.py`). A `production_<slug>(*, store, ...) -> CompiledGraph` builder: `g = StateGraph(_State)`,
|
|
94
94
|
add nodes/edges with `START`/`END`, `return g.compile()`. Nodes call functions/models (compose).
|
|
95
95
|
- **Invoke:** the co-located `async def ainvoke(resources, inputs)` factory (impl_ref target) builds + awaits the graph.
|
|
96
|
+
- **An ingestion capability already has its graph.** `build_ingestion(...)` compiles one (LGI, ADR-0124): its
|
|
97
|
+
`production_<slug>` returns `pipeline.graph(ws, cache_dir=...)` (the whole run: each source through the
|
|
98
|
+
per-document graph parse -> chunk -> segment -> index -> extract -> write -> hooks -> children), and its `ainvoke`
|
|
99
|
+
runs `await pipeline.aingest(resources, sources, cache_dir=...)`. Do not wrap it in a second `StateGraph`. For a
|
|
100
|
+
long ingest, pass your own LangGraph checkpointer and a `run_id` to `aingest` so an interrupted run resumes
|
|
101
|
+
(`building-an-ingestion-capability`).
|
|
96
102
|
- Retry/dead-letter come from the graph scaffold, not the invoker. `CapabilityManifest` has no contract field (only
|
|
97
103
|
the internal `CapabilityRegistry.register(contract=...)` takes one); where the typed I/O must be declared, set
|
|
98
104
|
`capability_interface` on the manifest (`CapabilityInterface`, from `rag_wright.pack_sdk`).
|
|
@@ -197,6 +197,13 @@ category.
|
|
|
197
197
|
whose continuation rows sit under its main row needs a `unit_grouper=` that keeps them together, or a
|
|
198
198
|
`document_hook=` that reads the whole table with `table_rows` and writes the grouped record. An entity several units
|
|
199
199
|
mention (a case its trial rows share) is emitted by its key from each unit and upserted by that key.
|
|
200
|
+
- **Resume a long ingest instead of restarting it.** Pass a LangGraph checkpointer (yours, for example a Postgres
|
|
201
|
+
saver; the engine ships none) and a `run_id` naming the run:
|
|
202
|
+
`await pipeline.aingest(ws, sources, cache_dir=CACHE, checkpointer=saver, run_id=batch_id)`. If the process stops,
|
|
203
|
+
call it again with the same sources, `cache_dir`, checkpointer and `run_id`: each document carries on from its last
|
|
204
|
+
finished stage, and nothing that finished runs again (no repeat extractor calls). A finished `run_id`, or different
|
|
205
|
+
sources, raise `ValueError`: a new run gets a new id. The graph state is built-in values only, so it works under
|
|
206
|
+
LangGraph's strict msgpack mode; a tuple inside a record's free-form `props` comes back as a list after a resume.
|
|
200
207
|
- **Re-ingest.** Parsing is cached by content hash, so re-running is cheap. The default writer upserts nodes by their
|
|
201
208
|
key but is not fully idempotent for edges (engine gap G8): when a source is re-run, remove its previous records
|
|
202
209
|
first (`kg_delete` on the provenance your records carry, such as a per-source property) and write again.
|
|
@@ -216,7 +223,9 @@ category.
|
|
|
216
223
|
cost per document before a bulk run.
|
|
217
224
|
5. **Register the pipeline as a capability** (`authoring-a-capability`): a subgraph whose `ainvoke(resources, inputs)`
|
|
218
225
|
builds it with `build_ingestion` over the workspace and runs `aingest`, so your product's ingest workflow, an
|
|
219
|
-
agent and an eval all invoke it by name.
|
|
226
|
+
agent and an eval all invoke it by name. The pipeline IS a LangGraph graph: `pipeline.graph(ws, cache_dir=...)`
|
|
227
|
+
returns the compiled run (each source through the per-document graph), which is what your `production_<slug>`
|
|
228
|
+
returns; do not wrap it in another graph.
|
|
220
229
|
6. **Field-level accuracy, not only structure**: `evaluate_ingestion` checks units; the records' values are checked
|
|
221
230
|
against gold records (`creating-evals`, extraction scoring over what `kg_read` returns).
|
|
222
231
|
|
|
@@ -41,7 +41,8 @@ open-core and domain-neutral; your product brings the domain. Hard rules:
|
|
|
41
41
|
(`parse_document`/`aparse_document`, `parse_document_bytes`/`aparse_document_bytes` for uploads,
|
|
42
42
|
`source_document`/`table_rows`, `decode_bbox`, `document_of`), and the **ingestion surface**: `build_ingestion`
|
|
43
43
|
(returns an `IngestionPipeline`; `await pipeline.aingest(ws, sources, cache_dir=...)` returns an
|
|
44
|
-
`IngestionReport
|
|
44
|
+
`IngestionReport`; the pipeline is a LangGraph graph, `pipeline.graph(ws, cache_dir=...)`, and `aingest` with
|
|
45
|
+
`checkpointer=` and `run_id=` resumes an interrupted run), its hook contracts (`Segmenter`, `SpanTagger`, `UnitGrouper`, `BoundaryDecider`,
|
|
45
46
|
`UnitRepresentative`, `BoundaryDiscoverer` with `default_chunk_discoverer(guidance=...)`, `Extractor`,
|
|
46
47
|
`RecordWriter`, `DocumentHook`, checked by `check_tiling`/`check_units`/`check_extraction`), `IngestionTuning`,
|
|
47
48
|
`IngestSource` (a `path`, or `data` + `name` for bytes; `table_mode`, `include_hidden_sheets`, your own `metadata`
|