loom-kernel 2.4.0__tar.gz → 2.6.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 (1468) hide show
  1. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/CHANGELOG.md +61 -0
  2. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/PKG-INFO +3 -1
  3. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/ai/artifacts.md +10 -2
  4. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/ai/providers.md +36 -2
  5. loom_kernel-2.6.0/docs/architecture/clean-architecture.md +44 -0
  6. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/etl/pipelines.md +11 -0
  7. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/guides/etl.md +11 -0
  8. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/rest/cache.md +14 -2
  9. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/pyproject.toml +6 -1
  10. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/abc.py +16 -0
  11. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/_a2a.py +79 -0
  12. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_capabilities.py +14 -10
  13. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_engine.py +2 -0
  14. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_events.py +5 -0
  15. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_instructions.py +29 -12
  16. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_mcp.py +28 -13
  17. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/_models.py +137 -0
  18. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/extras/__init__.py +8 -0
  19. loom_kernel-2.4.0/src/loom/ai/engines/pydantic_ai/_a2a.py → loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/extras/a2a.py +23 -64
  20. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/extras/handlebars.py +31 -0
  21. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/extras/mcp.py +8 -0
  22. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/extras/skills.py +7 -0
  23. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/providers/__init__.py +9 -0
  24. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/providers/_shared.py +58 -0
  25. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/providers/anthropic.py +18 -0
  26. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/providers/bedrock.py +24 -0
  27. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/providers/gateway.py +17 -0
  28. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/providers/openai.py +18 -0
  29. loom_kernel-2.6.0/src/loom/ai/engines/pydantic_ai/providers/typesafe.py +31 -0
  30. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/errors.py +26 -0
  31. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/fastapi/response.py +3 -2
  32. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/registry.py +11 -7
  33. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/runtime/_handle.py +1 -0
  34. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/runtime/_lifecycle.py +1 -0
  35. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/__init__.py +2 -0
  36. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/abc/config.py +12 -2
  37. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/gateway.py +21 -10
  38. loom_kernel-2.6.0/src/loom/core/cache/memory.py +174 -0
  39. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/serializer.py +0 -3
  40. loom_kernel-2.6.0/src/loom/core/config/_boto3.py +22 -0
  41. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/_resolver_utils.py +36 -0
  42. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/secrets.py +4 -11
  43. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/ssm.py +2 -11
  44. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/runtime.py +2 -12
  45. loom_kernel-2.6.0/src/loom/core/plugins/optional.py +66 -0
  46. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/checkpoint/_backends/_polars.py +23 -36
  47. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/checkpoint/_cleaners.py +4 -22
  48. loom_kernel-2.6.0/src/loom/etl/checkpoint/_options.py +128 -0
  49. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/checkpoint/_store.py +12 -2
  50. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/runner/_wiring.py +13 -0
  51. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/testing/agents.py +3 -1
  52. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/testing/runner.py +12 -1
  53. loom_kernel-2.6.0/tests/helpers/extras.py +50 -0
  54. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_a2a_auth_wiring.py +2 -1
  55. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_a2a_capability.py +8 -6
  56. loom_kernel-2.6.0/tests/unit/ai/engines/test_missing_extras.py +69 -0
  57. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_binding.py +65 -2
  58. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_errors.py +2 -2
  59. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_instructions.py +4 -4
  60. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_limits.py +1 -1
  61. loom_kernel-2.6.0/tests/unit/ai/engines/test_pydantic_ai_provider_details.py +90 -0
  62. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/runtime/test_agent_handle.py +40 -4
  63. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_skills_extra.py +2 -2
  64. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_bootstrap/test_bootstrap_resolvers.py +3 -4
  65. loom_kernel-2.6.0/tests/unit/core/cache/test_bounded_memory.py +201 -0
  66. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/test_default_resolvers.py +4 -5
  67. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/test_secrets.py +3 -1
  68. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/observability/test_runtime.py +7 -15
  69. loom_kernel-2.6.0/tests/unit/core/plugins/test_optional.py +38 -0
  70. loom_kernel-2.6.0/tests/unit/etl/checkpoint/backends/test_checkpoint_polars.py +119 -0
  71. loom_kernel-2.6.0/tests/unit/etl/checkpoint/test_cleaners.py +179 -0
  72. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/storage/test_backend_factory.py +38 -0
  73. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_runner_resolvers.py +3 -4
  74. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_fastapi_auto_resolvers.py +3 -4
  75. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_runner_resolvers.py +4 -6
  76. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/uv.lock +50 -18
  77. loom_kernel-2.4.0/docs/architecture/clean-architecture.md +0 -10
  78. loom_kernel-2.4.0/src/loom/ai/engines/pydantic_ai/_models.py +0 -210
  79. loom_kernel-2.4.0/tests/unit/etl/checkpoint/backends/test_checkpoint_polars.py +0 -33
  80. loom_kernel-2.4.0/tests/unit/etl/checkpoint/test_cleaners.py +0 -81
  81. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/.github/workflows/ci-main.yml +0 -0
  82. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/.github/workflows/ci-pr.yml +0 -0
  83. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/.github/workflows/docs.yml +0 -0
  84. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/.github/workflows/release.yml +0 -0
  85. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/.gitignore +0 -0
  86. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/.pre-commit-config.yaml +0 -0
  87. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/.readthedocs.yaml +0 -0
  88. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/LICENSE +0 -0
  89. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/Makefile +0 -0
  90. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/README.md +0 -0
  91. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/codecov.yml +0 -0
  92. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docker-compose.local.yaml +0 -0
  93. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/_static/.gitkeep +0 -0
  94. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/_static/custom.css +0 -0
  95. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/_static/logo-transparent.png +0 -0
  96. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/_static/logo.svg +0 -0
  97. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/ai/a2a.md +0 -0
  98. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/ai/mcp.md +0 -0
  99. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/ai/observability.md +0 -0
  100. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/ai/overview.md +0 -0
  101. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/architecture/adr/README.md +0 -0
  102. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/architecture/overview.md +0 -0
  103. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/conf.py +0 -0
  104. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/etl/examples.md +0 -0
  105. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/etl/testing.md +0 -0
  106. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/examples-repo/index.md +0 -0
  107. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/getting-started/etl.md +0 -0
  108. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/getting-started/rest.md +0 -0
  109. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/getting-started/streaming.md +0 -0
  110. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/guides/autocrud.md +0 -0
  111. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/guides/celery.md +0 -0
  112. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/guides/fake-repo-examples.md +0 -0
  113. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/guides/quickstart.md +0 -0
  114. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/guides/use-case-dsl.md +0 -0
  115. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/index.rst +0 -0
  116. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/overview.md +0 -0
  117. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/reference/api/ai.rst +0 -0
  118. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/reference/api/core.rst +0 -0
  119. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/reference/api/etl.rst +0 -0
  120. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/reference/api/repository.rst +0 -0
  121. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/reference/api/rest.rst +0 -0
  122. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/reference/api/streaming.rst +0 -0
  123. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/reference/api/testing.rst +0 -0
  124. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/reference/index.rst +0 -0
  125. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/requirements.txt +0 -0
  126. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/rest/autocrud.md +0 -0
  127. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/rest/celery.md +0 -0
  128. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/rest/examples.md +0 -0
  129. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/rest/identity.md +0 -0
  130. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/rest/persistence-backends.md +0 -0
  131. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/rest/sql.md +0 -0
  132. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/rest/testing.md +0 -0
  133. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/rest/use-case-dsl.md +0 -0
  134. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/streaming/bytewax.md +0 -0
  135. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/streaming/delivery.md +0 -0
  136. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/docs/streaming/tracing.md +0 -0
  137. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/scripts/ci/merge_test_results.py +0 -0
  138. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/scripts/release/README.md +0 -0
  139. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/sonar-project.properties +0 -0
  140. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/__init__.py +0 -0
  141. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/__init__.py +0 -0
  142. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/_concurrency.py +0 -0
  143. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/_filters.py +0 -0
  144. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/_roles.py +0 -0
  145. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/_startup.py +0 -0
  146. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/_transport.py +0 -0
  147. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/_usecase.py +0 -0
  148. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/a2a/__init__.py +0 -0
  149. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/a2a/_binding.py +0 -0
  150. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/a2a/_handlers.py +0 -0
  151. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/a2a/_rpc.py +0 -0
  152. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/a2a/card.py +0 -0
  153. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/a2a/events.py +0 -0
  154. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/a2a/server.py +0 -0
  155. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/__init__.py +0 -0
  156. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/_compiler.py +0 -0
  157. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/_plan.py +0 -0
  158. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/phases/__init__.py +0 -0
  159. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/phases/_capabilities.py +0 -0
  160. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/phases/_conversation.py +0 -0
  161. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/phases/_feedable.py +0 -0
  162. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/phases/_hook.py +0 -0
  163. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/phases/_instructions.py +0 -0
  164. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/phases/_limits.py +0 -0
  165. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/phases/_model_role.py +0 -0
  166. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/phases/_output.py +0 -0
  167. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/compiler/phases/_state.py +0 -0
  168. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/config.py +0 -0
  169. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/declarative/__init__.py +0 -0
  170. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/declarative/_envelope.py +0 -0
  171. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/declarative/_schema.py +0 -0
  172. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/declarative/_v1.py +0 -0
  173. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/declarative/schemas/agent-spec-v1.schema.json +0 -0
  174. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/describe.py +0 -0
  175. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/__init__.py +0 -0
  176. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/__init__.py +0 -0
  177. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_errors.py +0 -0
  178. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_escape.py +0 -0
  179. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_guards.py +0 -0
  180. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_history.py +0 -0
  181. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_limits.py +0 -0
  182. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_native.py +0 -0
  183. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_output.py +0 -0
  184. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_returns.py +0 -0
  185. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_schemas.py +0 -0
  186. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/_spec.py +0 -0
  187. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/engines/pydantic_ai/provider.py +0 -0
  188. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/fastapi/__init__.py +0 -0
  189. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/fastapi/endpoints.py +0 -0
  190. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/fastapi/streaming.py +0 -0
  191. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/inference.py +0 -0
  192. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/remote_auth.py +0 -0
  193. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/runtime/__init__.py +0 -0
  194. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/runtime/_bounded.py +0 -0
  195. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/runtime/_chain.py +0 -0
  196. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/runtime/_conversation.py +0 -0
  197. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/runtime/_grants.py +0 -0
  198. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/runtime/_health.py +0 -0
  199. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/runtime/_hooks.py +0 -0
  200. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/runtime/_limits.py +0 -0
  201. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/runtime/_mcp.py +0 -0
  202. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/validate/__init__.py +0 -0
  203. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/ai/validate/__main__.py +0 -0
  204. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/celery/__init__.py +0 -0
  205. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/celery/auto.py +0 -0
  206. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/celery/bootstrap.py +0 -0
  207. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/celery/config.py +0 -0
  208. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/celery/constants.py +0 -0
  209. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/celery/runner.py +0 -0
  210. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/celery/service.py +0 -0
  211. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/async_bridge.py +0 -0
  212. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/backend/__init__.py +0 -0
  213. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/backend/core_model.py +0 -0
  214. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/backend/protocol.py +0 -0
  215. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/backend/sqlalchemy.py +0 -0
  216. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/bootstrap/__init__.py +0 -0
  217. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/bootstrap/bootstrap.py +0 -0
  218. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/bootstrap/kernel.py +0 -0
  219. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/_batching.py +0 -0
  220. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/_single_flight.py +0 -0
  221. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/abc/__init__.py +0 -0
  222. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/abc/backend.py +0 -0
  223. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/abc/dependency.py +0 -0
  224. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/calls.py +0 -0
  225. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/codec.py +0 -0
  226. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/decorators.py +0 -0
  227. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/dependency.py +0 -0
  228. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/errors.py +0 -0
  229. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/keys.py +0 -0
  230. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/repository.py +0 -0
  231. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/result_codec.py +0 -0
  232. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/cache/wiring.py +0 -0
  233. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/command/__init__.py +0 -0
  234. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/command/adapter.py +0 -0
  235. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/command/base.py +0 -0
  236. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/command/field.py +0 -0
  237. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/command/introspection.py +0 -0
  238. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/compiler.py +0 -0
  239. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/__init__.py +0 -0
  240. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/_includes.py +0 -0
  241. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/binder.py +0 -0
  242. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/configurable.py +0 -0
  243. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/context.py +0 -0
  244. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/errors.py +0 -0
  245. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/keys.py +0 -0
  246. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/loader.py +0 -0
  247. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/model.py +0 -0
  248. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/observability.py +0 -0
  249. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/config/resolver.py +0 -0
  250. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/contracts/__init__.py +0 -0
  251. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/contracts/manifest.py +0 -0
  252. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/di/__init__.py +0 -0
  253. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/di/container.py +0 -0
  254. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/di/scope.py +0 -0
  255. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/discovery/__init__.py +0 -0
  256. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/discovery/_utils.py +0 -0
  257. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/discovery/base.py +0 -0
  258. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/discovery/interfaces.py +0 -0
  259. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/discovery/manifest.py +0 -0
  260. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/discovery/modules.py +0 -0
  261. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/engine/__init__.py +0 -0
  262. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/engine/compilable.py +0 -0
  263. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/engine/compiler.py +0 -0
  264. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/engine/events.py +0 -0
  265. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/engine/executor.py +0 -0
  266. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/engine/metrics.py +0 -0
  267. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/engine/plan.py +0 -0
  268. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/engine/post_commit.py +0 -0
  269. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/errors/__init__.py +0 -0
  270. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/errors/codes.py +0 -0
  271. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/errors/errors.py +0 -0
  272. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/expr/__init__.py +0 -0
  273. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/expr/eval.py +0 -0
  274. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/expr/nodes.py +0 -0
  275. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/expr/refs.py +0 -0
  276. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/identity/__init__.py +0 -0
  277. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/identity/context.py +0 -0
  278. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/identity/identity.py +0 -0
  279. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/identity/issuer.py +0 -0
  280. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/identity/wire.py +0 -0
  281. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/introspection/__init__.py +0 -0
  282. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/introspection/base.py +0 -0
  283. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/introspection/describe.py +0 -0
  284. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/job/__init__.py +0 -0
  285. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/job/callback.py +0 -0
  286. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/job/context.py +0 -0
  287. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/job/handle.py +0 -0
  288. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/job/job.py +0 -0
  289. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/job/service.py +0 -0
  290. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/logger/__init__.py +0 -0
  291. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/logger/abc.py +0 -0
  292. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/logger/config.py +0 -0
  293. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/logger/registry.py +0 -0
  294. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/logger/structlogger.py +0 -0
  295. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/__init__.py +0 -0
  296. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/_loom_type.py +0 -0
  297. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/base.py +0 -0
  298. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/convert.py +0 -0
  299. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/enums.py +0 -0
  300. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/field.py +0 -0
  301. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/introspection.py +0 -0
  302. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/projection.py +0 -0
  303. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/relation.py +0 -0
  304. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/struct.py +0 -0
  305. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/timestamped.py +0 -0
  306. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/types.py +0 -0
  307. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/model/types_postgres.py +0 -0
  308. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/__init__.py +0 -0
  309. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/config.py +0 -0
  310. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/event.py +0 -0
  311. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/observer/__init__.py +0 -0
  312. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/observer/noop.py +0 -0
  313. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/observer/otel.py +0 -0
  314. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/observer/structlog.py +0 -0
  315. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/otel_ids.py +0 -0
  316. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/protocol.py +0 -0
  317. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/span.py +0 -0
  318. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/observability/topology.py +0 -0
  319. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/persistence/__init__.py +0 -0
  320. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/persistence/abc.py +0 -0
  321. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/persistence/none.py +0 -0
  322. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/persistence/registry.py +0 -0
  323. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/plugins/__init__.py +0 -0
  324. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/plugins/entrypoints.py +0 -0
  325. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/projection/__init__.py +0 -0
  326. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/projection/loaders.py +0 -0
  327. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/projection/runtime.py +0 -0
  328. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/__init__.py +0 -0
  329. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/abc/__init__.py +0 -0
  330. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/abc/cursor.py +0 -0
  331. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/abc/errors.py +0 -0
  332. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/abc/query.py +0 -0
  333. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/abc/query_compiler.py +0 -0
  334. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/abc/repo_for.py +0 -0
  335. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/abc/repository.py +0 -0
  336. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/abc/session_scope.py +0 -0
  337. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/dynamodb/__init__.py +0 -0
  338. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/dynamodb/backend.py +0 -0
  339. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/dynamodb/registry.py +0 -0
  340. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/dynamodb/repository.py +0 -0
  341. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/dynamodb/uow.py +0 -0
  342. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/mongo/__init__.py +0 -0
  343. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/mongo/backend.py +0 -0
  344. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/mongo/ids.py +0 -0
  345. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/mongo/query_compiler.py +0 -0
  346. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/mongo/registry.py +0 -0
  347. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/mongo/repository.py +0 -0
  348. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/mongo/uow.py +0 -0
  349. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/mongo/values.py +0 -0
  350. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/mutation.py +0 -0
  351. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/registration.py +0 -0
  352. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/registry.py +0 -0
  353. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/__init__.py +0 -0
  354. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/backend.py +0 -0
  355. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/integrity.py +0 -0
  356. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/loaders.py +0 -0
  357. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/mixins.py +0 -0
  358. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/model.py +0 -0
  359. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/profile_loader.py +0 -0
  360. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/projection.py +0 -0
  361. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/query_compiler/__init__.py +0 -0
  362. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/query_compiler/compiler.py +0 -0
  363. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/query_compiler/cursor.py +0 -0
  364. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/query_compiler/errors.py +0 -0
  365. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/query_compiler/filters.py +0 -0
  366. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/query_compiler/ordering.py +0 -0
  367. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/query_compiler/paths.py +0 -0
  368. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/query_compiler/subquery.py +0 -0
  369. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/registry.py +0 -0
  370. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/repository.py +0 -0
  371. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/session_manager.py +0 -0
  372. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/transactional.py +0 -0
  373. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/repository/sqlalchemy/uow.py +0 -0
  374. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/response/__init__.py +0 -0
  375. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/response/base.py +0 -0
  376. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/routing/__init__.py +0 -0
  377. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/routing/ref.py +0 -0
  378. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/routing/resolver.py +0 -0
  379. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/runner.py +0 -0
  380. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/schema/__init__.py +0 -0
  381. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/schema/schema_mode.py +0 -0
  382. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/__init__.py +0 -0
  383. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/abc/__init__.py +0 -0
  384. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/abc/contracts.py +0 -0
  385. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/abc/errors.py +0 -0
  386. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/caller_bound.py +0 -0
  387. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/clickhouse/__init__.py +0 -0
  388. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/clickhouse/_client.py +0 -0
  389. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/clickhouse/executor.py +0 -0
  390. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/clickhouse/registry.py +0 -0
  391. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/config.py +0 -0
  392. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/roles.py +0 -0
  393. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/sql/service.py +0 -0
  394. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/symbols.py +0 -0
  395. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/tracing/__init__.py +0 -0
  396. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/tracing/context.py +0 -0
  397. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/transaction.py +0 -0
  398. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/transport/__init__.py +0 -0
  399. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/transport/adapter.py +0 -0
  400. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/uow/__init__.py +0 -0
  401. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/uow/abc.py +0 -0
  402. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/uow/context.py +0 -0
  403. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/__init__.py +0 -0
  404. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/_predicates.py +0 -0
  405. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/agent_markers.py +0 -0
  406. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/compute.py +0 -0
  407. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/constants.py +0 -0
  408. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/factory.py +0 -0
  409. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/field_ref.py +0 -0
  410. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/invoker.py +0 -0
  411. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/keys.py +0 -0
  412. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/markers.py +0 -0
  413. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/mcp_markers.py +0 -0
  414. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/registry.py +0 -0
  415. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/rule.py +0 -0
  416. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/core/use_case/use_case.py +0 -0
  417. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/__init__.py +0 -0
  418. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/__init__.py +0 -0
  419. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_format_registry.py +0 -0
  420. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_historify/__init__.py +0 -0
  421. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_historify/_common.py +0 -0
  422. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_historify/_log.py +0 -0
  423. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_historify/_ops.py +0 -0
  424. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_historify/_snapshot.py +0 -0
  425. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_historify/_transform.py +0 -0
  426. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_merge.py +0 -0
  427. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_path_template.py +0 -0
  428. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_predicate.py +0 -0
  429. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_schema_aligner/__init__.py +0 -0
  430. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_schema_aligner/_aligner.py +0 -0
  431. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_schema_aligner/_policy.py +0 -0
  432. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/_write_policy.py +0 -0
  433. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/polars/__init__.py +0 -0
  434. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/polars/_dtype.py +0 -0
  435. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/polars/_file_writer.py +0 -0
  436. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/polars/_historify.py +0 -0
  437. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/polars/_predicate.py +0 -0
  438. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/polars/_reader.py +0 -0
  439. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/polars/_schema.py +0 -0
  440. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/polars/_schema_aligner.py +0 -0
  441. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/polars/_streaming.py +0 -0
  442. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/polars/_writer.py +0 -0
  443. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/polars/provider.py +0 -0
  444. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/spark/__init__.py +0 -0
  445. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/spark/_dtype.py +0 -0
  446. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/spark/_historify.py +0 -0
  447. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/spark/_reader.py +0 -0
  448. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/spark/_schema.py +0 -0
  449. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/spark/_schema_aligner.py +0 -0
  450. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/spark/_writer.py +0 -0
  451. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/backends/spark/provider.py +0 -0
  452. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/checkpoint/__init__.py +0 -0
  453. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/checkpoint/_backends/_spark.py +0 -0
  454. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/checkpoint/_paths.py +0 -0
  455. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/checkpoint/_scope.py +0 -0
  456. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/compiler/__init__.py +0 -0
  457. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/compiler/_binding.py +0 -0
  458. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/compiler/_compiler.py +0 -0
  459. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/compiler/_errors.py +0 -0
  460. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/compiler/_plan.py +0 -0
  461. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/compiler/_validators.py +0 -0
  462. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/compiler/_validators_plan.py +0 -0
  463. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/compiler/_validators_step.py +0 -0
  464. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/__init__.py +0 -0
  465. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/_format.py +0 -0
  466. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/_read_options.py +0 -0
  467. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/_utils.py +0 -0
  468. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/_write_options.py +0 -0
  469. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/expr/__init__.py +0 -0
  470. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/expr/_params.py +0 -0
  471. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/expr/_predicate.py +0 -0
  472. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/expr/_predicate_dialect.py +0 -0
  473. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/expr/_refs.py +0 -0
  474. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/source/__init__.py +0 -0
  475. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/source/_from.py +0 -0
  476. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/source/_from_clickhouse.py +0 -0
  477. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/source/_from_dynamodb.py +0 -0
  478. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/source/_from_mongo.py +0 -0
  479. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/source/_specs.py +0 -0
  480. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/__init__.py +0 -0
  481. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_client.py +0 -0
  482. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_file.py +0 -0
  483. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_history/__init__.py +0 -0
  484. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_history/_builder.py +0 -0
  485. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_history/_enums.py +0 -0
  486. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_history/_errors.py +0 -0
  487. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_history/_report.py +0 -0
  488. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_history/_spec.py +0 -0
  489. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_into.py +0 -0
  490. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_schema_mode.py +0 -0
  491. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_table.py +0 -0
  492. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/declarative/target/_temp.py +0 -0
  493. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/executor/__init__.py +0 -0
  494. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/executor/_dispatcher.py +0 -0
  495. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/executor/_executor.py +0 -0
  496. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/__init__.py +0 -0
  497. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/_registry.py +0 -0
  498. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/sources/__init__.py +0 -0
  499. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/sources/_clickhouse.py +0 -0
  500. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/sources/_dynamodb.py +0 -0
  501. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/sources/_dynamodb_items.py +0 -0
  502. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/sources/_dynamodb_predicate.py +0 -0
  503. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/sources/_mongo.py +0 -0
  504. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/sources/_mongo_batch.py +0 -0
  505. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/sources/_mongo_bson.py +0 -0
  506. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/sources/_mongo_predicate.py +0 -0
  507. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/sources/_serialization.py +0 -0
  508. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/targets/__init__.py +0 -0
  509. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/io/targets/_clickhouse.py +0 -0
  510. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/lineage/__init__.py +0 -0
  511. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/lineage/_config.py +0 -0
  512. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/lineage/_observer.py +0 -0
  513. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/lineage/_records.py +0 -0
  514. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/lineage/sinks/__init__.py +0 -0
  515. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/lineage/sinks/_protocol.py +0 -0
  516. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/lineage/sinks/_table.py +0 -0
  517. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/lineage/sinks/_writer.py +0 -0
  518. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/maintenance/__init__.py +0 -0
  519. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/maintenance/_builder.py +0 -0
  520. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/maintenance/_ops.py +0 -0
  521. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/maintenance/_protocol.py +0 -0
  522. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/maintenance/_runner.py +0 -0
  523. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/maintenance/_step.py +0 -0
  524. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/maintenance/backends/__init__.py +0 -0
  525. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/maintenance/backends/_delta_rs.py +0 -0
  526. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/pipeline/__init__.py +0 -0
  527. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/pipeline/_generics.py +0 -0
  528. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/pipeline/_params.py +0 -0
  529. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/pipeline/_pipeline.py +0 -0
  530. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/pipeline/_process.py +0 -0
  531. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/pipeline/_sql.py +0 -0
  532. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/pipeline/_step.py +0 -0
  533. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/pipeline/_step_client.py +0 -0
  534. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/pipeline/_step_sql.py +0 -0
  535. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/runner/__init__.py +0 -0
  536. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/runner/_providers.py +0 -0
  537. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/runner/config_loader.py +0 -0
  538. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/runner/core.py +0 -0
  539. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/runner/errors.py +0 -0
  540. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/runner/filtering.py +0 -0
  541. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/runtime/__init__.py +0 -0
  542. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/runtime/contracts.py +0 -0
  543. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/schema/__init__.py +0 -0
  544. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/schema/_contract.py +0 -0
  545. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/schema/_schema.py +0 -0
  546. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/storage/__init__.py +0 -0
  547. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/storage/_config.py +0 -0
  548. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/storage/_file_locator.py +0 -0
  549. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/storage/_locator.py +0 -0
  550. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/storage/routing.py +0 -0
  551. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/testing/__init__.py +0 -0
  552. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/testing/_result.py +0 -0
  553. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/testing/_runners.py +0 -0
  554. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/testing/_scenario.py +0 -0
  555. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/testing/_stubs.py +0 -0
  556. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/etl/testing/spark.py +0 -0
  557. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/__init__.py +0 -0
  558. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/_async.py +0 -0
  559. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/_config.py +0 -0
  560. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/_ctx.py +0 -0
  561. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/_flow_yaml.py +0 -0
  562. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/_meta.py +0 -0
  563. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/_placeholders.py +0 -0
  564. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/_summary.py +0 -0
  565. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/deploy/__init__.py +0 -0
  566. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/deploy/_discovery.py +0 -0
  567. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/deploy/_schedule.py +0 -0
  568. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/deploy/_yaml_etls.py +0 -0
  569. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/deploy/entrypoint.py +0 -0
  570. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/__init__.py +0 -0
  571. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_assemble.py +0 -0
  572. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_backfill.py +0 -0
  573. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_backfill_body.py +0 -0
  574. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_body.py +0 -0
  575. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_common.py +0 -0
  576. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_factory.py +0 -0
  577. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_hooks.py +0 -0
  578. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_maintenance.py +0 -0
  579. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_run_name.py +0 -0
  580. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_runtime.py +0 -0
  581. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_signature.py +0 -0
  582. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/flow/_stages.py +0 -0
  583. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/manifest/__init__.py +0 -0
  584. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/manifest/_model.py +0 -0
  585. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/manifest/_s3.py +0 -0
  586. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/manifest/_store.py +0 -0
  587. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/notify/__init__.py +0 -0
  588. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/notify/_event.py +0 -0
  589. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/notify/_factory.py +0 -0
  590. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/notify/_port.py +0 -0
  591. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/notify/_slack.py +0 -0
  592. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/observer/__init__.py +0 -0
  593. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/observer/_flow.py +0 -0
  594. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/observer/_logging_bridge.py +0 -0
  595. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/observer/_manifest.py +0 -0
  596. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prefect/observer/_task_run.py +0 -0
  597. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prometheus/__init__.py +0 -0
  598. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prometheus/_instruments.py +0 -0
  599. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prometheus/adapter.py +0 -0
  600. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prometheus/kafka.py +0 -0
  601. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prometheus/lifecycle.py +0 -0
  602. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/prometheus/middleware.py +0 -0
  603. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/py.typed +0 -0
  604. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/__init__.py +0 -0
  605. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/_body.py +0 -0
  606. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/adapter.py +0 -0
  607. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/auth/__init__.py +0 -0
  608. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/auth/abc.py +0 -0
  609. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/auth/config.py +0 -0
  610. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/auth/jwt.py +0 -0
  611. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/auth/middleware.py +0 -0
  612. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/autocrud.py +0 -0
  613. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/compiler.py +0 -0
  614. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/config.py +0 -0
  615. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/constants.py +0 -0
  616. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/cors.py +0 -0
  617. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/errors.py +0 -0
  618. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/fastapi/__init__.py +0 -0
  619. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/fastapi/_errors.py +0 -0
  620. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/fastapi/_exclusions.py +0 -0
  621. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/fastapi/app.py +0 -0
  622. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/fastapi/auto.py +0 -0
  623. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/fastapi/health.py +0 -0
  624. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/fastapi/openapi.py +0 -0
  625. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/fastapi/response.py +0 -0
  626. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/fastapi/router_runtime.py +0 -0
  627. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/fastapi/sql.py +0 -0
  628. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/middleware.py +0 -0
  629. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/model.py +0 -0
  630. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/rest/rest_adapter.py +0 -0
  631. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/__init__.py +0 -0
  632. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/__init__.py +0 -0
  633. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/_adapter.py +0 -0
  634. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/_batch_spans.py +0 -0
  635. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/_commit_tracker.py +0 -0
  636. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/_dlq.py +0 -0
  637. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/_error_boundary.py +0 -0
  638. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/_errors.py +0 -0
  639. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/_operators.py +0 -0
  640. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/_resource_manager.py +0 -0
  641. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/_runtime_io.py +0 -0
  642. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/_sink_registry.py +0 -0
  643. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/handlers/__init__.py +0 -0
  644. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/handlers/_shared.py +0 -0
  645. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/handlers/boundary.py +0 -0
  646. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/handlers/dispatcher.py +0 -0
  647. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/handlers/routing.py +0 -0
  648. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/handlers/scopes.py +0 -0
  649. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/handlers/shapes.py +0 -0
  650. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/handlers/steps.py +0 -0
  651. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/handlers/storage.py +0 -0
  652. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/bytewax/runner.py +0 -0
  653. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/compiler/__init__.py +0 -0
  654. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/compiler/_bindings.py +0 -0
  655. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/compiler/_compiler.py +0 -0
  656. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/compiler/_errors.py +0 -0
  657. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/compiler/_plan.py +0 -0
  658. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/compiler/phases/build_plan.py +0 -0
  659. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/compiler/phases/validate.py +0 -0
  660. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/core/__init__.py +0 -0
  661. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/core/_errors.py +0 -0
  662. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/core/_exceptions.py +0 -0
  663. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/core/_message.py +0 -0
  664. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/core/_tracing.py +0 -0
  665. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/core/_typing.py +0 -0
  666. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/graph/__init__.py +0 -0
  667. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/graph/_flow.py +0 -0
  668. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/__init__.py +0 -0
  669. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/_codec.py +0 -0
  670. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/_config.py +0 -0
  671. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/_errors.py +0 -0
  672. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/_key_resolver.py +0 -0
  673. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/_message.py +0 -0
  674. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/_record.py +0 -0
  675. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/_wire.py +0 -0
  676. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/client/__init__.py +0 -0
  677. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/client/_consumer.py +0 -0
  678. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/client/_producer.py +0 -0
  679. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/client/_protocol.py +0 -0
  680. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/client/_retry.py +0 -0
  681. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/message/__init__.py +0 -0
  682. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/message/_consumer.py +0 -0
  683. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/message/_producer.py +0 -0
  684. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/kafka/message/_protocol.py +0 -0
  685. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/mongo/__init__.py +0 -0
  686. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/mongo/_bytewax_source.py +0 -0
  687. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/mongo/_config.py +0 -0
  688. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/mongo/_event.py +0 -0
  689. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/mongo/_normalize.py +0 -0
  690. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/__init__.py +0 -0
  691. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_boundary.py +0 -0
  692. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_branches.py +0 -0
  693. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_broadcast.py +0 -0
  694. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_capabilities.py +0 -0
  695. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_decompose.py +0 -0
  696. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_expand_routes.py +0 -0
  697. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_expr_eval.py +0 -0
  698. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_fork.py +0 -0
  699. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_helpers.py +0 -0
  700. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_mongo.py +0 -0
  701. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_protocols.py +0 -0
  702. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_router.py +0 -0
  703. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_shape.py +0 -0
  704. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_sink.py +0 -0
  705. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_step.py +0 -0
  706. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_table/__init__.py +0 -0
  707. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_table/common.py +0 -0
  708. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_table/config.py +0 -0
  709. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/_with.py +0 -0
  710. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/nodes/refs.py +0 -0
  711. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/streaming/testing.py +0 -0
  712. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/testing/__init__.py +0 -0
  713. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/testing/golden.py +0 -0
  714. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/testing/http_harness.py +0 -0
  715. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/testing/in_memory.py +0 -0
  716. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/src/loom/testing/repository_harness.py +0 -0
  717. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/__init__.py +0 -0
  718. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/conftest.py +0 -0
  719. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/contract/__init__.py +0 -0
  720. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/contract/ai/__init__.py +0 -0
  721. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/contract/ai/test_contract_fake.py +0 -0
  722. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/contract/ai/test_contract_pydantic_ai.py +0 -0
  723. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/contract/observability/__init__.py +0 -0
  724. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/contract/observability/test_otel_sdk_contract.py +0 -0
  725. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/__init__.py +0 -0
  726. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/config/split_storage/common.yaml +0 -0
  727. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/config/split_storage/original.yaml +0 -0
  728. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/config/split_storage/storage.yaml +0 -0
  729. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/config/split_storage/tables/billing.yaml +0 -0
  730. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/config/split_storage/tables/sales.yaml +0 -0
  731. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/prefect/__init__.py +0 -0
  732. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/prefect/etls/billing.yaml +0 -0
  733. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/prefect/etls/daily_orders.yaml +0 -0
  734. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/prefect/etls/orders_reconcile.yaml +0 -0
  735. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/prefect/pipelines.py +0 -0
  736. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/fixtures/prefect/raising.py +0 -0
  737. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/golden/__init__.py +0 -0
  738. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/golden/baselines/.gitkeep +0 -0
  739. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/golden/outputs/.gitkeep +0 -0
  740. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/golden/plans/.gitkeep +0 -0
  741. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/helpers/__init__.py +0 -0
  742. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/helpers/pydantic_ai_engine.py +0 -0
  743. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/helpers/remote_auth_plugin.py +0 -0
  744. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/helpers/spans.py +0 -0
  745. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/__init__.py +0 -0
  746. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/__init__.py +0 -0
  747. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/_agents_only_app.py +0 -0
  748. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/_entrypoints.py +0 -0
  749. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/_no_marker_app.py +0 -0
  750. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/conftest.py +0 -0
  751. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/mcp_stdio_server.py +0 -0
  752. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_a2a.py +0 -0
  753. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_agent_call_chain.py +0 -0
  754. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_agent_marker_grants_integration.py +0 -0
  755. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_agent_marker_integration.py +0 -0
  756. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_agent_marker_test_double.py +0 -0
  757. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_agent_specs_source.py +0 -0
  758. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_auto_a2a.py +0 -0
  759. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_auto_agents_only.py +0 -0
  760. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_auto_client_factories.py +0 -0
  761. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_auto_gate.py +0 -0
  762. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_auto_without_sqlalchemy.py +0 -0
  763. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_capabilities.py +0 -0
  764. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_conversation.py +0 -0
  765. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_describe.py +0 -0
  766. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_endpoints.py +0 -0
  767. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_grant_wiring.py +0 -0
  768. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_health_probe.py +0 -0
  769. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_hooks.py +0 -0
  770. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_limits.py +0 -0
  771. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_live_provider.py +0 -0
  772. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_mcp_connect_timeout_wiring.py +0 -0
  773. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_mcp_end_to_end.py +0 -0
  774. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_mcp_session_recovery.py +0 -0
  775. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_mcp_shared_connection.py +0 -0
  776. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_mcp_stdio_end_to_end.py +0 -0
  777. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_native_escape_hatch_integration.py +0 -0
  778. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_no_agent_marker_containment.py +0 -0
  779. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_provider_portability.py +0 -0
  780. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_remote_auth_wiring.py +0 -0
  781. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_runtime.py +0 -0
  782. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_runtime_remote_clients.py +0 -0
  783. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_state_and_instructions.py +0 -0
  784. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_streaming.py +0 -0
  785. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_transport.py +0 -0
  786. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_use_case_mcp_end_to_end.py +0 -0
  787. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_use_case_mcp_health_gap.py +0 -0
  788. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_use_case_mcp_marker_test_double.py +0 -0
  789. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_use_case_mcp_resolver.py +0 -0
  790. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_use_case_mcp_runtime.py +0 -0
  791. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/ai/test_zero_agent_use_case_mcp.py +0 -0
  792. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/celery_bootstrap/__init__.py +0 -0
  793. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/celery_bootstrap/config/conf.celery.integration.yaml +0 -0
  794. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/celery_bootstrap/test_auto_create_app_integration.py +0 -0
  795. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/celery_bootstrap/test_bootstrap_worker.py +0 -0
  796. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/conftest.py +0 -0
  797. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/__init__.py +0 -0
  798. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/bootstrap/__init__.py +0 -0
  799. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/bootstrap/test_bootstrap_integration.py +0 -0
  800. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/repository/__init__.py +0 -0
  801. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/repository/sqlalchemy/__init__.py +0 -0
  802. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/repository/sqlalchemy/conftest.py +0 -0
  803. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/repository/sqlalchemy/test_cache_integration.py +0 -0
  804. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/repository/sqlalchemy/test_repository_integration.py +0 -0
  805. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/rest/__init__.py +0 -0
  806. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/rest/test_auto_interface_integration.py +0 -0
  807. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/rest/test_fastapi_app_integration.py +0 -0
  808. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/rest/test_rest_error_mapping.py +0 -0
  809. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/rest/test_rest_observability.py +0 -0
  810. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/use_case/__init__.py +0 -0
  811. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/use_case/test_caller_bound_sql_integration.py +0 -0
  812. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/use_case/test_custom_repository_integration.py +0 -0
  813. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/core/use_case/test_use_case_crud_integration.py +0 -0
  814. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/etl/__init__.py +0 -0
  815. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/etl/test_runner_integration.py +0 -0
  816. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/__init__.py +0 -0
  817. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/config/__init__.py +0 -0
  818. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/config/conf.interfaces.yaml +0 -0
  819. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/config/conf.manifest.yaml +0 -0
  820. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/config/conf.modules.yaml +0 -0
  821. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/config/conf.yaml +0 -0
  822. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/main.py +0 -0
  823. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/manifest.py +0 -0
  824. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/__init__.py +0 -0
  825. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/category/__init__.py +0 -0
  826. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/category/model.py +0 -0
  827. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/category/schemas.py +0 -0
  828. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/interface.py +0 -0
  829. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/jobs.py +0 -0
  830. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/model.py +0 -0
  831. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/relations.py +0 -0
  832. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/repository.py +0 -0
  833. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/repository_contract.py +0 -0
  834. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/review/__init__.py +0 -0
  835. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/review/model.py +0 -0
  836. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/review/schemas.py +0 -0
  837. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/schemas.py +0 -0
  838. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/fake_repo/product/use_cases.py +0 -0
  839. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/__init__.py +0 -0
  840. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/mongo/__init__.py +0 -0
  841. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/mongo/conftest.py +0 -0
  842. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/mongo/test_bulk.py +0 -0
  843. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/mongo/test_conftest.py +0 -0
  844. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/mongo/test_datetime.py +0 -0
  845. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/mongo/test_pagination.py +0 -0
  846. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/mongo/test_query.py +0 -0
  847. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/mongo/test_read.py +0 -0
  848. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/mongo/test_transactions.py +0 -0
  849. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/mongo/test_uow.py +0 -0
  850. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/persistence/mongo/test_write.py +0 -0
  851. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/rest/__init__.py +0 -0
  852. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/rest/conftest.py +0 -0
  853. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/rest/test_yaml_interfaces.py +0 -0
  854. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/sql/__init__.py +0 -0
  855. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/sql/init/01_users_roles.sql +0 -0
  856. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/sql/test_clickhouse_integration.py +0 -0
  857. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/streaming/__init__.py +0 -0
  858. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/streaming/kafka/__init__.py +0 -0
  859. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/streaming/kafka/conftest.py +0 -0
  860. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/streaming/kafka/test_partitioned_source_integration.py +0 -0
  861. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/streaming/kafka/test_source_contract_integration.py +0 -0
  862. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/streaming/test_into_table_integration.py +0 -0
  863. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/support/__init__.py +0 -0
  864. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/integration/support/logical_repo_fixtures.py +0 -0
  865. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/__init__.py +0 -0
  866. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/_resolver_stubs.py +0 -0
  867. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/__init__.py +0 -0
  868. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/compiler/__init__.py +0 -0
  869. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/compiler/test_state_phase.py +0 -0
  870. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/conftest.py +0 -0
  871. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/__init__.py +0 -0
  872. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_capability_span_nesting.py +0 -0
  873. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_native_tools.py +0 -0
  874. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_conversation.py +0 -0
  875. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_cost_enforcement.py +0 -0
  876. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_escape_hatch.py +0 -0
  877. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_failures.py +0 -0
  878. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_mcp_concurrency.py +0 -0
  879. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_mcp_session_recovery.py +0 -0
  880. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_mcp_timeouts.py +0 -0
  881. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_native_output.py +0 -0
  882. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_output_check.py +0 -0
  883. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_shape_override.py +0 -0
  884. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_state.py +0 -0
  885. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_streaming_off.py +0 -0
  886. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_translation.py +0 -0
  887. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_usage_limits.py +0 -0
  888. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_pydantic_ai_user_prompt.py +0 -0
  889. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_python_capability.py +0 -0
  890. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_streaming_capability_conflict.py +0 -0
  891. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/engines/test_usage_propagation.py +0 -0
  892. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fastapi/__init__.py +0 -0
  893. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fastapi/test_state_decode.py +0 -0
  894. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/README.md +0 -0
  895. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/capability-a2a-agent/agent.yaml +0 -0
  896. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/capability-mcp-agent/agent.yaml +0 -0
  897. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/capability-native-agent/agent.yaml +0 -0
  898. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/capability-python-agent/agent.yaml +0 -0
  899. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/capability-skills-agent/agent.yaml +0 -0
  900. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/capability-skills-agent/skills/release-notes/SKILL.md +0 -0
  901. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/capability-sql-agent/agent.yaml +0 -0
  902. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/capability-usecase-agent/agent.yaml +0 -0
  903. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/full-agent/agent.yaml +0 -0
  904. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/full-agent/skills/severity-rubric/SKILL.md +0 -0
  905. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/minimal-agent/agent.yaml +0 -0
  906. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/corpus_v1/output-type-ref-agent/agent.yaml +0 -0
  907. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/__init__.py +0 -0
  908. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/domain/__init__.py +0 -0
  909. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/domain/conversations.py +0 -0
  910. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/domain/incidents.py +0 -0
  911. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/domain/invoices.py +0 -0
  912. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/domain/pydantic_invoices.py +0 -0
  913. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/domain/triage.py +0 -0
  914. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/domain/unsupported.py +0 -0
  915. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/tools/__init__.py +0 -0
  916. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/tools/broken.py +0 -0
  917. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/tools/geo.py +0 -0
  918. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/tools/metrics.py +0 -0
  919. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/fake_pkgs/myapp/tools/params.py +0 -0
  920. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/skills_root/shared/group-changes/SKILL.md +0 -0
  921. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/fixtures/skills_root/shared/tone-of-voice/SKILL.md +0 -0
  922. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/phases/__init__.py +0 -0
  923. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/phases/conftest.py +0 -0
  924. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/phases/test_capabilities.py +0 -0
  925. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/phases/test_conversation.py +0 -0
  926. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/phases/test_hook.py +0 -0
  927. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/phases/test_instructions.py +0 -0
  928. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/phases/test_limits.py +0 -0
  929. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/phases/test_model_role.py +0 -0
  930. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/phases/test_output.py +0 -0
  931. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/phases/test_remote_auth_plan.py +0 -0
  932. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/phases/test_validate_cli.py +0 -0
  933. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/runtime/__init__.py +0 -0
  934. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/runtime/test_grants.py +0 -0
  935. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/runtime/test_hook_command.py +0 -0
  936. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/runtime/test_lifecycle_mcp_wiring.py +0 -0
  937. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/runtime/test_loader_command.py +0 -0
  938. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/runtime/test_mcp_session.py +0 -0
  939. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/runtime/test_native_guard.py +0 -0
  940. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/runtime/test_state_channel.py +0 -0
  941. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_a2a_base_url.py +0 -0
  942. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_a2a_card.py +0 -0
  943. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_agent_handle_contract.py +0 -0
  944. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_compiler.py +0 -0
  945. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_compiler_offline.py +0 -0
  946. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_concurrency.py +0 -0
  947. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_config.py +0 -0
  948. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_declarative_conversation.py +0 -0
  949. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_declarative_envelope.py +0 -0
  950. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_declarative_hook.py +0 -0
  951. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_declarative_instructions.py +0 -0
  952. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_declarative_native.py +0 -0
  953. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_declarative_policy_caps.py +0 -0
  954. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_declarative_state.py +0 -0
  955. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_describe.py +0 -0
  956. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_error_catalogue_totality.py +0 -0
  957. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_error_factories.py +0 -0
  958. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_fake_engine.py +0 -0
  959. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_identity_notice.py +0 -0
  960. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_loopback_plaintext.py +0 -0
  961. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_native_capability.py +0 -0
  962. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_no_extras_import.py +0 -0
  963. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_public_surface.py +0 -0
  964. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_registry.py +0 -0
  965. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_remote_auth.py +0 -0
  966. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_remote_auth_settings.py +0 -0
  967. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_run_error_hook.py +0 -0
  968. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_schema_emission.py +0 -0
  969. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_secret_containment.py +0 -0
  970. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_spec_v1_corpus.py +0 -0
  971. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ai/test_usecase_helpers.py +0 -0
  972. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_bootstrap/__init__.py +0 -0
  973. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_bootstrap/test_agent_marker_rejection.py +0 -0
  974. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_bootstrap/test_async_runtime.py +0 -0
  975. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_bootstrap/test_bootstrap.py +0 -0
  976. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_bootstrap/test_bootstrap_cache.py +0 -0
  977. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_bootstrap/test_bootstrap_without_sqlalchemy.py +0 -0
  978. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_bootstrap/test_mcp_marker_rejection.py +0 -0
  979. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_jobs/__init__.py +0 -0
  980. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_jobs/test_auto.py +0 -0
  981. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_jobs/test_celery_service.py +0 -0
  982. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_jobs/test_config.py +0 -0
  983. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_jobs/test_identity_propagation.py +0 -0
  984. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/celery_jobs/test_runner.py +0 -0
  985. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ci/test_merge_test_results.py +0 -0
  986. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/ci/test_workflow_supply_chain_contract.py +0 -0
  987. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/__init__.py +0 -0
  988. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/backend/__init__.py +0 -0
  989. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/backend/test_backend_compiler.py +0 -0
  990. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/bootstrap/__init__.py +0 -0
  991. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/bootstrap/test_bootstrap.py +0 -0
  992. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/bootstrap/test_bootstrap_metrics.py +0 -0
  993. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/bootstrap/test_kernel.py +0 -0
  994. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/__init__.py +0 -0
  995. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/_doubles.py +0 -0
  996. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/_toolset_module.py +0 -0
  997. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/conftest.py +0 -0
  998. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_cache_call.py +0 -0
  999. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_cache_call_decorator.py +0 -0
  1000. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_cache_call_toolset.py +0 -0
  1001. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_cache_import_containment.py +0 -0
  1002. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_cache_query_codec.py +0 -0
  1003. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_cached_repository.py +0 -0
  1004. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_cached_repository_pydantic.py +0 -0
  1005. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_call_codec.py +0 -0
  1006. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_config_wiring.py +0 -0
  1007. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_dependency_bump.py +0 -0
  1008. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_gateway_config.py +0 -0
  1009. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_gateway_typed_get.py +0 -0
  1010. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_gateway_write_errors.py +0 -0
  1011. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_index_refill.py +0 -0
  1012. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_invalidation_granularity.py +0 -0
  1013. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_single_flight.py +0 -0
  1014. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_ttl_jitter.py +0 -0
  1015. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/cache/test_wiring.py +0 -0
  1016. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/command/__init__.py +0 -0
  1017. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/command/test_command_base.py +0 -0
  1018. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/command/test_command_field.py +0 -0
  1019. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/command/test_command_patch.py +0 -0
  1020. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/command/test_introspection.py +0 -0
  1021. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/__init__.py +0 -0
  1022. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/conftest.py +0 -0
  1023. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/test_binder.py +0 -0
  1024. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/test_config.py +0 -0
  1025. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/test_configurable.py +0 -0
  1026. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/test_context.py +0 -0
  1027. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/test_includes.py +0 -0
  1028. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/test_keyed_collections.py +0 -0
  1029. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/test_resolver_utils.py +0 -0
  1030. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/config/test_ssm.py +0 -0
  1031. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/conftest.py +0 -0
  1032. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/di/__init__.py +0 -0
  1033. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/di/test_container.py +0 -0
  1034. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/discovery/__init__.py +0 -0
  1035. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/discovery/test_interfaces.py +0 -0
  1036. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/discovery/test_manifest.py +0 -0
  1037. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/discovery/test_modules.py +0 -0
  1038. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/__init__.py +0 -0
  1039. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/_lifecycle_doubles.py +0 -0
  1040. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/contract/__init__.py +0 -0
  1041. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/contract/conftest.py +0 -0
  1042. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/contract/test_dispatch.py +0 -0
  1043. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/contract/test_lifecycle.py +0 -0
  1044. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/contract/test_nesting.py +0 -0
  1045. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_agent_marker.py +0 -0
  1046. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_audit_regressions.py +0 -0
  1047. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_caller_binding.py +0 -0
  1048. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_compiler.py +0 -0
  1049. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_compiler_mcp_marker.py +0 -0
  1050. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_executor.py +0 -0
  1051. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_executor_mcp_marker.py +0 -0
  1052. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_executor_trace.py +0 -0
  1053. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_executor_uow.py +0 -0
  1054. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_metrics.py +0 -0
  1055. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_plan.py +0 -0
  1056. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_plan_resolution.py +0 -0
  1057. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_post_commit.py +0 -0
  1058. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_post_commit_shield.py +0 -0
  1059. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/engine/test_post_commit_teardown_guard.py +0 -0
  1060. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/errors/__init__.py +0 -0
  1061. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/errors/test_errors.py +0 -0
  1062. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/expr/__init__.py +0 -0
  1063. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/expr/test_expr.py +0 -0
  1064. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/identity/__init__.py +0 -0
  1065. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/identity/test_context.py +0 -0
  1066. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/identity/test_identity.py +0 -0
  1067. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/identity/test_wire.py +0 -0
  1068. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/introspection/__init__.py +0 -0
  1069. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/introspection/test_describe.py +0 -0
  1070. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/job/__init__.py +0 -0
  1071. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/job/conftest.py +0 -0
  1072. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/job/test_callback.py +0 -0
  1073. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/job/test_context.py +0 -0
  1074. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/job/test_handle.py +0 -0
  1075. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/job/test_inline_service.py +0 -0
  1076. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/job/test_job.py +0 -0
  1077. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/logger/__init__.py +0 -0
  1078. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/logger/test_config.py +0 -0
  1079. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/logger/test_registry.py +0 -0
  1080. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/model/__init__.py +0 -0
  1081. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/model/test_annotation_resolution.py +0 -0
  1082. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/model/test_convert.py +0 -0
  1083. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/model/test_introspection_helpers.py +0 -0
  1084. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/model/test_loom_type.py +0 -0
  1085. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/model/test_loom_type_import_containment.py +0 -0
  1086. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/model/test_model.py +0 -0
  1087. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/model/test_struct.py +0 -0
  1088. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/model/test_timestamped.py +0 -0
  1089. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/observability/__init__.py +0 -0
  1090. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/observability/test_message_id_generator.py +0 -0
  1091. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/observability/test_observers.py +0 -0
  1092. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/observability/test_optional_otel_sdk.py +0 -0
  1093. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/observability/test_otel_loader_branches.py +0 -0
  1094. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/observability/test_provider_modes.py +0 -0
  1095. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/observability/test_tracing_characterisation.py +0 -0
  1096. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/persistence/__init__.py +0 -0
  1097. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/persistence/test_registry.py +0 -0
  1098. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/plugins/__init__.py +0 -0
  1099. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/plugins/test_entrypoints.py +0 -0
  1100. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/plugins/test_import_containment.py +0 -0
  1101. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/projection/__init__.py +0 -0
  1102. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/projection/test_descriptors.py +0 -0
  1103. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/projection/test_runtime.py +0 -0
  1104. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/__init__.py +0 -0
  1105. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/abc/__init__.py +0 -0
  1106. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/abc/conftest.py +0 -0
  1107. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/abc/test_cursor.py +0 -0
  1108. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/abc/test_query.py +0 -0
  1109. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/abc/test_repository_contract.py +0 -0
  1110. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/contract/__init__.py +0 -0
  1111. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/contract/conftest.py +0 -0
  1112. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/contract/test_bulk.py +0 -0
  1113. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/contract/test_cache.py +0 -0
  1114. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/contract/test_pagination.py +0 -0
  1115. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/contract/test_query.py +0 -0
  1116. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/contract/test_read.py +0 -0
  1117. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/contract/test_uow.py +0 -0
  1118. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/contract/test_write.py +0 -0
  1119. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/dynamodb/__init__.py +0 -0
  1120. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/dynamodb/_fake.py +0 -0
  1121. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/dynamodb/conftest.py +0 -0
  1122. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/dynamodb/test_backend.py +0 -0
  1123. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/dynamodb/test_registry.py +0 -0
  1124. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/dynamodb/test_repository.py +0 -0
  1125. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/dynamodb/test_uow.py +0 -0
  1126. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/mongo/__init__.py +0 -0
  1127. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/mongo/_fake.py +0 -0
  1128. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/mongo/conftest.py +0 -0
  1129. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/mongo/test_backend.py +0 -0
  1130. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/mongo/test_fake_collection.py +0 -0
  1131. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/mongo/test_query_compiler.py +0 -0
  1132. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/mongo/test_registry.py +0 -0
  1133. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/mongo/test_repository.py +0 -0
  1134. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/mongo/test_uow.py +0 -0
  1135. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/__init__.py +0 -0
  1136. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/conftest.py +0 -0
  1137. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_backend.py +0 -0
  1138. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_bulk_create.py +0 -0
  1139. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_cursor_pagination.py +0 -0
  1140. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_loaders.py +0 -0
  1141. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_offset_pagination.py +0 -0
  1142. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_query_compiler_protocol.py +0 -0
  1143. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_repository.py +0 -0
  1144. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_transaction_signal.py +0 -0
  1145. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_transactional.py +0 -0
  1146. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_transactional_post_commit.py +0 -0
  1147. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_transactional_shield.py +0 -0
  1148. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/sqlalchemy/test_typed_columns.py +0 -0
  1149. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/repository/test_registration.py +0 -0
  1150. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/routing/__init__.py +0 -0
  1151. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/routing/test_routing.py +0 -0
  1152. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/__init__.py +0 -0
  1153. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/_fakes.py +0 -0
  1154. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/conftest.py +0 -0
  1155. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/test_caller_bound.py +0 -0
  1156. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/test_clickhouse_executor.py +0 -0
  1157. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/test_clickhouse_transport.py +0 -0
  1158. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/test_config.py +0 -0
  1159. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/test_isolation.py +0 -0
  1160. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/test_null_service.py +0 -0
  1161. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/test_pagination_limits.py +0 -0
  1162. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/test_registry_lifecycle.py +0 -0
  1163. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/sql/test_role_policy.py +0 -0
  1164. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/test_async_bridge.py +0 -0
  1165. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/test_compiler_contracts.py +0 -0
  1166. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/test_runner_contracts.py +0 -0
  1167. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/tracing/__init__.py +0 -0
  1168. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/tracing/test_context.py +0 -0
  1169. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/uow/__init__.py +0 -0
  1170. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/uow/conftest.py +0 -0
  1171. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/uow/test_executor_uow.py +0 -0
  1172. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/uow/test_sqlalchemy_uow.py +0 -0
  1173. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/uow/test_uow_protocols.py +0 -0
  1174. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/use_case/__init__.py +0 -0
  1175. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/use_case/test_compute.py +0 -0
  1176. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/use_case/test_factory.py +0 -0
  1177. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/use_case/test_field_ref.py +0 -0
  1178. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/use_case/test_invoker.py +0 -0
  1179. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/use_case/test_markers.py +0 -0
  1180. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/use_case/test_mcp_markers.py +0 -0
  1181. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/use_case/test_rule.py +0 -0
  1182. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/core/use_case/test_use_case.py +0 -0
  1183. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/__init__.py +0 -0
  1184. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/__init__.py +0 -0
  1185. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/_historify_contract.py +0 -0
  1186. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_empty_write_warning.py +0 -0
  1187. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_historify_common.py +0 -0
  1188. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_path_template.py +0 -0
  1189. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/__init__.py +0 -0
  1190. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/conftest.py +0 -0
  1191. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_apply_schema.py +0 -0
  1192. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_backend.py +0 -0
  1193. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_dtype.py +0 -0
  1194. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_file_writer.py +0 -0
  1195. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_historify_polars.py +0 -0
  1196. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_predicate_pushdown.py +0 -0
  1197. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_provider_optional_mongo.py +0 -0
  1198. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_reader_columns.py +0 -0
  1199. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_reader_json_columns.py +0 -0
  1200. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_step_execution.py +0 -0
  1201. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_streaming_write.py +0 -0
  1202. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_update_writer.py +0 -0
  1203. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_upsert_writer.py +0 -0
  1204. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_writer_null_schema.py +0 -0
  1205. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_polars/test_writer_to_frame.py +0 -0
  1206. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_spark/__init__.py +0 -0
  1207. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_spark/conftest.py +0 -0
  1208. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_spark/test_dtype.py +0 -0
  1209. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_spark/test_historify_spark.py +0 -0
  1210. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_spark/test_session_configuration.py +0 -0
  1211. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_spark/test_spark_apply_schema.py +0 -0
  1212. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_spark/test_step_execution.py +0 -0
  1213. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_spark/test_writer_to_frame.py +0 -0
  1214. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_unsupported_format_contract.py +0 -0
  1215. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/backends/test_write_policy_historify.py +0 -0
  1216. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/checkpoint/__init__.py +0 -0
  1217. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/checkpoint/backends/__init__.py +0 -0
  1218. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/checkpoint/test_checkpoint_paths.py +0 -0
  1219. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/checkpoint/test_store.py +0 -0
  1220. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/client_step/__init__.py +0 -0
  1221. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/client_step/test_client_step.py +0 -0
  1222. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/__init__.py +0 -0
  1223. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_catalog_validator.py +0 -0
  1224. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_compiler.py +0 -0
  1225. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_compiler_catalog.py +0 -0
  1226. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_compiler_upsert.py +0 -0
  1227. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_errors.py +0 -0
  1228. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_errors_additional_factories.py +0 -0
  1229. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_errors_runtime_factories.py +0 -0
  1230. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_file_template_validator.py +0 -0
  1231. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_historify_validator.py +0 -0
  1232. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_param_exprs_validator.py +0 -0
  1233. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_plan_traversal.py +0 -0
  1234. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_step_validator.py +0 -0
  1235. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_structural.py +0 -0
  1236. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_temp_validator.py +0 -0
  1237. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/compiler/test_upsert_validator.py +0 -0
  1238. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/conftest.py +0 -0
  1239. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/__init__.py +0 -0
  1240. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/sources/__init__.py +0 -0
  1241. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/sources/test_clickhouse_reader.py +0 -0
  1242. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/sources/test_dynamodb_predicate.py +0 -0
  1243. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/sources/test_dynamodb_reader.py +0 -0
  1244. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/sources/test_from_clickhouse.py +0 -0
  1245. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/sources/test_from_dynamodb.py +0 -0
  1246. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/sources/test_from_mongo.py +0 -0
  1247. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/sources/test_mongo_predicate.py +0 -0
  1248. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/sources/test_mongo_reader.py +0 -0
  1249. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/sources/test_mongo_reader_memory.py +0 -0
  1250. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/targets/__init__.py +0 -0
  1251. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/targets/test_clickhouse_writer.py +0 -0
  1252. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/targets/test_into_clickhouse.py +0 -0
  1253. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/test_history_target.py +0 -0
  1254. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/test_source.py +0 -0
  1255. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/test_source_json.py +0 -0
  1256. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/test_source_options.py +0 -0
  1257. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/test_target.py +0 -0
  1258. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/test_utils.py +0 -0
  1259. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/test_variants.py +0 -0
  1260. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/io/test_writer_registry.py +0 -0
  1261. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/lineage/test_observer.py +0 -0
  1262. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/lineage/test_records.py +0 -0
  1263. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/lineage/test_store.py +0 -0
  1264. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/maintenance/__init__.py +0 -0
  1265. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/maintenance/backends/__init__.py +0 -0
  1266. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/maintenance/backends/test_delta_rs.py +0 -0
  1267. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/maintenance/conftest.py +0 -0
  1268. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/maintenance/test_builder.py +0 -0
  1269. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/maintenance/test_runner.py +0 -0
  1270. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/maintenance/test_step.py +0 -0
  1271. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/pipeline/__init__.py +0 -0
  1272. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/pipeline/test_pipeline_process.py +0 -0
  1273. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/pipeline/test_proxy.py +0 -0
  1274. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/pipeline/test_step.py +0 -0
  1275. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/schema/__init__.py +0 -0
  1276. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/schema/test_contract.py +0 -0
  1277. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/schema/test_schema.py +0 -0
  1278. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/schema/test_table.py +0 -0
  1279. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/sql/__init__.py +0 -0
  1280. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/sql/test_merge.py +0 -0
  1281. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/sql/test_predicate.py +0 -0
  1282. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/sql/test_predicate_dialect.py +0 -0
  1283. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/sql/test_sql_runtime.py +0 -0
  1284. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/storage/__init__.py +0 -0
  1285. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/storage/test_io_protocols.py +0 -0
  1286. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/storage/test_locator.py +0 -0
  1287. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/storage/test_observability_and_protocols.py +0 -0
  1288. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/storage/test_route_build.py +0 -0
  1289. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/storage/test_schema_readers.py +0 -0
  1290. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/storage/test_storage_config.py +0 -0
  1291. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/storage/test_storage_config_mapping.py +0 -0
  1292. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/storage/test_storage_profiles.py +0 -0
  1293. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_config_loader.py +0 -0
  1294. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_executor.py +0 -0
  1295. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_executor_tracing.py +0 -0
  1296. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_format_registry.py +0 -0
  1297. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_module_contracts.py +0 -0
  1298. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_public_api_discovery.py +0 -0
  1299. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_record_schema_coverage.py +0 -0
  1300. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_runner.py +0 -0
  1301. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_runner_errors.py +0 -0
  1302. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_spark_testing.py +0 -0
  1303. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/test_split_storage.py +0 -0
  1304. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/testing/__init__.py +0 -0
  1305. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/testing/test_runners.py +0 -0
  1306. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/testing/test_scenario_and_stubs.py +0 -0
  1307. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/etl/testing/test_spark_helpers.py +0 -0
  1308. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/__init__.py +0 -0
  1309. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_backfill_flow.py +0 -0
  1310. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_config.py +0 -0
  1311. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_ctx.py +0 -0
  1312. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_discovery_config.py +0 -0
  1313. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_entrypoint.py +0 -0
  1314. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_etl_flow.py +0 -0
  1315. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_logging_bridge.py +0 -0
  1316. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_maintenance_flow.py +0 -0
  1317. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_manifest.py +0 -0
  1318. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_manifest_s3.py +0 -0
  1319. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_notify.py +0 -0
  1320. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_observer.py +0 -0
  1321. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_placeholders.py +0 -0
  1322. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_task_run_observer.py +0 -0
  1323. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_yaml_etls.py +0 -0
  1324. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prefect/test_yaml_loader.py +0 -0
  1325. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prometheus/__init__.py +0 -0
  1326. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prometheus/test_adapter.py +0 -0
  1327. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prometheus/test_instruments.py +0 -0
  1328. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/prometheus/test_middleware.py +0 -0
  1329. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/release/test_release_workflow_contract.py +0 -0
  1330. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/__init__.py +0 -0
  1331. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/_fixture_app.py +0 -0
  1332. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_app_hardening.py +0 -0
  1333. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_auth_middleware.py +0 -0
  1334. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_auth_rejection_logging.py +0 -0
  1335. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_autocrud.py +0 -0
  1336. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_autocrud_capabilities.py +0 -0
  1337. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_cors.py +0 -0
  1338. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_create_app_cache.py +0 -0
  1339. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_fastapi_auto_agent_markers.py +0 -0
  1340. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_fastapi_auto_logger.py +0 -0
  1341. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_fastapi_auto_mcp_markers.py +0 -0
  1342. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_fastapi_auto_persistence.py +0 -0
  1343. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_health.py +0 -0
  1344. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_jwt_issuer.py +0 -0
  1345. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_jwt_middleware.py +0 -0
  1346. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_middleware.py +0 -0
  1347. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_persistence_boundary.py +0 -0
  1348. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_pydantic_adapter.py +0 -0
  1349. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_request_hardening.py +0 -0
  1350. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_response.py +0 -0
  1351. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_rest_adapter.py +0 -0
  1352. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_rest_compiler.py +0 -0
  1353. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_rest_config.py +0 -0
  1354. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_rest_model.py +0 -0
  1355. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_route_rbac.py +0 -0
  1356. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_router_identity.py +0 -0
  1357. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_router_runtime.py +0 -0
  1358. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_sql_container_registration.py +0 -0
  1359. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_sql_endpoint.py +0 -0
  1360. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_sql_endpoint_auth_gate.py +0 -0
  1361. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_sql_endpoint_roles.py +0 -0
  1362. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/rest/test_sql_serialization.py +0 -0
  1363. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/__init__.py +0 -0
  1364. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/__init__.py +0 -0
  1365. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/cases.py +0 -0
  1366. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/conftest.py +0 -0
  1367. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_adapter.py +0 -0
  1368. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_batch_key.py +0 -0
  1369. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_bytewax_dispatcher.py +0 -0
  1370. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_collect_batch.py +0 -0
  1371. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_dlq.py +0 -0
  1372. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_error_boundary.py +0 -0
  1373. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_fanout_accounting.py +0 -0
  1374. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_import_without_sqlalchemy.py +0 -0
  1375. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_operators.py +0 -0
  1376. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_resource_manager.py +0 -0
  1377. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_runner.py +0 -0
  1378. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_runtime_io.py +0 -0
  1379. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_runtime_sink.py +0 -0
  1380. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_runtime_source.py +0 -0
  1381. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_sink_registry.py +0 -0
  1382. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_steps.py +0 -0
  1383. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_storage.py +0 -0
  1384. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/bytewax/test_storage_trace_characterisation.py +0 -0
  1385. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/__init__.py +0 -0
  1386. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/cases.py +0 -0
  1387. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/test_async_walk.py +0 -0
  1388. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/test_basics.py +0 -0
  1389. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/test_clickhouse_sink_validation.py +0 -0
  1390. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/test_config_bindings.py +0 -0
  1391. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/test_delivery.py +0 -0
  1392. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/test_error_codes.py +0 -0
  1393. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/test_mongo_source.py +0 -0
  1394. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/test_multi_source.py +0 -0
  1395. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/test_router.py +0 -0
  1396. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/test_window.py +0 -0
  1397. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/compiler/test_with.py +0 -0
  1398. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/conftest.py +0 -0
  1399. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/contracts/__init__.py +0 -0
  1400. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/contracts/cases.py +0 -0
  1401. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/contracts/test_boundary.py +0 -0
  1402. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/contracts/test_message.py +0 -0
  1403. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/contracts/test_mongo_contracts.py +0 -0
  1404. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/contracts/test_multi_boundary.py +0 -0
  1405. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/contracts/test_steps.py +0 -0
  1406. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/flows/__init__.py +0 -0
  1407. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/flows/cases/__init__.py +0 -0
  1408. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/flows/cases/batch.py +0 -0
  1409. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/flows/cases/explode.py +0 -0
  1410. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/flows/cases/fork.py +0 -0
  1411. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/flows/cases/router.py +0 -0
  1412. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/flows/cases/shared.py +0 -0
  1413. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/flows/cases/simple.py +0 -0
  1414. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/flows/conftest.py +0 -0
  1415. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/flows/test_compiler_examples.py +0 -0
  1416. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/flows/test_flow_examples.py +0 -0
  1417. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/__init__.py +0 -0
  1418. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/cases.py +0 -0
  1419. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/conftest.py +0 -0
  1420. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/fakes.py +0 -0
  1421. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/test_client.py +0 -0
  1422. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/test_config.py +0 -0
  1423. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/test_coordinator_retry.py +0 -0
  1424. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/test_key_resolver.py +0 -0
  1425. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/test_message.py +0 -0
  1426. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/test_message_client.py +0 -0
  1427. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/test_multi_wire.py +0 -0
  1428. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/test_observability.py +0 -0
  1429. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/test_settings.py +0 -0
  1430. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/test_source_decode_parity.py +0 -0
  1431. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/kafka/test_wire.py +0 -0
  1432. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/mongo/test_bytewax_source.py +0 -0
  1433. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/nodes/__init__.py +0 -0
  1434. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/nodes/conftest.py +0 -0
  1435. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/nodes/test_broadcast.py +0 -0
  1436. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/nodes/test_delta_config.py +0 -0
  1437. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/nodes/test_logging.py +0 -0
  1438. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/nodes/test_sink_protocol_typing.py +0 -0
  1439. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/nodes/test_table_package.py +0 -0
  1440. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/observability/__init__.py +0 -0
  1441. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/observability/cases.py +0 -0
  1442. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/observability/conftest.py +0 -0
  1443. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/observability/test_message_lifecycle_spans.py +0 -0
  1444. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/observability/test_multiworker_trace_continuity.py +0 -0
  1445. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/observability/test_observability_runner.py +0 -0
  1446. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/observability/test_outbound_topic_terminal_spans.py +0 -0
  1447. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/observability/test_protocols.py +0 -0
  1448. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/observability/test_registry.py +0 -0
  1449. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/observability/test_structlog.py +0 -0
  1450. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/support/__init__.py +0 -0
  1451. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/support/flow_cases.py +0 -0
  1452. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/test_branch_indexing.py +0 -0
  1453. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/test_expand_routes.py +0 -0
  1454. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/test_fork.py +0 -0
  1455. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/test_otel_observability.py +0 -0
  1456. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/test_routing.py +0 -0
  1457. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/test_testing_mongo.py +0 -0
  1458. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/streaming/test_with.py +0 -0
  1459. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/test_boundary_calls_containment.py +0 -0
  1460. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/test_no_sqlalchemy_import.py +0 -0
  1461. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/test_packaging_extras.py +0 -0
  1462. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/testing/__init__.py +0 -0
  1463. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/testing/test_golden.py +0 -0
  1464. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/testing/test_http_harness.py +0 -0
  1465. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/testing/test_identity_harness.py +0 -0
  1466. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/testing/test_in_memory.py +0 -0
  1467. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/testing/test_lazy_exports.py +0 -0
  1468. {loom_kernel-2.4.0 → loom_kernel-2.6.0}/tests/unit/testing/test_runner.py +0 -0
