mainsequence-metatable 0.1.27.dev46__tar.gz → 0.1.28.dev48__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 (585) hide show
  1. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/client/metatables-migrations/SKILL.md +36 -8
  2. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/ms_tau_sdk/PINNED_FROM.txt +1 -1
  3. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/ms_tau_sdk/tau_project_customization/SKILL.md +10 -0
  4. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.mainsequence/workflows/metatables-api.yaml +12 -1
  5. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/PKG-INFO +2 -2
  6. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/agent/0019-metatables-analyst-agent.md +3 -3
  7. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/agent/0020-analyst-reads-as-its-requester.md +1 -1
  8. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md +1 -0
  9. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0002-application-administration-and-table-ownership.md +43 -0
  10. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0007-database-enforced-table-access.md +6 -2
  11. mainsequence_metatable-0.1.28.dev48/docs/adr/api/0022-concurrent-requests-and-connection-reuse.md +130 -0
  12. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/index.md +1 -0
  13. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/api/openapi.json +74 -2
  14. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/api/reference.md +2 -0
  15. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/api/tables-and-migrations.md +3 -0
  16. mainsequence_metatable-0.1.28.dev48/docs/assets/diagrams/namespace-access.svg +115 -0
  17. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/deploy-application-migrations.md +60 -3
  18. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/concepts/permissions-namespaces-labels.md +5 -0
  19. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/operations/configuration.md +7 -1
  20. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/operations/hosted-runtime.md +68 -2
  21. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/security/ownership-and-sharing.md +70 -4
  22. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/security/permissions.md +2 -1
  23. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/mkdocs.yml +1 -0
  24. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/pyproject.toml +2 -2
  25. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/mainsequence_metatable.egg-info/PKG-INFO +2 -2
  26. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/mainsequence_metatable.egg-info/SOURCES.txt +13 -0
  27. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/mainsequence_metatable.egg-info/requires.txt +1 -1
  28. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/analysis.py +6 -0
  29. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/auth/boundary.py +3 -0
  30. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/auth/local_actor.py +3 -0
  31. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/bootstrap.py +2 -0
  32. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/configuration.py +14 -1
  33. mainsequence_metatable-0.1.28.dev48/src/metatables/api/app/connection_count.py +67 -0
  34. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/main.py +28 -1
  35. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/mcp.py +7 -1
  36. mainsequence_metatable-0.1.28.dev48/src/metatables/api/app/routes/access_map.py +124 -0
  37. mainsequence_metatable-0.1.28.dev48/src/metatables/api/app/routes/caller.py +31 -0
  38. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/runtime_context.py +3 -1
  39. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_registration.py +3 -1
  40. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_sql.py +4 -0
  41. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/runtime.py +3 -0
  42. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/transfer.py +10 -1
  43. mainsequence_metatable-0.1.28.dev48/src/metatables/api/backend/backends/adapters/postgresql_connection.py +279 -0
  44. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +3 -0
  45. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/table_cursor.py +1 -3
  46. mainsequence_metatable-0.1.28.dev48/src/metatables/api/backend/backends/connection_pool.py +430 -0
  47. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/hosted.py +6 -1
  48. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/hosted_access.py +24 -24
  49. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/postgresql_access.py +29 -32
  50. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/relational.py +38 -23
  51. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/restricted_sql.py +10 -6
  52. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/domain/catalog_rules.py +10 -0
  53. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/platform_principals.py +23 -5
  54. mainsequence_metatable-0.1.28.dev48/src/metatables/api/backend/migrations/versions/0012_table_creator.py +42 -0
  55. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/operations/register_catalog.py +62 -11
  56. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/catalog.py +1 -0
  57. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/models.py +2 -0
  58. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/metatables/configuration.yaml +5 -0
  59. mainsequence_metatable-0.1.28.dev48/src/metatables/api/request_timing.py +162 -0
  60. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/__init__.py +49 -11
  61. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/transfer_contract.py +4 -2
  62. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/analyst/test_mcp.py +13 -0
  63. mainsequence_metatable-0.1.28.dev48/tests/auth/test_caller_endpoint.py +37 -0
  64. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_runtime_bootstrap.py +16 -8
  65. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/catalog/test_migration.py +46 -8
  66. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/conftest.py +11 -0
  67. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/conftest.py +3 -0
  68. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/test_catalog_contract.py +4 -3
  69. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_application_owned_migrations.py +45 -0
  70. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_remaining_client_routes.py +1 -1
  71. mainsequence_metatable-0.1.28.dev48/tests/integrations/test_connection_reuse.py +641 -0
  72. mainsequence_metatable-0.1.28.dev48/tests/integrations/test_request_timing.py +294 -0
  73. mainsequence_metatable-0.1.28.dev48/tests/integrations/test_serving_policy.py +23 -0
  74. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/operations/test_register_catalog.py +114 -0
  75. mainsequence_metatable-0.1.28.dev48/tests/permissions/test_access_map.py +122 -0
  76. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/uv.lock +5 -5
  77. mainsequence_metatable-0.1.27.dev46/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -105
  78. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/analyze-with-sql/SKILL.md +0 -0
  79. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/client/metatables-local-development/SKILL.md +0 -0
  80. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/client/metatables-meta-tables/SKILL.md +0 -0
  81. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/client/metatables-table-discovery/SKILL.md +0 -0
  82. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
  83. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +0 -0
  84. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/discover-tables/SKILL.md +0 -0
  85. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/ms_tau_sdk/tau_a2a_runtime_adapter/SKILL.md +0 -0
  86. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/ms_tau_sdk/tau_local_development/SKILL.md +0 -0
  87. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/ms_tau_sdk/tau_repository_integration/SKILL.md +0 -0
  88. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/.agents/skills/ms_tau_sdk/tau_security_and_access/SKILL.md +0 -0
  89. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/LICENSE +0 -0
  90. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/MANIFEST.in +0 -0
  91. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/README.md +0 -0
  92. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/alembic.ini +0 -0
  93. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/api/metatables/main.py +0 -0
  94. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/compose.database-tests.yml +0 -0
  95. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +0 -0
  96. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0004-approved-application-migrations.md +0 -0
  97. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
  98. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0006-historical-run-graphs.md +0 -0
  99. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
  100. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
  101. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0008-mysql-mssql-table-workflows.md +0 -0
  102. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0009-shared-credential-store.md +0 -0
  103. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
  104. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
  105. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0013-application-owned-migrations.md +0 -0
  106. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +0 -0
  107. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0015-timescale-compression-and-retention-policies.md +0 -0
  108. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0016-impact-preflight.md +0 -0
  109. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0017-hosted-request-identity.md +0 -0
  110. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0018-search-document-pipeline.svg +0 -0
  111. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/api/0018-table-search.md +0 -0
  112. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
  113. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
  114. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/api/authentication-and-errors.md +0 -0
  115. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/api/data-sources.md +0 -0
  116. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/api/overview.md +0 -0
  117. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/api/time-index-and-updates.md +0 -0
  118. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/assets/branding/metatables.svg +0 -0
  119. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/assets/diagrams/local-client-experience.svg +0 -0
  120. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/bounded-transfers.md +0 -0
  121. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/build-an-updater.md +0 -0
  122. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/define-and-migrate-tables.md +0 -0
  123. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/installation-and-connection.md +0 -0
  124. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/local-storage.md +0 -0
  125. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/query-and-mutate.md +0 -0
  126. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/quickstart.md +0 -0
  127. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/read-existing-time-index-tables.md +0 -0
  128. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/register-existing-tables.md +0 -0
  129. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/tutorial.md +0 -0
  130. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/client/upgrade-legacy-app.md +0 -0
  131. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/concepts/architecture.md +0 -0
  132. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/concepts/data-sources.md +0 -0
  133. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/concepts/identity-and-scope.md +0 -0
  134. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/concepts/runs-and-execution-graphs.md +0 -0
  135. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
  136. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/concepts/time-index-tables-and-updates.md +0 -0
  137. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/contributing/architecture-and-boundaries.md +0 -0
  138. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/contributing/database-backends.md +0 -0
  139. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/contributing/documentation.md +0 -0
  140. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/contributing/releasing.md +0 -0
  141. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/contributing/testing.md +0 -0
  142. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/README.md +0 -0
  143. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/__init__.py +0 -0
  144. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/bounded_reader.py +0 -0
  145. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/data_sources/README.md +0 -0
  146. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/data_sources/mssql.json +0 -0
  147. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/data_sources/mysql.json +0 -0
  148. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/data_sources/postgresql.json +0 -0
  149. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/data_sources/register.py +0 -0
  150. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/external_table.py +0 -0
  151. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/local_app/README.md +0 -0
  152. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/local_app/__init__.py +0 -0
  153. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/local_app/__main__.py +0 -0
  154. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/local_app/migrations/__init__.py +0 -0
  155. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/local_app/migrations/env.py +0 -0
  156. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/local_app/migrations/script.py.mako +0 -0
  157. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  158. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/local_app/tables.py +0 -0
  159. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/query.py +0 -0
  160. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/quickstart.py +0 -0
  161. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/reader.py +0 -0
  162. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/scripts/__init__.py +0 -0
  163. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/scripts/setup_metatables.py +0 -0
  164. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tables.py +0 -0
  165. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/README.md +0 -0
  166. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/__init__.py +0 -0
  167. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/__main__.py +0 -0
  168. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/data/README.md +0 -0
  169. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  170. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/frames.py +0 -0
  171. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/migrations/__init__.py +0 -0
  172. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/migrations/env.py +0 -0
  173. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/migrations/registry.py +0 -0
  174. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/migrations/script.py.mako +0 -0
  175. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
  176. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  177. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  178. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  179. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/operations.py +0 -0
  180. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/tables.py +0 -0
  181. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/tutorial/updaters.py +0 -0
  182. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/examples/updater.py +0 -0
  183. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/index.md +0 -0
  184. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/operations/catalog-migrations.md +0 -0
  185. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/operations/local-runtime.md +0 -0
  186. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/operations/recovery-and-observability.md +0 -0
  187. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/operations/run-history.md +0 -0
  188. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/operations/run-logs.md +0 -0
  189. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/reference/capabilities.md +0 -0
  190. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/reference/cli.md +0 -0
  191. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/reference/python.md +0 -0
  192. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/docs/security/index.md +0 -0
  193. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/scripts/__init__.py +0 -0
  194. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/scripts/build_reference.py +0 -0
  195. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/scripts/check_boundaries.py +0 -0
  196. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/scripts/check_client_api_coverage.py +0 -0
  197. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/scripts/check_distribution_sources.py +0 -0
  198. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/scripts/check_docs.py +0 -0
  199. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/scripts/check_examples_debug.py +0 -0
  200. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/scripts/check_project.py +0 -0
  201. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/scripts/dev_release_version.py +0 -0
  202. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/scripts/test_databases.py +0 -0
  203. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/scripts/test_postgresql.py +0 -0
  204. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/setup.cfg +0 -0
  205. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
  206. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
  207. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
  208. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/__init__.py +0 -0
  209. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/_admin_source.json +0 -0
  210. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/_build.py +0 -0
  211. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/_skill_bundle.py +0 -0
  212. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/analyst/__init__.py +0 -0
  213. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/__init__.py +0 -0
  214. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/__init__.py +0 -0
  215. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/auth/__init__.py +0 -0
  216. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/credential_admin.py +0 -0
  217. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/development.py +0 -0
  218. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/development_client.py +0 -0
  219. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/error_logging.py +0 -0
  220. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/platform_cache.py +0 -0
  221. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/__init__.py +0 -0
  222. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/column_search.py +0 -0
  223. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/contract_validation.py +0 -0
  224. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/data_sources.py +0 -0
  225. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/managed_finalize.py +0 -0
  226. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/migration_connection.py +0 -0
  227. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/namespaces.py +0 -0
  228. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/run_logs.py +0 -0
  229. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/schema_graph.py +0 -0
  230. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/security.py +0 -0
  231. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_cascade.py +0 -0
  232. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_crud.py +0 -0
  233. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_delete.py +0 -0
  234. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_filter.py +0 -0
  235. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_import.py +0 -0
  236. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_introspection.py +0 -0
  237. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_patch.py +0 -0
  238. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_response.py +0 -0
  239. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_search.py +0 -0
  240. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_search_document.py +0 -0
  241. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
  242. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/time_index_delete.py +0 -0
  243. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/time_index_reads.py +0 -0
  244. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/time_index_stats.py +0 -0
  245. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/timescale_policies.py +0 -0
  246. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/update_batch.py +0 -0
  247. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
  248. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/update_constants.py +0 -0
  249. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/update_crud.py +0 -0
  250. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/update_details.py +0 -0
  251. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/update_graph.py +0 -0
  252. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
  253. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/update_registration.py +0 -0
  254. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/update_runs.py +0 -0
  255. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/routes/update_statistics.py +0 -0
  256. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/runtime_control.py +0 -0
  257. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/runtime_database.py +0 -0
  258. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/app/source_passwords.py +0 -0
  259. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/__init__.py +0 -0
  260. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/__init__.py +0 -0
  261. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/access.py +0 -0
  262. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
  263. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
  264. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
  265. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -0
  266. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
  267. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
  268. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
  269. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
  270. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
  271. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
  272. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
  273. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
  274. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
  275. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
  276. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
  277. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
  278. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
  279. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
  280. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/catalog.py +0 -0
  281. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
  282. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/catalog_types.py +0 -0
  283. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/contracts.py +0 -0
  284. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/migration_connection.py +0 -0
  285. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/native.py +0 -0
  286. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/operations.py +0 -0
  287. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/pages.py +0 -0
  288. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/registry.py +0 -0
  289. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/relation_tables.py +0 -0
  290. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
  291. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/streaming.py +0 -0
  292. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/backends/timescale.py +0 -0
  293. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/contracts/__init__.py +0 -0
  294. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/contracts/relation_import.py +0 -0
  295. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/contracts/storage_layouts.py +0 -0
  296. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
  297. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/contracts/values.py +0 -0
  298. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/domain/__init__.py +0 -0
  299. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
  300. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/domain/index_statistics.py +0 -0
  301. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/domain/label_rules.py +0 -0
  302. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/domain/permission_rules.py +0 -0
  303. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/domain/update_constants.py +0 -0
  304. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/__init__.py +0 -0
  305. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
  306. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
  307. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/credential_store.py +0 -0
  308. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
  309. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
  310. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
  311. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/run_logs.py +0 -0
  312. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
  313. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
  314. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/integrations/source_validation.py +0 -0
  315. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/__init__.py +0 -0
  316. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/env.py +0 -0
  317. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/script.py.mako +0 -0
  318. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
  319. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
  320. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
  321. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
  322. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
  323. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
  324. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
  325. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
  326. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +0 -0
  327. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/0010_cascade_targets.py +0 -0
  328. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/0011_table_search.py +0 -0
  329. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
  330. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/operations/__init__.py +0 -0
  331. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
  332. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
  333. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/operations/create_table.py +0 -0
  334. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
  335. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/operations/import_relations.py +0 -0
  336. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/operations/introspect_table.py +0 -0
  337. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/operations/read_time_index.py +0 -0
  338. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/__init__.py +0 -0
  339. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/cascade.py +0 -0
  340. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/database.py +0 -0
  341. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/grants.py +0 -0
  342. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/impact.py +0 -0
  343. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/labels.py +0 -0
  344. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/locking.py +0 -0
  345. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/physical_operations.py +0 -0
  346. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/projections.py +0 -0
  347. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
  348. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
  349. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
  350. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
  351. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/table_queries.py +0 -0
  352. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/table_response.py +0 -0
  353. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/update_graph.py +0 -0
  354. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
  355. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/updates.py +0 -0
  356. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
  357. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
  358. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/search/__init__.py +0 -0
  359. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/search/documents.py +0 -0
  360. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/search/embeddings.py +0 -0
  361. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/search/index.py +0 -0
  362. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/search/ranking.py +0 -0
  363. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/search/text.py +0 -0
  364. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/backend/search/worker.py +0 -0
  365. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/metatables/__init__.py +0 -0
  366. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/api/metatables/main.py +0 -0
  367. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/cli/__init__.py +0 -0
  368. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/cli/admin_install.py +0 -0
  369. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/cli/app.py +0 -0
  370. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/cli/filters.py +0 -0
  371. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/cli/local.py +0 -0
  372. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/cli/migrations.py +0 -0
  373. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/cli/project.py +0 -0
  374. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/cli/skills.py +0 -0
  375. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/compiled_sql/__init__.py +0 -0
  376. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/compiled_sql/mssql.py +0 -0
  377. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/compiled_sql/v1.py +0 -0
  378. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/dtype_codec.py +0 -0
  379. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/endpoint.py +0 -0
  380. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/README.md +0 -0
  381. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/__init__.py +0 -0
  382. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/bounded_reader.py +0 -0
  383. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/data_sources/README.md +0 -0
  384. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/data_sources/mssql.json +0 -0
  385. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/data_sources/mysql.json +0 -0
  386. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/data_sources/postgresql.json +0 -0
  387. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/data_sources/register.py +0 -0
  388. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/external_table.py +0 -0
  389. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/local_app/README.md +0 -0
  390. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/local_app/__init__.py +0 -0
  391. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/local_app/__main__.py +0 -0
  392. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
  393. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/local_app/migrations/env.py +0 -0
  394. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
  395. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  396. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/local_app/tables.py +0 -0
  397. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/query.py +0 -0
  398. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/quickstart.py +0 -0
  399. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/reader.py +0 -0
  400. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/scripts/__init__.py +0 -0
  401. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/scripts/setup_metatables.py +0 -0
  402. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tables.py +0 -0
  403. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/README.md +0 -0
  404. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/__init__.py +0 -0
  405. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/__main__.py +0 -0
  406. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/data/README.md +0 -0
  407. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  408. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/frames.py +0 -0
  409. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
  410. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/migrations/env.py +0 -0
  411. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
  412. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
  413. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
  414. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  415. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  416. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  417. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/operations.py +0 -0
  418. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/tables.py +0 -0
  419. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/tutorial/updaters.py +0 -0
  420. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/examples/updater.py +0 -0
  421. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/future_registry.py +0 -0
  422. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/hashing.py +0 -0
  423. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/instrumentation.py +0 -0
  424. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/local_connection.py +0 -0
  425. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/local_files.py +0 -0
  426. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/local_run_logs.py +0 -0
  427. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/log_contract.py +0 -0
  428. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/alembic.py +0 -0
  429. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/connection.py +0 -0
  430. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/env.py +0 -0
  431. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/provider.py +0 -0
  432. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/registry.py +0 -0
  433. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/runner.py +0 -0
  434. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/scaffold.py +0 -0
  435. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/sqlite.py +0 -0
  436. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/templates/__init__.py +0 -0
  437. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/templates/env.py.mako +0 -0
  438. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/templates/script.py.mako +0 -0
  439. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/migrations/tls.py +0 -0
  440. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/models.py +0 -0
  441. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/pydantic_metadata.py +0 -0
  442. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/run_logging.py +0 -0
  443. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/runtime.py +0 -0
  444. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/runtime_context.py +0 -0
  445. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/runtime_contract.py +0 -0
  446. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/schema_names.py +0 -0
  447. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/sdk_compat.py +0 -0
  448. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/sqlalchemy_contracts.py +0 -0
  449. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/storage_layout_contract.py +0 -0
  450. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/time_index_table_refs.py +0 -0
  451. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/transfer.py +0 -0
  452. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/transport.py +0 -0
  453. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/update_configuration_contract.py +0 -0
  454. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/updaters/__init__.py +0 -0
  455. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/updaters/configuration.py +0 -0
  456. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/updaters/dependencies.py +0 -0
  457. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/updaters/managers.py +0 -0
  458. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/updaters/namespacing.py +0 -0
  459. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/updaters/runner.py +0 -0
  460. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/updaters/updaters.py +0 -0
  461. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/updaters/utils.py +0 -0
  462. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/src/metatables/upload.py +0 -0
  463. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/analyst/test_agent_surface.py +0 -0
  464. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/analyst/test_api_search.py +0 -0
  465. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/analyst/test_tools.py +0 -0
  466. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_bootstrap_failure_cause.py +0 -0
  467. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_data_source_identity.py +0 -0
  468. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_development_client.py +0 -0
  469. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_hosted_agent.py +0 -0
  470. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_hosted_environment_target.py +0 -0
  471. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_local_mode.py +0 -0
  472. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_platform_fact_cache.py +0 -0
  473. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_request_identity.py +0 -0
  474. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_runtime_database.py +0 -0
  475. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_runtime_scaffold.py +0 -0
  476. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_runtime_selection.py +0 -0
  477. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_runtime_storage_binding.py +0 -0
  478. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/auth/test_source_passwords.py +0 -0
  479. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/catalog/test_catalog_foundation.py +0 -0
  480. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/catalog/test_contract_projection.py +0 -0
  481. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/catalog/test_database_config.py +0 -0
  482. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/catalog/test_index_statistics.py +0 -0
  483. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/contracts/capabilities.json +0 -0
  484. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/contracts/client_signatures.json +0 -0
  485. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/contracts/database_operations.json +0 -0
  486. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/contracts/test_bounded_transfer.py +0 -0
  487. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/contracts/test_compiler_runtime_source.py +0 -0
  488. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/contracts/test_relation_batching.py +0 -0
  489. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/contracts/test_relation_import.py +0 -0
  490. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/contracts/test_runtime_contract_compat.py +0 -0
  491. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/contracts/test_storage_layouts.py +0 -0
  492. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/contracts/test_table_contracts.py +0 -0
  493. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/Dockerfile +0 -0
  494. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/Dockerfile.dockerignore +0 -0
  495. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/__init__.py +0 -0
  496. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/provider/__init__.py +0 -0
  497. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/provider/env.py +0 -0
  498. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
  499. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/test_api_contract.py +0 -0
  500. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/test_application_migration.py +0 -0
  501. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/test_bootstrap_recovery.py +0 -0
  502. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/test_credential_catalog.py +0 -0
  503. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/test_physical_contract.py +0 -0
  504. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/test_relation_import.py +0 -0
  505. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/test_runtime_bootstrap.py +0 -0
  506. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/test_sql_security.py +0 -0
  507. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_backend/test_update_client.py +0 -0
  508. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_operations/test_physical_operations.py +0 -0
  509. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_operations/test_postgresql_operations.py +0 -0
  510. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/database_operations/test_runtime_and_temporal.py +0 -0
  511. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/documentation/test_project_checks.py +0 -0
  512. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_admin_installation.py +0 -0
  513. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_api_endpoint.py +0 -0
  514. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_catalog_outage.py +0 -0
  515. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_client_api_contract.py +0 -0
  516. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_client_api_coverage.py +0 -0
  517. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_client_migration_scaffold.py +0 -0
  518. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_client_migration_tls.py +0 -0
  519. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_client_package.py +0 -0
  520. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_client_signatures.py +0 -0
  521. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_client_value_behaviors.py +0 -0
  522. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_data_source_registry.py +0 -0
  523. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_local_actor_client_api.py +0 -0
  524. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_local_cli_workflow.py +0 -0
  525. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_local_client_selection.py +0 -0
  526. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_managed_finalize_client_api.py +0 -0
  527. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_namespaces_admin_http.py +0 -0
  528. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_public_imports.py +0 -0
  529. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_run_graphs.py +0 -0
  530. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_run_logs.py +0 -0
  531. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_runtime_upgrade.py +0 -0
  532. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_sdk_local_startup.py +0 -0
  533. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_sqlite_runtime.py +0 -0
  534. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_table_delete_client_api.py +0 -0
  535. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_table_filter_client_api.py +0 -0
  536. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_table_introspection_client_api.py +0 -0
  537. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_table_patch_client_api.py +0 -0
  538. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_table_search_api.py +0 -0
  539. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_table_search_document_api.py +0 -0
  540. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_table_search_scale.py +0 -0
  541. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_table_stats_api.py +0 -0
  542. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_table_update_pipeline.py +0 -0
  543. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_table_updates_http.py +0 -0
  544. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_time_index_delete_client_api.py +0 -0
  545. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_time_index_reads_client_api.py +0 -0
  546. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_timescale_policies_client_api.py +0 -0
  547. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_update_batch_client_api.py +0 -0
  548. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
  549. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
  550. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
  551. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/e2e/test_update_registration_client_api.py +0 -0
  552. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/examples/test_documented_examples.py +0 -0
  553. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/examples/test_postgresql_examples.py +0 -0
  554. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/examples/test_setup_launch.py +0 -0
  555. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/examples/test_tutorial.py +0 -0
  556. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/integrations/test_credential_store.py +0 -0
  557. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/integrations/test_data_source_rules.py +0 -0
  558. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/integrations/test_local_data_sources.py +0 -0
  559. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/integrations/test_local_run_logs.py +0 -0
  560. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/integrations/test_postgresql_connection.py +0 -0
  561. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/integrations/test_postgresql_sql.py +0 -0
  562. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/integrations/test_postgresql_tables.py +0 -0
  563. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
  564. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/integrations/test_source_validation.py +0 -0
  565. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/integrations/test_sqlite_operations.py +0 -0
  566. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/labels/test_labels.py +0 -0
  567. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/operations/test_create_table_operation.py +0 -0
  568. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/operations/test_create_table_postgres.py +0 -0
  569. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/operations/test_physical_operation_journal.py +0 -0
  570. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/operations/test_search_documents.py +0 -0
  571. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/operations/test_timescale_policies.py +0 -0
  572. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/packaging/test_client_skills.py +0 -0
  573. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/packaging/test_dev_release_version.py +0 -0
  574. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/packaging/test_distribution_sources.py +0 -0
  575. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/packaging/test_editable_build.py +0 -0
  576. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/packaging/test_installed_distribution.py +0 -0
  577. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/permissions/test_governed_sql_scope.py +0 -0
  578. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/permissions/test_local_actor_membership.py +0 -0
  579. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/permissions/test_migration_boundary.py +0 -0
  580. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/permissions/test_namespace_grants.py +0 -0
  581. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/permissions/test_security_api.py +0 -0
  582. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/permissions/test_table_body_filter.py +0 -0
  583. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/permissions/test_table_grants.py +0 -0
  584. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/permissions/test_table_queries.py +0 -0
  585. {mainsequence_metatable-0.1.27.dev46 → mainsequence_metatable-0.1.28.dev48}/tests/permissions/test_workload_principals.py +0 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: metatables-migrations
