rag-wright 0.11.0__tar.gz → 0.13.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/building-an-agent-harness/SKILL.md +14 -3
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/building-an-ingestion-capability/SKILL.md +4 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/specifying-a-product-on-the-engine/SKILL.md +1 -1
- {rag_wright-0.11.0/src/rag_wright/.agents → rag_wright-0.13.0/.claude}/skills/using-the-rag-wright-engine/SKILL.md +5 -2
- rag_wright-0.13.0/.release-please-manifest.json +3 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/CHANGELOG.md +22 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/CLAUDE.md +6 -1
- {rag_wright-0.11.0 → rag_wright-0.13.0}/PKG-INFO +3 -1
- {rag_wright-0.11.0 → rag_wright-0.13.0}/README.md +2 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/ArcadeDB_Local.md +1 -1
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +11 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/api/README.md +35 -3
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/api/harness.md +32 -32
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/configuration.md +7 -1
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/domain-adaptation/README.md +1 -1
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/domain-adaptation/_engine-gaps.md +5 -1
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/domain-adaptation/authoring-capabilities.md +4 -3
- rag_wright-0.13.0/docs/harness.md +268 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/installation.md +11 -4
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/public-surface/plan.md +6 -1
- rag_wright-0.13.0/docs/specs/public-surface/rulewright-migration-0.11.0.md +22 -0
- rag_wright-0.13.0/docs/specs/public-surface/rulewright-migration-0.12.0.md +39 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/pyproject.toml +1 -1
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/build_api_docs.py +2 -1
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/build_api_docs.sh +3 -1
- rag_wright-0.13.0/scripts/build_harness_doc.py +134 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/migrate_span_fields.py +5 -6
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/building-an-agent-harness/SKILL.md +14 -3
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/building-an-ingestion-capability/SKILL.md +4 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/specifying-a-product-on-the-engine/SKILL.md +1 -1
- {rag_wright-0.11.0/.claude → rag_wright-0.13.0/src/rag_wright/.agents}/skills/using-the-rag-wright-engine/SKILL.md +5 -2
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/__init__.py +9 -5
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/kg.py +34 -4
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/workspace.py +22 -1
- rag_wright-0.13.0/src/rag_wright/capabilities/parse_audit.py +88 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/parsing.py +11 -6
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/scan_quality.py +21 -7
- rag_wright-0.13.0/src/rag_wright/capabilities/span_search.py +102 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/accounting.py +12 -12
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/agent.py +26 -27
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/batch.py +4 -4
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/clarify.py +7 -6
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/confirm.py +5 -5
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/decisions.py +37 -40
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/definition.py +6 -2
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/dispatch.py +4 -4
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/errors.py +17 -17
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/events.py +8 -8
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/filesystem.py +12 -12
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/grading.py +19 -19
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/interpreter.py +21 -20
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/memory.py +19 -18
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/models.py +11 -11
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/rules.py +21 -21
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/runs.py +38 -39
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/scope.py +9 -10
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/seen.py +17 -19
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/skills.py +10 -11
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/thinking.py +7 -7
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/tiers.py +47 -54
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/tracing.py +2 -2
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/withhold.py +10 -10
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/workers.py +61 -33
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/store/arcadedb.py +12 -18
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/store/seam.py +35 -3
- rag_wright-0.13.0/tests/api/test_migrate_span_fields.py +67 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/arch/test_api_docs_current.py +11 -0
- rag_wright-0.13.0/tests/capabilities/test_parse_audit.py +149 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_scan_quality.py +32 -0
- rag_wright-0.13.0/tests/capabilities/test_span_search.py +129 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_tiered_ocr.py +73 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/harness/test_greenfield_conformance.py +60 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/harness/test_harness_genericity.py +44 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_arcadedb_span.py +16 -0
- rag_wright-0.13.0/tests/store/test_kg_range.py +64 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/uv.lock +1 -1
- rag_wright-0.11.0/.release-please-manifest.json +0 -3
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/settings.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/building-a-product-backend/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/building-a-product-frontend/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/laya/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/qwen-vllm-modal/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.env.example +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.github/workflows/publish.yml +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.github/workflows/release-please.yml +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/.gitignore +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/LICENSE +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/SPEC.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/conftest.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/OBSERVABILITY.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0001-stack-and-library-choices.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0004-entity-disambiguation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0005-relational-golden-set.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0006-model-profile.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0007-arcadedb-store-schema.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0032-nl-to-type-two-step-reason-emit-on-gemma.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0038-full-cuad-kg-on-gcp-gpu-vm-and-gcs-backup.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0042-clause-level-span-id-provenance-and-content-hash-backfill.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0055-confidence-out-of-band.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0057-async-engine-architecture.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0058-structure-first-chunking.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0067-domain-pack-retargeting.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0086-streaming-cost-capture.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0090-affiliate-of-extraction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0091-retire-partyto-edge.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0092-idempotent-write-graph.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0093-entities-by-name-seam.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0094-workspace-document-scope.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0095-span-page-provenance.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0098-invoke-time-document-scope.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0100-profile-based-model-routing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0107-requirement-page-provenance.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0118-engine-core-api-vs-ard-adapter-free-impl-ref-client.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0119-jev-typed-decision-model-for-compliance-closed-set-fields.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0127-retire-the-okf-code.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0129-laya-temperatures-and-the-sklearn-floor.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0130-deploy-the-self-hosted-model-server-from-the-engine.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0131-model-server-hardening-after-rulewright-review.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0132-model-server-cold-start-from-a-gpu-snapshot.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0133-model-call-deadline-follows-the-timeout-and-a-thinking-cap.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0134-skills-for-product-developers-are-linked-per-project-never-globally.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0135-the-seam-gives-each-event-loop-its-own-async-http-client.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0136-spreadsheet-tables-are-glued-back-across-blank-rows.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0137-generated-answers-state-their-support-and-none-is-an-abstention.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0138-the-engine-reaches-pdfium-through-one-locked-door.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0139-the-agent-harness-substrate-is-engine-scope.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/README.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/api/pack_sdk.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/architecture.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/README.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/design/deontic-applicability-routing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/design/semantic-subject-segmentation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/design/unify-subject-preprocessing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0037-closed-vocab-drops-verbatim-values-to-other.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0038-a-clause-node-is-now-created-per-sentence-so-98-percent-of-spans-become-clauses.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0039-the-provision-detector-reads-text-but-docling-puts-the-section-number-in-marker.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0040-covered-subject-is-asked-of-every-provision-so-verbatim-retention-fills-it-with-noise.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0041-leg-b-discards-the-best-dense-matches-on-some-queries.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0042-usage-is-captured-per-call-but-never-returned-so-cost-needs-a-langfuse-round-trip.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0043-a-requirement-carries-no-page-provenance-so-a-finding-cannot-point-into-its-policy.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0044-document-signals-scaffolding-is-shown-to-the-user-as-a-quote-from-their-document.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0045-a-fixed-money-cap-records-no-cap-quantum-so-the-amount-is-only-prose.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0046-appending-a-natural-follow-up-to-a-question-drops-the-clause-type.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0047-an-exact-deepagents-pin-transitively-pins-every-consumer.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/engine-issues/0048-the-pinned-endpoints-latency-tail-makes-agent-runs-undebuggable-from-either-side.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-01_issue-0013-recall-first-actor-gate_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-04_issue-0016-thread-safe-embedder_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-05_tagparse-ingestion-and-granite-4.2_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-09_issue-0029-idempotent-write-graph_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-09_issue-0030-entities-by-name_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-09_rename-run-ad-compliance-check_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-failclosed-and-nodrift_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-10_issue-0031-followup-validate-ingested-set_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-10_issue-0031-workspace-document-scope_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-10_issue-0032-span-page-provenance_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-10_issue-0034-invoke-time-document-scope_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-11_issue-0035-followup-derived-guard_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-11_issue-0035-mcp-no-model-tenant_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-14_document-signals-off-citation_0044_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-16_qwen3-27b-single-a100-serving-profile_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-18_fp8-kv-16k-single-a100_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-answers_from_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-scoping-questions_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/misc/.gitkeep +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/plans/Corpus_Acquisition.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/plans/async-migration.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/plans/demo_plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/concepts.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/contract_pipeline_explainer.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/corpus_ingest_recipe.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/domain-adaptation/classification-and-decision-models.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/domain-adaptation/entity-resolution.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/domain-adaptation/evals-from-expert-files.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/domain-adaptation/kg-construction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/domain-adaptation/ontology-authoring.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/classifier_model_ab.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/compliance_demo.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/compliance_gate_cc7.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/compliance_rung2_cc7.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/dg_model_ab.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/function_gate_recall.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/generation_robustness_b_vs_c.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/nl_to_type_cu-d2.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/ocr_benchmark.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/prod1_readiness.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/prod2_readiness.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/query_side_model_ab.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/silver_granite_vs_gemma4.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/silver_provider_routing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/evals.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/playbook.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/product/capability_profiles.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/product/contracts_product_roadmap.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/product/engine-api-migration-handoff.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/product/engine_async_api.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/product/new-domain-build-sequence.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/product/seam-adaptation-guide.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/proposals/new-domain-developer-journey.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/proposals/ontology-induction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/quickstart.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/reference-pack.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/releasing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/engine-platform/SPEC.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/engine-platform/TASKS.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/engine-prep/plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/evals/plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/ingestion-hooks/plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/public-surface/rulewright-arcadedb-separation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/public-surface/rulewright-migration-0.10.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/public-surface/rulewright-migration-0.3.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/public-surface/rulewright-migration-0.4.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/public-surface/rulewright-migration-0.5.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/public-surface/rulewright-migration-0.6.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/public-surface/rulewright-migration-0.7.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/public-surface/rulewright-migration-0.8.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/public-surface/rulewright-migration-0.9.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/specs/public-surface/rulewright-reply-2026-10-10-laya-and-sklearn.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/templates/product-starter/CLAUDE.md.template +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/templates/product-starter/README.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/templates/product-starter/dependabot.yml +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/templates/product-starter/playbook.md.template +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/upstream/laya-temperature-range-mismatch.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/docs/workspaces.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/acord.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/acord_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/boundary_residue_gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/build_golden.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/compliance_demo/subjects/post_violation.txt +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/condensed_pipeline.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/contract_parity_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/contractnli_judge.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/cuad_highlight.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/embedded_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/full_pipeline_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/function_ceiling.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/function_property_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/function_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/gate1_chunker_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/gate2_hybrid_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/golden/relational/set.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/golden.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/ground_discriminator_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/harness.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/ingestion_live_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/kg_primary.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/kg_property_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/listwise_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/multihop.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/nl_to_type.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/relational_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/residual_decision_gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/segmenter_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/semantic_judge_gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/test_acord.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/test_acord_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/test_harness.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/test_multihop_set.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/eval/unit_grouper_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/examples/model_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/examples/quickstart.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/release-please-config.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ab_model_overlap.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/acord_unify.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/acquire_acord.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/acquire_cuad.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/acquire_ecfr.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/acquire_edgar.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/acquire_ftc_255.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/acquire_prod1_corpus.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/audit_reclass_flips.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/author_leg_a_silver_key.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/backfill_affiliations.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/backfill_clause_span_id.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/backfill_edge_source_doc_id.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/backup_kg_to_gcs.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/bootstrap_template_capture.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/bootstrap_typed_edges.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/build_cuad_clause_cache.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/build_function_routing_map.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_assemble_v2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_assemble_v3.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_generate_hard_negatives.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_generate_hard_positives.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_generate_training.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_hybrid.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_hybrid2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_jev_actor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_jev_claimtypes.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_jev_operative.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_label_spans.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_laya_prep.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_laya_train.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_prep_operative.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_relabel_rubric.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_relabel_rubric2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/cic1_train_operative.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/compare_extraction_models.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/compliance_actor_gate_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/compliance_engine_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/compliance_policy_demo.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/curate_taxonomy_gaps.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/dg_model_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/diagnose_acord_knn_expansion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/diagnose_acord_knn_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/diagnose_acord_leg_pool.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/diagnose_acord_legs.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/diagnose_acord_pool.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/diagnose_acord_relstructure.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/diagnose_acord_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/distill/eval_all.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/distill/eval_ce.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/distill/eval_listwise_b.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/distill/export_ce_dataset.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/distill/extract_features.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/distill/listwise_variants.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/distill/relational_features.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/distill/train_ce.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/distill/train_modal.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/enrich_edgar_candidates.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/eval_chunking_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/eval_compliance_gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/extract_arcadedb_docs.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/fetch_reference_models.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/generate_contract_python.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/git_post_commit_graphify.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/granite_chunker_assess.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/graph_status.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ingest_acord.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ingest_compliance_async_prod2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ingest_compliance_document_prod2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ingest_compliance_prod2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ingest_cuad.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ingest_cuad_full.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ingest_ftc_compliance.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ingest_prod1.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ingest_prod1_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ingest_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/install_git_hooks.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/label_new_functions.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/legb_function_gate_recall.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/make_compliance_fixtures.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/make_compliance_gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/mcp_compliance_agent_demo.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/mcp_intra_document_qa_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/mcp_query_legs_agent_demo.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/measure_generation_robustness.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/measure_harness_genericity.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/measure_silver.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/merge_docs_into_framework.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/migrate_silver_evidence_autotag.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/mine_scarce_functions.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_arcadedb.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_backfill.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_exception_linking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_gemma4_vllm.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_gemma4_vllm_snapshot.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_granite_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_granite_throughput.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_granite_vllm_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_query_app.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_qwen3_27b_bench.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_qwen3_27b_snapshot.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/modal_stack_a100.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ocr_benchmark.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ocr_preprocess.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/ontology_dimension_check.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/phase_a_leg_validate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/populate_clause_kg.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/populate_entity_graph.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/populate_entity_graph_extracted.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/populate_property_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/prep_relational_verification.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/publish_manifests.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/reclassify_kg.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/refresh_framework_graph.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/revert_reclass_flips.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/run_acord_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/run_clause_exception_linking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/semantic_judge_live_validate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/semantic_judge_probe.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/snapshot_leg_a_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/stack_correctness_validate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/table_retrieval_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/train_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/train_legalbert_function.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/train_legalbert_modal.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/typed_rerank_validate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/verify_wheel_install.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/vllm_extraction_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/vllm_kg_query_validate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/scripts/vllm_raw_diagnostic.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/building-a-product-backend/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/building-a-product-frontend/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/laya/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/.agents/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/agents.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/answers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/config.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/discover.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/documents.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/ids.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/invoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/mcp.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/tracing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/api/usage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/answer_generator.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/ard.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/chunk_read.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/chunk_write.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/disambiguation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/document_parse.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/document_scope.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/embedding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/entity_resolution.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/fusion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/graph_query.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/graph_storage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/hybrid_search.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/invoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/jev_decision.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/manifests.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/registry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/remote_encoders.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/reranking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/retrieval_core.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/rlm_chunking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/sheet_tables.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/vision_to_text.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/contracts/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/contracts/chunk.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/contracts/evals.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/contracts/extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/contracts/graph.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/contracts/identifiers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/contracts/ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/contracts/provenance.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/contracts/span.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/corpus/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/corpus/canonicalize.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/corpus/document_parser.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/corpus/embedded.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/corpus/http.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/evals/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/evals/gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/evals/langfuse_backend.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/evals/runner.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/evals/scorers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/harness/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/ingestion/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/ingestion/builder.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/ingestion/evaluate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/ingestion/group.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/ingestion/layout.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/ingestion/segment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/ingestion/tables.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/models/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/models/model_servers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/models/profiles.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/models/seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/models/tag_structured.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/models/tracing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/models/usage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/models/weights.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/ontology/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/ontology/pack_schema.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/ontology/registry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/pack_sdk/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/invokers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/pack.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/options.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/pack.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/function_families.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/packs/reference_seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/py.typed +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/skills/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/skills/generation/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/skills/generation/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/skills/rlm/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/skills/rlm/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/skills/rlm/agent.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/spans/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/spans/page_map.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/store/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/store/chunk_text.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/subgraphs/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/subgraphs/observability.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/subgraphs/scaffold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/util/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/util/concurrent.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/util/pdfium.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/src/rag_wright/util/spacy_model.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tasks.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_agent_chat_model.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_agent_chat_model_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_answers_exports.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_api_embedder_ps39.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_bytes_ingest.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_capability_reexports.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_decision_swap_doc_example.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_discover.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_documents.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_drop_workspace.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_drop_workspace_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_e2e.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_invoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_kg.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_mcp.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_metering_tracing_exports.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_model_role_export.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_open_workspace_reconfig.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_options.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_pack_sdk.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_pack_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_pdf_page_count.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_public_gaps_ps38.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_tracing_helpers_ps32.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_usage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_workspace.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/api/test_workspace_models.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/arch/domain_vocabulary_baseline.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/arch/test_doc_references.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/arch/test_engine_domain_vocabulary.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/arch/test_import_contracts.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/arch/test_lock_version.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/arch/test_packs_use_store_primitives.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/arch/test_pdfium_door.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/arch/test_shipped_skills.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/async_helpers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_answer_generator.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_answer_generator_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_assertion_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_authoring_contract.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_chunk_read.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_chunk_write.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_claim_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_clause_exception_linking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_compliance_judgment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_compliance_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_contract_kg_serve.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_contract_kg_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_dg_adapter.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_dg_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_dg_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_dg_model_seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_dg_private.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_disambiguation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_document_scope.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_embedding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_embedding_profiles.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_entity_resolution.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_fusion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_graph_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_graph_query.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_graph_storage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_highlight_serve.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_hybrid_search.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_jev_decision.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_manifest_validation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_manifests.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_parsing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_parties_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_query_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_query_understanding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_registry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_remote_encoders.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_repair_partition.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_requirement_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_reranking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_retrieval_core.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_rlm_chunking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_rlm_chunking_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_rlm_method.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_rlm_synthesis.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_runtime_registry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_span_relevance_judgment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_structural_model_fallback.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/capabilities/test_vlm_ocr.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/compliance_fakes.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/conftest.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_canonical_source_doc_id.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_chunk_record.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_compliance.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_function.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_function_routing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_identifiers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_ingestion_hooks.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_jurisdiction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_ontology.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_property.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_provenance.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/contracts/test_value_match.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/_ooxml_fixtures.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/test_canonicalize.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/test_cuad.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/test_cuad_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/test_document_parser.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/test_edgar.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/test_embedded.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/test_gcs_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/test_http.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/test_parse_wire2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/corpus/test_selection.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/eval/test_contractnli_judge.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/eval/test_cuad_highlight_metrics.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/eval/test_kg_property_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/eval/test_nl_to_type_metrics.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/eval/test_relational_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/evals/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/evals/test_gold_contracts.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/evals/test_gold_import.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/evals/test_langfuse_backend.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/evals/test_runner.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/evals/test_scorer_parity.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/evals/test_scorers_a.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/evals/test_scorers_b.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/evals/test_scorers_c.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/evals/test_scorers_d.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/fixtures/ingestion/textile_test_report.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/fixtures/leg_a_silver/README.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/fixtures/table-bearing-contract.pdf +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/foundation/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/foundation/test_arcadedb_hybrid.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/foundation/test_model_seam_structured.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/harness/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/harness/test_harness_accounting.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/harness/test_harness_engine_wiring.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/harness/test_harness_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/harness/test_harness_recorder.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/harness/test_harness_thinking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_aevaluate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_builder.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_concurrency_ceiling.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_document_metadata.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_evaluate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_evaluate_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_layout_segmenter.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_sheet_continuations.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_spreadsheet_content.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_table_rows.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_tuning.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_unit_grouper.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ingestion/test_unit_representative.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/journey/incidents_domain.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/journey/incidents_pack.ttl +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/journey/test_incidents_journey.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/journey/test_pack_schema.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/mcp/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/mcp/test_compliance_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/mcp/test_intra_document_qa_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/mcp/test_relational_qa_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_async_infra.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_classifier_heads_load_clean.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_model_servers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_models_dir.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_no_gemma_default.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_profile_routing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_profile_seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_seam_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_seam_deadline_and_cap.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_seam_event_loops.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_seam_retry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_seam_stream.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_serving_seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_serving_wiring.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_tag_structured.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_tag_structured_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_tracing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/models/test_usage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ontology/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ontology/test_clause_template.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ontology/test_derivation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ontology/test_entity_taxonomy.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ontology/test_template_captured_in_ttl.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/reference/test_compliance_reference.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/reference/test_contract_seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/scripts/test_eval_chunking_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/scripts/test_eval_classifier_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/scripts/test_fetch_reference_models.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/scripts/test_generation_robustness_errors.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/skills/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/skills/test_creating_evals_skill_example.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/skills/test_ingestion_skill_example.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_boundary.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_classifier_property_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_clause_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_clause_function_classifier_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_clause_kg_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_clause_kg_extractor_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_dim_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_dim_fleet_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_hybrid_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_hybrid_property_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_legalbert_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_model_capabilities.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_new_function_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_page_map.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_property_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_property_grounding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_reclassify.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_residual_decision.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_scarce_function_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_segment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_segmentation_vocab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_semantic_judge.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_setfit_clause_adapter.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_setfit_probabilities.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_span_offsets.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_stage_labels_0005.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_symbolic_validation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/spans/test_tag_clause_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_affiliation_backfill.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_arcadedb_clause_kg.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_arcadedb_contract.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_arcadedb_property.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_arcadedb_requirement_sources.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_arcadedb_schema.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_chunk_text.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_concurrent_writes.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_contract_kg_store_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_document_metadata_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_document_scope.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_engine_domain_neutral.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_entities_by_name.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_kg_edges.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_kg_mutations.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_kg_read.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_kg_write.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_neutral_schema.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_store_create_flag.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/store/test_write_graph_idempotent.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_async_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_clause_results.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_compliance_check.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_compliance_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_graph_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_ingest_knobs.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_intra_document_qa.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_observability.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_partial_entry_contract.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_relational_qa.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_requirement_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_scaffold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_semantic_chunking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/test_backfill_clause_span_id.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/test_dg_model_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/test_populate_clause_kg.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/test_populate_entity_graph.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/util/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/util/test_concurrent.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.13.0}/tests/util/test_spacy_model.py +0 -0
|
@@ -161,9 +161,20 @@ them later and each one is a refactor with its own test fallout:
|
|
|
161
161
|
| resuming a suspended run | the continuation renders ITSELF; the substrate asks |
|
|
162
162
|
| the agent's chat model | from the engine's model profile, never a string in the substrate |
|
|
163
163
|
|
|
164
|
-
**Collect them into ONE object the substrate is handed** --
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
**Collect them into ONE object the substrate is handed** -- `AgentDefinition`, with FIFTEEN required
|
|
165
|
+
fields, and **the substrate derives everything else**. Four are the shape: the tool surface (`surface`), the
|
|
166
|
+
planning classification (`planning`), the worker roster (`workers`) and the context type (`context_schema`).
|
|
167
|
+
The other eleven are the customization surface, and an agent without them runs but is quietly less capable:
|
|
168
|
+
`retry_on`, `message_for`, `model_id_for`, `prompts` (an `AgentPrompts`, eleven fields of its own: every word
|
|
169
|
+
the model reads), `repeatable`, `question_argument`, `framings`, `carry_forward`, `rules`, `decision_points` and
|
|
170
|
+
`read_framing`. The field-by-field reference, generated from the tier, is `docs/harness.md` in the engine
|
|
171
|
+
repository.
|
|
172
|
+
|
|
173
|
+
**Build every worker with `worker_spec(..., definition=...)`.** `worker_spec`'s policy parameters default to
|
|
174
|
+
inert values, and all but the ledger are fields of the definition you already declared; a worker built
|
|
175
|
+
without threading them ran with no retries, no repeat suppression and no decision recording while every test
|
|
176
|
+
passed. With `definition=`, each parameter you leave at its default is taken from the definition, and a value
|
|
177
|
+
you pass still wins.
|
|
167
178
|
|
|
168
179
|
That last clause is the whole trick. The alternative -- let the product pass the derived sets too -- is a
|
|
169
180
|
smaller diff and scores perfectly on every axis, and it exports an invariant as a convention the next
|
{rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/building-an-ingestion-capability/SKILL.md
RENAMED
|
@@ -154,6 +154,10 @@ category.
|
|
|
154
154
|
|
|
155
155
|
## 5. Spreadsheets, tables and embedded files
|
|
156
156
|
|
|
157
|
+
- **Blank PDF pages** are read as empty, never sent to the vision model (engine 0.13.0). On a parse cache built
|
|
158
|
+
by an earlier engine with `VISION_OCR` configured, run `find_blank_pages_with_text(cache_dir, sources)` once:
|
|
159
|
+
delete each finding's `cache_files` and re-ingest that document (its blank pages may hold invented text).
|
|
160
|
+
|
|
157
161
|
- **Hidden sheets** are ingested by default; `IngestSource(include_hidden_sheets=False)` skips them (listed in
|
|
158
162
|
`DocumentReport.skipped_hidden_sheets`).
|
|
159
163
|
- **Blank rows inside a table**: the parse cuts a sheet's table at every blank row; the engine glues a piece back
|
{rag_wright-0.11.0 → rag_wright-0.13.0}/.claude/skills/specifying-a-product-on-the-engine/SKILL.md
RENAMED
|
@@ -58,7 +58,7 @@ Every product item lands in one or more of these. The route column is where the
|
|
|
58
58
|
| **Domain knowledge**: vocabulary, schema, constraints, synonyms, decision criteria | "controlled vocabularies", "the ontology", "mandatory fields", "valid ranges" | `EngineConfig(pack=...)` (the store creates the declared types on `open_workspace`); your capabilities read value sets and SHACL shapes with `rdflib` / `pyshacl` | `authoring-a-capability` | ontology authoring |
|
|
59
59
|
| **Ingestion**: documents, spreadsheets, images, embedded files into the graph | "parse the forms", "load the lab reports", "idempotent re-runs" | `build_ingestion` (your extractor + optional hooks) → `aingest`; `IngestSource`, `IngestionTuning`, `table_rows` / `TableRow`, `evaluate_ingestion`, `check_extraction`; `KgNode` / `KgEdge` | `building-an-ingestion-capability` | KG construction |
|
|
60
60
|
| **Entity and registry resolution** | "resolve against the yarn register", "queue unresolved mentions" | your `document_hook`; the entity-resolution building blocks on `rag_wright.pack_sdk` | `building-an-ingestion-capability` | entity resolution |
|
|
61
|
-
| **A typed query or retrieval** | "find similar cases", "filter the table", "the dossier" | a query capability of your pack composing the primitives (`kg_read`, `kg_edges`, `NOT_NULL`, hybrid search from `rag_wright.
|
|
61
|
+
| **A typed query or retrieval** | "find similar cases", "filter the table", "the dossier" | a query capability of your pack composing the primitives (`kg_read`, `kg_edges`, `NOT_NULL`, `Range`, hybrid span search with `span_search` from `rag_wright.api`), registered with `CapabilityManifest` + `register_capability` / `load_pack`, invoked with `ainvoke_subgraph` | `authoring-a-capability` | authoring capabilities |
|
|
62
62
|
| **A cited answer, or a refusal** | "every answer cites its source", "say when it is not in the records" | `agenerate_answer` over `EvidenceItem`s (an answer states its support; "none" abstains), `ajudge_spans` | `authoring-a-capability` | concepts (answers) |
|
|
63
63
|
| **A typed decision or classification** | "classify the structure", "which of these is it" | `classifier-opportunity-analysis` first; then rules, a trained classifier, or the decision model (`jev_decision` from `engine_capabilities()`, criteria in the pack) | `classifier-opportunity-analysis` → `setfit` / `laya` | classification and decision models |
|
|
64
64
|
| **A deterministic workflow behind a button** (mode **D**) | "upload, confirm, save", "export CSV" | a product **operation** (one function per user operation) calling your capabilities; the route calls the operation | `building-a-product-backend` | domain-adaptation step 8 |
|
|
@@ -27,8 +27,11 @@ open-core and domain-neutral; your product brings the domain. Hard rules:
|
|
|
27
27
|
`EngineConfig`/`StoreConfig` (`StoreConfig.from_env()` reads `ARCADEDB_*`)/`open_workspace`
|
|
28
28
|
(`temporary_workspace`/`drop_workspace` for disposable and removed databases), the invokers
|
|
29
29
|
(`ainvoke_subgraph`/`invoke_model`/`ainvoke_model`), discovery (`capability_index`/`discover`), the KG accessors
|
|
30
|
-
(`kg_read
|
|
31
|
-
|
|
30
|
+
(`kg_read`, `kg_write`, `kg_edges`, `kg_count`/`kg_delete`/`kg_update`, all filtering by `where` values that
|
|
31
|
+
are equality, a list for membership, `NOT_NULL` or a `Range(gt=, ge=, lt=, le=)` on any number of fields,
|
|
32
|
+
evaluated in the store;
|
|
33
|
+
`entities_by_name`, `span_positions`), hybrid span search (`span_search` / `aspan_search`: cited spans from
|
|
34
|
+
the dense and sparse index, fused in the store), `pack_store(ws, cls)` (build your pack's store extension over the
|
|
32
35
|
workspace's store; the store itself stays private), metering and tracing (`measure_usage`, `record_usage`,
|
|
33
36
|
`traced_run`/`traced_step`, and for code emitting its own generations `tracing_on`/`trace_level`/
|
|
34
37
|
`start_generation`/`finish_generation`/`flush_tracing`), the query embedder (`ws.embedder` where you hold a
|
|
@@ -4,6 +4,28 @@ 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.13.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.12.0...0.13.0) (2026-10-15)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* **PS-35:** migrate a pre-0.2.0 database's Span fields through rag_wright.api ([856f956](https://github.com/fzaidi-dai/RAG_Wright/commit/856f956f674c731d170878d44ec3fef980a10ba9))
|
|
13
|
+
* **PS-44:** range filters on any number of KG fields, evaluated in the store (TexWright ER-1) ([cc62c49](https://github.com/fzaidi-dai/RAG_Wright/commit/cc62c49000161567869d46127bb158db16106c28))
|
|
14
|
+
* **PS-45:** a public hybrid span search on rag_wright.api (engine gap G24) ([4aa802f](https://github.com/fzaidi-dai/RAG_Wright/commit/4aa802fdc6cf12a3c732aa7a41e4de6240dd05da))
|
|
15
|
+
* **PS-47:** find cached parses holding text a VLM invented for a blank page ([ff92d81](https://github.com/fzaidi-dai/RAG_Wright/commit/ff92d81956590002418ef50f41dee54e0b0b6ef8))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* **PS-46:** a page with no ink is blank, never escalated to the VLM (TexWright 2026-10-15) ([fc633a8](https://github.com/fzaidi-dai/RAG_Wright/commit/fc633a84aa52a89de5b79d90b50d80f7d622d792))
|
|
21
|
+
|
|
22
|
+
## [0.12.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.11.0...0.12.0) (2026-10-15)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* **PS-43:** worker_spec(definition=), the harness design reference, and the harness source cleared of its originating product's vocabulary ([c19ff4d](https://github.com/fzaidi-dai/RAG_Wright/commit/c19ff4da006611383c6a7bca07ba633e345b44d8))
|
|
28
|
+
|
|
7
29
|
## [0.11.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.10.0...0.11.0) (2026-10-15)
|
|
8
30
|
|
|
9
31
|
|
|
@@ -55,7 +55,12 @@ 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-15): `rag-wright` 0.11.0 is RELEASED** (PR #13: PS-40 the product-building skills ship,
|
|
59
|
+
> PS-41 the skills audit, PS-42 by-slug registration; RuleWright's guide `docs/specs/public-surface/rulewright-migration-0.11.0.md`).
|
|
60
|
+
> **PS-43 RELEASED as 0.12.0 (2026-10-15, PR #14)**: `worker_spec(definition=)`, `docs/harness.md` (tables generated by
|
|
61
|
+
> `scripts/build_harness_doc.py`), the harness source cleared of RuleWright's vocabulary with a guard; guide
|
|
62
|
+
> `rulewright-migration-0.12.0.md`. Before it,
|
|
63
|
+
> **(2026-10-14): PS-32 done: the agent harness is the engine's third public tier `rag_wright.harness`**
|
|
59
64
|
> (ADR-0139 handover; with PS-39 `ws.embedder` / `api.query_embedder`; RuleWright's guide
|
|
60
65
|
> `docs/specs/public-surface/rulewright-migration-0.10.0.md`; RELEASED as `rag-wright` 0.10.0 on 2026-10-14: PyPI + GitHub release `0.10.0`, PR #12). Before it,
|
|
61
66
|
> **(2026-10-13): `rag-wright` 0.9.0 is RELEASED** (PS-36 `agent_chat_model`, PS-37 drop/temporary
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rag-wright
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.13.0
|
|
4
4
|
Summary: A domain-retargetable, open-core engine for hybrid retrieval + knowledge-graph RAG: parsing, chunking, embedding, hybrid search, reranking, graph extraction, entity resolution, ontology-driven knowledge, and a capability runtime.
|
|
5
5
|
Project-URL: Homepage, https://github.com/fzaidi-dai/RAG_Wright
|
|
6
6
|
Project-URL: Repository, https://github.com/fzaidi-dai/RAG_Wright
|
|
@@ -117,6 +117,8 @@ The whole doc set is under [`docs/`](docs/). Pick your path:
|
|
|
117
117
|
product seam); a coding agent should drive it with the `using-the-rag-wright-engine` skill.
|
|
118
118
|
- **Measuring a capability?** [Evals](docs/evals.md): gold sets from your experts' files, a scorer per capability
|
|
119
119
|
kind, a runner with repeats, a report your backend can return, optional Langfuse runs.
|
|
120
|
+
- **Building your product's agent?** [The agent harness](docs/harness.md): the third tier's design, every field a
|
|
121
|
+
product declares, and where it goes quiet rather than failing.
|
|
120
122
|
- **Going deep?** [Architecture](docs/architecture.md), the generated [API reference](docs/api/), the
|
|
121
123
|
[Reference pack](docs/reference-pack.md), and the [ADR index](docs/adr/README.md).
|
|
122
124
|
- **Releases?** See the [CHANGELOG](CHANGELOG.md) and [how releases work](docs/releasing.md) (batched via
|
|
@@ -59,6 +59,8 @@ The whole doc set is under [`docs/`](docs/). Pick your path:
|
|
|
59
59
|
product seam); a coding agent should drive it with the `using-the-rag-wright-engine` skill.
|
|
60
60
|
- **Measuring a capability?** [Evals](docs/evals.md): gold sets from your experts' files, a scorer per capability
|
|
61
61
|
kind, a runner with repeats, a report your backend can return, optional Langfuse runs.
|
|
62
|
+
- **Building your product's agent?** [The agent harness](docs/harness.md): the third tier's design, every field a
|
|
63
|
+
product declares, and where it goes quiet rather than failing.
|
|
62
64
|
- **Going deep?** [Architecture](docs/architecture.md), the generated [API reference](docs/api/), the
|
|
63
65
|
[Reference pack](docs/reference-pack.md), and the [ADR index](docs/adr/README.md).
|
|
64
66
|
- **Releases?** See the [CHANGELOG](CHANGELOG.md) and [how releases work](docs/releasing.md) (batched via
|
|
@@ -60,7 +60,7 @@ typed edges, and `ComplianceStore` creates `Requirement`, so they appear the fir
|
|
|
60
60
|
|
|
61
61
|
A database created before the `Span` field rename (`contract_id`, `function`, `functions` became `document_id`,
|
|
62
62
|
`primary_tag`, `tags`) is refused by `ensure_schema` with a `RuntimeError`; migrate it once with
|
|
63
|
-
`
|
|
63
|
+
`migrate_span_fields(config, corpus=...)` from `rag_wright.api` ([installation](installation.md)).
|
|
64
64
|
|
|
65
65
|
## Stop / reset
|
|
66
66
|
|
{rag_wright-0.11.0 → rag_wright-0.13.0}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md
RENAMED
|
@@ -84,3 +84,14 @@ now, a self-hosted vLLM-Gemma-4 later for data sovereignty (only `base_url` chan
|
|
|
84
84
|
as the escalation provider for data sovereignty; (3) routing the vision call **through the async model seam**
|
|
85
85
|
for true thread cancellation (today `to_thread` unblocks the caller at the deadline but the docling thread
|
|
86
86
|
runs on); (4) classical preprocessing stays available as a cheap first pass but is not the heavy-scan fix.
|
|
87
|
+
|
|
88
|
+
## Amendment (2026-10-15, PS-46): a blank page is not degraded
|
|
89
|
+
|
|
90
|
+
A page with no ink read as both "blurry" (a white page has Laplacian variance 0) and "faint" (no pixel below 128),
|
|
91
|
+
so it was escalated, and a VLM asked to transcribe an empty page invents one (TexWright: meeting minutes in another
|
|
92
|
+
language, kept in the parse). The gate now measures `ink_frac` (pixels below 200, faint grey included) and returns
|
|
93
|
+
`ScanQuality.BLANK` for a page with no OCR text and `ink_frac` at most 1e-4: never escalated, never flagged
|
|
94
|
+
needs-rescan, listed in `TieredOCRReport.blank_pages`. Measured margin: blank 0; the heavy faint scan 0.077-0.082
|
|
95
|
+
(its `dark_frac` is 0.0025, which is why `dark_frac` alone cannot separate it); the sparsest real fixture page
|
|
96
|
+
0.019. The post-escalation check stays a flag rather than dropping the VLM text: it is an English word-rate test,
|
|
97
|
+
and a correct transcription of a page with few common words (a number-heavy table) fails it.
|
|
@@ -68,6 +68,10 @@ Members: `STRUCTURED_REASONING` (`'structured_reasoning'`), `STRUCTURED_REASONIN
|
|
|
68
68
|
|
|
69
69
|
One ranked capability match from `discover` — enough for an agent to pick and invoke it by `slug`.
|
|
70
70
|
|
|
71
|
+
### `SpanHit(*, span_id: str, text: str, document_id: str, doc_start: Optional[int] = None, doc_end: Optional[int] = None, pages: list[int] = [], bbox: Optional[tuple[float, float, float, float]] = None, primary_tag: str = '', rank: int, found_by: tuple[str, ...]) -> None`
|
|
72
|
+
|
|
73
|
+
One cited span from `span_search`, best first. `found_by` says which legs found it: `"hybrid"` (the fused dense + sparse search) and/or `"dense"` (the dense floor). `bbox` is `(l, t, r, b)` or None.
|
|
74
|
+
|
|
71
75
|
### `KgNode(type: 'str', key_field: 'str', props: 'dict[str, object]') -> None`
|
|
72
76
|
|
|
73
77
|
A typed KG node to upsert (DD-1b, ADR-0117): `type` is the vertex type, `key_field` the identity field to upsert on, `props` the fields (including `key_field`) as DOMAIN-NATIVE values. The store encodes each prop by its pack-declared storage type -- the caller never serializes to the store's wire format.
|
|
@@ -76,6 +80,18 @@ A typed KG node to upsert (DD-1b, ADR-0117): `type` is the vertex type, `key_fie
|
|
|
76
80
|
|
|
77
81
|
A typed KG edge to create between two nodes identified by (type, key_field, key). `props` are native values (edge properties are type-driven: edges declare no storage schema).
|
|
78
82
|
|
|
83
|
+
### `Range(gt: 'Optional[object]' = None, ge: 'Optional[object]' = None, lt: 'Optional[object]' = None, le: 'Optional[object]' = None) -> None`
|
|
84
|
+
|
|
85
|
+
A `where` value meaning a comparison, evaluated in the store (ER-1): `gt` (>), `ge` (>=), `lt` (<), `le` (<=), at most one lower and one upper bound, at least one bound. Bounds are scalars (numbers compare as numbers, strings lexically). Any number of fields may carry one, beside equality, membership and `NOT_NULL`, on every KG call that takes `where`: `where={"weight": Range(ge=180, le=220), "tensile": Range(gt=400)}`.
|
|
86
|
+
|
|
87
|
+
#### `Range.terms(self) -> 'list[tuple[str, object]]'`
|
|
88
|
+
|
|
89
|
+
`[(operator, bound), ...]`, lower bound first.
|
|
90
|
+
|
|
91
|
+
### `BlankPageText(*, source: str, pages: dict[int, str], cache_files: list[str]) -> None`
|
|
92
|
+
|
|
93
|
+
One cached parse with text on blank pages. `source` is the PDF's path (or the name given with its bytes), `pages` maps each blank page to the text the cached parse holds there, and `cache_files` are the cached parse(s) and their OCR sidecar: delete them, then re-ingest the document so it is parsed again.
|
|
94
|
+
|
|
79
95
|
### `EvidenceItem(*, chunk_id: str, text: str, confidence: Optional[str] = None, properties: Optional[list[dict]] = None) -> None`
|
|
80
96
|
|
|
81
97
|
One piece of grounding evidence: a chunk's text, its `chunk_id` (the citation), and — for a graph-derived fact — its confidence tag (surfaced to the generator, FR-S.4).
|
|
@@ -296,7 +312,7 @@ The semantic boundary-discovery seam: decide chunk boundaries as a partition of
|
|
|
296
312
|
|
|
297
313
|
### `open_workspace(config: 'EngineConfig', *, corpus: 'str', reset: 'bool' = False, create: 'bool' = True) -> 'WorkspaceHandle'`
|
|
298
314
|
|
|
299
|
-
Resolve (and cache) the workspace for `corpus` (the backend database name) from `config`. Ensures the schema: the neutral engine types, plus `config.pack`'s declared types when set. Raises `RuntimeError` on a database whose `Span` type still has the pre-ING-8d field names (migrate it with `
|
|
315
|
+
Resolve (and cache) the workspace for `corpus` (the backend database name) from `config`. Ensures the schema: the neutral engine types, plus `config.pack`'s declared types when set. Raises `RuntimeError` on a database whose `Span` type still has the pre-ING-8d field names (migrate it with `migrate_span_fields`). Returns an opaque `WorkspaceHandle`. `reset=True` drops + recreates the database (test/clean-slate) and bypasses the cache. A missing database is created (logged): that is how a new corpus is provisioned. `create=False` raises `LookupError` instead (PS-27) -- use it wherever the corpus must already exist, so a wrong name fails loudly rather than opening an empty graph.
|
|
300
316
|
|
|
301
317
|
One handle per store and corpus is cached for the process. An equal `config` returns it; a different one (new models, options, credentials or pack) returns a new handle that replaces it from then on, so a configuration change takes effect without a restart (PS-16). The new handle reuses the store when the store settings and the pack are unchanged, and the query embedder when the embedding profile is unchanged; a call still holding the old handle finishes on the old config.
|
|
302
318
|
|
|
@@ -304,6 +320,10 @@ One handle per store and corpus is cached for the process. An equal `config` ret
|
|
|
304
320
|
|
|
305
321
|
Drop the database `corpus` (PS-37): everything in it, the retrieval index and the knowledge graph, is deleted and cannot be recovered. Returns True if it existed, False if there was nothing to drop. A cached handle for it is closed and forgotten, so a later `open_workspace` starts fresh. A missing or blank `corpus` raises `ValueError`: the name is always explicit, never a default database.
|
|
306
322
|
|
|
323
|
+
### `migrate_span_fields(config: 'EngineConfig', *, corpus: 'str', batch: 'int' = 5000, progress: 'Optional[Callable[[int, int], None]]' = None) -> 'int'`
|
|
324
|
+
|
|
325
|
+
Migrate the database `corpus` from the pre-0.2.0 `Span` field names (`contract_id`, `function`, `functions`) to the generic ones (`document_id`, `primary_tag`, `tags`), the database `open_workspace` refuses until this has run (PS-35). Values are copied in batches of `batch` and the old properties dropped; `progress(done, total)` is called after each batch. Idempotent: returns the number of records moved, 0 when already migrated. The database must exist (`LookupError` otherwise; it is never created), and a missing or blank `corpus` raises `ValueError`. Afterwards the schema is checked, so a database this returns for opens with `open_workspace`.
|
|
326
|
+
|
|
307
327
|
### `temporary_workspace(config: 'EngineConfig', *, prefix: 'str' = 'tmp') -> 'Iterator[WorkspaceHandle]'`
|
|
308
328
|
|
|
309
329
|
A workspace on a fresh database, `<prefix>_<12 hex>`, dropped when the block exits, whether it succeeds or raises (PS-37). For a probe or a measurement whose database must not outlive it: `with temporary_workspace(config, prefix="probe") as ws: ...`.
|
|
@@ -386,7 +406,7 @@ Rank the live ARD catalog by semantic match to `query`; return the top `k` (opti
|
|
|
386
406
|
|
|
387
407
|
### `kg_read(ws: 'WorkspaceHandle', node_type: 'str', *, where: 'Optional[dict]' = None, fields: 'Optional[list]' = None, distinct: 'Optional[str]' = None, order_by: 'Optional[str]' = None, limit: 'Optional[int]' = None, key_range: 'Optional[tuple]' = None) -> 'list[dict]'`
|
|
388
408
|
|
|
389
|
-
Read typed nodes of `node_type` from the workspace (see `Store.kg_read`).
|
|
409
|
+
Read typed nodes of `node_type` from the workspace (see `Store.kg_read`). Each `where` value is a scalar (equality), a list (membership; an empty list is scope-to-nothing -> `[]`), `NOT_NULL` (presence) or a `Range` (comparisons, on any number of fields: `{"weight": Range(ge=180, le=220), "tensile": Range(gt=400)}`); all filters are AND-ed and evaluated in the store. `key_range=(field, lo, hi)` is the half-open shorthand (`lo <= field < hi`). Then projection, distinct, order and limit.
|
|
390
410
|
|
|
391
411
|
### `kg_write(ws: 'WorkspaceHandle', nodes: 'list', edges: 'Any' = ()) -> 'None'`
|
|
392
412
|
|
|
@@ -398,7 +418,7 @@ Generic edge TRAVERSAL over the workspace (see `Store.kg_edges`): node-start out
|
|
|
398
418
|
|
|
399
419
|
### `kg_count(ws: 'WorkspaceHandle', type_name: 'str', *, where: 'Optional[dict]' = None, key_range: 'Optional[tuple]' = None) -> 'int'`
|
|
400
420
|
|
|
401
|
-
The number of vertices or edges of `type_name` matching `where` / `key_range` (see `Store.kg_count`).
|
|
421
|
+
The number of vertices or edges of `type_name` matching `where` / `key_range` (see `Store.kg_count`); `where` as in `kg_read`, `Range` values included.
|
|
402
422
|
|
|
403
423
|
### `kg_delete(ws: 'WorkspaceHandle', type_name: 'str', *, where: 'Optional[dict]' = None, key_range: 'Optional[tuple]' = None) -> 'int'`
|
|
404
424
|
|
|
@@ -416,6 +436,14 @@ Resolve an entity NAME to every entity node it matches: `[{entity_id, name, enti
|
|
|
416
436
|
|
|
417
437
|
Every span of `document` with its position provenance, ordered by document position. Each row: `span_id`, `parent_chunk_id`, `span_index`, `text`, `primary_tag` (the span tagger's primary tag, "" if untagged), `document_id`, `doc_start` / `doc_end` (document-absolute offsets), `pages`, and `bbox` DECODED to a `(l, t, r, b)` tuple or None. The engine MECHANISM behind a product's citation/highlight types -- the product wraps these rows into its own presentation type (e.g. `SpanLocation`).
|
|
418
438
|
|
|
439
|
+
### `span_search(ws: 'WorkspaceHandle', query: 'str', *, k: 'int' = 10, documents: 'Optional[list]' = None, tag: 'Optional[str]' = None, dense_floor: 'int' = 3) -> 'list'`
|
|
440
|
+
|
|
441
|
+
Hybrid search over the workspace's span index (every ingested span, embedded dense and sparse): the two legs fused by Reciprocal Rank Fusion in the store, with the top `dense_floor` pure-dense spans guaranteed a place, so a strong semantic match a common-token query would push out of the fused pool is kept (0 turns it off). Returns up to `k` `SpanHit`s, best first, each citation-ready: `span_id`, `text`, `document_id`, `doc_start` / `doc_end`, `pages`, `bbox`, `primary_tag`, `rank`, and `found_by` (`"hybrid"` and/or `"dense"`). `documents` scopes it to those source documents in the store (`None` = all, `[]` = nothing); `tag` keeps one primary tag. No reranking: compose `BGEReranker` over the hits if you want one. Raises `RuntimeError` when the workspace has no embedder.
|
|
442
|
+
|
|
443
|
+
### `aspan_search(ws: 'WorkspaceHandle', query: 'str', *, k: 'int' = 10, documents: 'Optional[list]' = None, tag: 'Optional[str]' = None, dense_floor: 'int' = 3) -> 'list'`
|
|
444
|
+
|
|
445
|
+
`span_search` off the event loop (the query embedding and the store calls block), for an async caller.
|
|
446
|
+
|
|
419
447
|
### `document_of(entity_id: 'str') -> 'str'`
|
|
420
448
|
|
|
421
449
|
The source-document id embedded in a chunk/span/unit id (`<source_doc_id>:<idx>:<hash>` -> the first, delimiter-safe segment). Empty in -> empty out.
|
|
@@ -448,6 +476,10 @@ The number of pages in a PDF (a path or the PDF's bytes), read under the engine'
|
|
|
448
476
|
|
|
449
477
|
The async, deadline-bounded twin of `parse_document_bytes` (ADR-0057): runs the docling parse off the event loop.
|
|
450
478
|
|
|
479
|
+
### `find_blank_pages_with_text(cache_dir: 'Any', sources: 'Iterable[Source]' = (), *, progress: 'Optional[Callable[[int, int], None]]' = None) -> 'list[BlankPageText]'`
|
|
480
|
+
|
|
481
|
+
Audit the parse cache under `cache_dir` (the one given to `parse_document`, or to `aingest`, which keeps its parses in `parsed/`; searched recursively) for text on blank pages. `sources` are the documents' PDFs, as paths or `(name, bytes)`; files embedded in a parsed package are stored in the cache and audited without being passed. A source that is not a PDF, or has no cached parse, is skipped. `progress(done, total)` is called after each PDF. Raises `FileNotFoundError` when `cache_dir` does not exist.
|
|
482
|
+
|
|
451
483
|
### `agenerate_answer(query: 'str', evidence: 'list[EvidenceItem]', *, ws: 'Any', guidance: 'Optional[str]' = None) -> 'GeneratedAnswer'`
|
|
452
484
|
|
|
453
485
|
A grounded, cited answer to `query` over `evidence`, or an abstention. Empty evidence abstains without a model call; a citation not in the evidence is dropped, and an answer left with no valid citation becomes an abstention (no claim without a citation). `answer_kind` says whether the evidence fully supported the answer (`answered`), only partly (`partial`) or not at all (`abstained`). `guidance` adds your domain's wording to the domain-neutral method.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agent harness reference — `rag_wright.harness`
|
|
2
2
|
|
|
3
|
-
> **Generated** from the live `rag_wright.harness.__all__` by `scripts/build_api_docs.py` — do not edit by hand. The agent harness tier (ADR-0139): what a product builds its agent on. It reaches the rest of the engine only through `rag_wright.api`.
|
|
3
|
+
> **Generated** from the live `rag_wright.harness.__all__` by `scripts/build_api_docs.py` — do not edit by hand. The agent harness tier (ADR-0139): what a product builds its agent on. It reaches the rest of the engine only through `rag_wright.api`. The design reference, with what a product declares and why, is `docs/harness.md`.
|
|
4
4
|
|
|
5
5
|
## Types
|
|
6
6
|
|
|
@@ -20,11 +20,11 @@ Every word a product says to its model: the tier prompts, the memory line and th
|
|
|
20
20
|
|
|
21
21
|
One user-initiated agent turn, and the scope it ran under.
|
|
22
22
|
|
|
23
|
-
`run_id` is the run's identity:
|
|
23
|
+
`run_id` is the run's identity: a run must outlive the view that started it, so it is returned rather than held in memory, and it is what `resume_run` addresses.
|
|
24
24
|
|
|
25
25
|
### `RunOutcome(*values)`
|
|
26
26
|
|
|
27
|
-
What became of a run, named in CODE because none of it is a judgement
|
|
27
|
+
What became of a run, named in CODE because none of it is a judgement.
|
|
28
28
|
|
|
29
29
|
**Every transition here is decidable from the state alone**, which is why it is not in a prompt: the project's own rule is that a warning in a prompt is not a constraint, and `read_the_question` was instructed in four places and obeyed zero times.
|
|
30
30
|
|
|
@@ -40,7 +40,7 @@ A memory operation reached the store with no run context.
|
|
|
40
40
|
|
|
41
41
|
### `WorkerReport(*, status: str, need: str = '') -> None`
|
|
42
42
|
|
|
43
|
-
What every worker carries, whatever else it returns
|
|
43
|
+
What every worker carries, whatever else it returns.
|
|
44
44
|
|
|
45
45
|
**Structured, because the orchestrator chains it.** `status` lets a program branch; `need` is how a worker says it cannot finish without a person, since it has no way to ask.
|
|
46
46
|
|
|
@@ -54,7 +54,7 @@ One thing worth telling the client about.
|
|
|
54
54
|
|
|
55
55
|
A model call passed a wall-clock ceiling. **Never raised directly** -- one of the two below is.
|
|
56
56
|
|
|
57
|
-
There are two ceilings with OPPOSITE retry semantics, and they had one exception type between them
|
|
57
|
+
There are two ceilings with OPPOSITE retry semantics, and they had one exception type between them at first. That cost one worker in a live run SEVEN identical dispatches: the whole-turn breach escaped the worker, arrived at the parent as a failed `task` tool call, and `ToolRetryMiddleware(retry_on=TRANSIENT)` re-ran the worker's entire job. Catch this base when you mean "some deadline fired"; never put it in a retry set.
|
|
58
58
|
|
|
59
59
|
### `ModelAttemptTooSlow`
|
|
60
60
|
|
|
@@ -94,7 +94,7 @@ What a product offers an agent run, and the two things the substrate asks about
|
|
|
94
94
|
|
|
95
95
|
The only thing the substrate needs to know about a run's tenancy.
|
|
96
96
|
|
|
97
|
-
A product's own context type satisfies this by having the two members; it keeps whatever else it wants (
|
|
97
|
+
A product's own context type satisfies this by having the two members; it keeps whatever else it wants (typed ids, a user id, its own construction rule).
|
|
98
98
|
|
|
99
99
|
## Type aliases
|
|
100
100
|
|
|
@@ -138,13 +138,13 @@ Begin a run under `context`, and supply it to every invocation.
|
|
|
138
138
|
|
|
139
139
|
The caller passes who is asking, what they asked, and the scope it runs under. **That scope is the PRODUCT's to derive** (engine ADR-0139): the substrate must not know what authenticated this run, so it takes the resolved scope rather than three identity rows it would have to re-read.
|
|
140
140
|
|
|
141
|
-
**The obligation
|
|
141
|
+
**The obligation to bind the context per invocation therefore moves to the caller, and is not weaker for it**: the context must come from the authenticated session of THIS request, never from one remembered across requests. On a route that is structural -- the tenant is a per-request dependency and the product's own construction rule runs in the handler body -- which is why the door is still impossible to forget rather than merely documented.
|
|
142
142
|
|
|
143
|
-
A `run_id` is minted when the caller has none, so a run is addressable from the moment it exists rather than from whenever somebody remembers to name it
|
|
143
|
+
A `run_id` is minted when the caller has none, so a run is addressable from the moment it exists rather than from whenever somebody remembers to name it.
|
|
144
144
|
|
|
145
|
-
**Tracing and accounting attach HERE, for the same reason the context does
|
|
145
|
+
**Tracing and accounting attach HERE, for the same reason the context does**: this is the only door, so it is the only place that cannot be forgotten. `settings=None` leaves both off and `accounting=None` is a no-op — the precedent `recording_usage` set, because accounting must never be the reason a user's work does not happen.
|
|
146
146
|
|
|
147
|
-
**`continuation` must already be RESOLVED
|
|
147
|
+
**`continuation` must already be RESOLVED.** It is typed `Any` only because the harness must not import its own models into this module's signature dance; `render_continuation` refuses anything but a `ResolvedContinuation` by name, so a caller that skipped the workspace check gets `UnresolvedContinuation` here rather than a prompt full of the browser's claims.
|
|
148
148
|
|
|
149
149
|
### `resume_run(agent: 'Any', context: 'RunScope', *, answer: 'Any', run_id: 'str', settings: 'Any' = None, accounting: 'Any' = None) -> 'RunResult'`
|
|
150
150
|
|
|
@@ -160,17 +160,17 @@ Begin a run and yield `(run_id, namespace, mode, chunk)` as it happens.
|
|
|
160
160
|
|
|
161
161
|
**The streaming sibling of `start_run`, and it carries the same guarantees** — the context, the trace and both ledgers — because they attach here rather than at the call site. A surface that streamed through `agent.astream` directly would lose all three and look like it worked.
|
|
162
162
|
|
|
163
|
-
`subgraphs=True` is what makes a subagent's output distinguishable from the main agent's; without it every event arrives flat and
|
|
163
|
+
`subgraphs=True` is what makes a subagent's output distinguishable from the main agent's; without it every event arrives flat and a client's per-subagent cards have nothing to index on. Two stream modes are requested, so langgraph yields **3-tuples** rather than 2 — verified, not assumed.
|
|
164
164
|
|
|
165
|
-
**`continuation` is built the same way `start_run` builds it**, through `_opening_turn`. Two doors would mean two chances to forget the view, and the streaming one is the door the product actually uses — so a continuation that only worked on `start_run` would be a feature with no users
|
|
165
|
+
**`continuation` is built the same way `start_run` builds it**, through `_opening_turn`. Two doors would mean two chances to forget the view, and the streaming one is the door the product actually uses — so a continuation that only worked on `start_run` would be a feature with no users.
|
|
166
166
|
|
|
167
167
|
### `read_run(agent: 'Any', context: 'RunScope', *, run_id: 'str') -> 'RunResult | None'`
|
|
168
168
|
|
|
169
|
-
Where a run got to, by its id alone — or `None` if it is not this
|
|
169
|
+
Where a run got to, by its id alone — or `None` if it is not this scope's.
|
|
170
170
|
|
|
171
|
-
|
|
171
|
+
**The run is addressable, cashed:** *"the run is addressable, and its region renders from an id alone, never from in-memory state that a reload destroys."* A reload, a second tab, or a deploy all arrive here.
|
|
172
172
|
|
|
173
|
-
**`None` covers three cases deliberately** — no such run, another
|
|
173
|
+
**`None` covers three cases deliberately** — no such run, another scope's run, and a run id that was never started. Not by comparing afterwards: the thread id is derived from the scope, so another scope's run does not resolve to a thread at all. The checkpointer itself has no tenancy and cannot be given any, so the isolation has to be in the key.
|
|
174
174
|
|
|
175
175
|
**State, not replay.** This returns where the run got to; it does not re-emit the events that got it there. A reloading client renders the state and reconnects for what follows, which is enough for obligation 1 and is measurably cheaper than storing and replaying a transcript. If the surface turns out to need replay, the checkpointer keeps the history and `alist` is where that would come from — decided then, with a real surface to measure against, rather than guessed now.
|
|
176
176
|
|
|
@@ -186,37 +186,37 @@ What a run's stored state says became of it.
|
|
|
186
186
|
|
|
187
187
|
### `thread_for(context: 'RunScope', run_id: 'str') -> 'str'`
|
|
188
188
|
|
|
189
|
-
The checkpointer thread a run lives in, **
|
|
189
|
+
The checkpointer thread a run lives in, **keyed by its scope**.
|
|
190
190
|
|
|
191
|
-
**The checkpointer has no tenancy and cannot be given any.** `aget_tuple` keys on `thread_id` and `checkpoint_ns` alone — verified in the installed saver — so a bare run id is readable by anybody who can name it. That is exactly the hole
|
|
191
|
+
**The checkpointer has no tenancy and cannot be given any.** `aget_tuple` keys on `thread_id` and `checkpoint_ns` alone — verified in the installed saver — so a bare run id is readable by anybody who can name it. That is exactly the hole a jobs route can have, where a UUID in a URL is the whole access control and anybody holding a job id reads its result across customers.
|
|
192
192
|
|
|
193
|
-
So the
|
|
193
|
+
So the scope is part of the key rather than a comparison somebody must remember afterwards. Another scope's run id does not resolve to a thread at all, which makes "not yours" and "no such run" the same non-answer **by construction** — the non-oracle property this codebase applies to documents, jobs, workspaces, sessions and checks, arrived at structurally for once instead of by a check.
|
|
194
194
|
|
|
195
195
|
The run id stays the PUBLIC identity: it is what `usage_run.correlation_id` joins on and what a client keeps to reconnect. The thread id is ours and never leaves the process.
|
|
196
196
|
|
|
197
197
|
### `build_chat_agent(context: 'RunScope', resources: 'Any', settings: 'Any', *, model: 'Any' = None, definition: 'Any', checkpointer: 'Any' = None, store: 'Any' = None, ledger: 'Any' = None) -> 'Any'`
|
|
198
198
|
|
|
199
|
-
The chat-manager for one run, holding the manifest bound to that run's
|
|
199
|
+
The chat-manager for one run, holding the manifest bound to that run's scope.
|
|
200
200
|
|
|
201
|
-
**The model is resolved through DeepAgents**, not built here: `AGENT_MODEL_SPEC` plus a registered `ProviderProfile` is the only combination that applies
|
|
201
|
+
**The model is resolved through DeepAgents**, not built here: `AGENT_MODEL_SPEC` plus a registered `ProviderProfile` is the only combination that applies the OpenRouter configuration (`init_chat_model` silently ignores the profile).
|
|
202
202
|
|
|
203
203
|
**A `context_schema` is required, not conventional.** It comes from `definition.context_schema` -- the product's own context type, which the substrate never names -- and `start_run` refuses an agent without one, because an agent compiled with `context_schema=None` accepts `context=` and drops it silently.
|
|
204
204
|
|
|
205
|
-
**The checkpointer defaults to in-memory, which is a real limitation.**
|
|
205
|
+
**The checkpointer defaults to in-memory, which is a real limitation.** A run outlives the view that started it, and an in-memory saver does not outlive the process. A durable checkpointer is the caller's to pass, and re-attaching to a run by id is the requirement that forces it.
|
|
206
206
|
|
|
207
207
|
### `build_orchestrator(context: 'Any', resources: 'Any', settings: 'Any', *, model: 'Any' = None, tools: 'Any' = None, system_prompt: 'str | None' = None, extra_middleware: 'list | None' = None, definition: 'Any', checkpointer: 'Any' = None, store: 'Any' = None, ledger: 'Any' = None) -> 'Any'`
|
|
208
208
|
|
|
209
209
|
The planning tier, compiled as an agent in its own right.
|
|
210
210
|
|
|
211
|
-
**`context_schema` is declared rather than inherited.** A compiled child does receive the parent's context without declaring it — pinned in `test_harness_grounding.py` — but declaring it is what lets this be driven DIRECTLY, which
|
|
211
|
+
**`context_schema` is declared rather than inherited.** A compiled child does receive the parent's context without declaring it — pinned in `test_harness_grounding.py` — but declaring it is what lets this be driven DIRECTLY, which the orchestration eval does and which `start_run` refuses without the schema.
|
|
212
212
|
|
|
213
|
-
`model`, `tools`, `system_prompt` and `extra_middleware` are overridable for tests and evals; **production passes none of them.** `system_prompt` and `extra_middleware` exist so
|
|
213
|
+
`model`, `tools`, `system_prompt` and `extra_middleware` are overridable for tests and evals; **production passes none of them.** `system_prompt` and `extra_middleware` exist so an eval can run the two orchestration arms through the REAL builder rather than assembling its own agent -- an eval that builds its own would be measuring something the product does not ship.
|
|
214
214
|
|
|
215
215
|
### `agent_chat_model(settings: 'Any', model_id: 'str') -> 'Any'`
|
|
216
216
|
|
|
217
217
|
The agent's chat model, built by the engine and bounded by our clocks.
|
|
218
218
|
|
|
219
|
-
**`model_id` is a PARAMETER
|
|
219
|
+
**`model_id` is a PARAMETER.** It used to be read from one product's setting name, in the substrate, so a second product's model could not be reached at all. Which profile to reason with is the product's declaration; bounding the call with our clocks is the substrate's job and is all that is left here.
|
|
220
220
|
|
|
221
221
|
**No `ProviderProfile`, and that removed a trap rather than just a dependency.** The old path handed DeepAgents a spec STRING and registered a profile to configure it. `deepagents._models.resolve_model` returns a pre-built `BaseChatModel` *unchanged* and applies its profile registry only to strings -- including, in its own words, "the OpenAI Responses API default". That default was ON, and with it on OpenRouter returns `object: "response"` and reports **no cost at all**, which is why this module carried `use_responses_api=False`. Passing an object retires the counter-measure with its cause.
|
|
222
222
|
|
|
@@ -226,7 +226,7 @@ The agent's chat model, built by the engine and bounded by our clocks.
|
|
|
226
226
|
|
|
227
227
|
Time and trace one agent run, and hand it to `accounting` when it ends.
|
|
228
228
|
|
|
229
|
-
`accounting` is anything with `collecting()`, `record(run_id=, since=, duration_ms=)` and `trace_metadata` -- the product supplies it
|
|
229
|
+
`accounting` is anything with `collecting()`, `record(run_id=, since=, duration_ms=)` and `trace_metadata` -- the product supplies it. `None` disables recording without disabling the run.
|
|
230
230
|
|
|
231
231
|
**`collecting()` is opened OUTSIDE the trace and the timer is started before both**, which preserves the original order: the engine work a tool causes is collected through the caller's ContextVar for the whole run, including the setup the trace does not cover.
|
|
232
232
|
|
|
@@ -246,19 +246,19 @@ The run's thread id: its scope and its run id, composed.
|
|
|
246
246
|
|
|
247
247
|
**Not the run id alone.** The run id is the PUBLIC identity a client keeps; the thread is ours and never leaves the process, and keying it by scope is what makes a guessed run id from another tenant resolve to nothing by construction.
|
|
248
248
|
|
|
249
|
-
### `worker_spec(name: 'str', description: 'str', prompt: 'str', tools: 'list', report: 'type', ledger: 'Any' = None, *, retry_on: 'tuple[type[BaseException], ...]' = (), message_for: 'Any' = None, signposts: 'Any' = None, repeatable: 'frozenset[str]' = frozenset(), question_argument: 'dict[str, str] | None' = None, framings: 'tuple[str, ...]' = (), carry_forward: 'Any' = None, read_framing: 'Any' = None) -> 'dict[str, Any]'`
|
|
249
|
+
### `worker_spec(name: 'str', description: 'str', prompt: 'str', tools: 'list', report: 'type', ledger: 'Any' = None, *, retry_on: 'tuple[type[BaseException], ...]' = (), message_for: 'Any' = None, signposts: 'Any' = None, repeatable: 'frozenset[str]' = frozenset(), question_argument: 'dict[str, str] | None' = None, framings: 'tuple[str, ...]' = (), carry_forward: 'Any' = None, read_framing: 'Any' = None, definition: 'Any' = None) -> 'dict[str, Any]'`
|
|
250
250
|
|
|
251
251
|
A `SubAgent` spec, deliberately the opposite choice from the orchestrator's `CompiledSubAgent`.
|
|
252
252
|
|
|
253
253
|
A worker has no middleware and no subagents of its own, so letting the parent build it keeps one model resolution and one place that knows how a tier is compiled.
|
|
254
254
|
|
|
255
|
-
**
|
|
255
|
+
**Pass `definition=`, the product's `AgentDefinition`.** Every policy parameter after `ledger` defaults to something inert, and all of them but `signposts` are fields of that definition (`signposts` is its `prompts`). With a definition, each parameter left at its inert default is taken from it; a value passed explicitly still wins. Without one, a worker runs with no retries, no repeat suppression and no decision recording, and nothing fails to say so.
|
|
256
256
|
|
|
257
257
|
### `clarification_tool() -> 'BaseTool'`
|
|
258
258
|
|
|
259
259
|
A tool whose entire body is a question.
|
|
260
260
|
|
|
261
|
-
Returned from a factory for symmetry with the manifest's bindings, though it closes over nothing: a clarification has no tenancy to bind, because it touches no
|
|
261
|
+
Returned from a factory for symmetry with the manifest's bindings, though it closes over nothing: a clarification has no tenancy to bind, because it touches no scoped data.
|
|
262
262
|
|
|
263
263
|
### `translate(namespace: 'Any', mode: 'str', chunk: 'Any') -> 'list[RunEvent]'`
|
|
264
264
|
|
|
@@ -268,7 +268,7 @@ Turn one streamed item into zero or more events for the client.
|
|
|
268
268
|
|
|
269
269
|
### `what_was_finished(result: 'Any') -> 'list[RunEvent]'`
|
|
270
270
|
|
|
271
|
-
What to tell the client about a run that did not finish
|
|
271
|
+
What to tell the client about a run that did not finish.
|
|
272
272
|
|
|
273
273
|
**The route already stated the principle and did not honour it for failures:** *"a stream that stops is not a stream that finished. Without a terminal event a client cannot tell a completed answer from a dropped connection."* On a cut-off run the stream simply stopped -- no partial, no explanation, not even the terminating frame -- so it looked exactly like a dropped connection.
|
|
274
274
|
|
|
@@ -284,17 +284,17 @@ The stack, inner-first.
|
|
|
284
284
|
|
|
285
285
|
`ToolRetryMiddleware` carries `on_failure="error"` so a failure that exhausts its retries becomes an exception the error middleware can see — rather than a message the model receives without anybody having retried.
|
|
286
286
|
|
|
287
|
-
**Both arguments are the PRODUCT's and are required
|
|
287
|
+
**Both arguments are the PRODUCT's and are required.** This imported one product's retry set and `message_for` directly, so the substrate held that product's judgement about what is recoverable -- and a greenfield product retrying a mill feed got the first product's client exception types and its domain errors. **No defaults**, deliberately: a default retry set is one a second product inherits without noticing, and `retry_on` defaulting to anything is how `Exception` creeps back in and a scope violation gets re-attempted with backoff.
|
|
288
288
|
|
|
289
289
|
The deadline exceptions are the HARNESS's own (above in this module), because `ADeadlineForOneModelTurn` is what raises them. A product chooses whether its own `retry_on` includes `ModelAttemptTooSlow`; ours does, and deliberately omits `ModelTurnTooSlow`.
|
|
290
290
|
|
|
291
291
|
### `dispatched_more_than_once(recording: 'dict[str, Any]') -> 'str | None'`
|
|
292
292
|
|
|
293
|
-
A worker covering the whole
|
|
293
|
+
A worker covering the whole scope, run once per document.
|
|
294
294
|
|
|
295
295
|
### `reached_for_the_filesystem(recording: 'dict[str, Any]') -> 'str | None'`
|
|
296
296
|
|
|
297
|
-
Tried to open the
|
|
297
|
+
Tried to open the subject documents as files.
|
|
298
298
|
|
|
299
299
|
### `wrote_a_program_for_a_single_call(recording: 'dict[str, Any]') -> 'str | None'`
|
|
300
300
|
|
|
@@ -109,6 +109,11 @@ and how to manage workspaces.
|
|
|
109
109
|
deployment serves a single model; OCR resolves its endpoint and flags through the same profile as every other
|
|
110
110
|
call. Override one role with `RAG_MODEL_<ROLE>` (e.g. `RAG_MODEL_VISION_OCR`, `RAG_MODEL_GENERAL`), or every
|
|
111
111
|
role at once with `RAG_MODEL_ALL`; the role-specific variable wins.
|
|
112
|
+
- **Blank PDF pages** are never sent to `VISION_OCR` (0.13.0, PS-46): a page with no ink has nothing to read, and a
|
|
113
|
+
vision model asked to transcribe one invents a page. A parse cached by an earlier engine with `VISION_OCR`
|
|
114
|
+
configured may still hold such text: `find_blank_pages_with_text(cache_dir, sources)` lists every page that is
|
|
115
|
+
blank in the source PDF but has text in its cached parse (files embedded in a parsed package are found in the
|
|
116
|
+
cache without being passed). Delete each finding's `cache_files`, then re-ingest the document.
|
|
112
117
|
- **Structured output** is client-side tag-parse (ADR-0045); any provider flags live in the profile.
|
|
113
118
|
- **A self-hosted Qwen server**: see [A self-hosted model server](#a-self-hosted-model-server-qwen-on-modal) below.
|
|
114
119
|
- **Decision models** (e.g. Jev) are reached through a `DecisionModelProfile` (default `jev-1.13`;
|
|
@@ -151,7 +156,8 @@ chat-manager tier, an orchestrator and dispatched workers on Deep Agents, with t
|
|
|
151
156
|
retries, interrupts and resume, memory, metering and run grading. The product declares an `AgentDefinition` (its
|
|
152
157
|
`ToolSurface`, planning split, workers, a context type satisfying `RunScope`, retry set, model id and `AgentPrompts`)
|
|
153
158
|
and runs it with `start_run` / `resume_run` / `stream_run`; it passes its own checkpointer and memory store. The
|
|
154
|
-
reference is `
|
|
159
|
+
design reference, with every field a product declares, is [`harness.md`](harness.md); the generated
|
|
160
|
+
signatures are `docs/api/harness.md`, and the `building-an-agent-harness` skill is the practice behind it.
|
|
155
161
|
|
|
156
162
|
Its configuration is the engine's: the model by engine profile id (the definition's `model_id_for`), tracing by
|
|
157
163
|
`RAG_TRACE_LEVEL` and the Langfuse keys (each agent turn is one generation, labelled `agent-llm`, grouped under the
|
|
@@ -42,7 +42,7 @@ ADR-0117/0118 engine API + capability runtime). Read [Concepts](../concepts.md)
|
|
|
42
42
|
(segmenter, span tagger, unit grouper, boundary decider, writer, a per-document hook)
|
|
43
43
|
→ [KG construction](kg-construction.md) and the `building-an-ingestion-capability` skill. Your query graphs, domain functions, and skills **compose the engine's
|
|
44
44
|
generic primitives from the public tiers** (graph reads and query, embedding, typed ranking, reranking,
|
|
45
|
-
answers, parsing, chunking
|
|
45
|
+
answers, parsing, chunking, and hybrid span search with `span_search`) and register only your OWN domain graphs/models/skills via `register_capability(manifest)` with an
|
|
46
46
|
`impl_ref`, invocable (and MCP-exposable) with zero engine edits. Package them as a pack module that exposes
|
|
47
47
|
`register()` and load it with `load_pack("<your module>")`.
|
|
48
48
|
→ [Authoring capabilities](authoring-capabilities.md).
|
|
@@ -190,7 +190,7 @@ they are the real "does a new customer benefit?" items. The genuine engine ones
|
|
|
190
190
|
- **Table rows:** `table_rows(source_document)` returns every parsed table's rows as exact cells (`TableRow`), and a
|
|
191
191
|
one-row unit carries its row as `Unit.table_row` (ING-7).
|
|
192
192
|
|
|
193
|
-
### G24: No public hybrid search or fusion primitive
|
|
193
|
+
### G24: No public hybrid search or fusion primitive (closed)
|
|
194
194
|
- **Where:** the engine's own retrieval legs run hybrid (dense + sparse) span search and rank fusion internally, and
|
|
195
195
|
the authoring guide used to say a capability composes them "by direct import"; neither is on `rag_wright.api` or
|
|
196
196
|
`rag_wright.pack_sdk`.
|
|
@@ -199,6 +199,10 @@ they are the real "does a new customer benefit?" items. The genuine engine ones
|
|
|
199
199
|
what it embeds itself, beside a structured leg (`kg_read`, `typed_constraint_match_rank`).
|
|
200
200
|
- **Proposed:** a public hybrid span search over a workspace (query text, filters, k) returning cited spans, with the
|
|
201
201
|
fusion and reranking it already applies; on `rag_wright.pack_sdk` for pack capabilities.
|
|
202
|
+
- **Closed by PS-45:** `span_search(ws, query, *, k, documents, tag, dense_floor)` and `aspan_search` on
|
|
203
|
+
`rag_wright.api` (which pack code may also import): the store-side RRF fusion of the dense and sparse span
|
|
204
|
+
legs plus the dense floor (ADR-0104), returning citation-ready `SpanHit`s. Reranking stays the caller's
|
|
205
|
+
(`BGEReranker`), as it was in the engine's own leg.
|
|
202
206
|
- Surfaced: the TexWright specification (2026-10-14).
|
|
203
207
|
|
|
204
208
|
## Prerequisites a domain provides (not engine gaps)
|
|
@@ -114,9 +114,10 @@ slug. Write good `representative_queries` (2–5, phrased like real tasks) — t
|
|
|
114
114
|
Your capabilities **compose the engine's generic primitives from the public tiers** (`rag_wright.api` and
|
|
115
115
|
`rag_wright.pack_sdk`: the knowledge-graph reads `kg_read` / `kg_edges`, graph query, embedding (`ws.embedder`,
|
|
116
116
|
`cosine`), typed ranking (`typed_constraint_match_rank`), reranking (`BGEReranker`), answers (`agenerate_answer`,
|
|
117
|
-
`ajudge_spans`),
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
`ajudge_spans`), hybrid span search (`span_search` / `aspan_search`: the dense and sparse legs fused in the store,
|
|
118
|
+
with a dense floor, returning cited spans), parsing and chunking); you register only your OWN domain
|
|
119
|
+
graphs/models/skills. Don't wrap or re-register an engine primitive, and check a primitive is on a tier before
|
|
120
|
+
designing around it.
|
|
120
121
|
|
|
121
122
|
## Definition of done
|
|
122
123
|
|