@@ -4,6 +4,13 @@
4
4
 
5
5
  ### core
6
6
 
7
+ - **core:** a memory cache alias can be bounded. `cache: max_size` (entries) and
8
+ the new `cache: max_bytes` (stored payload bytes) serve every
9
+ `aiocache.SimpleMemoryCache` alias through `loom.core.cache.memory.BoundedMemoryCache`,
10
+ which evicts least-recently-used entries past either bound. Before, `max_size`
11
+ failed at boot (aiocache's class does not accept it) and a memory alias grew
12
+ without limit. Redis and the other server backends are unaffected.
13
+
7
14
  - **core:** `loom.core.model` (module `_loom_type`) is the one module that decides whether
8
15
  a boundary type is a `msgspec.Struct` or a strict `pydantic.BaseModel`.
9
16
  `loom_type(symbol)` resolves an authored symbol by `issubclass`,
@@ -24,6 +31,43 @@
24
31
 
25
32
  ### ai
26
33
 
34
+ - **ai:** `provider: typesafe` binds TypeSafe's Jev, a decision model that
35
+ fills a typed output from the state it is given and never writes text, so a
36
+ role whose answer is a choice or a verdict can run on it. Extra
37
+ `ai-typesafe` (pydantic-ai 2.45 or later); `credentials_ref` names the
38
+ variable holding the API key, `endpoint` overrides the base URL. pydantic-ai
39
+ fills a TypeSafe output by tool alone, so a binding pinning `output_mode:
40
+ native` fails start-up with the new `OUTPUT_MODE_UNSUPPORTED`, instead of
41
+ being refused by the model on every request.
42
+ - **core:** `loom.core.plugins.optional.import_optional` is the one way loom
43
+ loads a module that needs an optional extra: the island imports its SDK
44
+ at the top, the selector loads the island by name, and the island's
45
+ `ImportError` becomes a `MissingExtraError` naming the extra. The rule is
46
+ written in `docs/architecture/clean-architecture.md`.
47
+ - **ai:** each pydantic-ai provider is an island under
48
+ `loom.ai.engines.pydantic_ai.providers` (`bedrock`, `openai`, `anthropic`,
49
+ `gateway`, `typesafe`), and each optional extra of the engine one under
50
+ `loom.ai.engines.pydantic_ai.extras` (`mcp`, `a2a`, `skills`,
51
+ `handlebars`): the one module importing its SDK. `_models.py` keeps the
52
+ binding table and loads the island through `require_provider_sdk`, now a
53
+ reading of `import_optional`; the MCP toolset, the A2A client, the skills
54
+ capability and the templating check load theirs the same way. No
55
+ behaviour change: `PROVIDER_UNKNOWN`, `PROVIDER_NOT_INSTALLED`,
56
+ `PROVIDER_SETTING_MISSING` and `TEMPLATE_EXTRA_MISSING` fire exactly as
57
+ before.
58
+ - **core:** boto3 is an island too, `loom.core.config._boto3`: the SSM and
59
+ Secrets Manager resolvers load it on first use and fail with `ConfigError`
60
+ naming `config-ssm` when it is absent, instead of a module-level `None`
61
+ sentinel checked later. `aiocache` and `prometheus-client` are required
62
+ dependencies, so `CacheGateway` and `ObservabilityRuntime` import them at
63
+ the top like any other, dropping an `importlib.import_module("aiocache")`
64
+ and a `None` sentinel that guarded nothing. Tests that stood in for an
65
+ absent or stubbed SDK now go through `tests/helpers/extras.py`.
66
+ - **ai:** `AgentAnswer`, `AgentResult` and the `final` event carry `provider_details`: what
67
+ the provider reported about the final answer beyond the answer itself,
68
+ verbatim — Jev's confidence and probabilities per field, another
69
+ provider's finish reason — or `None`. In process only: the `/run` body and
70
+ the `final` frame keep their four keys, as `messages` taught them to.
27
71
  - **ai:** `output.type_ref` and `deps_type` accept a strict
28
72
  `pydantic.BaseModel` (`model_config["extra"] == "forbid"`) wherever they
29
73
  accept a `msgspec.Struct`. A pydantic output is handed to pydantic-ai as
@@ -123,6 +167,23 @@
123
167
  The `etl-polars` extra now requires `polars>=1.24`, the release that
124
168
  named that join option `nulls_equal`.
125
169
 
170
+ - **etl:** `storage.temp.storage_options` reaches the checkpoint write. A
171
+ pipeline declaring `aws_server_side_encryption` / `aws_sse_kms_key_id` /
172
+ `aws_sse_bucket_key_enabled` for its temporaries wrote them with the bucket
173
+ default encryption and said nothing: the filter guarding the fsspec cleanup
174
+ returned an empty mapping unless an `endpoint_url` was set, and forwarded
175
+ only endpoint and credentials when it was. The encryption options now
176
+ survive that filter with or without an endpoint, in either spelling
177
+ (lowercase or uppercase), and reach both halves of the atomic write — the
178
+ `sink_ipc` through object_store under their own names, and the rename, a
179
+ server-side copy, as `s3_additional_kwargs` botocore parameters. The read
180
+ path is untouched, decryption being server-side. Any other key of the
181
+ delta-rs mapping is still dropped, now logged at debug; the Spark checkpoint
182
+ backend cannot take them at all (it reads SSE from Hadoop's S3A conf) and
183
+ logs a warning when encryption is declared. The declared mapping is parsed
184
+ once, so the two halves never disagree: `aws_sse_bucket_key_enabled: "false"`
185
+ (or `"yes"`, `"on"`, `"1"`) yields the same flag on either side.
186
+
126
187
  ### ai
127
188
 
128
189
  - **ai:** an MCP session that dies after it opened no longer fails every later
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: loom-kernel
3
- Version: 2.4.0
3
+ Version: 2.6.0
4
4
  Summary: Loom Python project
5
5
  License-File: LICENSE
6
6
  Classifier: Typing :: Typed
@@ -27,6 +27,8 @@ Provides-Extra: ai-pydantic
27
27
  Requires-Dist: pydantic-ai-slim<3,>=2; extra == 'ai-pydantic'
28
28
  Provides-Extra: ai-templates
29
29
  Requires-Dist: pydantic-ai-slim[spec]<3,>=2; extra == 'ai-templates'
30
+ Provides-Extra: ai-typesafe
31
+ Requires-Dist: pydantic-ai-slim[typesafe]<3,>=2.45; extra == 'ai-typesafe'
30
32
  Provides-Extra: cache
31
33
  Requires-Dist: aiocache<1.0,>=0.12; extra == 'cache'
32
34
  Requires-Dist: omegaconf<3.0,>=2.3; extra == 'cache'
@@ -509,6 +509,14 @@ The hook's return value is a client-facing DTO delivered verbatim to the caller
509
509
  — public on an `allow_anonymous` mount — so return a purpose-built struct,
510
510
  never a domain entity.
511
511
 
512
+ In process, `AgentAnswer` and `AgentResult` also carry `provider_details`: what the provider
513
+ reported about the final answer beyond the answer itself, verbatim and opaque
514
+ to loom — a decision model's confidence and probabilities per field (see
515
+ [`typesafe`](providers.md#typesafe-fills-an-output-it-never-writes-text)),
516
+ another provider's finish reason — or `None` when it reported nothing. Like
517
+ `messages`, it never reaches the wire: the `/run` body and the `final` frame
518
+ keep their four keys.
519
+
512
520
  The request body accepts an optional `conversation_id`: a string of 1 to 128
513
521
  characters that loom never reads and never keys anything on. It selects the
514
522
  conversation the loader receives when the artifact declares
@@ -797,8 +805,8 @@ accepts the parameter and ignores it, so scripted tests stay byte for byte.
797
805
 
798
806
  Clients keep sending `{"prompt", "conversation_id"}`. The `/run` body has
799
807
  exactly `output`, `usage`, `interaction_id` and `hook_result`; the `final`
800
- frame has the same four keys; `messages` appears in neither, nor in any A2A
801
- frame. Over A2A the thread travels as the message's `contextId`, which the
808
+ frame has the same four keys; `messages` and `provider_details` appear in
809
+ neither, nor in any A2A frame. Over A2A the thread travels as the message's `contextId`, which the
802
810
  runtime treats as the `conversation_id` (see [the A2A surface](a2a.md#conversations)).
803
811
 
804
812
  ### Two turns
@@ -25,6 +25,7 @@ with `MODEL_ROLE_UNBOUND`. It is never deferred to the first request.
25
25
  | `openai` | `ai-openai` | — | the **name of the environment variable** holding the API key; omit it and the SDK reads its own default | OpenAI's own API |
26
26
  | `anthropic` | `ai-anthropic` | — | the **name of the environment variable** holding the API key; omit it and the SDK reads its own default | Anthropic's own API |
27
27
  | `gateway` | `ai-openai` | `endpoint` | the **name of the environment variable** holding the API key the endpoint expects | **any OpenAI-compatible endpoint** — see below |
28
+ | `typesafe` | `ai-typesafe` | — | the **name of the environment variable** holding the API key; omit it and the SDK reads `TYPESAFE_API_KEY` | TypeSafe's Jev — a decision model, see below |
28
29
 
29
30
  Which **provider-run tools** each binding admits — web search, web fetch, code
30
31
  execution — is decided by the model class of the installed engine, not by this
@@ -107,6 +108,37 @@ An artifact then picks one with `model_role: reasoning`. Moving that agent to a
107
108
  cheaper model later is a one-line config change with no artifact edit and no
108
109
  redeploy of the agent definition.
109
110
 
111
+ ## `typesafe` fills an output, it never writes text
112
+
113
+ Jev, TypeSafe's model, is not a language model: given a state, it answers
114
+ typed questions about it with a calibrated probability each, and pydantic-ai
115
+ turns the agent's `output_type` into those questions. Bind it to a role whose
116
+ output is a strict class of `bool`, `Literal`/`Enum`, bounded `float` or
117
+ `IntEnum` fields; a `str` field, a text answer, a file in the prompt or a
118
+ tool taking arguments is refused by pydantic-ai before any request.
119
+
120
+ ```yaml
121
+ ai:
122
+ models:
123
+ verdict:
124
+ provider: typesafe
125
+ model: jev-latest
126
+ credentials_ref: TYPESAFE_API_KEY
127
+ ```
128
+
129
+ pydantic-ai fills a TypeSafe output through tool mode only, so this is the one
130
+ binding whose `output_mode` loom can check before the first request: pinning
131
+ `native` fails **start-up** with `OUTPUT_MODE_UNSUPPORTED`, naming the mode
132
+ the provider serves. `endpoint`, when set, replaces the API's base URL.
133
+ `streaming` changes nothing: Jev returns each answer whole.
134
+
135
+ What makes the answer worth having — the probability behind each field and
136
+ the margin by which it cleared its threshold — comes back on
137
+ `AgentAnswer.provider_details`, verbatim as pydantic-ai reports it
138
+ (`confidence`, `probabilities`, `scores`, `requests`), so a use case can act
139
+ on a firm verdict and escalate a doubtful one. In process only; see
140
+ [what the caller receives](artifacts.md#what-the-caller-receives).
141
+
110
142
  ## Credentials never live in the artifact — or in the config
111
143
 
112
144
  `credentials_ref` is a **reference**, never the secret itself: an AWS profile
@@ -114,7 +146,7 @@ name for `bedrock`, and for the API-key providers the **name of an environment
114
146
  variable** loom reads at start-up. An unset variable fails start-up with
115
147
  `PROVIDER_SETTING_MISSING` naming it, instead of a 401 on the first call; omit
116
148
  `credentials_ref` and each SDK reads its own default variable
117
- (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`).
149
+ (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `TYPESAFE_API_KEY`).
118
150
 
119
151
  The value is validated fail-closed at start-up — a value shaped like literal
120
152
  secret material (`AKIA…`, `sk-…`, `ghp_…`, a URL with credentials in its
@@ -193,7 +225,9 @@ loom does not infer it per provider. Two consequences follow from that:
193
225
  surfaces as `PROVIDER_UNAVAILABLE`. The provider's detail stays server-side,
194
226
  in the logs; the caller sees the code. Loom cannot check a mode against a
195
227
  model before the first request, so a wrong pin is found there, not at
196
- start-up.
228
+ start-up. The one exception is `typesafe`, whose models pydantic-ai serves
229
+ by tool alone, so a `native` pin on it fails start-up with
230
+ `OUTPUT_MODE_UNSUPPORTED`.
197
231
 
198
232
  ## Asking for the answer whole, not as a stream
199
233
 
@@ -0,0 +1,44 @@
1
+ # Clean architecture rules
2
+
3
+ Project invariants:
4
+
5
+ 1. Domain/Application layers must not import infrastructure.
6
+ 2. Repositories are interface-driven.
7
+ 3. Runtime side effects are explicit and observable.
8
+ 4. Public APIs are typed and documented.
9
+
10
+ This contract is enforced through module boundaries and strict typing checks.
11
+
12
+ ## Optional dependencies: islands
13
+
14
+ A dependency loom does not require lives behind an extra, and the code that
15
+ uses it follows one pattern, whatever the pillar:
16
+
17
+ 1. **One optional dependency, one island.** An island is a module that
18
+ imports the vendor SDK at its top, with an ordinary `import`, and nothing
19
+ else in loom imports that SDK. The island builds what the SDK serves
20
+ (`loom.ai.engines.pydantic_ai.providers.bedrock`, `loom.core.sql.clickhouse`,
21
+ `loom.streaming.bytewax`).
22
+ 2. **The selector loads the island, not the SDK.** A registry keyed by
23
+ provider, engine or backend name loads the island by module path once it
24
+ knows the name — `loom.core.plugins.optional.import_optional` for a module
25
+ of loom, `loom.core.plugins.entrypoints` for a plugin distribution — and
26
+ translates `MissingExtraError` into its own coded failure naming the extra
27
+ (`PROVIDER_NOT_INSTALLED` in the AI layer).
28
+ 3. **Nothing else.** No `import` inside a function to reach a vendor SDK, no
29
+ module-level `try`/`except ImportError` with a `None` sentinel checked
30
+ later, no `importlib.import_module("vendor")` on the request path, no
31
+ attribute lookup on a vendor module.
32
+
33
+ The island needs no `try`/`except` of its own: its `ImportError` is what
34
+ `import_optional` translates. Islands today: the pydantic-ai providers and
35
+ extras (`loom.ai.engines.pydantic_ai.providers`, `.extras`), boto3 for the
36
+ config resolvers (`loom.core.config._boto3`), and the whole-package islands
37
+ that predate the rule (`loom.core.sql.clickhouse`, `loom.streaming.bytewax`,
38
+ `loom.etl.testing`). A dependency listed under `dependencies` is not
39
+ optional and gets no island: import it at the top like any other. A test that stands in for an absent or stubbed SDK
40
+ blocks the SDK **and** evicts the island, so the next load re-imports it;
41
+ `tests/helpers/extras.py` does both. A module that reads an SDK the application
42
+ itself may or may not have loaded — pydantic in `loom.core.model` — gates on
43
+ `sys.modules` instead, on purpose: loom never loads what the application did
44
+ not. Code that predates this rule is migrated when it is next touched.
@@ -164,6 +164,12 @@ storage:
164
164
 
165
165
  tmp_root: /var/lib/loom/lake/_tmp
166
166
 
167
+ temp:
168
+ root: s3://my-lake/_checkpoints
169
+ storage_options:
170
+ aws_server_side_encryption: aws:kms
171
+ aws_sse_kms_key_id: alias/loom-temp
172
+
167
173
  observability:
168
174
  log:
169
175
  enabled: true
@@ -179,6 +185,11 @@ observability:
179
185
  # database: ops
180
186
  ```
181
187
 
188
+ Server-side encryption declared in `storage.temp.storage_options` is honoured by
189
+ the Polars engine only; with `engine: spark` the checkpoint write goes through
190
+ Hadoop's S3A, which takes it from `fs.s3a.server-side-encryption-*` on the
191
+ session instead.
192
+
182
193
  ```python
183
194
  from loom.etl import ETLRunner
184
195
 
@@ -164,6 +164,12 @@ storage:
164
164
 
165
165
  tmp_root: /var/lib/loom/lake/_tmp
166
166
 
167
+ temp:
168
+ root: s3://my-lake/_checkpoints
169
+ storage_options:
170
+ aws_server_side_encryption: aws:kms
171
+ aws_sse_kms_key_id: alias/loom-temp
172
+
167
173
  observability:
168
174
  log:
169
175
  enabled: true
@@ -179,6 +185,11 @@ observability:
179
185
  # database: ops
180
186
  ```
181
187
 
188
+ Server-side encryption declared in `storage.temp.storage_options` is honoured by
189
+ the Polars engine only; with `engine: spark` the checkpoint write goes through
190
+ Hadoop's S3A, which takes it from `fs.s3a.server-side-encryption-*` on the
191
+ session instead.
192
+
182
193
  ```python
183
194
  from loom.etl import ETLRunner
184
195
 
@@ -59,7 +59,8 @@ cache:
59
59
  ttl: # per-entity overrides; append _list for the list side
60
60
  user: 600
61
61
  user_list: 300
62
- max_size: 1000 # injected into every aiocache.SimpleMemoryCache alias
62
+ max_size: 1000 # entry cap for every aiocache.SimpleMemoryCache alias
63
+ max_bytes: 33554432 # byte cap for the same aliases; either or both
63
64
  aiocache_alias: data # alias that stores entities (default: "default")
64
65
  counter_alias: counters # alias that stores the generation counters (default: same as aiocache_alias)
65
66
  aiocache_config:
@@ -80,6 +81,7 @@ cache:
80
81
  | `ttl_jitter` | `0.1` | Random spread applied per write so a burst does not expire at once; `0` disables it |
81
82
  | `ttl` | `{}` | Per-entity overrides; `user` for the entity read, `user_list` for the list side |
82
83
  | `max_size` | none | Entry cap for `aiocache.SimpleMemoryCache` aliases; ignored by Redis |
84
+ | `max_bytes` | none | Byte cap on the stored payloads of the same aliases; ignored by Redis |
83
85
  | `aiocache_alias` | `default` | Alias of the data backend |
84
86
  | `counter_alias` | none | Alias of the counter backend; falls back to `aiocache_alias` |
85
87
  | `aiocache_config` | `{}` | Alias map handed to `aiocache`, one entry per alias |
@@ -94,6 +96,16 @@ Redis `INCR`), and a serializer in front of them would break that. When
94
96
  falls back to a non-atomic get-and-set, which is fine for a single process and
95
97
  not for several.
96
98
 
99
+ `aiocache.SimpleMemoryCache` itself accepts no bound: it only shrinks by TTL.
100
+ An alias configured with that class and a bound — `max_size` or `max_bytes` at
101
+ the `cache:` level, or its own inside `aiocache_config`, which win — is served by
102
+ `loom.core.cache.memory.BoundedMemoryCache` instead, which evicts the least
103
+ recently used entries the moment a write crosses either bound. Bytes are
104
+ measured on the stored payload, so on the data alias they are the serialized
105
+ size, exactly. A single value larger than `max_bytes` is kept and evicts
106
+ everything else, because a `get` right after a `set` must not miss. Redis and
107
+ every other server backend are forwarded unchanged and bound their own memory.
108
+
97
109
  The YAML reads `aiocache_config:` only. `CacheConfig.from_mapping` also accepts
98
110
  the short key `aiocache:` for callers building the config by hand; from the
99
111
  YAML that key — like any other key `CacheConfig` does not declare, `ttls:` for
@@ -410,7 +422,7 @@ cache:
410
422
 
411
423
  Keep a separate counter alias for any multi-process deployment: with one alias
412
424
  the counters share the data serializer and lose the atomic increment.
413
- `max_size` has no effect on Redis.
425
+ `max_size` and `max_bytes` have no effect on Redis.
414
426
 
415
427
  ## Failures
416
428
 
@@ -122,6 +122,11 @@ ai-openai = [
122
122
  ai-anthropic = [
123
123
  "pydantic-ai-slim[anthropic]>=2,<3",
124
124
  ]
125
+ # TypeSafe's Jev: a decision model that fills a typed output from a state, no
126
+ # text. Its model class first shipped in pydantic-ai 2.45.
127
+ ai-typesafe = [
128
+ "pydantic-ai-slim[typesafe]>=2.45,<3",
129
+ ]
125
130
  # Only an artefact declaring `template:` on an instruction block needs this:
126
131
  # the engine compiles a Handlebars template and renders it per request. An
127
132
  # artefact whose instructions are literal never reaches the import.
@@ -255,7 +260,7 @@ dev = [
255
260
  "httpx>=0.27",
256
261
  "types-pyyaml>=6.0.12.20260724",
257
262
  "jsonschema>=4.26.0",
258
- "pydantic-ai-slim[anthropic,bedrock,openai,spec]>=2,<3",
263
+ "pydantic-ai-slim[anthropic,bedrock,openai,spec,typesafe]>=2.45,<3",
259
264
  "fasta2a>=0.6,<1",
260
265
  "a2a-sdk>=1.1,<2",
261
266
  "pydantic-ai-harness[skills]>=0.28,<1",
@@ -179,6 +179,12 @@ class AgentResult(LoomFrozenStruct, frozen=True, kw_only=True):
179
179
  messages: New messages of this run in the engine's own serialised
180
180
  form; ``None`` when they are longer than
181
181
  ``policies.max_history_bytes``.
182
+ provider_details: What the provider reported about the final answer
183
+ beyond the answer itself, verbatim and opaque to loom — a
184
+ decision model's confidence and probabilities per field, another
185
+ provider's finish reason. ``None`` when it reported nothing. In
186
+ process only: the ``/run`` body and the ``final`` frame never
187
+ carry it.
182
188
  """
183
189
 
184
190
  output: object
@@ -186,6 +192,7 @@ class AgentResult(LoomFrozenStruct, frozen=True, kw_only=True):
186
192
  interaction_id: str | None = None
187
193
  hook_result: object | None = None
188
194
  messages: bytes | None = None
195
+ provider_details: Mapping[str, Any] | None = None
189
196
 
190
197
 
191
198
  class AgentAnswer(LoomFrozenStruct, Generic[AnswerT], frozen=True, kw_only=True):
@@ -205,11 +212,16 @@ class AgentAnswer(LoomFrozenStruct, Generic[AnswerT], frozen=True, kw_only=True)
205
212
  overrode it for this call only.
206
213
  usage: Resource accounting of this run only.
207
214
  interaction_id: Identifier the runtime minted for this run.
215
+ provider_details: What the provider reported about this answer beyond
216
+ the answer itself, verbatim and opaque to loom — a decision
217
+ model's confidence and probabilities per field, another
218
+ provider's finish reason — or ``None`` when it reported nothing.
208
219
  """
209
220
 
210
221
  output: AnswerT
211
222
  usage: AgentUsage
212
223
  interaction_id: str | None = None
224
+ provider_details: Mapping[str, Any] | None = None
213
225
 
214
226
 
215
227
  class McpHandle(Protocol):
@@ -678,6 +690,9 @@ class FinalEvent(LoomFrozenStruct, frozen=True, kw_only=True, tag="final", tag_f
678
690
  messages: New messages of this run in the engine's own serialised
679
691
  form; ``None`` when they are longer than
680
692
  ``policies.max_history_bytes``.
693
+ provider_details: What the provider reported about the final answer
694
+ beyond the answer itself, as on :class:`AgentResult`; the
695
+ runtime copies it there, and no wire surface publishes it.
681
696
  """
682
697
 
683
698
  output: object
@@ -685,6 +700,7 @@ class FinalEvent(LoomFrozenStruct, frozen=True, kw_only=True, tag="final", tag_f
685
700
  interaction_id: str | None = None
686
701
  hook_result: object | None = None
687
702
  messages: bytes | None = None
703
+ provider_details: Mapping[str, Any] | None = None
688
704
 
689
705
 
690
706
  AgentEvent = TextDeltaEvent | ToolCallEvent | ToolResultEvent | ErrorEvent | FinalEvent
@@ -0,0 +1,79 @@
1
+ """Outbound A2A transport: this agent calling a remote one (T147).
2
+
3
+ Two entry points, one connection recipe, both served by the
4
+ :mod:`~loom.ai.engines.pydantic_ai.extras.a2a` island, the one module of the
5
+ engine that imports the ``a2a-sdk``:
6
+
7
+ * :func:`create_a2a_client` is the :data:`~loom.ai.runtime.A2AClientFactory`
8
+ the runtime opens at start-up. Entering it fetches the remote card, applies
9
+ the grant's skill filter to it and hands back a usable session, so an
10
+ unreachable or mismatched agent fails start-up as ``A2A_AGENT_UNREACHABLE``
11
+ instead of surfacing on the first delegation.
12
+ * :func:`send_to_remote_agent` performs one delegation.
13
+
14
+ This module loads the island when a grant names it — :func:`require_a2a_sdk`
15
+ at build, the two entry points at call — so a deployment that declares no
16
+ ``a2a`` grant never imports the SDK, and one that does fails start-up naming
17
+ the ``ai-a2a`` extra when it is missing.
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ from contextlib import AbstractAsyncContextManager
23
+ from typing import TYPE_CHECKING, Protocol, cast
24
+
25
+ from loom.ai.compiler import CompiledA2ACapability
26
+ from loom.ai.registry import require_provider_sdk
27
+
28
+ if TYPE_CHECKING:
29
+ from a2a.client import Client
30
+
31
+ _ISLAND = "loom.ai.engines.pydantic_ai.extras.a2a"
32
+ _EXTRA = "ai-a2a"
33
+
34
+
35
+ class _A2ASdk(Protocol):
36
+ """The two names the A2A island publishes."""
37
+
38
+ def create_a2a_client(
39
+ self, capability: CompiledA2ACapability
40
+ ) -> AbstractAsyncContextManager[Client]: ...
41
+
42
+ async def send_to_remote_agent(self, capability: CompiledA2ACapability, prompt: str) -> str: ...
43
+
44
+
45
+ def _sdk() -> _A2ASdk:
46
+ """Load the island; the cast records the contract every island keeps."""
47
+ return cast(_A2ASdk, require_provider_sdk("a2a", _ISLAND, _EXTRA))
48
+
49
+
50
+ def require_a2a_sdk() -> None:
51
+ """Fail the build when the ``ai-a2a`` extra is not installed.
52
+
53
+ Raises:
54
+ AgentCompilationError: With ``PROVIDER_NOT_INSTALLED`` naming the
55
+ extra when the island cannot be imported.
56
+ """
57
+ _sdk()
58
+
59
+
60
+ def create_a2a_client(capability: CompiledA2ACapability) -> AbstractAsyncContextManager[Client]:
61
+ """Open one session against a remote agent, card fetched and checked.
62
+
63
+ Satisfies :data:`~loom.ai.runtime.A2AClientFactory`. See the island's
64
+ ``create_a2a_client`` for what entering the context does and raises.
65
+
66
+ Example::
67
+
68
+ runtime = AgentRuntime(..., a2a_client_factory=create_a2a_client)
69
+ """
70
+ return _sdk().create_a2a_client(capability)
71
+
72
+
73
+ async def send_to_remote_agent(capability: CompiledA2ACapability, prompt: str) -> str:
74
+ """Delegate one prompt to a remote agent and return its reply text.
75
+
76
+ See the island's ``send_to_remote_agent`` for the contract: the reply is
77
+ untrusted data, presented as a tool value and never as instruction.
78
+ """
79
+ return await _sdk().send_to_remote_agent(capability, prompt)
@@ -26,7 +26,7 @@ from collections.abc import Callable, Iterator, Mapping, Sequence
26
26
  from dataclasses import dataclass
27
27
  from enum import Enum
28
28
  from types import MappingProxyType
29
- from typing import Any, Final, NamedTuple, cast
29
+ from typing import Any, Final, NamedTuple, Protocol, cast
30
30
 
31
31
  from pydantic_ai import ToolReturn
32
32
  from pydantic_ai.capabilities import AbstractCapability
@@ -78,11 +78,11 @@ from loom.ai.errors import (
78
78
  AgentCompilationError,
79
79
  AgentRunError,
80
80
  AgentRunErrorCode,
81
- provider_not_installed,
82
81
  python_factory_failed,
83
82
  python_factory_not_callable,
84
83
  python_remote_not_granted,
85
84
  )
85
+ from loom.ai.registry import require_provider_sdk
86
86
  from loom.core.di import LoomContainer
87
87
  from loom.core.engine.compilable import Compilable
88
88
  from loom.core.engine.plan import ExecutionPlan
@@ -528,18 +528,22 @@ def _skills_capability(
528
528
  AgentCompilationError: When the ``ai-harness`` extra is not installed.
529
529
  """
530
530
  del context
531
- # Local import: the skills harness ships behind the optional ``ai-harness``
532
- # extra, and importing it at module load would break every deployment that
533
- # declares no ``skills`` grant.
534
- try:
535
- from pydantic_ai_harness import Skills
536
- except ImportError as exc:
537
- raise AgentCompilationError([provider_not_installed("skills", "ai-harness")]) from exc
531
+ sdk = cast(
532
+ _SkillsSdk,
533
+ require_provider_sdk("skills", "loom.ai.engines.pydantic_ai.extras.skills", "ai-harness"),
534
+ )
538
535
  return cast(
539
- "AbstractCapability[Any]", Skills(capability.directory, include=list(capability.names))
536
+ "AbstractCapability[Any]",
537
+ sdk.Skills(capability.directory, include=list(capability.names)),
540
538
  )
541
539
 
542
540
 
541
+ class _SkillsSdk(Protocol):
542
+ """The one name the skills island publishes."""
543
+
544
+ Skills: type[Any]
545
+
546
+
543
547
  _KINDS: Final[Mapping[type[CompiledCapability], _KindBinding]] = MappingProxyType(
544
548
  {
545
549
  CompiledUsecaseCapability: _KindBinding(_Destination.TOOLSET, _usecase_toolset),
@@ -242,6 +242,7 @@ class PydanticAIEngine:
242
242
  agent=self._plan.name,
243
243
  max_history_bytes=self._plan.policies.max_history_bytes,
244
244
  ),
245
+ provider_details=result.response.provider_details,
245
246
  )
246
247
 
247
248
  def run_stream(
@@ -783,6 +784,7 @@ class PydanticAIEngine:
783
784
  agent=self._plan.name,
784
785
  max_history_bytes=self._plan.policies.max_history_bytes,
785
786
  ),
787
+ provider_details=result.response.provider_details,
786
788
  )
787
789
 
788
790
 
@@ -77,6 +77,11 @@ IGNORED_EVENT_KINDS: frozenset[str] = frozenset(
77
77
  "realtime_input_transcription_error",
78
78
  "realtime_session_reconnect",
79
79
  "realtime_session_error",
80
+ # An application's own event and a capability's typed event, emitted into
81
+ # the engine's stream by code loom never runs; the closed loom union has
82
+ # no member for either (FR-035).
83
+ "custom",
84
+ "capability",
80
85
  }
81
86
  )
82
87
  """Engine event kinds with no loom counterpart; carried by no consumer."""
@@ -14,7 +14,7 @@ from __future__ import annotations
14
14
 
15
15
  from collections.abc import Awaitable, Callable, Mapping
16
16
  from types import MappingProxyType
17
- from typing import Any, Final, TypeAlias
17
+ from typing import Any, Final, Protocol, TypeAlias, cast
18
18
 
19
19
  from pydantic_ai import RunContext
20
20
  from pydantic_ai.messages import InstructionPart
@@ -26,8 +26,11 @@ from loom.ai.errors import (
26
26
  template_compilation_failed,
27
27
  template_extra_missing,
28
28
  )
29
+ from loom.core.plugins.optional import MissingExtraError, import_optional
29
30
 
30
31
  TEMPLATING_EXTRA: Final[str] = "ai-templates"
32
+ _HANDLEBARS_ISLAND: Final[str] = "loom.ai.engines.pydantic_ai.extras.handlebars"
33
+ """The one module of the engine importing ``pydantic_handlebars``."""
31
34
  """``pyproject.toml`` optional-dependency extra installing ``pydantic_handlebars``."""
32
35
 
33
36
  AgentInstructionItem: TypeAlias = InstructionPart | Callable[[RunContext[Any]], Awaitable[str]]
@@ -85,12 +88,31 @@ def ensure_templating_available(plan: AgentPlan) -> None:
85
88
 
86
89
  def _pydantic_handlebars_importable() -> bool:
87
90
  try:
88
- import pydantic_handlebars # noqa: F401
89
- except ImportError:
91
+ _handlebars()
92
+ except MissingExtraError:
90
93
  return False
91
94
  return True
92
95
 
93
96
 
97
+ class _Handlebars(Protocol):
98
+ """The two names the templating island publishes."""
99
+
100
+ HandlebarsError: type[Exception]
101
+
102
+ def compile_checked(
103
+ self, text: str, schema: Mapping[str, Any] | None
104
+ ) -> Callable[[Any], str]: ...
105
+
106
+
107
+ def _handlebars() -> _Handlebars:
108
+ """Load the island; the cast records the contract every island keeps.
109
+
110
+ Raises:
111
+ MissingExtraError: When ``pydantic_handlebars`` is not installed.
112
+ """
113
+ return cast(_Handlebars, import_optional(_HANDLEBARS_ISLAND, extra=TEMPLATING_EXTRA))
114
+
115
+
94
116
  def build_instructions(plan: AgentPlan) -> list[AgentInstructionItem]:
95
117
  """Project every compiled instruction block onto the engine's keyword form.
96
118
 
@@ -210,22 +232,17 @@ def _handlebars_instruction(
210
232
  AgentCompilationError: The template fails to parse, or fails the
211
233
  compatibility check against its declared schema.
212
234
  """
213
- import pydantic_handlebars
214
-
235
+ handlebars = _handlebars()
215
236
  schema = None if state is None else state.schema
216
237
  try:
217
- if schema is not None:
218
- pydantic_handlebars.check_template_compatibility(
219
- block.text, dict(schema), raise_on_error=True
220
- )
221
- compiled = pydantic_handlebars.compile(block.text)
222
- except pydantic_handlebars.HandlebarsError as exc:
238
+ rendered = handlebars.compile_checked(block.text, schema)
239
+ except handlebars.HandlebarsError as exc:
223
240
  raise AgentCompilationError(
224
241
  [template_compilation_failed(component, label, str(exc))]
225
242
  ) from exc
226
243
 
227
244
  async def render(ctx: RunContext[Any]) -> str:
228
- return compiled.render(ctx.deps.state)
245
+ return rendered(ctx.deps.state)
229
246
 
230
247
  return render
231
248