3
- description: "Create and evolve managed application tables through Alembic migration providers with the installed MetaTables Python client. Covers provider scope and placement, scaffolding, revision authoring, local execution, the deployment-workflow migration Job for hosted runtimes, and reservation or finalization failures. Excludes API catalog migrations, client-library implementation, API/server changes and repository tooling."
3
+ description: "Create and evolve managed application tables through Alembic migration providers with the installed MetaTables Python client. Covers provider scope and placement, scaffolding, revision authoring, local execution, the deployment-workflow migration Job for hosted runtimes, the Team that owns an application's tables in each Environment, and reservation or finalization failures. Excludes API catalog migrations, client-library implementation, API/server changes and repository tooling."
4
4
  ---
5
5
 
6
6
  # MetaTables client application migrations
@@ -50,11 +50,24 @@ migrations. Read `docs/client/deploy-application-migrations.md`.
50
50
  1. **Develop locally.** Author the revision and apply it to verified local SQLite
51
51
  with the [local development skill](../metatables-local-development/SKILL.md).
52
52
  2. **Commit the revision with the code that needs it.**
53
- 3. **Deploy.** The application's `.mainsequence/workflows/` file declares a
53
+ 3. **Give a Team the tables.** Before the first hosted migration in each
54
+ Environment, the application's tables need an owning Team: one platform Team
55
+ per Environment (for example `ledger-development`), whose members are the
56
+ migration Job's workload User and the workload User of every resource that
57
+ reads or writes the tables. An Organization admin creates, in that
58
+ Environment, each namespace the provider registers tables in, and grants the
59
+ Team Writer on it. Recommend one namespace per application, owned by its Team;
60
+ it is not required (see "Namespaces and applications" in
61
+ `docs/security/ownership-and-sharing.md`).
62
+ Tell the user these steps; they are made in the platform and in MetaTables
63
+ Security, not in the repository.
64
+ 4. **Deploy.** The application's `.mainsequence/workflows/` file declares a
54
65
  migration Job that calls `upgrade_application` for each provider, in
