rag-wright 0.11.0__tar.gz → 0.12.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.12.0}/.claude/skills/building-an-agent-harness/SKILL.md +14 -3
- rag_wright-0.12.0/.release-please-manifest.json +3 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/CHANGELOG.md +7 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/CLAUDE.md +6 -1
- {rag_wright-0.11.0 → rag_wright-0.12.0}/PKG-INFO +3 -1
- {rag_wright-0.11.0 → rag_wright-0.12.0}/README.md +2 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/api/harness.md +32 -32
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/configuration.md +2 -1
- rag_wright-0.12.0/docs/harness.md +268 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/plan.md +1 -0
- rag_wright-0.12.0/docs/specs/public-surface/rulewright-migration-0.11.0.md +22 -0
- rag_wright-0.12.0/docs/specs/public-surface/rulewright-migration-0.12.0.md +39 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/pyproject.toml +1 -1
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/build_api_docs.py +2 -1
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/build_api_docs.sh +3 -1
- rag_wright-0.12.0/scripts/build_harness_doc.py +134 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/building-an-agent-harness/SKILL.md +14 -3
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/accounting.py +12 -12
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/agent.py +26 -27
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/batch.py +4 -4
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/clarify.py +7 -6
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/confirm.py +5 -5
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/decisions.py +37 -40
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/definition.py +6 -2
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/dispatch.py +4 -4
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/errors.py +17 -17
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/events.py +8 -8
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/filesystem.py +12 -12
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/grading.py +19 -19
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/interpreter.py +21 -20
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/memory.py +19 -18
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/models.py +11 -11
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/rules.py +21 -21
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/runs.py +38 -39
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/scope.py +9 -10
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/seen.py +17 -19
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/skills.py +10 -11
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/thinking.py +7 -7
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/tiers.py +47 -54
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/tracing.py +2 -2
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/withhold.py +10 -10
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/workers.py +61 -33
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_api_docs_current.py +11 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_greenfield_conformance.py +60 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_genericity.py +44 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/uv.lock +1 -1
- rag_wright-0.11.0/.release-please-manifest.json +0 -3
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/settings.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/building-a-product-backend/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/building-a-product-frontend/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/building-an-ingestion-capability/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/laya/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/qwen-vllm-modal/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/specifying-a-product-on-the-engine/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/using-the-rag-wright-engine/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.env.example +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.github/workflows/publish.yml +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.github/workflows/release-please.yml +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/.gitignore +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/LICENSE +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/SPEC.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/conftest.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/ArcadeDB_Local.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/OBSERVABILITY.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0001-stack-and-library-choices.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0004-entity-disambiguation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0005-relational-golden-set.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0006-model-profile.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0007-arcadedb-store-schema.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0032-nl-to-type-two-step-reason-emit-on-gemma.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.0}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0042-clause-level-span-id-provenance-and-content-hash-backfill.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0055-confidence-out-of-band.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0057-async-engine-architecture.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0058-structure-first-chunking.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0067-domain-pack-retargeting.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0086-streaming-cost-capture.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0090-affiliate-of-extraction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0091-retire-partyto-edge.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0092-idempotent-write-graph.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0093-entities-by-name-seam.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0094-workspace-document-scope.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0095-span-page-provenance.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0098-invoke-time-document-scope.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0100-profile-based-model-routing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0107-requirement-page-provenance.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.0}/docs/adr/0119-jev-typed-decision-model-for-compliance-closed-set-fields.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0127-retire-the-okf-code.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0129-laya-temperatures-and-the-sklearn-floor.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0130-deploy-the-self-hosted-model-server-from-the-engine.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0131-model-server-hardening-after-rulewright-review.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0132-model-server-cold-start-from-a-gpu-snapshot.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.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.12.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.12.0}/docs/adr/0136-spreadsheet-tables-are-glued-back-across-blank-rows.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.0}/docs/adr/0138-the-engine-reaches-pdfium-through-one-locked-door.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0139-the-agent-harness-substrate-is-engine-scope.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/README.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/api/README.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/api/pack_sdk.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/architecture.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/README.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/design/deontic-applicability-routing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/design/semantic-subject-segmentation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/design/unify-subject-preprocessing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/engine-issues/0037-closed-vocab-drops-verbatim-values-to-other.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.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.12.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.12.0}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.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.12.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.12.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.12.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.12.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.12.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.12.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.12.0}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.0}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-04_issue-0016-thread-safe-embedder_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.0}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_issue-0029-idempotent-write-graph_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_issue-0030-entities-by-name_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_rename-run-ad-compliance-check_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.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.12.0}/docs/archive/handoffs/2026-09-10_issue-0031-workspace-document-scope_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-10_issue-0032-span-page-provenance_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.0}/docs/archive/handoffs/2026-09-11_issue-0035-followup-derived-guard_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.0}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-14_document-signals-off-citation_0044_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.0}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-18_fp8-kv-16k-single-a100_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-answers_from_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-21_0048-part2-modal-scoping-questions_rulewright.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/misc/.gitkeep +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/Corpus_Acquisition.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/async-migration.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/demo_plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/concepts.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/contract_pipeline_explainer.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/corpus_ingest_recipe.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/README.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/_engine-gaps.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/authoring-capabilities.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/classification-and-decision-models.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/entity-resolution.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/evals-from-expert-files.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/kg-construction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/ontology-authoring.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/classifier_model_ab.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/compliance_demo.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/compliance_gate_cc7.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/compliance_rung2_cc7.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/dg_model_ab.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/function_gate_recall.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/generation_robustness_b_vs_c.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/nl_to_type_cu-d2.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/ocr_benchmark.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/prod1_readiness.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/prod2_readiness.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/query_side_model_ab.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/silver_granite_vs_gemma4.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/silver_provider_routing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/evals.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/installation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/playbook.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/capability_profiles.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/contracts_product_roadmap.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/engine-api-migration-handoff.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/engine_async_api.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/new-domain-build-sequence.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/seam-adaptation-guide.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/proposals/new-domain-developer-journey.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/proposals/ontology-induction.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/quickstart.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/reference-pack.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/releasing.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/engine-platform/SPEC.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/engine-platform/TASKS.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/engine-prep/plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/evals/plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/ingestion-hooks/plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-arcadedb-separation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.10.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.3.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.4.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.5.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.6.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.7.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.8.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.9.0.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-reply-2026-10-10-laya-and-sklearn.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/templates/product-starter/CLAUDE.md.template +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/templates/product-starter/README.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/templates/product-starter/dependabot.yml +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/templates/product-starter/playbook.md.template +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/upstream/laya-temperature-range-mismatch.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/workspaces.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/acord.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/acord_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/boundary_residue_gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/build_golden.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/compliance_demo/subjects/post_violation.txt +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/condensed_pipeline.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/contract_parity_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/contractnli_judge.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/cuad_highlight.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/embedded_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/full_pipeline_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/function_ceiling.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/function_property_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/function_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/gate1_chunker_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/gate2_hybrid_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/golden/relational/set.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/golden.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/ground_discriminator_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/harness.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/ingestion_live_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/kg_primary.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/kg_property_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/listwise_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/multihop.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/nl_to_type.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/relational_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/residual_decision_gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/segmenter_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/semantic_judge_gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/test_acord.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/test_acord_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/test_harness.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/test_multihop_set.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/unit_grouper_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/examples/model_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/examples/quickstart.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/plan.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/release-please-config.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ab_model_overlap.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acord_unify.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_acord.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_cuad.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_ecfr.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_edgar.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_ftc_255.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_prod1_corpus.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/audit_reclass_flips.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/author_leg_a_silver_key.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/backfill_affiliations.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/backfill_clause_span_id.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/backfill_edge_source_doc_id.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/backup_kg_to_gcs.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/bootstrap_template_capture.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/bootstrap_typed_edges.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/build_cuad_clause_cache.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/build_function_routing_map.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_assemble_v2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_assemble_v3.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_generate_hard_negatives.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_generate_hard_positives.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_generate_training.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_hybrid.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_hybrid2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_jev_actor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_jev_claimtypes.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_jev_operative.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_label_spans.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_laya_prep.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_laya_train.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_prep_operative.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_relabel_rubric.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_relabel_rubric2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_train_operative.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/compare_extraction_models.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/compliance_actor_gate_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/compliance_engine_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/compliance_policy_demo.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/curate_taxonomy_gaps.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/dg_model_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_knn_expansion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_knn_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_leg_pool.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_legs.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_pool.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_relstructure.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/eval_all.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/eval_ce.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/eval_listwise_b.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/export_ce_dataset.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/extract_features.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/listwise_variants.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/relational_features.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/train_ce.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/train_modal.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/enrich_edgar_candidates.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/eval_chunking_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/eval_compliance_gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/extract_arcadedb_docs.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/fetch_reference_models.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/generate_contract_python.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/git_post_commit_graphify.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/granite_chunker_assess.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/graph_status.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_acord.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_compliance_async_prod2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_compliance_document_prod2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_compliance_prod2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_cuad.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_cuad_full.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_ftc_compliance.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_prod1.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_prod1_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/install_git_hooks.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/label_new_functions.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/legb_function_gate_recall.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/make_compliance_fixtures.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/make_compliance_gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/mcp_compliance_agent_demo.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/mcp_intra_document_qa_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/mcp_query_legs_agent_demo.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/measure_generation_robustness.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/measure_harness_genericity.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/measure_silver.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/merge_docs_into_framework.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/migrate_silver_evidence_autotag.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/migrate_span_fields.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/mine_scarce_functions.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_arcadedb.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_backfill.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_exception_linking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_gemma4_vllm.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_gemma4_vllm_snapshot.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_granite_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_granite_throughput.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_granite_vllm_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_query_app.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_qwen3_27b_bench.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_qwen3_27b_snapshot.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_qwen3_vllm_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_stack_a100.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ocr_benchmark.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ocr_preprocess.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ontology_dimension_check.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/phase_a_leg_validate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/populate_clause_kg.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/populate_entity_graph.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/populate_entity_graph_extracted.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/populate_property_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/prep_relational_verification.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/publish_manifests.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/reclassify_kg.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/refresh_framework_graph.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/revert_reclass_flips.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/run_acord_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/run_clause_exception_linking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/semantic_judge_live_validate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/semantic_judge_probe.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/snapshot_leg_a_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/stack_correctness_validate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/table_retrieval_smoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/train_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/train_legalbert_function.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/train_legalbert_modal.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/typed_rerank_validate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/verify_wheel_install.sh +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/vllm_extraction_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/vllm_kg_query_validate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/vllm_raw_diagnostic.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/authoring-a-capability/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/building-a-product-backend/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/building-a-product-frontend/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/building-an-ingestion-capability/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/laya/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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.12.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/setfit/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/specifying-a-product-on-the-engine/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/using-the-rag-wright-engine/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/agents.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/answers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/config.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/discover.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/documents.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/ids.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/invoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/kg.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/mcp.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/tracing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/usage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/workspace.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/answer_generator.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/ard.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/chunk_read.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/chunk_write.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/disambiguation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/document_parse.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/document_scope.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/embedding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/entity_resolution.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/fusion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/graph_query.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/graph_storage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/hybrid_search.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/invoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/jev_decision.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/manifests.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/parsing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/registry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/remote_encoders.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/reranking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/retrieval_core.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/rlm_chunking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/scan_quality.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/sheet_tables.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/vision_to_text.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/chunk.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/evals.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/graph.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/identifiers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/provenance.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/span.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/corpus/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/corpus/canonicalize.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/corpus/document_parser.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/corpus/embedded.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/corpus/http.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/evals/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/evals/gold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/evals/langfuse_backend.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/evals/runner.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/evals/scorers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/builder.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/evaluate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/group.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/layout.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/segment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/tables.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/model_servers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/profiles.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/tag_structured.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/tracing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/usage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/weights.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ontology/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ontology/pack_schema.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ontology/registry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/pack_sdk/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/invokers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/pack.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/options.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/pack.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/function_families.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/reference_seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/py.typed +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/generation/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/generation/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/rlm/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/rlm/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/rlm/agent.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/spans/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/spans/page_map.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/store/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/store/arcadedb.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/store/chunk_text.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/store/seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/subgraphs/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/subgraphs/observability.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/subgraphs/scaffold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/util/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/util/concurrent.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/util/pdfium.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/util/spacy_model.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tasks.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_agent_chat_model.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_agent_chat_model_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_answers_exports.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_api_embedder_ps39.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_bytes_ingest.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_capability_reexports.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_decision_swap_doc_example.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_discover.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_documents.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_drop_workspace.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_drop_workspace_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_e2e.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_invoke.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_kg.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_mcp.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_metering_tracing_exports.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_model_role_export.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_open_workspace_reconfig.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_options.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_pack_sdk.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_pack_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_pdf_page_count.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_public_gaps_ps38.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_tracing_helpers_ps32.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_usage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_workspace.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_workspace_models.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/domain_vocabulary_baseline.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_doc_references.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_engine_domain_vocabulary.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_import_contracts.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_lock_version.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_packs_use_store_primitives.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_pdfium_door.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_shipped_skills.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/async_helpers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_answer_generator.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_answer_generator_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_assertion_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_authoring_contract.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_chunk_read.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_chunk_write.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_claim_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_clause_exception_linking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_compliance_judgment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_compliance_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_contract_kg_serve.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_contract_kg_store.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_dg_adapter.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_dg_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_dg_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_dg_model_seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_dg_private.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_disambiguation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_document_scope.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_embedding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_embedding_profiles.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_entity_resolution.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_fusion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_graph_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_graph_query.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_graph_storage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_highlight_serve.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_hybrid_search.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_jev_decision.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_manifest_validation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_manifests.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_parsing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_parties_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_query_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_query_understanding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_registry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_remote_encoders.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_repair_partition.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_requirement_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_reranking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_retrieval_core.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_rlm_chunking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_rlm_chunking_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_rlm_method.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_rlm_synthesis.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_runtime_registry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_scan_quality.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_span_relevance_judgment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_structural_model_fallback.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_tiered_ocr.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_vlm_ocr.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/compliance_fakes.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/conftest.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_canonical_source_doc_id.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_chunk_record.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_compliance.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_function.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_function_routing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_identifiers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_ingestion_hooks.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_jurisdiction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_ontology.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_property.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_provenance.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_value_match.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/_ooxml_fixtures.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_canonicalize.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_cuad.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_cuad_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_document_parser.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_edgar.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_embedded.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_gcs_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_http.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_parse_wire2.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_selection.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/eval/test_contractnli_judge.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/eval/test_cuad_highlight_metrics.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/eval/test_kg_property_rerank.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/eval/test_nl_to_type_metrics.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/eval/test_relational_eval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_gold_contracts.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_gold_import.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_langfuse_backend.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_runner.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_scorer_parity.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_scorers_a.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_scorers_b.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_scorers_c.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_scorers_d.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/ingestion/textile_test_report.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/leg_a_silver/README.md +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/table-bearing-contract.pdf +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/foundation/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/foundation/test_arcadedb_hybrid.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/foundation/test_model_seam_structured.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_accounting.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_engine_wiring.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_recorder.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_thinking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_aevaluate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_builder.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_concurrency_ceiling.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_document_metadata.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_evaluate.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_evaluate_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_layout_segmenter.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_sheet_continuations.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_spreadsheet_content.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_table_rows.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_tuning.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_unit_grouper.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_unit_representative.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/journey/incidents_domain.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/journey/incidents_pack.ttl +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/journey/test_incidents_journey.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/journey/test_pack_schema.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/test_compliance_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/test_intra_document_qa_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/test_relational_qa_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_async_infra.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_classifier_heads_load_clean.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_model_servers.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_models_dir.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_no_gemma_default.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_profile_routing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_profile_seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_seam_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_seam_deadline_and_cap.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_seam_event_loops.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_seam_retry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_seam_stream.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_serving_seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_serving_wiring.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_tag_structured.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_tag_structured_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_tracing.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_usage.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_clause_template.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_derivation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_entity_taxonomy.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_template_captured_in_ttl.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/reference/test_compliance_reference.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/reference/test_contract_seam.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/scripts/test_eval_chunking_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/scripts/test_eval_classifier_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/scripts/test_fetch_reference_models.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/scripts/test_generation_robustness_errors.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/skills/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/skills/test_creating_evals_skill_example.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/skills/test_ingestion_skill_example.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_boundary.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_classifier_property_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_clause_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_clause_function_classifier_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_clause_kg_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_clause_kg_extractor_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_dim_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_dim_fleet_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_function_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_hybrid_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_hybrid_property_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_legalbert_classifier.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_model_capabilities.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_new_function_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_page_map.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_property_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_property_grounding.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_reclassify.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_residual_decision.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_scarce_function_labels.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_segment.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_segmentation_vocab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_semantic_judge.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_setfit_clause_adapter.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_setfit_probabilities.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_span_offsets.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_stage_labels_0005.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_symbolic_validation.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_tag_clause_extractor.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_affiliation_backfill.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_clause_kg.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_contract.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_property.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_requirement_sources.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_schema.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_span.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_chunk_text.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_concurrent_writes.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_contract_kg_store_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_document_metadata_live.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_document_scope.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_engine_domain_neutral.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_entities_by_name.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_kg_edges.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_kg_mutations.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_kg_read.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_kg_write.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_neutral_schema.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_store_create_flag.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_write_graph_idempotent.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_async_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_clause_results.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_compliance_check.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_compliance_ingestion.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_graph_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_ingest_knobs.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_intra_document_qa.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_observability.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_partial_entry_contract.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_relational_qa.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_requirement_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_scaffold.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_semantic_chunking.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/test_backfill_clause_span_id.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/test_dg_model_ab.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/test_populate_clause_kg.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/test_populate_entity_graph.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/util/__init__.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/util/test_concurrent.py +0 -0
- {rag_wright-0.11.0 → rag_wright-0.12.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
|
|
@@ -4,6 +4,13 @@ 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.12.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.11.0...0.12.0) (2026-10-15)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* **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))
|
|
13
|
+
|
|
7
14
|
## [0.11.0](https://github.com/fzaidi-dai/RAG_Wright/compare/0.10.0...0.11.0) (2026-10-15)
|
|
8
15
|
|
|
9
16
|
|
|
@@ -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 done, unreleased (next: 0.12.0)**: `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.12.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
|
|
@@ -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
|
|
|
@@ -151,7 +151,8 @@ chat-manager tier, an orchestrator and dispatched workers on Deep Agents, with t
|
|
|
151
151
|
retries, interrupts and resume, memory, metering and run grading. The product declares an `AgentDefinition` (its
|
|
152
152
|
`ToolSurface`, planning split, workers, a context type satisfying `RunScope`, retry set, model id and `AgentPrompts`)
|
|
153
153
|
and runs it with `start_run` / `resume_run` / `stream_run`; it passes its own checkpointer and memory store. The
|
|
154
|
-
reference is `
|
|
154
|
+
design reference, with every field a product declares, is [`harness.md`](harness.md); the generated
|
|
155
|
+
signatures are `docs/api/harness.md`, and the `building-an-agent-harness` skill is the practice behind it.
|
|
155
156
|
|
|
156
157
|
Its configuration is the engine's: the model by engine profile id (the definition's `model_id_for`), tracing by
|
|
157
158
|
`RAG_TRACE_LEVEL` and the Langfuse keys (each agent turn is one generation, labelled `agent-llm`, grouped under the
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# The agent harness: reference design
|
|
2
|
+
|
|
3
|
+
**What this is.** The design reference for `rag_wright.harness`, the engine's third public tier, for a developer
|
|
4
|
+
building a product's agent on it. It states the idea, every customization point with its API, and where the
|
|
5
|
+
substrate goes quiet rather than failing. It was drafted by RuleWright, the first product built on the tier.
|
|
6
|
+
|
|
7
|
+
**The tables are generated** from the installed tier by `scripts/build_harness_doc.py`, and the test suite fails
|
|
8
|
+
if they drift (`tests/arch/test_api_docs_current.py`). Edit the prose; regenerate the tables. Today:
|
|
9
|
+
<!-- generated:counts -->
|
|
10
|
+
42 public names; `AgentDefinition` has 15 fields and `AgentPrompts` 11, every one required.
|
|
11
|
+
<!-- /generated -->
|
|
12
|
+
|
|
13
|
+
**What it is not**, so the documents do not overlap:
|
|
14
|
+
|
|
15
|
+
| document | answers |
|
|
16
|
+
|---|---|
|
|
17
|
+
| ADR-0139 | *why* the substrate is engine scope, and the shapes agreed when it moved here |
|
|
18
|
+
| [`docs/api/harness.md`](api/harness.md) | the generated signatures and docstrings, exhaustively |
|
|
19
|
+
| `building-an-agent-harness` (skill) | the *practice*: the doors the domain comes through, the build order, the lessons |
|
|
20
|
+
| [`configuration.md`](configuration.md#the-agent-harness-rag_wrightharness) | the tier's environment variables, beside the engine's others |
|
|
21
|
+
| this document | the design, and what a product must declare |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 1. The idea
|
|
26
|
+
|
|
27
|
+
The substrate runs an agent; it does not know your domain. It owns the parts that are expensive to get right and
|
|
28
|
+
have nothing to do with what your documents contain:
|
|
29
|
+
|
|
30
|
+
- **Three tiers.** A chat-manager a person talks to, an orchestrator that plans, and dispatched workers. The
|
|
31
|
+
chat-manager holds a direct read surface, so an unambiguous request never pays for three model calls.
|
|
32
|
+
- **One entry point per lifecycle event**, because runtime context is per invocation: a resume that forgot it
|
|
33
|
+
would wake every tool with no scope, and the memory namespace would collapse to one global scope.
|
|
34
|
+
- **The failure model**: named retry sets, a per-attempt clock inside the retry and a whole-turn ceiling outside
|
|
35
|
+
it, call and tool caps, and the rule that a deadline breach is never retried.
|
|
36
|
+
- **Human-in-the-loop under replay.** An interrupt replays the node, so anything before the question runs twice;
|
|
37
|
+
the protocol is built around that rather than against it.
|
|
38
|
+
- **Memory with a namespace factory that refuses** rather than falling back, run records that recognise a
|
|
39
|
+
repeated ask, checkpoints, metering, tracing, and run grading against your own rules.
|
|
40
|
+
|
|
41
|
+
**What it never holds:** your tools, your workers, your prompts, your scope shape, your retry set, your model id,
|
|
42
|
+
your rules, your decision points. Those are the fields of an `AgentDefinition`, and the substrate reads nothing
|
|
43
|
+
else about you.
|
|
44
|
+
|
|
45
|
+
**The asymmetry worth internalising.** `AgentDefinition` and `AgentPrompts` are **total**: every field is
|
|
46
|
+
required, so an agent cannot be under-declared and the dataclass says so at construction. The per-worker builder
|
|
47
|
+
`worker_spec` is **permissive**, and that is where silence lives (section 6).
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 2. `AgentDefinition`: what a product declares
|
|
52
|
+
|
|
53
|
+
Hand one object to the builders. If a value follows from two others, the substrate derives it rather than
|
|
54
|
+
accepting it: the direct surface is derived from `planning` plus the surface, and the tier split from the
|
|
55
|
+
workers. A derived value crossing the boundary would become a convention the next product can break silently.
|
|
56
|
+
|
|
57
|
+
<!-- generated:definition -->
|
|
58
|
+
| field | type | what it is for |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| `surface` | `ToolSurface` | What a product offers an agent run, and the two things the substrate asks about it. |
|
|
61
|
+
| `planning` | `dict[str, str]` | Operation name -> why it needs planning. The reason is kept: a classification without one cannot be revisited. |
|
|
62
|
+
| `workers` | `tuple[Any, ...]` | The worker factories the orchestrator may dispatch. |
|
|
63
|
+
| `context_schema` | `Any` | The type a run's context has, passed to the agent as `context_schema`; it must satisfy `RunScope`. The product's context stays its own: typed ids, its own construction rule, whatever else it wants. |
|
|
64
|
+
| `retry_on` | `tuple[type[BaseException], ...]` | Which exceptions the retry middleware may re-attempt. **Named, never `Exception`** -- the library's default would retry a scope violation, which is re-attempting a leak with backoff. |
|
|
65
|
+
| `message_for` | `Any` | `(error) -> str \| None`: what the model is told about a failure, or `None` to let it surface. |
|
|
66
|
+
| `model_id_for` | `Any` | `(settings) -> str`: the ENGINE model id this product's agent reasons with (a registered profile's key). A model id is configuration: adopting a better model is a new profile and a changed setting. |
|
|
67
|
+
| `prompts` | `AgentPrompts` | Every word this product says to its model (`AgentPrompts`). |
|
|
68
|
+
| `repeatable` | `frozenset[str]` | Tools whose answer is the same twice in one run, so a repeat can be served from the record. |
|
|
69
|
+
| `question_argument` | `dict[str, str]` | `{tool: argument}` -- which argument carries a QUESTION, so two phrasings of one ask are one ask. |
|
|
70
|
+
| `framings` | `tuple[str, ...]` | Tools that FRAME a request rather than answer it, for the framing decision point. |
|
|
71
|
+
| `carry_forward` | `Any` | `(record, tool, content) -> content \| None`, or `None`: the product's chance to amend a result in the light of what this run already found. `None` amends nothing. |
|
|
72
|
+
| `rules` | `tuple[Any, ...]` | The rules this product holds its own runs to. The grading machinery is the substrate's; the rubric is not. |
|
|
73
|
+
| `decision_points` | `tuple[Any, ...]` | The decisions a run of this product takes; the ledger reads each point's option space from here. |
|
|
74
|
+
| `read_framing` | `Any` | `(tool_name, parsed_result) -> {chose, confidence, inputs} \| None`: how this product reads its own framing tool's reply. |
|
|
75
|
+
<!-- /generated -->
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 3. `AgentPrompts`: what your agent says
|
|
80
|
+
|
|
81
|
+
Every word the model reads is the product's. The substrate ships no prompt of its own.
|
|
82
|
+
|
|
83
|
+
<!-- generated:prompts -->
|
|
84
|
+
| field | type | what it is for |
|
|
85
|
+
|---|---|---|
|
|
86
|
+
| `chat` | `str` | The chat-manager's system prompt: the tier a person talks to. |
|
|
87
|
+
| `orchestrator` | `str` | The orchestrator's, with the product's worker roster already interpolated into it. |
|
|
88
|
+
| `memory` | `str` | One line of guidance about the agent's own memory, shown above whatever is in it. |
|
|
89
|
+
| `skills` | `dict[str, str]` | `{published path: text}` -- the procedures a tier may read when they apply. |
|
|
90
|
+
| `skills_preamble` | `str` | The paragraph that introduces the skills above. |
|
|
91
|
+
| `not_a_filesystem` | `str` | The signpost a wrong filesystem call is answered with by default (it names the product's own tools). |
|
|
92
|
+
| `looking_for_subjects` | `str` | The signpost for a filesystem search plainly hunting the subject documents (a path or pattern ending in one of `subject_file_endings`): it says where those documents ARE, rather than where they are not. |
|
|
93
|
+
| `subject_file_endings` | `tuple[str, ...]` | File extensions that mean "this model is hunting the subject documents it was shown", not notes. |
|
|
94
|
+
| `worker_filesystem_note` | `str` | What a worker is told about its own filesystem. |
|
|
95
|
+
| `orchestrator_description` | `str` | How the orchestrator is described to the chat-manager: the `description` of its compiled subagent, which is what the chat-manager reads when deciding whether to hand a request down. |
|
|
96
|
+
| `label` | `str` | What the model is shown as the SOURCE of the skills: the product's name. |
|
|
97
|
+
<!-- /generated -->
|
|
98
|
+
|
|
99
|
+
**Two constraints on your text.** `skills_preamble` must contain the three format slots
|
|
100
|
+
`{skills_list}{skills_locations}{skills_load_warnings}` or the build raises. And no prompt may name a scope
|
|
101
|
+
identifier: an injected instruction in an uploaded document can quote back whatever the prompt contains.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 4. The two protocols
|
|
106
|
+
|
|
107
|
+
<!-- generated:tool_surface -->
|
|
108
|
+
**`ToolSurface`**: What a product offers an agent run, and the two things the substrate asks about it.
|
|
109
|
+
|
|
110
|
+
| member | shape |
|
|
111
|
+
|---|---|
|
|
112
|
+
| `build` | `(self, context: 'Any', resources: 'Any', *, only: 'Any' = None) -> 'list[Any]'` |
|
|
113
|
+
| `exposed_names` | a property |
|
|
114
|
+
<!-- /generated -->
|
|
115
|
+
|
|
116
|
+
<!-- generated:run_scope -->
|
|
117
|
+
**`RunScope`**: The only thing the substrate needs to know about a run's tenancy.
|
|
118
|
+
|
|
119
|
+
| member | shape |
|
|
120
|
+
|---|---|
|
|
121
|
+
| `scope` | `tuple[str, ...]` |
|
|
122
|
+
| `shared_scope` | `tuple[str, ...] \| None` |
|
|
123
|
+
<!-- /generated -->
|
|
124
|
+
|
|
125
|
+
**`scope` is opaque to the substrate, and that is the point.** It keys the memory namespaces and the run's
|
|
126
|
+
thread; a two-level product and a three-level one differ only in what they put in the tuple. `shared_scope` is
|
|
127
|
+
the one wider scope a run may promote a learned fact into, and the substrate enforces that it is a strict,
|
|
128
|
+
non-empty prefix of `scope`, so a sideways scope, the root, and anything outside the run's own chain are
|
|
129
|
+
unrepresentable rather than discouraged. The memory mounts are `/memories/scope/`, `/memories/shared/` and the
|
|
130
|
+
read-only `/memories/product/` (ADR-0139 addendum).
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 5. Entry points and builders
|
|
135
|
+
|
|
136
|
+
Runs (`outcome` is read with `read_run`):
|
|
137
|
+
|
|
138
|
+
<!-- generated:runs -->
|
|
139
|
+
| name | what it does |
|
|
140
|
+
|---|---|
|
|
141
|
+
| `start_run` | Begin a run under `context`, and supply it to every invocation. |
|
|
142
|
+
| `resume_run` | Answer a run that paused for a person, and re-supply its context. |
|
|
143
|
+
| `stream_run` | Begin a run and yield `(run_id, namespace, mode, chunk)` as it happens. |
|
|
144
|
+
| `read_run` | Where a run got to, by its id alone — or `None` if it is not this scope's. |
|
|
145
|
+
<!-- /generated -->
|
|
146
|
+
|
|
147
|
+
Builders:
|
|
148
|
+
|
|
149
|
+
<!-- generated:builders -->
|
|
150
|
+
| name | what it does |
|
|
151
|
+
|---|---|
|
|
152
|
+
| `build_chat_agent` | The chat-manager for one run, holding the manifest bound to that run's scope. |
|
|
153
|
+
| `build_orchestrator` | The planning tier, compiled as an agent in its own right. |
|
|
154
|
+
| `worker_spec` | A `SubAgent` spec, deliberately the opposite choice from the orchestrator's `CompiledSubAgent`. |
|
|
155
|
+
<!-- /generated -->
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 6. Where the substrate goes quiet: build workers with `definition=`
|
|
160
|
+
|
|
161
|
+
`worker_spec` takes a worker's policy as optional parameters, and each defaults to something inert. The defaults
|
|
162
|
+
are right for a substrate that knows no product: it will not invent a retry set, a repeat-suppression list or a
|
|
163
|
+
decision registry for you. They also mean that a worker built without them is quietly less capable, with nothing
|
|
164
|
+
going red: no retries, every failure surfacing, a filesystem signpost naming no tool, nothing repeat-suppressed,
|
|
165
|
+
no decision recording. The first product on the tier shipped all of its workers in that state with its full test
|
|
166
|
+
suite green, and found it by reading the call sites.
|
|
167
|
+
|
|
168
|
+
Every one of those values except the ledger is already in the `AgentDefinition` you declared. **So pass the
|
|
169
|
+
definition**, and `worker_spec` takes each parameter you left at its default from it; a value you pass explicitly
|
|
170
|
+
still wins:
|
|
171
|
+
|
|
172
|
+
<!-- generated:worker_spec -->
|
|
173
|
+
| parameter | inert default | with `definition=`, taken from |
|
|
174
|
+
|---|---|---|
|
|
175
|
+
| `ledger` | `None` | not from the definition: the run's, passed down by the builder |
|
|
176
|
+
| `retry_on` | `()` | `definition.retry_on` |
|
|
177
|
+
| `message_for` | `None` | `definition.message_for` |
|
|
178
|
+
| `signposts` | `None` | `definition.prompts` |
|
|
179
|
+
| `repeatable` | `frozenset()` | `definition.repeatable` |
|
|
180
|
+
| `question_argument` | `None` | `definition.question_argument` |
|
|
181
|
+
| `framings` | `()` | `definition.framings` |
|
|
182
|
+
| `carry_forward` | `None` | `definition.carry_forward` |
|
|
183
|
+
| `read_framing` | `None` | `definition.read_framing` |
|
|
184
|
+
<!-- /generated -->
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
from rag_wright.harness import worker_spec
|
|
188
|
+
|
|
189
|
+
def my_worker(context, resources, ledger=None):
|
|
190
|
+
return worker_spec("my_worker", "What it does, for the orchestrator.", MY_WORKER_PROMPT,
|
|
191
|
+
MY_SURFACE.build(context, resources), MyWorkerReport,
|
|
192
|
+
ledger=ledger, definition=MY_DEFINITION)
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**If you set the values yourself, guard the consequence, not the call.** Build a real spec for each of your
|
|
196
|
+
workers and interrogate the middleware it produced: a non-empty retry set, a run record whose repeatable set is
|
|
197
|
+
yours, your question map, your framings, signposts that are not `None`. Then prove the guard by removing the
|
|
198
|
+
policy from one worker and watching it fail; a guard that has never failed is untested. The engine's own version
|
|
199
|
+
is `test_A_WORKER_TAKES_ITS_POLICY_FROM_THE_DEFINITION_IT_IS_GIVEN` in `tests/harness/test_greenfield_conformance.py`.
|
|
200
|
+
|
|
201
|
+
**A minimal composition**, every name taken from the tables above:
|
|
202
|
+
|
|
203
|
+
```python
|
|
204
|
+
from rag_wright.harness import AgentDefinition, AgentPrompts, build_chat_agent, start_run
|
|
205
|
+
|
|
206
|
+
definition = AgentDefinition(
|
|
207
|
+
surface=MyToolSurface(), # build(context, resources, only=None) + exposed_names
|
|
208
|
+
planning={"my.long_operation": "it fans out over the whole corpus"},
|
|
209
|
+
workers=(my_worker,), # factories: (context, resources, ledger=None) -> worker_spec(...)
|
|
210
|
+
context_schema=MyContext, # satisfies RunScope: scope + shared_scope
|
|
211
|
+
retry_on=(MyUpstreamOffline,), # named, never Exception
|
|
212
|
+
message_for=my_message_for, # (error) -> str | None; None lets it surface
|
|
213
|
+
model_id_for=lambda settings: settings.my_agent_model,
|
|
214
|
+
prompts=AgentPrompts(...), # every field, every word yours
|
|
215
|
+
repeatable=frozenset({"my.read_one"}),
|
|
216
|
+
question_argument={"my.ask": "question"},
|
|
217
|
+
framings=("my.frame_the_request",),
|
|
218
|
+
carry_forward=None, # a real answer: amend nothing
|
|
219
|
+
rules=(my_rule,),
|
|
220
|
+
decision_points=(my_point,),
|
|
221
|
+
read_framing=my_read_framing,
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
agent = build_chat_agent(context, resources, settings, definition=definition,
|
|
225
|
+
checkpointer=my_checkpointer, store=my_store)
|
|
226
|
+
result = await start_run(agent, context, message=question, settings=settings,
|
|
227
|
+
skills=definition.prompts.skills)
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Note what is not in that call**: no tier split, no direct surface, no worker-to-operation map; the substrate
|
|
231
|
+
derives each from what you declared. `start_run` takes `skills` explicitly because seeding them is the product's
|
|
232
|
+
decision: a tier advertised a skill it cannot read spends a `read_file` finding out.
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## 7. Configuration is the engine's
|
|
237
|
+
|
|
238
|
+
The tier reads the process environment, not your settings object:
|
|
239
|
+
|
|
240
|
+
| variable | effect |
|
|
241
|
+
|---|---|
|
|
242
|
+
| `RAG_TRACE_LEVEL` | `off` / `generations` / `verbose`. `verbose` sends prompts, which are customer content |
|
|
243
|
+
| `LANGFUSE_PUBLIC_KEY` / `LANGFUSE_SECRET_KEY` / `LANGFUSE_HOST` | a level alone traces nothing; the keys are needed too |
|
|
244
|
+
| `RAG_QUESTION_ENCODER` | `off` stops the harness embedding tool questions to recognise a repeated ask |
|
|
245
|
+
| `OPENROUTER_API_KEY`, or the profile's `api_key_env` | the model credentials, read where the engine builds the model |
|
|
246
|
+
|
|
247
|
+
**Put them in the environment before anything builds an agent**: at application startup, and in any script, eval
|
|
248
|
+
or test that builds a real model. A product that forgets gets the model client's *"Missing credentials"* error
|
|
249
|
+
with nothing naming the cause. If a wrapper of yours used to export them as a side effect and stops being on the
|
|
250
|
+
path, nothing exports them: when a seam stops being called, check what it did besides forwarding.
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## 8. Verifying your own composition
|
|
255
|
+
|
|
256
|
+
The order matters:
|
|
257
|
+
|
|
258
|
+
1. **A second product, about 200 lines, hermetic**: a fake product in an unrelated domain that implements the
|
|
259
|
+
seams and builds a real agent. Write it before your seams are final, so each one is designed against an outside
|
|
260
|
+
implementer rather than audited afterwards. It is the only instrument that measures reusability; import counts
|
|
261
|
+
measure decoupling, which is a different property. The engine's is the fabric product in
|
|
262
|
+
`tests/harness/test_greenfield_conformance.py`, whose scope is three parts deep.
|
|
263
|
+
2. **Guards on the consequence** of each permissive default (section 6), each proved by planting.
|
|
264
|
+
3. **Your own rules and decision points**, graded by the substrate against the registries you declared.
|
|
265
|
+
|
|
266
|
+
**The trap:** a conformance test that hands the substrate your own context type while asserting that a different
|
|
267
|
+
product works proves nothing about a product whose scope has a different depth. When a seam changes, change the
|
|
268
|
+
fake product first.
|
|
@@ -115,3 +115,4 @@ in two at the PS-6 gate so the store rewrite is its own visible task. One task,
|
|
|
115
115
|
| PS-40 | Prepare the engine for a greenfield product (TexWright, the first product built after de-domaining): (a) the product-starter templates corrected for 0.10.0 (the harness ships; the floor example; the skill lists); (b) RuleWright's generic `building-a-product-backend` and `building-a-product-frontend` skills graduate into the shipped skills (reviewed against 0.10.0: the harness is the engine's tier, a new domain's composites are its own pack's capabilities, an engine gap is an engine request), as `building-an-agent-harness` did; (c) a new shipped skill that turns a product's high-level spec into its low-level SPEC mapped to the engine's APIs, skills and docs, layered on the global `spec-driven-development` | the shipped-skills, doc-reference and vocabulary guards green; the wheel build ships all three skills; the templates fill with no stale line | done 2026-10-14 (templates corrected; backend and front-end skills graduated from RuleWright with 0.10.0 corrections; `specifying-a-product-on-the-engine` written; all three linked and shipped in the wheel) |
|
|
116
116
|
| PS-41 | Audit the engine-authored product-developer skills and the domain-adaptation guide for omissions a greenfield product hits (TexWright as the test case), and fix them: the specifying skill (capability catalog + definition-of-done requirement, models, the operations registry and parity, the agent's guardrails, settled data semantics, confirming a primitive is public, a live reconciliation); the consumer skill (three tiers, the harness first, specify first, client data, the surface snapshot over all tiers); capability authoring (product homes and slug prefixes, the eval in the definition of done, the harness for agents); ingestion (images and scans, a model-backed extractor as a closure, interpretations as records, per-sheet roles, multi-row records, re-ingest under G8, registering the pipeline, field-level accuracy); evals (gold from provided data, field-level ingestion accuracy, judged gold, agent behavior classes); the backend skill (the operations registry, parity, read-only agent tools); the guide (step 0 specify, the bridge pack for an existing ontology, G24: no public hybrid search, the false 'compose hybrid search by import' claim removed, a `uv pip` fixed) | the doc-reference, shipped-skills and ingestion-example guards green | done 2026-10-14 |
|
|
117
117
|
| PS-42 | Register only the engine capabilities a product uses, by slug (TexWright T-0.2 finding): the product-starter templates, the consumer skill and the domain-adaptation docs showed a blanket `for m in engine_capabilities(): register_capability(m)`, which puts unused capabilities into `discover()`'s ranking pool; now by slug, failing loudly when a used slug is no longer offered | the doc-reference and shipped-skills guards green | done 2026-10-14 |
|
|
118
|
+
| PS-43 | The harness tier's design reference and its quiet defaults (RuleWright's 2026-10-15 note): `docs/harness.md` taken in from RuleWright's draft, its tables generated from the live tier by `scripts/build_harness_doc.py`; `worker_spec(definition=)` fills the seven policy parameters (and the signposts) a worker otherwise left inert from the product's `AgentDefinition`, explicit arguments winning; the harness source's docstrings and comments cleared of the originating product's vocabulary, task, requirement and ADR ids, with a guard; two `AgentPrompts` fields described; the agent-harness skill's 'Four declared facts' corrected to fifteen | the product-text guard, the `definition=` conformance tests and the harness-design drift test green | done 2026-10-15 |
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# RuleWright: moving to rag-wright 0.11
|
|
2
|
+
|
|
3
|
+
What 0.11.0 (released 2026-10-15: PyPI and GitHub release `0.11.0`) changes for RuleWright. Do the 0.10 guide
|
|
4
|
+
first. Nothing here is edited from the engine repo, and nothing in 0.11.0 breaks an existing call.
|
|
5
|
+
|
|
6
|
+
## 1. The product-building skills ship in the wheel (PS-40)
|
|
7
|
+
|
|
8
|
+
`building-a-product-backend`, `building-a-product-frontend` and `specifying-a-product-on-the-engine` are engine
|
|
9
|
+
skills now, with the 0.10.0 corrections. Retire `generic-product-dev-skills/` and `tests/test_product_dev_skills.py`
|
|
10
|
+
(answered in our note of 2026-10-15); link any you want from the installed engine (ADR-0134).
|
|
11
|
+
|
|
12
|
+
## 2. Register only the engine capabilities you use (PS-42, optional)
|
|
13
|
+
|
|
14
|
+
The docs now register engine capabilities by slug rather than all of them:
|
|
15
|
+
`for m in engine_capabilities(): if m.slug in USED: register_capability(m)`, raising when a slug in `USED` is no
|
|
16
|
+
longer offered. Registering every one also puts the ones you never call into `discover()`'s ranking pool.
|
|
17
|
+
`packs/contracts/pack.py` (`(*engine_capabilities(), *CONTRACT_SPECS)`) and `register_engine_capabilities()` in
|
|
18
|
+
`engine/seam.py` register all of them; that still works. Change it if your agent plans over `discover()`.
|
|
19
|
+
|
|
20
|
+
## Verify
|
|
21
|
+
|
|
22
|
+
Your fast and db suites green on `>=0.11.0`; bump the floor. No harness name changed.
|