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.
Files changed (1072) hide show
  1. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/building-an-agent-harness/SKILL.md +14 -3
  2. rag_wright-0.12.0/.release-please-manifest.json +3 -0
  3. {rag_wright-0.11.0 → rag_wright-0.12.0}/CHANGELOG.md +7 -0
  4. {rag_wright-0.11.0 → rag_wright-0.12.0}/CLAUDE.md +6 -1
  5. {rag_wright-0.11.0 → rag_wright-0.12.0}/PKG-INFO +3 -1
  6. {rag_wright-0.11.0 → rag_wright-0.12.0}/README.md +2 -0
  7. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/api/harness.md +32 -32
  8. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/configuration.md +2 -1
  9. rag_wright-0.12.0/docs/harness.md +268 -0
  10. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/plan.md +1 -0
  11. rag_wright-0.12.0/docs/specs/public-surface/rulewright-migration-0.11.0.md +22 -0
  12. rag_wright-0.12.0/docs/specs/public-surface/rulewright-migration-0.12.0.md +39 -0
  13. {rag_wright-0.11.0 → rag_wright-0.12.0}/pyproject.toml +1 -1
  14. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/build_api_docs.py +2 -1
  15. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/build_api_docs.sh +3 -1
  16. rag_wright-0.12.0/scripts/build_harness_doc.py +134 -0
  17. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/building-an-agent-harness/SKILL.md +14 -3
  18. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/accounting.py +12 -12
  19. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/agent.py +26 -27
  20. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/batch.py +4 -4
  21. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/clarify.py +7 -6
  22. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/confirm.py +5 -5
  23. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/decisions.py +37 -40
  24. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/definition.py +6 -2
  25. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/dispatch.py +4 -4
  26. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/errors.py +17 -17
  27. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/events.py +8 -8
  28. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/filesystem.py +12 -12
  29. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/grading.py +19 -19
  30. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/interpreter.py +21 -20
  31. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/memory.py +19 -18
  32. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/models.py +11 -11
  33. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/rules.py +21 -21
  34. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/runs.py +38 -39
  35. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/scope.py +9 -10
  36. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/seen.py +17 -19
  37. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/skills.py +10 -11
  38. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/thinking.py +7 -7
  39. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/tiers.py +47 -54
  40. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/tracing.py +2 -2
  41. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/withhold.py +10 -10
  42. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/workers.py +61 -33
  43. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_api_docs_current.py +11 -0
  44. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_greenfield_conformance.py +60 -0
  45. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_genericity.py +44 -0
  46. {rag_wright-0.11.0 → rag_wright-0.12.0}/uv.lock +1 -1
  47. rag_wright-0.11.0/.release-please-manifest.json +0 -3
  48. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/settings.json +0 -0
  49. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/authoring-a-capability/SKILL.md +0 -0
  50. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/building-a-product-backend/SKILL.md +0 -0
  51. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/building-a-product-frontend/SKILL.md +0 -0
  52. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/building-an-ingestion-capability/SKILL.md +0 -0
  53. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/classifier-opportunity-analysis/SKILL.md +0 -0
  54. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/creating-evals/SKILL.md +0 -0
  55. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/laya/SKILL.md +0 -0
  56. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/qwen-vllm-modal/SKILL.md +0 -0
  57. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/qwen-vllm-modal/scripts/modal_qwen3_vllm_server.py +0 -0
  58. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
  59. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/setfit/SKILL.md +0 -0
  60. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/specifying-a-product-on-the-engine/SKILL.md +0 -0
  61. {rag_wright-0.11.0 → rag_wright-0.12.0}/.claude/skills/using-the-rag-wright-engine/SKILL.md +0 -0
  62. {rag_wright-0.11.0 → rag_wright-0.12.0}/.env.example +0 -0
  63. {rag_wright-0.11.0 → rag_wright-0.12.0}/.github/workflows/publish.yml +0 -0
  64. {rag_wright-0.11.0 → rag_wright-0.12.0}/.github/workflows/release-please.yml +0 -0
  65. {rag_wright-0.11.0 → rag_wright-0.12.0}/.gitignore +0 -0
  66. {rag_wright-0.11.0 → rag_wright-0.12.0}/LICENSE +0 -0
  67. {rag_wright-0.11.0 → rag_wright-0.12.0}/SPEC.md +0 -0
  68. {rag_wright-0.11.0 → rag_wright-0.12.0}/conftest.py +0 -0
  69. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
  70. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/ArcadeDB_Local.md +0 -0
  71. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/OBSERVABILITY.md +0 -0
  72. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0001-stack-and-library-choices.md +0 -0
  73. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0002-validation-corpus-cuad-edgar.md +0 -0
  74. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0003-ard-registration-and-capability-kinds.md +0 -0
  75. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0004-entity-disambiguation.md +0 -0
  76. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0005-relational-golden-set.md +0 -0
  77. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0006-model-profile.md +0 -0
  78. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0007-arcadedb-store-schema.md +0 -0
  79. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0008-unified-framework-index-docs-grounding.md +0 -0
  80. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0009-rlm-chunking-retained-as-configurable-capability.md +0 -0
  81. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0010-transformers-pinned-below-5-for-flagembedding-reranker.md +0 -0
  82. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0011-cuad-not-a-retrieval-benchmark-acord-for-queries.md +0 -0
  83. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0012-entity-mention-confidence-no-proximity-edges.md +0 -0
  84. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0013-entity-resolution-matching-strategy.md +0 -0
  85. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0014-split-generation-and-vision-to-text.md +0 -0
  86. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0015-rlm-dynamic-subagents-and-granted-subagents.md +0 -0
  87. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0016-rlm-defined-by-required-capabilities-enforced-as-tests.md +0 -0
  88. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0017-dynamic-dispatch-trigger-as-typed-flag.md +0 -0
  89. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0018-rlm-method-is-the-orchestrator-system-prompt.md +0 -0
  90. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0019-recursion-is-optional-for-chunking-required-for-synthesis.md +0 -0
  91. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0020-serialize-interpreter-sessions-per-process-ki1.md +0 -0
  92. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0021-capability-interface-governed-typed-io.md +0 -0
  93. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0022-fr-k-embedding-free-okf-navigation-experimental.md +0 -0
  94. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0023-cheap-model-for-okf-enrichment.md +0 -0
  95. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0024-reader-parallelism-lives-in-python-not-the-interpreter.md +0 -0
  96. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0025-retrieval-pivot-function-classify-property-graph-rerank.md +0 -0
  97. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0026-property-schema-and-extended-function-taxonomy.md +0 -0
  98. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0027-openrouter-provider-routing-by-throughput.md +0 -0
  99. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0028-deterministic-grounding-judge-and-flash-pro-cascade.md +0 -0
  100. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0029-retrieval-pipeline-domain-portability-and-adaptation.md +0 -0
  101. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0030-model-training-standard-modal-reusable-checkpointed.md +0 -0
  102. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0031-single-call-chunking-for-structured-contracts.md +0 -0
  103. {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
  104. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0033-unified-contract-kg-three-legs-one-graph.md +0 -0
  105. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0034-granite-json-schema-structured-output-profile.md +0 -0
  106. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0035-graph-extraction-rebacked-with-gp1b-retire-hybrid.md +0 -0
  107. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0036-party-clause-link-party-to-edge.md +0 -0
  108. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0037-clause-template-is-authoritative-code-not-generated.md +0 -0
  109. {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
  110. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0039-self-hosted-open-model-stack-on-modal-a100.md +0 -0
  111. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0040-neuro-symbolic-extraction-fidelity-ontology-shacl-validation.md +0 -0
  112. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0041-capability-kind-rubric-and-agent-skill-runtime-tiers.md +0 -0
  113. {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
  114. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0043-retire-cross-corpus-retrieval-standardize-on-leg-b.md +0 -0
  115. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0044-is-exception-to-derived-carveout-relationship.md +0 -0
  116. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0045-client-side-tag-parse-structured-output.md +0 -0
  117. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0046-acord-unified-into-one-production-kg.md +0 -0
  118. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0047-retire-precomputed-clause-function-gate.md +0 -0
  119. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0048-ingest-llm-classifier-nondestructive-reclassify.md +0 -0
  120. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0049-generic-customer-lens-for-ingestion.md +0 -0
  121. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0050-async-langgraph-ingestion.md +0 -0
  122. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0051-schema-bootstrap-and-feedback-driven-ontology-evolution.md +0 -0
  123. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0052-engine-product-split-graphwright-parked.md +0 -0
  124. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0053-answer-prose-output-hygiene.md +0 -0
  125. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0054-remove-auto-tag-from-generator-evidence.md +0 -0
  126. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0055-confidence-out-of-band.md +0 -0
  127. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0056-bound-structured-retry-wall-clock.md +0 -0
  128. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0057-async-engine-architecture.md +0 -0
  129. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0058-structure-first-chunking.md +0 -0
  130. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0059-recall-decoupled-from-classification-and-visible-partial-loss.md +0 -0
  131. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0060-scope-compliance-check-to-named-policy-sources.md +0 -0
  132. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0061-subject-document-compliance-per-section.md +0 -0
  133. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0062-tiered-ocr-scan-quality-vlm-escalation.md +0 -0
  134. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0063-per-sentence-compliance-subject-facts.md +0 -0
  135. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0064-typed-properties-out-of-band-on-evidence.md +0 -0
  136. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0065-deontic-applicability-gates-query-side.md +0 -0
  137. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0066-ontology-ttl-single-source-of-truth.md +0 -0
  138. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0067-domain-pack-retargeting.md +0 -0
  139. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0068-recall-first-actor-gate-ontology-role-disjointness.md +0 -0
  140. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0069-reading-order-chunking-tables-figures-retrievable.md +0 -0
  141. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0070-text-layer-first-parsing-no-false-vlm-escalation.md +0 -0
  142. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0071-defragmentation-reconstruct-paragraphs-from-line-items.md +0 -0
  143. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0072-extract-guard-furniture-and-deterministic-failure.md +0 -0
  144. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0073-born-digital-threshold-sparse-pages-no-vlm-escalation.md +0 -0
  145. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0074-retry-transient-extraction-failures.md +0 -0
  146. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0075-per-page-vlm-escalation.md +0 -0
  147. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0076-thread-safe-shared-embedder-reranker.md +0 -0
  148. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0077-concurrent-function-classification-across-chunks.md +0 -0
  149. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0078-dedicated-extraction-executor.md +0 -0
  150. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0079-product-default-granite-4.2-openrouter-routing.md +0 -0
  151. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0080-nested-tag-parse-and-degrade.md +0 -0
  152. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0081-function-independent-tagparse-clause-extraction.md +0 -0
  153. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0082-symbolic-gate-function-independent.md +0 -0
  154. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0083-executor-hop-trace-context-capture.md +0 -0
  155. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0084-gleaning-off-on-the-query-leg.md +0 -0
  156. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0085-query-constraint-extraction-tagparse.md +0 -0
  157. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0086-streaming-cost-capture.md +0 -0
  158. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0087-retrieval-relevance-score-on-rankedspan.md +0 -0
  159. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0088-per-span-relevance-verdict.md +0 -0
  160. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0089-structured-output-generation-tracing.md +0 -0
  161. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0090-affiliate-of-extraction.md +0 -0
  162. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0091-retire-partyto-edge.md +0 -0
  163. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0092-idempotent-write-graph.md +0 -0
  164. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0093-entities-by-name-seam.md +0 -0
  165. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0094-workspace-document-scope.md +0 -0
  166. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0095-span-page-provenance.md +0 -0
  167. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0096-carveout-keyword-normalization.md +0 -0
  168. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0097-caller-configurable-ingest-extraction-models.md +0 -0
  169. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0098-invoke-time-document-scope.md +0 -0
  170. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0099-mcp-tools-never-take-a-model-supplied-tenant.md +0 -0
  171. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0100-profile-based-model-routing.md +0 -0
  172. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0101-untagged-spans-reach-extraction-aspect-gate-removed.md +0 -0
  173. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0102-open-descriptive-list-dims-retain-verbatim.md +0 -0
  174. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0103-a-clause-is-a-provision-not-a-span.md +0 -0
  175. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0104-dense-floor-protection-in-leg-b.md +0 -0
  176. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0105-in-band-model-usage-accounting.md +0 -0
  177. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0106-document-signals-off-the-citation.md +0 -0
  178. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0107-requirement-page-provenance.md +0 -0
  179. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0108-qwen3-27b-single-a100-serving-profile.md +0 -0
  180. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0109-vllm-cold-start-reduction.md +0 -0
  181. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0110-fp8-kv-cache-16k-single-a100.md +0 -0
  182. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0111-pin-qwen3-27b-deepinfra-bf16.md +0 -0
  183. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0112-relax-deepagents-pin-to-floor.md +0 -0
  184. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0113-llm-span-instrumentation-for-latency-attribution.md +0 -0
  185. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0114-setfit-default-clause-function-classifier.md +0 -0
  186. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0115-classifier-only-step3a-property-extraction.md +0 -0
  187. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0116-soft-function-scoping-classifier-lane.md +0 -0
  188. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0117-engine-api-layer-and-capability-runtime.md +0 -0
  189. {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
  190. {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
  191. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0120-rlm-sub-agent-identity-dynamic-dispatch-trigger.md +0 -0
  192. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0121-spacy-optional-extra-model-runtime-download.md +0 -0
  193. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0122-provision-boundary-deterministic-plus-decision-model-residue.md +0 -0
  194. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0123-batched-releases-release-please-and-consumer-dependabot.md +0 -0
  195. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0124-generic-ingestion-builder-and-hooks.md +0 -0
  196. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0125-qwen-openrouter-unpinned.md +0 -0
  197. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0126-unit-representative-hook-and-the-reference-vote.md +0 -0
  198. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0127-retire-the-okf-code.md +0 -0
  199. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0128-two-public-tiers-api-and-pack-sdk.md +0 -0
  200. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0129-laya-temperatures-and-the-sklearn-floor.md +0 -0
  201. {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
  202. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0131-model-server-hardening-after-rulewright-review.md +0 -0
  203. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0132-model-server-cold-start-from-a-gpu-snapshot.md +0 -0
  204. {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
  205. {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
  206. {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
  207. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0136-spreadsheet-tables-are-glued-back-across-blank-rows.md +0 -0
  208. {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
  209. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0138-the-engine-reaches-pdfium-through-one-locked-door.md +0 -0
  210. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/0139-the-agent-harness-substrate-is-engine-scope.md +0 -0
  211. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/adr/README.md +0 -0
  212. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/api/README.md +0 -0
  213. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/api/pack_sdk.md +0 -0
  214. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/architecture/foundations-and-adding-a-domain.md +0 -0
  215. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/architecture.md +0 -0
  216. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/README.md +0 -0
  217. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/design/deontic-applicability-routing.md +0 -0
  218. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/design/ingestion-neuro-symbolic-gaps.md +0 -0
  219. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/design/semantic-subject-segmentation.md +0 -0
  220. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/design/unify-subject-preprocessing.md +0 -0
  221. {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
  222. {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
  223. {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
  224. {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
  225. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/engine-issues/0041-VERIFICATION-dense-floor.md +0 -0
  226. {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
  227. {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
  228. {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
  229. {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
  230. {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
  231. {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
  232. {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
  233. {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
  234. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-07-20_graphwright_capability_interface_reply.md +0 -0
  235. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-07-20b_graphwright_interface_confirmation.md +0 -0
  236. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-07-20c_graphwright_ingestion_interfaces.md +0 -0
  237. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-08-30_subject_compliance_final_rulewright.md +0 -0
  238. {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
  239. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-01_ontology-source-of-truth_rulewright.md +0 -0
  240. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-03_issue-0014-table-retrievability_rulewright.md +0 -0
  241. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-04_bulk-ingestion-wall_rulewright.md +0 -0
  242. {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
  243. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-05_observability-langfuse_rulewright.md +0 -0
  244. {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
  245. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_affiliate-of-extraction_rulewright.md +0 -0
  246. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_issue-0028-partyto-retired_rulewright.md +0 -0
  247. {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
  248. {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
  249. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_observability-and-retrieval-floor_rulewright.md +0 -0
  250. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_relevance-verdict_rulewright.md +0 -0
  251. {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
  252. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-09_structured-output-cost-tracing_rulewright.md +0 -0
  253. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-10_ingest-models-caller-configurable_rulewright.md +0 -0
  254. {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
  255. {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
  256. {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
  257. {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
  258. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-10_issue-0033-carveout-normalization_rulewright.md +0 -0
  259. {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
  260. {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
  261. {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
  262. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-11_profile-based-model-routing_rulewright.md +0 -0
  263. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-11_qwen-default-modal-or_rulewright.md +0 -0
  264. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-11_qwen-everywhere-config_rulewright.md +0 -0
  265. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-12_clause-granularity_0036-0039_rulewright.md +0 -0
  266. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-12_closed-vocab_0037-0040_rulewright.md +0 -0
  267. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-12_dense-floor-protection_0041_rulewright.md +0 -0
  268. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-13_in-band-usage_0042_rulewright.md +0 -0
  269. {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
  270. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-14_requirement-page-provenance_0043_rulewright.md +0 -0
  271. {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
  272. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-18_fp8-accuracy-eval-configB_rulewright.md +0 -0
  273. {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
  274. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-20_deepagents-pin-relaxed_0047_rulewright.md +0 -0
  275. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/handoffs/2026-09-20_llm-span-instrumentation_0048_rulewright.md +0 -0
  276. {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
  277. {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
  278. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/misc/.gitkeep +0 -0
  279. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/Corpus_Acquisition.md +0 -0
  280. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/async-migration.md +0 -0
  281. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/demo_plan.md +0 -0
  282. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/gp1b_docling_graph_plan.md +0 -0
  283. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/unified_contract_kg_ontology_bridge.md +0 -0
  284. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/plans/unified_contract_kg_plan.md +0 -0
  285. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/results/2026-07-24-t58-property-graph-population.md +0 -0
  286. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/results/2026-07-25-t58b-full-pipeline-rerank.md +0 -0
  287. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/archive/results/2026-07-25-t58b-topk-ordering-levers.md +0 -0
  288. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/concepts.md +0 -0
  289. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/contract_pipeline_explainer.md +0 -0
  290. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/corpus_ingest_recipe.md +0 -0
  291. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/README.md +0 -0
  292. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/_engine-gaps.md +0 -0
  293. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/authoring-capabilities.md +0 -0
  294. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/classification-and-decision-models.md +0 -0
  295. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/entity-resolution.md +0 -0
  296. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/evals-from-expert-files.md +0 -0
  297. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/kg-construction.md +0 -0
  298. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/domain-adaptation/ontology-authoring.md +0 -0
  299. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/classifier_model_ab.md +0 -0
  300. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/compliance_demo.md +0 -0
  301. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/compliance_gate_cc7.md +0 -0
  302. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/compliance_rung2_cc7.md +0 -0
  303. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/cuad_highlighting_cu-d1.md +0 -0
  304. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/dg_model_ab.md +0 -0
  305. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/function_gate_recall.md +0 -0
  306. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/generation_robustness_b_vs_c.md +0 -0
  307. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/nl_to_type_cu-d2.md +0 -0
  308. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/ocr_benchmark.md +0 -0
  309. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/prod1_readiness.md +0 -0
  310. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/prod2_readiness.md +0 -0
  311. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/query_side_model_ab.md +0 -0
  312. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/silver_granite_vs_gemma4.md +0 -0
  313. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/silver_provider_routing.md +0 -0
  314. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/eval/silver_selfhosted_gemma4_26b.md +0 -0
  315. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/evals.md +0 -0
  316. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/installation.md +0 -0
  317. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/playbook.md +0 -0
  318. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/capability_profiles.md +0 -0
  319. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/contracts_product_roadmap.md +0 -0
  320. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/engine-api-migration-handoff.md +0 -0
  321. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/engine_async_api.md +0 -0
  322. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/new-domain-build-sequence.md +0 -0
  323. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/product/seam-adaptation-guide.md +0 -0
  324. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/proposals/compliance-ingest-classifier-decomposition.md +0 -0
  325. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/proposals/de-domaining-and-capability-runtime.md +0 -0
  326. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/proposals/new-domain-developer-journey.md +0 -0
  327. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/proposals/ontology-induction.md +0 -0
  328. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/quickstart.md +0 -0
  329. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/reference-pack.md +0 -0
  330. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/releasing.md +0 -0
  331. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/engine-platform/SPEC.md +0 -0
  332. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/engine-platform/TASKS.md +0 -0
  333. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/engine-prep/plan.md +0 -0
  334. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/evals/plan.md +0 -0
  335. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/ingestion-hooks/ing5-doc-audit.md +0 -0
  336. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/ingestion-hooks/ing8-breaking-changes.md +0 -0
  337. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/ingestion-hooks/plan.md +0 -0
  338. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/ingestion-hooks/rulewright-migration-0.2.0.md +0 -0
  339. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-arcadedb-separation.md +0 -0
  340. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.10.0.md +0 -0
  341. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.3.0.md +0 -0
  342. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.4.0.md +0 -0
  343. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.5.0.md +0 -0
  344. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.6.0.md +0 -0
  345. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.7.0.md +0 -0
  346. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.8.0.md +0 -0
  347. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/specs/public-surface/rulewright-migration-0.9.0.md +0 -0
  348. {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
  349. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/templates/product-starter/CLAUDE.md.template +0 -0
  350. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/templates/product-starter/README.md +0 -0
  351. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/templates/product-starter/dependabot.yml +0 -0
  352. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/templates/product-starter/playbook.md.template +0 -0
  353. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/upstream/laya-temperature-range-mismatch.md +0 -0
  354. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/vendor/arcadedb/arcadedb-buckets-schema.md +0 -0
  355. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/vendor/arcadedb/arcadedb-docs-extraction.json +0 -0
  356. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/vendor/arcadedb/arcadedb-vector-embeddings.md +0 -0
  357. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/vendor/arcadedb/arcadedb-vector-search-tutorial.md +0 -0
  358. {rag_wright-0.11.0 → rag_wright-0.12.0}/docs/workspaces.md +0 -0
  359. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/__init__.py +0 -0
  360. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/acord.py +0 -0
  361. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/acord_retrieval.py +0 -0
  362. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/boundary_residue_gold.py +0 -0
  363. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/build_golden.py +0 -0
  364. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/compliance_demo/policy/community_conduct_policy.md +0 -0
  365. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/compliance_demo/subjects/post_borderline.txt +0 -0
  366. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/compliance_demo/subjects/post_compliant.txt +0 -0
  367. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/compliance_demo/subjects/post_violation.txt +0 -0
  368. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/condensed_pipeline.py +0 -0
  369. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/contract_parity_live.py +0 -0
  370. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/contractnli_judge.py +0 -0
  371. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/cuad_highlight.py +0 -0
  372. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/embedded_eval.py +0 -0
  373. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/full_pipeline_rerank.py +0 -0
  374. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/function_ceiling.py +0 -0
  375. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/function_property_rerank.py +0 -0
  376. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/function_rerank.py +0 -0
  377. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/gate1_chunker_ab.py +0 -0
  378. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/gate2_hybrid_rerank.py +0 -0
  379. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/golden/relational/set.json +0 -0
  380. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/golden.py +0 -0
  381. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/ground_discriminator_rerank.py +0 -0
  382. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/harness.py +0 -0
  383. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/ingestion_live_smoke.py +0 -0
  384. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/kg_primary.py +0 -0
  385. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/kg_property_rerank.py +0 -0
  386. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/listwise_rerank.py +0 -0
  387. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/multihop.py +0 -0
  388. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/nl_to_type.py +0 -0
  389. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/relational_eval.py +0 -0
  390. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/residual_decision_gold.py +0 -0
  391. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/segmenter_eval.py +0 -0
  392. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/semantic_judge_gold.py +0 -0
  393. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/test_acord.py +0 -0
  394. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/test_acord_retrieval.py +0 -0
  395. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/test_harness.py +0 -0
  396. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/test_multihop_set.py +0 -0
  397. {rag_wright-0.11.0 → rag_wright-0.12.0}/eval/unit_grouper_eval.py +0 -0
  398. {rag_wright-0.11.0 → rag_wright-0.12.0}/examples/model_server.py +0 -0
  399. {rag_wright-0.11.0 → rag_wright-0.12.0}/examples/quickstart.py +0 -0
  400. {rag_wright-0.11.0 → rag_wright-0.12.0}/plan.md +0 -0
  401. {rag_wright-0.11.0 → rag_wright-0.12.0}/release-please-config.json +0 -0
  402. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ab_model_overlap.py +0 -0
  403. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acord_unify.py +0 -0
  404. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_acord.py +0 -0
  405. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_cuad.py +0 -0
  406. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_ecfr.py +0 -0
  407. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_edgar.py +0 -0
  408. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_ftc_255.py +0 -0
  409. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/acquire_prod1_corpus.py +0 -0
  410. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/audit_reclass_flips.py +0 -0
  411. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/author_leg_a_silver_key.py +0 -0
  412. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/backfill_affiliations.py +0 -0
  413. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/backfill_clause_span_id.py +0 -0
  414. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/backfill_edge_source_doc_id.py +0 -0
  415. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/backup_kg_to_gcs.sh +0 -0
  416. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/bootstrap_template_capture.py +0 -0
  417. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/bootstrap_typed_edges.py +0 -0
  418. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/build_cuad_clause_cache.py +0 -0
  419. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/build_function_routing_map.py +0 -0
  420. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_assemble_v2.py +0 -0
  421. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_assemble_v3.py +0 -0
  422. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_generate_hard_negatives.py +0 -0
  423. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_generate_hard_positives.py +0 -0
  424. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_generate_training.py +0 -0
  425. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_hybrid.py +0 -0
  426. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_hybrid2.py +0 -0
  427. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_jev_actor.py +0 -0
  428. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_jev_claimtypes.py +0 -0
  429. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_jev_operative.py +0 -0
  430. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_label_spans.py +0 -0
  431. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_laya_prep.py +0 -0
  432. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_laya_train.py +0 -0
  433. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_prep_operative.py +0 -0
  434. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_relabel_rubric.py +0 -0
  435. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_relabel_rubric2.py +0 -0
  436. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/cic1_train_operative.py +0 -0
  437. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/compare_extraction_models.py +0 -0
  438. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/compliance_actor_gate_smoke.py +0 -0
  439. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/compliance_engine_smoke.py +0 -0
  440. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/compliance_policy_demo.py +0 -0
  441. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/curate_taxonomy_gaps.py +0 -0
  442. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/dg_model_ab.py +0 -0
  443. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_knn_expansion.py +0 -0
  444. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_knn_rerank.py +0 -0
  445. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_leg_pool.py +0 -0
  446. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_legs.py +0 -0
  447. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_pool.py +0 -0
  448. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_relstructure.py +0 -0
  449. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/diagnose_acord_retrieval.py +0 -0
  450. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/eval_all.py +0 -0
  451. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/eval_ce.py +0 -0
  452. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/eval_listwise_b.py +0 -0
  453. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/export_ce_dataset.py +0 -0
  454. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/extract_features.py +0 -0
  455. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/listwise_variants.py +0 -0
  456. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/relational_features.py +0 -0
  457. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/train_ce.py +0 -0
  458. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/distill/train_modal.py +0 -0
  459. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/enrich_edgar_candidates.py +0 -0
  460. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/eval_chunking_ab.py +0 -0
  461. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/eval_classifier_guided_vs_tagparse.py +0 -0
  462. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/eval_compliance_gold.py +0 -0
  463. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/extract_arcadedb_docs.py +0 -0
  464. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/fetch_reference_models.py +0 -0
  465. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/generate_contract_python.py +0 -0
  466. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/git_post_commit_graphify.sh +0 -0
  467. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/granite_chunker_assess.py +0 -0
  468. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/graph_status.sh +0 -0
  469. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_acord.py +0 -0
  470. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_compliance_async_prod2.py +0 -0
  471. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_compliance_document_prod2.py +0 -0
  472. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_compliance_prod2.py +0 -0
  473. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_cuad.py +0 -0
  474. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_cuad_full.py +0 -0
  475. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_ftc_compliance.py +0 -0
  476. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_prod1.py +0 -0
  477. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_prod1_async.py +0 -0
  478. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ingest_smoke.py +0 -0
  479. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/install_git_hooks.sh +0 -0
  480. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/label_new_functions.py +0 -0
  481. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/legb_function_gate_recall.py +0 -0
  482. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/make_compliance_fixtures.py +0 -0
  483. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/make_compliance_gold.py +0 -0
  484. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/mcp_compliance_agent_demo.py +0 -0
  485. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/mcp_intra_document_qa_smoke.py +0 -0
  486. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/mcp_query_legs_agent_demo.py +0 -0
  487. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/measure_generation_robustness.py +0 -0
  488. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/measure_harness_genericity.py +0 -0
  489. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/measure_silver.py +0 -0
  490. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/merge_docs_into_framework.py +0 -0
  491. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/migrate_entity_cik_to_canonical_id.py +0 -0
  492. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/migrate_silver_evidence_autotag.py +0 -0
  493. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/migrate_silver_evidence_remove_autotag.py +0 -0
  494. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/migrate_span_fields.py +0 -0
  495. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/mine_scarce_functions.py +0 -0
  496. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_arcadedb.py +0 -0
  497. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_backfill.py +0 -0
  498. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_exception_linking.py +0 -0
  499. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_gemma4_vllm.py +0 -0
  500. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_gemma4_vllm_snapshot.py +0 -0
  501. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_granite_server.py +0 -0
  502. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_granite_throughput.py +0 -0
  503. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_granite_vllm_server.py +0 -0
  504. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_query_app.py +0 -0
  505. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_qwen3_27b_bench.py +0 -0
  506. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_qwen3_27b_snapshot.py +0 -0
  507. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_qwen3_vllm_server.py +0 -0
  508. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/modal_stack_a100.py +0 -0
  509. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ocr_benchmark.py +0 -0
  510. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ocr_preprocess.py +0 -0
  511. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/ontology_dimension_check.py +0 -0
  512. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/phase_a_leg_validate.py +0 -0
  513. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/populate_clause_kg.py +0 -0
  514. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/populate_entity_graph.py +0 -0
  515. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/populate_entity_graph_extracted.py +0 -0
  516. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/populate_property_store.py +0 -0
  517. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/prep_relational_verification.py +0 -0
  518. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/publish_manifests.py +0 -0
  519. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/reclassify_kg.py +0 -0
  520. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/refresh_framework_graph.sh +0 -0
  521. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/revert_reclass_flips.py +0 -0
  522. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/run_acord_retrieval.py +0 -0
  523. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/run_clause_exception_linking.py +0 -0
  524. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/semantic_judge_live_validate.py +0 -0
  525. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/semantic_judge_probe.py +0 -0
  526. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/snapshot_leg_a_eval.py +0 -0
  527. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/stack_correctness_validate.py +0 -0
  528. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/table_retrieval_smoke.py +0 -0
  529. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/train_function_classifier.py +0 -0
  530. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/train_legalbert_function.py +0 -0
  531. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/train_legalbert_modal.py +0 -0
  532. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/typed_rerank_validate.py +0 -0
  533. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/verify_wheel_install.sh +0 -0
  534. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/vllm_extraction_ab.py +0 -0
  535. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/vllm_kg_query_validate.py +0 -0
  536. {rag_wright-0.11.0 → rag_wright-0.12.0}/scripts/vllm_raw_diagnostic.py +0 -0
  537. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/authoring-a-capability/SKILL.md +0 -0
  538. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/building-a-product-backend/SKILL.md +0 -0
  539. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/building-a-product-frontend/SKILL.md +0 -0
  540. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/building-an-ingestion-capability/SKILL.md +0 -0
  541. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/classifier-opportunity-analysis/SKILL.md +0 -0
  542. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/creating-evals/SKILL.md +0 -0
  543. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/laya/SKILL.md +0 -0
  544. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/SKILL.md +0 -0
  545. {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
  546. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/qwen-vllm-modal/scripts/rw_gate.py +0 -0
  547. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/setfit/SKILL.md +0 -0
  548. {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
  549. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/.agents/skills/using-the-rag-wright-engine/SKILL.md +0 -0
  550. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/__init__.py +0 -0
  551. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/__init__.py +0 -0
  552. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/agents.py +0 -0
  553. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/answers.py +0 -0
  554. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/config.py +0 -0
  555. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/discover.py +0 -0
  556. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/documents.py +0 -0
  557. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/ids.py +0 -0
  558. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/invoke.py +0 -0
  559. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/kg.py +0 -0
  560. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/mcp.py +0 -0
  561. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/tracing.py +0 -0
  562. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/usage.py +0 -0
  563. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/api/workspace.py +0 -0
  564. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/__init__.py +0 -0
  565. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/answer_generator.py +0 -0
  566. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/ard.py +0 -0
  567. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/chunk_read.py +0 -0
  568. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/chunk_write.py +0 -0
  569. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/disambiguation.py +0 -0
  570. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/document_parse.py +0 -0
  571. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/document_scope.py +0 -0
  572. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/embedding.py +0 -0
  573. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/embedding_profiles.py +0 -0
  574. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/entity_resolution.py +0 -0
  575. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/fusion.py +0 -0
  576. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/graph_query.py +0 -0
  577. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/graph_storage.py +0 -0
  578. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/hybrid_search.py +0 -0
  579. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/invoke.py +0 -0
  580. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/jev_decision.py +0 -0
  581. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/manifests.py +0 -0
  582. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/parsing.py +0 -0
  583. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/registry.py +0 -0
  584. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/remote_encoders.py +0 -0
  585. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/reranking.py +0 -0
  586. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/retrieval_core.py +0 -0
  587. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/rlm_chunking.py +0 -0
  588. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/rlm_synthesis.py +0 -0
  589. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/scan_quality.py +0 -0
  590. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/sheet_tables.py +0 -0
  591. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/span_relevance_judgment.py +0 -0
  592. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/vision_to_text.py +0 -0
  593. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/capabilities/vlm_ocr.py +0 -0
  594. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/__init__.py +0 -0
  595. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/chunk.py +0 -0
  596. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/evals.py +0 -0
  597. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/extraction.py +0 -0
  598. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/graph.py +0 -0
  599. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/identifiers.py +0 -0
  600. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/ingestion.py +0 -0
  601. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/provenance.py +0 -0
  602. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/contracts/span.py +0 -0
  603. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/corpus/__init__.py +0 -0
  604. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/corpus/canonicalize.py +0 -0
  605. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/corpus/document_parser.py +0 -0
  606. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/corpus/embedded.py +0 -0
  607. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/corpus/http.py +0 -0
  608. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/evals/__init__.py +0 -0
  609. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/evals/gold.py +0 -0
  610. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/evals/langfuse_backend.py +0 -0
  611. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/evals/runner.py +0 -0
  612. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/evals/scorers.py +0 -0
  613. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/harness/__init__.py +0 -0
  614. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/__init__.py +0 -0
  615. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/builder.py +0 -0
  616. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/evaluate.py +0 -0
  617. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/group.py +0 -0
  618. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/layout.py +0 -0
  619. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/segment.py +0 -0
  620. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ingestion/tables.py +0 -0
  621. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/__init__.py +0 -0
  622. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/model_servers.py +0 -0
  623. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/profiles.py +0 -0
  624. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/seam.py +0 -0
  625. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/tag_structured.py +0 -0
  626. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/tracing.py +0 -0
  627. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/usage.py +0 -0
  628. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/models/weights.py +0 -0
  629. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ontology/__init__.py +0 -0
  630. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ontology/pack_schema.py +0 -0
  631. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/ontology/registry.py +0 -0
  632. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/pack_sdk/__init__.py +0 -0
  633. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/__init__.py +0 -0
  634. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/__init__.py +0 -0
  635. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/__init__.py +0 -0
  636. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/assertion_extraction.py +0 -0
  637. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/claim_extraction.py +0 -0
  638. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/compliance_judgment.py +0 -0
  639. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/compliance_store.py +0 -0
  640. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/capabilities/requirement_extraction.py +0 -0
  641. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/invokers.py +0 -0
  642. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/mcp/__init__.py +0 -0
  643. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/mcp/compliance_server.py +0 -0
  644. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/ontology/__init__.py +0 -0
  645. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/ontology/compliance_bridge.ttl +0 -0
  646. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/ontology/loader.py +0 -0
  647. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/ontology/packs/ftc_16cfr255.ttl +0 -0
  648. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/pack.py +0 -0
  649. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/schemas/__init__.py +0 -0
  650. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/schemas/compliance.py +0 -0
  651. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/__init__.py +0 -0
  652. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/claim_extraction/SKILL.md +0 -0
  653. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/claim_extraction/__init__.py +0 -0
  654. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/claim_extraction/template.py +0 -0
  655. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/compliance_judgment/SKILL.md +0 -0
  656. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/generic_compliance_judgment/SKILL.md +0 -0
  657. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/SKILL.md +0 -0
  658. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/__init__.py +0 -0
  659. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/skills/requirement_extraction/template.py +0 -0
  660. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/subgraphs/__init__.py +0 -0
  661. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/subgraphs/compliance_check.py +0 -0
  662. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/subgraphs/compliance_ingestion.py +0 -0
  663. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/compliance/subgraphs/requirement_extraction.py +0 -0
  664. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/__init__.py +0 -0
  665. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/__init__.py +0 -0
  666. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/clause_exception_linking.py +0 -0
  667. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_serve.py +0 -0
  668. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/contract_kg_store.py +0 -0
  669. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/dg_extraction.py +0 -0
  670. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/graph_extraction.py +0 -0
  671. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/highlight_serve.py +0 -0
  672. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/property_boosted_retrieval.py +0 -0
  673. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/query_function_classifier.py +0 -0
  674. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/capabilities/query_understanding.py +0 -0
  675. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/__init__.py +0 -0
  676. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/cuad.py +0 -0
  677. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/cuad_ingestion.py +0 -0
  678. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/edgar.py +0 -0
  679. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/gcs_ingestion.py +0 -0
  680. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/corpus/selection.py +0 -0
  681. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/mcp/__init__.py +0 -0
  682. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/mcp/intra_document_qa_server.py +0 -0
  683. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/mcp/relational_qa_server.py +0 -0
  684. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/mcp/session_store.py +0 -0
  685. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/mcp/typed_property_retrieval_server.py +0 -0
  686. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/__init__.py +0 -0
  687. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/_generated_template_meta.py +0 -0
  688. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/_generated_vocab.py +0 -0
  689. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/clause_template.py +0 -0
  690. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/codegen.py +0 -0
  691. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/contract_bridge.ttl +0 -0
  692. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/contract_taxonomy.py +0 -0
  693. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/derive.py +0 -0
  694. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/loader.py +0 -0
  695. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/ontology/template_introspect.py +0 -0
  696. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/options.py +0 -0
  697. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/pack.py +0 -0
  698. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/__init__.py +0 -0
  699. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/contract_meta.py +0 -0
  700. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/function.py +0 -0
  701. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/function_routing.py +0 -0
  702. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/highlight.py +0 -0
  703. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/jurisdiction.py +0 -0
  704. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/ontology.py +0 -0
  705. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/property.py +0 -0
  706. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/query_intent.py +0 -0
  707. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/schemas/value_match.py +0 -0
  708. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/__init__.py +0 -0
  709. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/corpus_ingest/SKILL.md +0 -0
  710. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/SKILL.md +0 -0
  711. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/extraction_semantic_judge/__init__.py +0 -0
  712. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/guidance/__init__.py +0 -0
  713. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/guidance/chunking.md +0 -0
  714. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/guidance/generation.md +0 -0
  715. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/skills/guidance/relevance.md +0 -0
  716. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/__init__.py +0 -0
  717. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/boundary.py +0 -0
  718. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/clause_function_classifier.py +0 -0
  719. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/clause_kg_extractor.py +0 -0
  720. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/cuad_labels.py +0 -0
  721. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/dim_classifier.py +0 -0
  722. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/dim_fleet.json +0 -0
  723. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/function_classifier.py +0 -0
  724. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/function_families.py +0 -0
  725. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/hybrid_classifier.py +0 -0
  726. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/legalbert_classifier.py +0 -0
  727. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/model_capabilities.py +0 -0
  728. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/new_function_labels.py +0 -0
  729. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/property_extractor.py +0 -0
  730. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/property_grounding.py +0 -0
  731. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/reclassify.py +0 -0
  732. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/residual_candidates.py +0 -0
  733. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/scarce_function_labels.py +0 -0
  734. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/segment.py +0 -0
  735. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/semantic_judge.py +0 -0
  736. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/symbolic_validation.py +0 -0
  737. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/spans/tag_clause_extractor.py +0 -0
  738. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/__init__.py +0 -0
  739. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/async_ingestion.py +0 -0
  740. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/contract_ingestion_pipeline.py +0 -0
  741. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/intra_document_qa.py +0 -0
  742. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/query_constraint_extraction.py +0 -0
  743. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/relational_qa.py +0 -0
  744. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/typed_clause_extraction.py +0 -0
  745. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/contracts/subgraphs/typed_property_retrieval.py +0 -0
  746. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/packs/reference_seam.py +0 -0
  747. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/py.typed +0 -0
  748. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/__init__.py +0 -0
  749. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/generation/SKILL.md +0 -0
  750. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/generation/__init__.py +0 -0
  751. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/rlm/SKILL.md +0 -0
  752. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/rlm/__init__.py +0 -0
  753. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/rlm/agent.py +0 -0
  754. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/span_relevance_judgment/SKILL.md +0 -0
  755. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/vision_to_text/SKILL.md +0 -0
  756. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/skills/vision_to_text/__init__.py +0 -0
  757. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/spans/__init__.py +0 -0
  758. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/spans/page_map.py +0 -0
  759. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/store/__init__.py +0 -0
  760. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/store/arcadedb.py +0 -0
  761. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/store/chunk_text.py +0 -0
  762. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/store/seam.py +0 -0
  763. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/subgraphs/__init__.py +0 -0
  764. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/subgraphs/graph_extraction.py +0 -0
  765. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/subgraphs/observability.py +0 -0
  766. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/subgraphs/scaffold.py +0 -0
  767. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/subgraphs/semantic_chunking.py +0 -0
  768. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/util/__init__.py +0 -0
  769. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/util/concurrent.py +0 -0
  770. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/util/pdfium.py +0 -0
  771. {rag_wright-0.11.0 → rag_wright-0.12.0}/src/rag_wright/util/spacy_model.py +0 -0
  772. {rag_wright-0.11.0 → rag_wright-0.12.0}/tasks.md +0 -0
  773. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/__init__.py +0 -0
  774. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/__init__.py +0 -0
  775. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_agent_chat_model.py +0 -0
  776. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_agent_chat_model_live.py +0 -0
  777. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_answers_exports.py +0 -0
  778. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_api_embedder_ps39.py +0 -0
  779. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_bytes_ingest.py +0 -0
  780. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_capability_reexports.py +0 -0
  781. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_decision_swap_doc_example.py +0 -0
  782. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_discover.py +0 -0
  783. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_documents.py +0 -0
  784. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_drop_workspace.py +0 -0
  785. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_drop_workspace_live.py +0 -0
  786. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_e2e.py +0 -0
  787. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_invoke.py +0 -0
  788. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_kg.py +0 -0
  789. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_mcp.py +0 -0
  790. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_metering_tracing_exports.py +0 -0
  791. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_model_role_export.py +0 -0
  792. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_open_workspace_reconfig.py +0 -0
  793. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_options.py +0 -0
  794. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_pack_sdk.py +0 -0
  795. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_pack_store.py +0 -0
  796. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_pdf_page_count.py +0 -0
  797. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_public_gaps_ps38.py +0 -0
  798. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_tracing_helpers_ps32.py +0 -0
  799. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_usage.py +0 -0
  800. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_workspace.py +0 -0
  801. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/api/test_workspace_models.py +0 -0
  802. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/domain_vocabulary_baseline.json +0 -0
  803. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_doc_references.py +0 -0
  804. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_engine_domain_vocabulary.py +0 -0
  805. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_import_contracts.py +0 -0
  806. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_lock_version.py +0 -0
  807. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_packs_use_store_primitives.py +0 -0
  808. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_pdfium_door.py +0 -0
  809. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/arch/test_shipped_skills.py +0 -0
  810. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/async_helpers.py +0 -0
  811. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/__init__.py +0 -0
  812. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/_fixtures/rlm_probe_skill/SKILL.md +0 -0
  813. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_answer_generator.py +0 -0
  814. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_answer_generator_async.py +0 -0
  815. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_assertion_extraction.py +0 -0
  816. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_authoring_contract.py +0 -0
  817. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_chunk_read.py +0 -0
  818. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_chunk_write.py +0 -0
  819. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_chunking_prompts_neutral.py +0 -0
  820. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_claim_extraction.py +0 -0
  821. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_clause_exception_linking.py +0 -0
  822. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_compliance_judgment.py +0 -0
  823. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_compliance_store.py +0 -0
  824. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_contract_kg_serve.py +0 -0
  825. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_contract_kg_store.py +0 -0
  826. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_contract_kg_store_reads.py +0 -0
  827. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_contract_taxonomy_and_spans.py +0 -0
  828. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_dg_adapter.py +0 -0
  829. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_dg_async.py +0 -0
  830. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_dg_extraction.py +0 -0
  831. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_dg_model_seam.py +0 -0
  832. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_dg_private.py +0 -0
  833. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_disambiguation.py +0 -0
  834. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_document_scope.py +0 -0
  835. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_embedding.py +0 -0
  836. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_embedding_profiles.py +0 -0
  837. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_entity_resolution.py +0 -0
  838. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_entity_rules_plumbing.py +0 -0
  839. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_fusion.py +0 -0
  840. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_graph_extraction.py +0 -0
  841. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_graph_query.py +0 -0
  842. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_graph_storage.py +0 -0
  843. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_highlight_serve.py +0 -0
  844. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_hybrid_search.py +0 -0
  845. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_jev_decision.py +0 -0
  846. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_manifest_validation.py +0 -0
  847. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_manifests.py +0 -0
  848. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_parsing.py +0 -0
  849. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_parties_extraction.py +0 -0
  850. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_property_boosted_retrieval.py +0 -0
  851. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_query_function_classifier.py +0 -0
  852. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_query_understanding.py +0 -0
  853. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_registry.py +0 -0
  854. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_remote_encoders.py +0 -0
  855. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_repair_partition.py +0 -0
  856. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_requirement_extraction.py +0 -0
  857. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_reranking.py +0 -0
  858. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_retrieval_core.py +0 -0
  859. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_rlm_chunking.py +0 -0
  860. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_rlm_chunking_async.py +0 -0
  861. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_rlm_method.py +0 -0
  862. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_rlm_synthesis.py +0 -0
  863. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_runtime_registry.py +0 -0
  864. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_scan_quality.py +0 -0
  865. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_span_relevance_judgment.py +0 -0
  866. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_structural_boundary_discoverer.py +0 -0
  867. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_structural_model_fallback.py +0 -0
  868. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_tag_boundary_discoverer.py +0 -0
  869. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_tiered_ocr.py +0 -0
  870. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/capabilities/test_vlm_ocr.py +0 -0
  871. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/compliance_fakes.py +0 -0
  872. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/conftest.py +0 -0
  873. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/__init__.py +0 -0
  874. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_canonical_source_doc_id.py +0 -0
  875. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_chunk_record.py +0 -0
  876. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_compliance.py +0 -0
  877. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_cuad_highlight_contracts.py +0 -0
  878. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_extraction.py +0 -0
  879. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_function.py +0 -0
  880. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_function_routing.py +0 -0
  881. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_identifiers.py +0 -0
  882. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_ingestion_hooks.py +0 -0
  883. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_jurisdiction.py +0 -0
  884. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_ontology.py +0 -0
  885. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_property.py +0 -0
  886. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_provenance.py +0 -0
  887. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/contracts/test_value_match.py +0 -0
  888. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/__init__.py +0 -0
  889. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/_ooxml_fixtures.py +0 -0
  890. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_canonicalize.py +0 -0
  891. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_cuad.py +0 -0
  892. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_cuad_ingestion.py +0 -0
  893. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_document_parser.py +0 -0
  894. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_edgar.py +0 -0
  895. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_embedded.py +0 -0
  896. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_gcs_ingestion.py +0 -0
  897. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_http.py +0 -0
  898. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_parse_wire2.py +0 -0
  899. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/corpus/test_selection.py +0 -0
  900. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/eval/test_contractnli_judge.py +0 -0
  901. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/eval/test_cuad_highlight_metrics.py +0 -0
  902. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/eval/test_kg_property_rerank.py +0 -0
  903. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/eval/test_nl_to_type_metrics.py +0 -0
  904. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/eval/test_relational_eval.py +0 -0
  905. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/__init__.py +0 -0
  906. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_gold_contracts.py +0 -0
  907. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_gold_import.py +0 -0
  908. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_langfuse_backend.py +0 -0
  909. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_runner.py +0 -0
  910. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_scorer_parity.py +0 -0
  911. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_scorers_a.py +0 -0
  912. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_scorers_b.py +0 -0
  913. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_scorers_c.py +0 -0
  914. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/evals/test_scorers_d.py +0 -0
  915. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/ingestion/segmenter_gold.json +0 -0
  916. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/ingestion/textile_spec_sheet.md +0 -0
  917. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/ingestion/textile_test_report.md +0 -0
  918. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/leg_a_silver/README.md +0 -0
  919. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/leg_a_silver/evidence_snapshot.json +0 -0
  920. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/fixtures/table-bearing-contract.pdf +0 -0
  921. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/foundation/__init__.py +0 -0
  922. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/foundation/test_arcadedb_hybrid.py +0 -0
  923. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/foundation/test_model_seam_structured.py +0 -0
  924. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/__init__.py +0 -0
  925. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_accounting.py +0 -0
  926. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_engine_wiring.py +0 -0
  927. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_live.py +0 -0
  928. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_recorder.py +0 -0
  929. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/harness/test_harness_thinking.py +0 -0
  930. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/__init__.py +0 -0
  931. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_aevaluate.py +0 -0
  932. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_builder.py +0 -0
  933. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_chunk_discoverer_hook.py +0 -0
  934. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_concurrency_ceiling.py +0 -0
  935. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_document_metadata.py +0 -0
  936. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_evaluate.py +0 -0
  937. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_evaluate_labels.py +0 -0
  938. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_layout_segmenter.py +0 -0
  939. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_sheet_continuations.py +0 -0
  940. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_spreadsheet_content.py +0 -0
  941. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_table_rows.py +0 -0
  942. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_tuning.py +0 -0
  943. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_unit_grouper.py +0 -0
  944. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ingestion/test_unit_representative.py +0 -0
  945. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/journey/incidents_domain.py +0 -0
  946. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/journey/incidents_pack.ttl +0 -0
  947. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/journey/test_incidents_journey.py +0 -0
  948. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/journey/test_pack_schema.py +0 -0
  949. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/__init__.py +0 -0
  950. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/test_compliance_server.py +0 -0
  951. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/test_intra_document_qa_server.py +0 -0
  952. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/test_no_model_supplied_tenant.py +0 -0
  953. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/test_relational_qa_server.py +0 -0
  954. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/mcp/test_typed_property_retrieval_server.py +0 -0
  955. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/__init__.py +0 -0
  956. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_async_infra.py +0 -0
  957. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_classifier_heads_load_clean.py +0 -0
  958. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_model_servers.py +0 -0
  959. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_models_dir.py +0 -0
  960. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_no_gemma_default.py +0 -0
  961. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_profile_routing.py +0 -0
  962. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_profile_seam.py +0 -0
  963. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_seam_async.py +0 -0
  964. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_seam_deadline_and_cap.py +0 -0
  965. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_seam_event_loops.py +0 -0
  966. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_seam_retry.py +0 -0
  967. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_seam_stream.py +0 -0
  968. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_serving_seam.py +0 -0
  969. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_serving_wiring.py +0 -0
  970. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_tag_structured.py +0 -0
  971. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_tag_structured_async.py +0 -0
  972. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_tracing.py +0 -0
  973. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/models/test_usage.py +0 -0
  974. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/__init__.py +0 -0
  975. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_clause_template.py +0 -0
  976. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_compliance_ontology_authoritative.py +0 -0
  977. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_derivation.py +0 -0
  978. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_entity_taxonomy.py +0 -0
  979. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_generated_template_meta_in_sync.py +0 -0
  980. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_generated_vocab_in_sync.py +0 -0
  981. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_template_captured_in_ttl.py +0 -0
  982. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/ontology/test_ttl_is_source_of_truth.py +0 -0
  983. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/reference/test_compliance_reference.py +0 -0
  984. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/reference/test_contract_seam.py +0 -0
  985. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/scripts/test_eval_chunking_ab.py +0 -0
  986. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/scripts/test_eval_classifier_ab.py +0 -0
  987. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/scripts/test_fetch_reference_models.py +0 -0
  988. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/scripts/test_generation_robustness_errors.py +0 -0
  989. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/skills/__init__.py +0 -0
  990. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/skills/test_creating_evals_skill_example.py +0 -0
  991. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/skills/test_ingestion_skill_example.py +0 -0
  992. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_boundary.py +0 -0
  993. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_classifier_property_extractor.py +0 -0
  994. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_clause_classifier_tags_0005.py +0 -0
  995. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_clause_function_classifier.py +0 -0
  996. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_clause_function_classifier_async.py +0 -0
  997. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_clause_kg_extractor.py +0 -0
  998. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_clause_kg_extractor_async.py +0 -0
  999. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_dim_classifier.py +0 -0
  1000. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_dim_fleet_live.py +0 -0
  1001. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_function_classifier.py +0 -0
  1002. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_hybrid_classifier.py +0 -0
  1003. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_hybrid_property_extractor.py +0 -0
  1004. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_legalbert_classifier.py +0 -0
  1005. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_model_capabilities.py +0 -0
  1006. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_new_function_labels.py +0 -0
  1007. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_page_map.py +0 -0
  1008. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_property_extractor.py +0 -0
  1009. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_property_grounding.py +0 -0
  1010. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_reclassify.py +0 -0
  1011. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_residual_decision.py +0 -0
  1012. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_scarce_function_labels.py +0 -0
  1013. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_segment.py +0 -0
  1014. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_segmentation_vocab.py +0 -0
  1015. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_semantic_judge.py +0 -0
  1016. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_setfit_clause_adapter.py +0 -0
  1017. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_setfit_probabilities.py +0 -0
  1018. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_span_offsets.py +0 -0
  1019. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_stage_labels_0005.py +0 -0
  1020. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_symbolic_validation.py +0 -0
  1021. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/spans/test_tag_clause_extractor.py +0 -0
  1022. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/__init__.py +0 -0
  1023. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_affiliation_backfill.py +0 -0
  1024. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_clause_kg.py +0 -0
  1025. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_contract.py +0 -0
  1026. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_property.py +0 -0
  1027. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_requirement_sources.py +0 -0
  1028. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_schema.py +0 -0
  1029. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_arcadedb_span.py +0 -0
  1030. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_chunk_text.py +0 -0
  1031. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_concurrent_writes.py +0 -0
  1032. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_contract_kg_store_live.py +0 -0
  1033. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_document_metadata_live.py +0 -0
  1034. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_document_scope.py +0 -0
  1035. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_engine_domain_neutral.py +0 -0
  1036. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_entities_by_name.py +0 -0
  1037. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_kg_edges.py +0 -0
  1038. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_kg_mutations.py +0 -0
  1039. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_kg_read.py +0 -0
  1040. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_kg_write.py +0 -0
  1041. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_neutral_schema.py +0 -0
  1042. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_store_create_flag.py +0 -0
  1043. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/store/test_write_graph_idempotent.py +0 -0
  1044. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/__init__.py +0 -0
  1045. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_async_ingestion.py +0 -0
  1046. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_chunk7_structure_carry.py +0 -0
  1047. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_clause_results.py +0 -0
  1048. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_compliance_check.py +0 -0
  1049. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_compliance_ingestion.py +0 -0
  1050. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_contract_ingestion_pipeline.py +0 -0
  1051. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_contract_ingestion_pipeline_async.py +0 -0
  1052. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_contract_ingestion_pipeline_graph_async.py +0 -0
  1053. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_graph_extraction.py +0 -0
  1054. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_ingest_knobs.py +0 -0
  1055. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_ingest_segment_classify.py +0 -0
  1056. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_intra_document_qa.py +0 -0
  1057. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_observability.py +0 -0
  1058. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_partial_entry_contract.py +0 -0
  1059. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_query_constraint_extraction.py +0 -0
  1060. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_relational_qa.py +0 -0
  1061. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_requirement_extraction.py +0 -0
  1062. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_scaffold.py +0 -0
  1063. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_semantic_chunking.py +0 -0
  1064. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_typed_clause_extraction.py +0 -0
  1065. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/subgraphs/test_typed_property_retrieval.py +0 -0
  1066. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/test_backfill_clause_span_id.py +0 -0
  1067. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/test_dg_model_ab.py +0 -0
  1068. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/test_populate_clause_kg.py +0 -0
  1069. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/test_populate_entity_graph.py +0 -0
  1070. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/util/__init__.py +0 -0
  1071. {rag_wright-0.11.0 → rag_wright-0.12.0}/tests/util/test_concurrent.py +0 -0
  1072. {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** -- we called it `AgentDefinition`, carrying the
165
- tool surface, the planning classification, the worker roster and the context type. Four declared facts, and
166
- **the substrate derives everything else**.
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
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.12.0"
3
+ }
@@ -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-14): PS-32 done: the agent harness is the engine's third public tier `rag_wright.harness`**
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.11.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`. See the package docstring.
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: `run-contract.md` obligation 1 requires a run to outlive the view that started it, so it is returned rather than held in memory, and it is what `resume_run` addresses.
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 (T-5a.15).
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 (`AR-16`).
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 until T-5a.12q. That cost a live run `compliance_worker` 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.
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 (`AgentContext` keeps typed ids, a user id and `for_tenant`).
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 `AR-6` placed here 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 the route that is structural -- `tenant: TenantDep` is a per-request dependency and the product's own `for_tenant` rule runs in the handler body -- which is why the door is still impossible to forget rather than merely documented.
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 (`run-contract.md` obligation 1).
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** (T-5a.4b): 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.
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** (`AR-12`, T-5a.10). 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.
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 `AR-18`'s cards have nothing to index on. Two stream modes are requested, so langgraph yields **3-tuples** rather than 2 — verified, not assumed.
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 (`AR-12`).
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 matter's (T-5a.4c-iii).
169
+ Where a run got to, by its id alone — or `None` if it is not this scope's.
170
170
 
171
- **`run-contract.md` obligation 1, 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.
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 matter's run, and a run id that was never started. Not by comparing afterwards: the thread id is derived from the workspace, so another matter'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.
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, **scoped to its matter**.
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 T-2.4d closed on the jobs route, where a UUID in a URL was the whole access control and anybody holding a job id read its result across customers.
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 workspace is part of the key rather than a comparison somebody must remember afterwards. Another matter'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.
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 matter.
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 our OpenRouter configuration (T-5a.4a-ii found that `init_chat_model` silently ignores the profile).
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.** `run-contract.md` obligation 1 says a run outlives the view that started it, and an in-memory saver does not outlive the process. A durable checkpointer is T-5a.4c's business, where re-attaching to a run by id is the requirement that forces it; passing one here is how that lands.
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 T-5a.12 does and which `start_run` refuses without the schema.
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 T-5a.12b 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.
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 (T-7.58).** 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.
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 (`operations.usage.AgentRunAccounting`). `None` disables recording without disabling the run.
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
- **No `ask_the_user` in any worker's tools**, and that absence is the mechanism (`AR-16`): a prompt saying "do not ask" is a suggestion; a tool the worker was never given is a fact.
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 matter's data.
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 (T-5a.15b).
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 (T-7.58).** 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.
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 matter, run once per document.
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 matter's documents as files.
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 `docs/api/harness.md`, and the `building-an-agent-harness` skill is the practice behind it.
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.