55
- dependency order, from the candidate image. Every deployed resource that reads
56
- or writes the tables (FastAPI, `harness_agent` and others) has a deploy step
57
- with `needs: [migrate]`. A failed migration blocks the rollout.
66
+ dependency order, from the candidate image. The Job and every resource that
67
+ uses MetaTables declare `access.branches: [{repository: MetaTables, level: view}]`.
68
+ Every deployed resource that reads or writes the tables (FastAPI,
69
+ `harness_agent` and others) has a deploy step with `needs: [migrate]`. A failed
70
+ migration blocks the rollout.
58
71
 
59
72
  Rules:
60
73
 
@@ -69,6 +82,13 @@ Rules:
69
82
  during and after a failed rollout. Add first; drop or rename in a later release.
70
83
  - Redeploying an older image does not roll back the schema. Downgrade is never a
71
84
  deployment step.
85
+ - Tables belong to the Team, never to one workload User. Workload Users change
86
+ with each Environment and each recreated Job; a new one needs Team membership
87
+ only. Do not ask for direct table grants to a workload User, and do not run the
88
+ Job as an Organization admin to get around a refusal.
89
+ - A table registered in a namespace the caller already writes gets no grant of
90
+ its own; the namespace's Writers own it. The Team needs Writer on every
91
+ namespace the provider uses.
72
92
 
73
93
  ## Source and runtime context
74
94
 
@@ -205,8 +225,15 @@ Read `docs/operations/recovery-and-observability.md`.
205
225
  another install overwrote it. Move the provider as the
206
226
  [legacy upgrade skill](../metatables-upgrade-legacy-app/SKILL.md) describes;
207
227
  do not edit files in `site-packages`.
208
- - If reservation fails, compare provider scope and physical identities before
209
- changing code. Do not create a second catalog row for the same table.
228
+ - If reservation fails with `namespace_not_writable` or `table_not_editable`
229
+ (403), the caller lacks Writer through the owning Team. Add the
230
+ `caller_user_uid` from the error to the Team with Writer on the namespace, or,
231
+ when the namespace or Team is missing, set them up as in step 3. A table
232
+ registered before the Team existed may have only a retired workload User as
233
+ Writer; an Organization admin grants the Team Writer on its namespace. Do not
234
+ change code or physical names to get around it.
235
+ - If reservation fails otherwise, compare provider scope and physical identities
236
+ before changing code. Do not create a second catalog row for the same table.
210
237
  - If Alembic succeeds but finalization fails, physical DDL may already be
211
238
  committed. Inspect every per-table result and the actual schema before
212
239
  retrying.
@@ -220,5 +247,6 @@ Read `docs/operations/recovery-and-observability.md`.
220
247
 
221
248
  Verify provider scope and placement, revision content, the selected environment
222
249
  connection, repeat execution, and final active bindings. Check that the deployment
223
- workflow runs the migration Job before every resource that uses the tables. Report
250
+ workflow runs the migration Job before every resource that uses the tables, and
251
+ that each Environment has its owning Team with the Job's workload User. Report
224
252
  separately what was checked offline and what was exercised against a configured API.
@@ -1,7 +1,7 @@
1
1
  schema=1
2
2
  library_name=ms-tau-sdk
3
3
  namespace=ms_tau_sdk
4
- pinned_version=2.0.8
4
+ pinned_version=2.0.9
5
5
  skills_path=src/ms_tau_sdk/agent_skills
6
6
  skills=tau_a2a_runtime_adapter,tau_local_development,tau_project_customization,tau_repository_integration,tau_security_and_access
7
7
  command=ms-tau skills sync --path .
@@ -81,6 +81,16 @@ in the system prompt because a tool named `read` exists. Extensions must not reg
81
81
  this mode.
82
82
  Excluding coding tools does not sandbox extension Python code.
83
83
 
84
+ ## Application tool time limits
85
+
86
+ A declared application's tool sets how long it may run, in seconds, in its MCP `_meta` under
87
+ `mainsequence.ai/timeout-seconds/v1`; with the MCP Python SDK that is
88
+ `@mcp.tool(meta={"mainsequence.ai/timeout-seconds/v1": 300})` in the application. Set the limit on
89
+ the application's tool, not in the Agent. A tool that declares nothing gets
90
+ `TAU_MCP_TOOL_TIMEOUT_SECONDS` (default `60`); set it like the tool composition settings above, in
91
+ `harness_agent.spec.env_vars`, the process environment, or
92
+ `TauSDKSettings(mcp_tool_timeout_seconds=...)`. No call outlives its turn.
93
+
84
94
  ## Invariants extensions must not replace
85
95
 
86
96
  Extensions may change effective agent capabilities, but they must not replace or bypass:
@@ -9,7 +9,18 @@ resources:
9
9
  automatic_redeployment:
10
10
  enabled: true
11
11
  tag_regex: null
12
- min_scale: 1
12
+ # One Uvicorn process uses one core; configuration.yaml sizes its threads and
13
+ # connections as serving.concurrency (ADR 0022).
14
+ cpu_request: "1"
15
+ memory_request: 2Gi
16
+ min_scale: 2
17
+ # A pod runs serving.concurrency (20) requests at once, so the platform sends it no
18
+ # more and queues the rest while it adds pods. Ten pods keep 3 × 20 × 10 connections
19
+ # within the database budget (ADR 0022). The request timeout bounds deep_search,
20
+ # whose declared limit is 300 s.
21
+ container_concurrency: 20
22
+ max_scale: 10
23
+ timeout_seconds: 300
13
24
  revision_retention_count: 3
14
25
  # The Analyst's read tools, served at /mcp (ADR 0021).
15
26
  mcp_enabled: true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence-metatable
3
- Version: 0.1.27.dev46
3
+ Version: 0.1.28.dev48
4
4
  Summary: Main Sequence MetaTables Python client and standalone API
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: MIT
@@ -51,7 +51,7 @@ Requires-Dist: twine<7,>=6; extra == "dev"
51
51
  Provides-Extra: docs
52
52
  Requires-Dist: mkdocs<2,>=1.6; extra == "docs"
53
53
  Provides-Extra: agent
54
- Requires-Dist: ms-tau-sdk==2.0.8; extra == "agent"
54
+ Requires-Dist: ms-tau-sdk==2.0.9; extra == "agent"
55
55
  Provides-Extra: mysql
56
56
  Requires-Dist: PyMySQL[rsa]<1.2,>=1.1.1; extra == "mysql"
57
57
  Provides-Extra: mssql
@@ -39,7 +39,7 @@ Status: Accepted.
39
39
  Implementation status: implemented on `development`; not yet deployed. Tests cover the
40
40
  tools against a stand-in catalog, `deep_search`, `describe_table` and `list_namespaces`
41
41
  through the client against the API, and the extension, card, workflow and vendored skills with
42
- ms-tau-sdk 2.0.8. A local `ms-tau` session and the hosted deployment have not run.
42
+ ms-tau-sdk 2.0.9. A local `ms-tau` session and the hosted deployment have not run.
43
43
 
44
44
  Owner: this repository deploys the agent. The MetaTables API is unchanged; the agent
45
45
  is one more API client.
@@ -70,7 +70,7 @@ refuses anything else.
70
70
 
71
71
  | Part | Rule |
72
72
  | --- | --- |
73
- | Runtime | `ms-tau-sdk` 2.0.8, `openai-codex` / `gpt-5.6-luna`, thinking `medium`. |
73
+ | Runtime | `ms-tau-sdk` 2.0.9, `openai-codex` / `gpt-5.6-luna`, thinking `medium`. |
74
74
  | Identity | The person each turn serves (ADR 0020); the agent's own identity holds no grants. |
75
75
  | Tools | The six tools below, served by the API over MCP when hosted (ADR 0021), and the SDK's skill-scoped `read`. No shell, file writes or Main Sequence MCP. |
76
76
  | Instructions | `.tau/SYSTEM.md` covers MetaTables; vendored `pg-aiguide` skills cover PostgreSQL and TimescaleDB. |
@@ -129,7 +129,7 @@ The agent card's two skills, `discover-tables` and `analyze-with-sql` in
129
129
  The skills of [timescale/pg-aiguide](https://github.com/timescale/pg-aiguide)
130
130
  (Apache-2.0) are vendored at commit `b236d35` with its license and notice, one
131
131
  directory per skill under `.tau/skills/`, because Tau discovers skills one level deep.
132
- The agent opens them through the skill-scoped `read`, which ms-tau-sdk 2.0.8 registers
132
+ The agent opens them through the skill-scoped `read`, which ms-tau-sdk 2.0.9 registers
133
133
  when `TAU_EXCLUDE_BASE_TOOLS=true`. The directive takes precedence over them:
134
134
 
135
135
  - Discover tables through the MetaTables tools, not `pg_catalog`, which also lists
@@ -3,7 +3,7 @@
3
3
  Status: Accepted.
4
4
 
5
5
  Implementation status: implemented on `development`; not deployed. It builds on platform
6
- ADR-0051 (requester-bound access, implemented 2026-10-06), ms-tau-sdk 2.0.8 for the
6
+ ADR-0051 (requester-bound access, implemented 2026-10-06), ms-tau-sdk 2.0.9 for the
7
7
  Analyst and mainsequence 9.0.19, whose `User.get_requester()` the API reads. Tests cover
8
8
  admission through real signed assertions; a hosted turn has not run.
9
9
 
@@ -34,6 +34,7 @@ The hosted API serves the read tools at `/mcp`, and the hosted Analyst uses them
34
34
  | Authorization | A tool's calls run through the API's own routes, in process, with the caller assertion of the `/mcp` request. The SDK verifies the same caller, or the person it works for, and each route authorizes exactly as over REST, including ADR 0020's read-only rule. |
35
35
  | Analyst | The agent declares `mcp_applications: [{resource: metatables}]` and gets `metatables__list_tools` and `metatables__call_tool`. Its extension registers the tools only in a local `ms-tau` session, where they call the local API as the developer. |
36
36
  | Key | The API's workflow key is `metatables`, because MCP keys become tool prefixes and must match `^[a-z][a-z0-9_]{0,39}$`. |
37
+ | Time limits | Each tool declares how long an Agent should wait in its MCP `_meta` under `mainsequence.ai/timeout-seconds/v1` (ms-tau-sdk 2.0.9): 120 s, the bound of one in-process API call, and 300 s for `deep_search`, which the release's 300 s request timeout bounds. An undeclared tool would get the Agent's default of 60 s. |
37
38
 
38
39
  ## Consequences
39
40
 
@@ -344,6 +344,46 @@ their own workload Users, which need to be granted like people.
344
344
  `reads_as_caller()`, the User `search` filter, `managed_by_caller`,
345
345
  `workload_name` and Team members that may be workload Users.
346
346
 
347
+ ### Amendment: Teams own application tables (2026-10-09)
348
+
349
+ Since platform ADR-0048 every Job, release and Agent runs as its own workload
350
+ User. Each Environment, and each recreated Job, has a new one. A table's creator
351
+ grant tied the table to the workload User that first registered it, so the next
352
+ identity of the same application could not re-register its own tables
353
+ ([#43](https://github.com/mainsequence-projects/MetaTables/issues/43)).
354
+
355
+ - **A Team owns an application's tables.** Before an application's first
356
+ migration in an Environment, an Organization admin grants a platform Team Writer
357
+ on each namespace the application's tables are registered in, creating any that
358
+ don't exist. The application's migration Job and every workload User that reads
359
+ or writes its tables are members of that Team. One namespace per application is
360
+ recommended, not enforced: MetaTables authorizes identities and has no trusted
361
+ fact about which project a caller runs, so any Writer of a namespace may
362
+ register tables in it from any project.
363
+ Use one Team per Environment, so that one Environment's workloads are not
364
+ Writers in another. A new workload User needs Team membership only; the tables
365
+ keep their owner.
366
+ - **No creator grant under a namespace Writer.** Registering a new table into a
367
+ namespace where the caller is already a Writer, directly or through a Team, adds
368
+ no creator grant: the namespace's Writers control the table. Otherwise the
369
+ creator still receives Writer, including an admin registering into a namespace
370
+ where they have no grant, so no table starts without a Writer.
371
+ - **Creator attribution is a column.** `meta_table.created_by_user_uid` records
372
+ who registered each table and grants nothing. System migration
373
+ `0012_table_creator` adds it and fills it from each table's first self-granted
374
+ Writer in the grant history.
375
+ - **Refusals say how to recover.** Registration refusals are 403s with a `code`:
376
+ `table_not_editable` for an existing table the caller cannot edit,
377
+ `namespace_not_writable` for a namespace that is missing or that the caller
378
+ cannot write. Both name the caller's User UID and the recovery: add it to the
379
+ Team with Writer on the namespace, or ask an Organization admin. The table's
380
+ namespace is named when the caller requested it or can read the table; its
381
+ Writers are listed only when the caller can read the table.
382
+
383
+ Tables whose only Writer is a replaced identity are recovered the same way: an
384
+ admin grants the application's Team Writer on their namespace. There is no admin
385
+ bypass and no automatic adoption.
386
+
347
387
  ## Superseded behavior and preserved boundaries
348
388
 
349
389
  This decision supersedes ADR 0001's pending-runtime configurator/existing-source
@@ -397,6 +437,9 @@ schema baseline/recreation policy remains governed by ADR 0001.
397
437
  resources through counts, search, lineage, or error details.
398
438
  - A Writer can grant/revoke Reader and Writer access only on tables they control.
399
439
  Re-registering an existing table never grants the caller ownership.
440
+ - A new member of a Team with Writer on a table's namespace registers and migrates
441
+ that existing table; a caller outside it is refused with a recovery path that
442
+ reveals nothing it cannot read.
400
443
  - Team changes and namespace revocation/moves change effective access under the
401
444
  documented freshness rules; independent grants remain visible and effective.
402
445
  - Non-admins cannot manage DataSources, runtime selection, system migrations,
@@ -299,8 +299,12 @@ and [MySQL implicit commits](https://dev.mysql.com/doc/refman/8.4/en/implicit-co
299
299
  - Physical table names become visible to explorer users.
300
300
  - Cascading foreign keys are allowed. Tables that reference a table never change
301
301
  who may write it.
302
- - Team membership reaches the database at the pace of the existing one-hour
303
- platform-fact cache.
302
+ - Team membership reaches the database on the caller's next query. Each SQL
303
+ admission compares the caller's current Teams with the ones its role was last
304
+ given and reconciles the roles first when they differ. A hosted caller's Teams
305
+ come from its signed assertion on every request
306
+ ([ADR 0017](0017-hosted-request-identity.md), 2026-10-05 amendment); only the
307
+ developer's own facts in Local and developer mode are cached for up to an hour.
304
308
 
305
309
  ## Implementation
306
310
 
@@ -0,0 +1,130 @@
1
+ # ADR 0022: Concurrent requests per pod and reused database connections
2
+
3
+ Status: Proposed.
4
+
5
+ Implementation status: implemented on development; not deployed. Unit tests pass;
6
+ the container suite and the load test against the development deployment are pending.
7
+
8
+ Owner: this repository.
9
+
10
+ Related decisions: [ADR 0007](0007-database-enforced-table-access.md) (each User
11
+ queries as their own login roles), [ADR 0012](0012-bounded-data-transfer-and-safe-retries.md)
12
+ (deadlines, cancellation and the shared SQL security guard),
13
+ [ADR 0001](0001-unified-api-storage-and-local-sqlite.md) (`configuration.yaml`),
14
+ [ADR 0008](0008-mysql-mssql-table-workflows.md) (MySQL and SQL Server) and
15
+ [ADR 0021](../agent/0021-api-serves-the-analyst-tools-over-mcp.md) (MCP tools call the
16
+ API's own routes).
17
+
18
+ ## Context
19
+
20
+ The hosted API must serve tens to hundreds of clients at the same time. Main Sequence
21
+ runs it as identical pods, each running one Uvicorn process, and adds pods under load
22
+ up to a maximum. A Python process runs Python code on one core at a time, so a pod's
23
+ capacity comes from threads that wait on the database, and the API's capacity from the
24
+ number of pods.
25
+
26
+ Today:
27
+
28
+ - Nearly every route is a plain `def`, so each request runs on one of the process's 40
29
+ worker threads, AnyIO's fixed default.
30
+ - The catalog engine uses SQLAlchemy's default pool: 5 connections plus 10 overflow,
31
+ with a 30 s wait.
32
+ - Each SQL request opens a new connection as the caller's login role and closes it
33
+ afterwards: a TCP and TLS handshake, a password check and a new database backend for
34
+ every request. MySQL and SQL Server build a whole engine per request, and physical
35
+ data-source operations build and dispose of one per call.
36
+ - A SQL request holds two connections at once: its catalog transaction keeps the shared
37
+ SQL security guard (ADR 0012) while the login-role query runs.
38
+ - ADR 0012's admission runs at most 8 data requests per process (`run-query`, `read`,
39
+ inserts and the other data actions) and answers 429 after a 1 s wait for a slot,
40
+ whatever the thread count.
41
+ - Nothing relates the connections all pods may open to what the database allows.
42
+
43
+ A burst therefore opens connections as fast as requests arrive, spends latency and
44
+ database CPU on connecting, and can exhaust the database's connection limit.
45
+
46
+ ## Decision
47
+
48
+ One number, **T**, sizes a pod: the requests it runs at once and the connections it may
49
+ hold.
50
+
51
+ | Part | Rule |
52
+ | --- | --- |
53
+ | Threads | Route handlers run on T threads per process. |
54
+ | Catalog | The catalog pool holds at most T connections, with no overflow, and closes each at the maximum age. |
55
+ | Data requests | ADR 0012's admission runs T data requests at once per process, not 8, and a request waits for a slot within its deadline instead of 1 s. `/runtime-context/` publishes the effective T as `transfer_limits.concurrent_requests`. |
56
+ | Login-role connections | A pod holds at most T login-role connections per database server, idle or in use. A connection is reused only by the login role that opened it, never by another role and never through `SET ROLE` (ADR 0007). |
57
+ | Data-source operations | Physical data-source operations reuse connections per (DataSource, login), through one kept engine on MySQL and SQL Server, instead of connecting per call; they count against the same cap. |
58
+ | Budget | Maximum pods × 3T ≤ the database's `max_connections`, minus a reserve for migrations, the Admin and other clients: per pod, T catalog connections, T capped connections, and about T per-call connections (see below). Each server the API connects to has its own budget. |
59
+ | Setting | `configuration.yaml` declares T as `serving.concurrency`. Local runtimes use the default. |
60
+
61
+ Rules for reused connections:
62
+
63
+ - Each use sets its own statement timeout, read-only or write mode, and search path.
64
+ Nothing carries over from a previous use: on PostgreSQL, `DISCARD ALL` returns the
65
+ session to its defaults before the connection is reused.
66
+ - On MySQL and SQL Server, a login-role connection closes after each use. Neither
67
+ driver can reset a session, and SQL Server may keep a session's role memberships.
68
+ These connections still count against the cap; the DataSource's own login is reused.
69
+ - A connection that errored, was cancelled, or stopped before its result was read is
70
+ closed, not reused. ADR 0012 already forbids draining a read to return a connection.
71
+ - Idle connections close after a timeout, and every connection closes at a maximum age.
72
+ The maximum age bounds how long a connection outlives a password change or a disabled
73
+ login. Grant changes apply at once, because the database checks privileges on every
74
+ statement.
75
+ - When the cap is full, the least recently used idle connection closes to make room. If
76
+ none is idle, the request waits within its deadline (ADR 0012) and then fails with 503,
77
+ `database_connections_busy` and `Retry-After: 1`. No statement ran, so a retry is safe.
78
+ - MCP tool calls keep their own threads. The route calls a tool makes count against T
79
+ like any request. Sharing T would let tool calls hold every thread while their own
80
+ route calls wait.
81
+ - Connection probes that bring their own host or timeout (DataSource validation and
82
+ maintenance), relation discovery and reads, and MySQL's administrative connections
83
+ (grant changes and `KILL QUERY`) connect per call, outside the cap. A pod's T threads
84
+ bound them to about T, the third T in the budget. A relation read holds its reader
85
+ while it runs the caller's login-role query; counting both against one cap could
86
+ leave every thread waiting for a second connection.
87
+
88
+ ### Suggested values
89
+
90
+ These are starting values, not measurements. A load test against the development
91
+ deployment replaces them.
92
+
93
+ | Setting | Suggested | Why |
94
+ | --- | --- | --- |
95
+ | Pod CPU | 1 vCPU | One process uses one core. |
96
+ | Pod memory | 2 GiB | About 160 MiB at idle, plus results in flight. |
97
+ | Minimum pods | 2 | A burst lands on two pods while more start, and one survives a restart. |
98
+ | T | 20 | At the current maximum of 10 pods: 3 × 20 × 10 = 600 connections. |
99
+ | Idle timeout | 60 s | Long enough to reuse a role's connection across a session of requests. |
100
+ | Maximum age | 30 min | Bounds a connection's life after a credential change. |
101
+
102
+ The workflow declares CPU, memory and minimum pods for the `metatables` resource;
103
+ `configuration.yaml` declares T. T is raised only when the budget allows it.
104
+
105
+ The workflow also declares the platform's per-replica request policy
106
+ (platform issues 921 and 922): `container_concurrency` equal to T, so the platform sends a pod
107
+ no more requests than it has threads and queues the rest while it adds pods, and
108
+ `max_scale` equal to the budget's maximum pods (10). Changing T changes both files.
109
+
110
+ ## Consequences
111
+
112
+ - On PostgreSQL most requests reuse a connection; a role's first request on a pod still
113
+ connects. On MySQL and SQL Server, caller SQL and caller table operations still connect
114
+ per request, though their engines are kept.
115
+ - Connections are bounded by configuration, not by traffic.
116
+ - A pod runs at most T requests at once; further requests wait for a thread. Capacity
117
+ grows by adding pods.
118
+ - Many Users share one cap per pod, so a pod serving many Users reconnects more often
119
+ than one serving few.
120
+ - A reused connection stays logged in as its role until its idle timeout or maximum age.
121
+ - SQLite has no login roles; only the thread count applies locally.
122
+ - Changing T is a configuration change and a deployment.
123
+
124
+ Verification: unit tests (`tests/integrations/test_connection_reuse.py`) cover role
125
+ isolation, per-use settings and the session reset, closing broken connections, the cap
126
+ and eviction, waiting within the deadline, the idle timeout and maximum age, T applied
127
+ to the route threads, the catalog pool and data-request admission, and the kept engines. The hosted engines,
128
+ including the MySQL and SQL Server behavior above, are verified through the container
129
+ suite on request, and a load test against the development deployment sets the values
130
+ above.
@@ -39,6 +39,7 @@ decisions belong in the SDK repository and are linked as dependencies.
39
39
  | [0016: Impact pre-flight for cascades and deletes](api/0016-impact-preflight.md) | Accepted; implemented; container engine verification pending | `get_impact` returns what a row delete, key update or table drop reaches, every blocker and whether the caller may write each table, from the planner the confirmed delete runs; cascade effects never block. Projects render it in their own UIs. |
40
40
  | [0017: Hosted caller identity through the SDK request identity](api/0017-hosted-request-identity.md) | Accepted; implemented for 0.1.21; hosted rollout verification pending | The hosted API installs the SDK request identity that the platform launcher requires; the SDK verifies each caller assertion once and admission reads `User.get_logged_user()`, including the caller's signed Teams and admin flag. Local keeps its loopback token admission. |
41
41
  | [0018: Table search by meaning and columns](api/0018-table-search.md) | Accepted; implemented; container engine verification pending | One route ranks visible tables by BM25 keywords and a local English embedding model over a per-table document that includes columns, merges the rankings and returns `matched_columns`; the index refreshes on every metadata write. |
42
+ | [0022: Concurrent requests per pod and reused database connections](api/0022-concurrent-requests-and-connection-reuse.md) | Proposed; implemented on development; not deployed; container and load verification pending | One number per pod sizes its threads, data-request admission, catalog pool and login-role connections; connections are reused only by the role that opened them, and maximum pods × 3T stays within the database's connection limit. |
42
43
 
43
44
  ## Agents
44
45
 
@@ -4439,7 +4439,7 @@
4439
4439
  "type": "integer"
4440
4440
  },
4441
4441
  "concurrent_requests": {
4442
- "default": 8,
4442
+ "default": 20,
4443
4443
  "title": "Concurrent Requests",
4444
4444
  "type": "integer"
4445
4445
  },
@@ -4499,7 +4499,7 @@
4499
4499
  "type": "integer"
4500
4500
  },
4501
4501
  "queue_seconds": {
4502
- "default": 1,
4502
+ "default": 60,
4503
4503
  "title": "Queue Seconds",
4504
4504
  "type": "integer"
4505
4505
  },
@@ -4918,6 +4918,26 @@
4918
4918
  "summary": "Hello"
4919
4919
  }
4920
4920
  },
4921
+ "/caller/": {
4922
+ "get": {
4923
+ "description": "Who this request runs as: the User, Teams and admin flag the API admitted, named\nthrough the platform directory as that User sees it.\n\nHosted, the identity comes from the platform-signed caller assertion (ADR 0017);\nLocal and developer runtimes admit the developer's own SDK session.",
4924
+ "operationId": "admitted_caller_caller__get",
4925
+ "responses": {
4926
+ "200": {
4927
+ "content": {
4928
+ "application/json": {
4929
+ "schema": {}
4930
+ }
4931
+ },
4932
+ "description": "Successful Response"
4933
+ }
4934
+ },
4935
+ "summary": "Admitted Caller",
4936
+ "tags": [
4937
+ "Runtime"
4938
+ ]
4939
+ }
4940
+ },
4921
4941
  "/data-sources/": {
4922
4942
  "get": {
4923
4943
  "operationId": "list_sources_data_sources__get",
@@ -7124,6 +7144,58 @@
7124
7144
  ]
7125
7145
  }
7126
7146
  },
7147
+ "/namespaces/{namespace_uid}/access-map/": {
7148
+ "get": {
7149
+ "description": "Principals, Teams, grants and tables of one namespace, as the caller may see them.",
7150
+ "operationId": "namespace_access_map_namespaces__namespace_uid__access_map__get",
7151
+ "parameters": [
7152
+ {
7153
+ "in": "path",
7154
+ "name": "namespace_uid",
7155
+ "required": true,
7156
+ "schema": {
7157
+ "format": "uuid",
7158
+ "title": "Namespace Uid",
7159
+ "type": "string"
7160
+ }
7161
+ },
7162
+ {
7163
+ "in": "query",
7164
+ "name": "relationships",
7165
+ "required": false,
7166
+ "schema": {
7167
+ "default": false,
7168
+ "title": "Relationships",
7169
+ "type": "boolean"
7170
+ }
7171
+ }
7172
+ ],
7173
+ "responses": {
7174
+ "200": {
7175
+ "content": {
7176
+ "application/json": {
7177
+ "schema": {}
7178
+ }
7179
+ },
7180
+ "description": "Successful Response"
7181
+ },
7182
+ "422": {
7183
+ "content": {
7184
+ "application/json": {
7185
+ "schema": {
7186
+ "$ref": "#/components/schemas/HTTPValidationError"
7187
+ }
7188
+ }
7189
+ },
7190
+ "description": "Validation Error"
7191
+ }
7192
+ },
7193
+ "summary": "Namespace Access Map",
7194
+ "tags": [
7195
+ "Namespaces"
7196
+ ]
7197
+ }
7198
+ },
7127
7199
  "/namespaces/{namespace_uid}/tables/": {
7128
7200
  "get": {
7129
7201
  "operationId": "namespace_tables_namespaces__namespace_uid__tables__get",
@@ -7,6 +7,7 @@ These methods and paths are mounted by the current application. See the [OpenAPI
7
7
  | Method | Path | Operation | Success responses |
8
8
  | --- | --- | --- | --- |
9
9
  | GET | `/` | Hello | 200 |
10
+ | GET | `/caller/` | Admitted Caller | 200 |
10
11
  | GET | `/data-sources/` | List Sources | 200 |
11
12
  | POST | `/data-sources/` | Create Source | 201 |
12
13
  | POST | `/data-sources/test-connection/` | Test Source Connection | 200 |
@@ -51,6 +52,7 @@ These methods and paths are mounted by the current application. See the [OpenAPI
51
52
  | GET | `/namespaces/` | List Namespaces | 200 |
52
53
  | GET | `/namespaces/{namespace_uid}/` | Retrieve Namespace | 200 |
53
54
  | PATCH | `/namespaces/{namespace_uid}/` | Patch Namespace | 200 |
55
+ | GET | `/namespaces/{namespace_uid}/access-map/` | Namespace Access Map | 200 |
54
56
  | GET | `/namespaces/{namespace_uid}/tables/` | Namespace Tables | 200 |
55
57
  | GET | `/namespaces/{uid}/permissions` | Namespace Permissions | 200 |
56
58
  | PUT | `/namespaces/{uid}/permissions` | Set Namespace Permissions | 200 |
@@ -183,6 +183,9 @@ but does not expire the configured database login.
183
183
  After execution, the client closes its database connection and calls
184
184
  `finalize-managed` with actual revision IDs (or explicit null at base). Finalization
185
185
  reconciles physical contracts, dropped provider tables and SQL permission projections.
186
+ The client finalizes at most 10 tables per request, the Alembic version table first,
187
+ so each request holds the catalog lock briefly and finishes within the hosted request
188
+ limit. If a run stops partway, rerunning it finalizes the tables still reserved.
186
189
  The former `/application-migrations/upgrade/` endpoint and provider allowlist are
187
190
  removed. MetaTables system migrations run in the hosted deployment's migration Job,
188
191
  or through Settings in Local mode. See