mainsequence-metatable 0.1.27.dev47__tar.gz → 0.1.28__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 (586) hide show
  1. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/client/metatables-meta-tables/SKILL.md +4 -0
  2. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/client/metatables-migrations/SKILL.md +14 -6
  3. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +4 -0
  4. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/ms_tau_sdk/PINNED_FROM.txt +1 -1
  5. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/ms_tau_sdk/tau_project_customization/SKILL.md +10 -0
  6. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.mainsequence/workflows/metatables-api.yaml +12 -1
  7. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/PKG-INFO +2 -2
  8. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/agent/0019-metatables-analyst-agent.md +3 -3
  9. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/agent/0020-analyst-reads-as-its-requester.md +1 -1
  10. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md +1 -0
  11. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0002-application-administration-and-table-ownership.md +10 -6
  12. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0007-database-enforced-table-access.md +23 -0
  13. mainsequence_metatable-0.1.28/docs/adr/api/0022-concurrent-requests-and-connection-reuse.md +131 -0
  14. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/index.md +1 -0
  15. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/api/authentication-and-errors.md +2 -2
  16. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/api/openapi.json +74 -2
  17. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/api/reference.md +2 -0
  18. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/api/tables-and-migrations.md +3 -0
  19. mainsequence_metatable-0.1.28/docs/assets/diagrams/namespace-access.svg +115 -0
  20. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/bounded-transfers.md +5 -0
  21. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/deploy-application-migrations.md +10 -7
  22. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/concepts/permissions-namespaces-labels.md +5 -0
  23. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/operations/configuration.md +7 -1
  24. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/operations/hosted-runtime.md +68 -2
  25. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/security/ownership-and-sharing.md +60 -2
  26. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/mkdocs.yml +1 -0
  27. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/pyproject.toml +2 -2
  28. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/mainsequence_metatable.egg-info/PKG-INFO +2 -2
  29. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/mainsequence_metatable.egg-info/SOURCES.txt +13 -0
  30. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/mainsequence_metatable.egg-info/requires.txt +1 -1
  31. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/analysis.py +6 -0
  32. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/auth/boundary.py +3 -0
  33. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/auth/local_actor.py +3 -0
  34. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/bootstrap.py +2 -0
  35. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/configuration.py +14 -1
  36. mainsequence_metatable-0.1.28/src/metatables/api/app/connection_count.py +67 -0
  37. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/main.py +28 -1
  38. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/mcp.py +7 -1
  39. mainsequence_metatable-0.1.28/src/metatables/api/app/routes/access_map.py +124 -0
  40. mainsequence_metatable-0.1.28/src/metatables/api/app/routes/caller.py +31 -0
  41. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/runtime_context.py +3 -1
  42. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_sql.py +4 -0
  43. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/runtime.py +3 -0
  44. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/transfer.py +10 -1
  45. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/access.py +159 -14
  46. mainsequence_metatable-0.1.28/src/metatables/api/backend/backends/adapters/postgresql_connection.py +279 -0
  47. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +3 -0
  48. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/table_cursor.py +1 -3
  49. mainsequence_metatable-0.1.28/src/metatables/api/backend/backends/connection_pool.py +430 -0
  50. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/hosted.py +6 -1
  51. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/hosted_access.py +26 -26
  52. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/postgresql_access.py +163 -101
  53. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/relational.py +38 -23
  54. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/restricted_sql.py +10 -6
  55. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/sqlite_access.py +3 -1
  56. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/platform_principals.py +23 -5
  57. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/metatables/configuration.yaml +5 -0
  58. mainsequence_metatable-0.1.28/src/metatables/api/request_timing.py +162 -0
  59. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/__init__.py +49 -11
  60. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/transfer_contract.py +4 -2
  61. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/analyst/test_mcp.py +13 -0
  62. mainsequence_metatable-0.1.28/tests/auth/test_caller_endpoint.py +37 -0
  63. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_runtime_bootstrap.py +8 -0
  64. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/conftest.py +11 -0
  65. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/conftest.py +3 -0
  66. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_application_owned_migrations.py +45 -0
  67. mainsequence_metatable-0.1.28/tests/integrations/test_connection_reuse.py +641 -0
  68. mainsequence_metatable-0.1.28/tests/integrations/test_request_timing.py +294 -0
  69. mainsequence_metatable-0.1.28/tests/integrations/test_serving_policy.py +23 -0
  70. mainsequence_metatable-0.1.28/tests/permissions/test_access_map.py +122 -0
  71. mainsequence_metatable-0.1.28/tests/permissions/test_incremental_security.py +198 -0
  72. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/uv.lock +5 -5
  73. mainsequence_metatable-0.1.27.dev47/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -105
  74. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/analyze-with-sql/SKILL.md +0 -0
  75. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/client/metatables-local-development/SKILL.md +0 -0
  76. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/client/metatables-table-discovery/SKILL.md +0 -0
  77. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +0 -0
  78. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/discover-tables/SKILL.md +0 -0
  79. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/ms_tau_sdk/tau_a2a_runtime_adapter/SKILL.md +0 -0
  80. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/ms_tau_sdk/tau_local_development/SKILL.md +0 -0
  81. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/ms_tau_sdk/tau_repository_integration/SKILL.md +0 -0
  82. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/.agents/skills/ms_tau_sdk/tau_security_and_access/SKILL.md +0 -0
  83. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/LICENSE +0 -0
  84. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/MANIFEST.in +0 -0
  85. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/README.md +0 -0
  86. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/alembic.ini +0 -0
  87. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/api/metatables/main.py +0 -0
  88. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/compose.database-tests.yml +0 -0
  89. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +0 -0
  90. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0004-approved-application-migrations.md +0 -0
  91. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
  92. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0006-historical-run-graphs.md +0 -0
  93. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
  94. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
  95. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0008-mysql-mssql-table-workflows.md +0 -0
  96. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0009-shared-credential-store.md +0 -0
  97. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
  98. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
  99. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0013-application-owned-migrations.md +0 -0
  100. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +0 -0
  101. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0015-timescale-compression-and-retention-policies.md +0 -0
  102. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0016-impact-preflight.md +0 -0
  103. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0017-hosted-request-identity.md +0 -0
  104. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0018-search-document-pipeline.svg +0 -0
  105. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/api/0018-table-search.md +0 -0
  106. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
  107. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
  108. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/api/data-sources.md +0 -0
  109. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/api/overview.md +0 -0
  110. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/api/time-index-and-updates.md +0 -0
  111. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/assets/branding/metatables.svg +0 -0
  112. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/assets/diagrams/local-client-experience.svg +0 -0
  113. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/build-an-updater.md +0 -0
  114. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/define-and-migrate-tables.md +0 -0
  115. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/installation-and-connection.md +0 -0
  116. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/local-storage.md +0 -0
  117. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/query-and-mutate.md +0 -0
  118. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/quickstart.md +0 -0
  119. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/read-existing-time-index-tables.md +0 -0
  120. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/register-existing-tables.md +0 -0
  121. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/tutorial.md +0 -0
  122. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/client/upgrade-legacy-app.md +0 -0
  123. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/concepts/architecture.md +0 -0
  124. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/concepts/data-sources.md +0 -0
  125. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/concepts/identity-and-scope.md +0 -0
  126. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/concepts/runs-and-execution-graphs.md +0 -0
  127. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
  128. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/concepts/time-index-tables-and-updates.md +0 -0
  129. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/contributing/architecture-and-boundaries.md +0 -0
  130. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/contributing/database-backends.md +0 -0
  131. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/contributing/documentation.md +0 -0
  132. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/contributing/releasing.md +0 -0
  133. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/contributing/testing.md +0 -0
  134. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/README.md +0 -0
  135. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/__init__.py +0 -0
  136. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/bounded_reader.py +0 -0
  137. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/data_sources/README.md +0 -0
  138. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/data_sources/mssql.json +0 -0
  139. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/data_sources/mysql.json +0 -0
  140. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/data_sources/postgresql.json +0 -0
  141. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/data_sources/register.py +0 -0
  142. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/external_table.py +0 -0
  143. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/local_app/README.md +0 -0
  144. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/local_app/__init__.py +0 -0
  145. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/local_app/__main__.py +0 -0
  146. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/local_app/migrations/__init__.py +0 -0
  147. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/local_app/migrations/env.py +0 -0
  148. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/local_app/migrations/script.py.mako +0 -0
  149. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  150. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/local_app/tables.py +0 -0
  151. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/query.py +0 -0
  152. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/quickstart.py +0 -0
  153. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/reader.py +0 -0
  154. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/scripts/__init__.py +0 -0
  155. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/scripts/setup_metatables.py +0 -0
  156. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tables.py +0 -0
  157. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/README.md +0 -0
  158. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/__init__.py +0 -0
  159. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/__main__.py +0 -0
  160. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/data/README.md +0 -0
  161. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  162. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/frames.py +0 -0
  163. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/migrations/__init__.py +0 -0
  164. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/migrations/env.py +0 -0
  165. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/migrations/registry.py +0 -0
  166. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/migrations/script.py.mako +0 -0
  167. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
  168. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  169. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  170. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  171. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/operations.py +0 -0
  172. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/tables.py +0 -0
  173. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/tutorial/updaters.py +0 -0
  174. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/examples/updater.py +0 -0
  175. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/index.md +0 -0
  176. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/operations/catalog-migrations.md +0 -0
  177. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/operations/local-runtime.md +0 -0
  178. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/operations/recovery-and-observability.md +0 -0
  179. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/operations/run-history.md +0 -0
  180. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/operations/run-logs.md +0 -0
  181. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/reference/capabilities.md +0 -0
  182. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/reference/cli.md +0 -0
  183. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/reference/python.md +0 -0
  184. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/security/index.md +0 -0
  185. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/docs/security/permissions.md +0 -0
  186. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/scripts/__init__.py +0 -0
  187. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/scripts/build_reference.py +0 -0
  188. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/scripts/check_boundaries.py +0 -0
  189. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/scripts/check_client_api_coverage.py +0 -0
  190. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/scripts/check_distribution_sources.py +0 -0
  191. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/scripts/check_docs.py +0 -0
  192. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/scripts/check_examples_debug.py +0 -0
  193. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/scripts/check_project.py +0 -0
  194. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/scripts/dev_release_version.py +0 -0
  195. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/scripts/test_databases.py +0 -0
  196. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/scripts/test_postgresql.py +0 -0
  197. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/setup.cfg +0 -0
  198. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
  199. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
  200. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
  201. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/__init__.py +0 -0
  202. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/_admin_source.json +0 -0
  203. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/_build.py +0 -0
  204. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/_skill_bundle.py +0 -0
  205. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/analyst/__init__.py +0 -0
  206. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/__init__.py +0 -0
  207. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/__init__.py +0 -0
  208. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/auth/__init__.py +0 -0
  209. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/credential_admin.py +0 -0
  210. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/development.py +0 -0
  211. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/development_client.py +0 -0
  212. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/error_logging.py +0 -0
  213. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/platform_cache.py +0 -0
  214. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/__init__.py +0 -0
  215. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/column_search.py +0 -0
  216. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/contract_validation.py +0 -0
  217. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/data_sources.py +0 -0
  218. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/managed_finalize.py +0 -0
  219. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/migration_connection.py +0 -0
  220. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/namespaces.py +0 -0
  221. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/run_logs.py +0 -0
  222. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/schema_graph.py +0 -0
  223. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/security.py +0 -0
  224. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_cascade.py +0 -0
  225. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_crud.py +0 -0
  226. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_delete.py +0 -0
  227. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_filter.py +0 -0
  228. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_import.py +0 -0
  229. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_introspection.py +0 -0
  230. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_patch.py +0 -0
  231. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_registration.py +0 -0
  232. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_response.py +0 -0
  233. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_search.py +0 -0
  234. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_search_document.py +0 -0
  235. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
  236. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/time_index_delete.py +0 -0
  237. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/time_index_reads.py +0 -0
  238. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/time_index_stats.py +0 -0
  239. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/timescale_policies.py +0 -0
  240. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/update_batch.py +0 -0
  241. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
  242. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/update_constants.py +0 -0
  243. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/update_crud.py +0 -0
  244. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/update_details.py +0 -0
  245. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/update_graph.py +0 -0
  246. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
  247. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/update_registration.py +0 -0
  248. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/update_runs.py +0 -0
  249. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/routes/update_statistics.py +0 -0
  250. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/runtime_control.py +0 -0
  251. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/runtime_database.py +0 -0
  252. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/app/source_passwords.py +0 -0
  253. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/__init__.py +0 -0
  254. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/__init__.py +0 -0
  255. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
  256. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
  257. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
  258. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -0
  259. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
  260. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
  261. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
  262. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
  263. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
  264. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
  265. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
  266. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
  267. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
  268. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
  269. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
  270. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
  271. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
  272. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
  273. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/catalog.py +0 -0
  274. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
  275. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/catalog_types.py +0 -0
  276. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/contracts.py +0 -0
  277. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/migration_connection.py +0 -0
  278. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/native.py +0 -0
  279. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/operations.py +0 -0
  280. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/pages.py +0 -0
  281. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/registry.py +0 -0
  282. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/relation_tables.py +0 -0
  283. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/streaming.py +0 -0
  284. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/backends/timescale.py +0 -0
  285. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/contracts/__init__.py +0 -0
  286. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/contracts/relation_import.py +0 -0
  287. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/contracts/storage_layouts.py +0 -0
  288. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
  289. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/contracts/values.py +0 -0
  290. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/domain/__init__.py +0 -0
  291. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
  292. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
  293. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/domain/index_statistics.py +0 -0
  294. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/domain/label_rules.py +0 -0
  295. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/domain/permission_rules.py +0 -0
  296. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/domain/update_constants.py +0 -0
  297. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/__init__.py +0 -0
  298. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
  299. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
  300. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/credential_store.py +0 -0
  301. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
  302. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
  303. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
  304. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/run_logs.py +0 -0
  305. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
  306. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
  307. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/integrations/source_validation.py +0 -0
  308. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/__init__.py +0 -0
  309. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/env.py +0 -0
  310. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/script.py.mako +0 -0
  311. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
  312. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
  313. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
  314. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
  315. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
  316. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
  317. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
  318. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
  319. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +0 -0
  320. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0010_cascade_targets.py +0 -0
  321. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0011_table_search.py +0 -0
  322. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/0012_table_creator.py +0 -0
  323. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
  324. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/operations/__init__.py +0 -0
  325. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
  326. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
  327. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/operations/create_table.py +0 -0
  328. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
  329. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/operations/import_relations.py +0 -0
  330. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/operations/introspect_table.py +0 -0
  331. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/operations/read_time_index.py +0 -0
  332. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/operations/register_catalog.py +0 -0
  333. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/__init__.py +0 -0
  334. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/cascade.py +0 -0
  335. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/catalog.py +0 -0
  336. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/database.py +0 -0
  337. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/grants.py +0 -0
  338. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/impact.py +0 -0
  339. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/labels.py +0 -0
  340. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/locking.py +0 -0
  341. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/models.py +0 -0
  342. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/physical_operations.py +0 -0
  343. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/projections.py +0 -0
  344. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
  345. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
  346. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
  347. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
  348. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/table_queries.py +0 -0
  349. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/table_response.py +0 -0
  350. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/update_graph.py +0 -0
  351. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
  352. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/updates.py +0 -0
  353. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
  354. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
  355. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/search/__init__.py +0 -0
  356. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/search/documents.py +0 -0
  357. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/search/embeddings.py +0 -0
  358. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/search/index.py +0 -0
  359. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/search/ranking.py +0 -0
  360. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/search/text.py +0 -0
  361. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/backend/search/worker.py +0 -0
  362. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/metatables/__init__.py +0 -0
  363. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/api/metatables/main.py +0 -0
  364. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/cli/__init__.py +0 -0
  365. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/cli/admin_install.py +0 -0
  366. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/cli/app.py +0 -0
  367. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/cli/filters.py +0 -0
  368. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/cli/local.py +0 -0
  369. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/cli/migrations.py +0 -0
  370. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/cli/project.py +0 -0
  371. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/cli/skills.py +0 -0
  372. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/compiled_sql/__init__.py +0 -0
  373. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/compiled_sql/mssql.py +0 -0
  374. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/compiled_sql/v1.py +0 -0
  375. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/dtype_codec.py +0 -0
  376. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/endpoint.py +0 -0
  377. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/README.md +0 -0
  378. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/__init__.py +0 -0
  379. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/bounded_reader.py +0 -0
  380. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/data_sources/README.md +0 -0
  381. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/data_sources/mssql.json +0 -0
  382. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/data_sources/mysql.json +0 -0
  383. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/data_sources/postgresql.json +0 -0
  384. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/data_sources/register.py +0 -0
  385. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/external_table.py +0 -0
  386. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/local_app/README.md +0 -0
  387. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/local_app/__init__.py +0 -0
  388. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/local_app/__main__.py +0 -0
  389. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
  390. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/local_app/migrations/env.py +0 -0
  391. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
  392. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  393. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/local_app/tables.py +0 -0
  394. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/query.py +0 -0
  395. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/quickstart.py +0 -0
  396. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/reader.py +0 -0
  397. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/scripts/__init__.py +0 -0
  398. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/scripts/setup_metatables.py +0 -0
  399. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tables.py +0 -0
  400. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/README.md +0 -0
  401. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/__init__.py +0 -0
  402. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/__main__.py +0 -0
  403. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/data/README.md +0 -0
  404. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  405. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/frames.py +0 -0
  406. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
  407. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/migrations/env.py +0 -0
  408. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
  409. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
  410. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
  411. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  412. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  413. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  414. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/operations.py +0 -0
  415. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/tables.py +0 -0
  416. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/tutorial/updaters.py +0 -0
  417. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/examples/updater.py +0 -0
  418. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/future_registry.py +0 -0
  419. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/hashing.py +0 -0
  420. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/instrumentation.py +0 -0
  421. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/local_connection.py +0 -0
  422. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/local_files.py +0 -0
  423. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/local_run_logs.py +0 -0
  424. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/log_contract.py +0 -0
  425. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/alembic.py +0 -0
  426. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/connection.py +0 -0
  427. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/env.py +0 -0
  428. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/provider.py +0 -0
  429. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/registry.py +0 -0
  430. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/runner.py +0 -0
  431. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/scaffold.py +0 -0
  432. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/sqlite.py +0 -0
  433. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/templates/__init__.py +0 -0
  434. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/templates/env.py.mako +0 -0
  435. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/templates/script.py.mako +0 -0
  436. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/migrations/tls.py +0 -0
  437. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/models.py +0 -0
  438. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/pydantic_metadata.py +0 -0
  439. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/run_logging.py +0 -0
  440. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/runtime.py +0 -0
  441. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/runtime_context.py +0 -0
  442. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/runtime_contract.py +0 -0
  443. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/schema_names.py +0 -0
  444. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/sdk_compat.py +0 -0
  445. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/sqlalchemy_contracts.py +0 -0
  446. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/storage_layout_contract.py +0 -0
  447. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/time_index_table_refs.py +0 -0
  448. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/transfer.py +0 -0
  449. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/transport.py +0 -0
  450. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/update_configuration_contract.py +0 -0
  451. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/updaters/__init__.py +0 -0
  452. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/updaters/configuration.py +0 -0
  453. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/updaters/dependencies.py +0 -0
  454. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/updaters/managers.py +0 -0
  455. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/updaters/namespacing.py +0 -0
  456. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/updaters/runner.py +0 -0
  457. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/updaters/updaters.py +0 -0
  458. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/updaters/utils.py +0 -0
  459. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/src/metatables/upload.py +0 -0
  460. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/analyst/test_agent_surface.py +0 -0
  461. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/analyst/test_api_search.py +0 -0
  462. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/analyst/test_tools.py +0 -0
  463. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_bootstrap_failure_cause.py +0 -0
  464. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_data_source_identity.py +0 -0
  465. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_development_client.py +0 -0
  466. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_hosted_agent.py +0 -0
  467. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_hosted_environment_target.py +0 -0
  468. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_local_mode.py +0 -0
  469. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_platform_fact_cache.py +0 -0
  470. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_request_identity.py +0 -0
  471. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_runtime_database.py +0 -0
  472. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_runtime_scaffold.py +0 -0
  473. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_runtime_selection.py +0 -0
  474. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_runtime_storage_binding.py +0 -0
  475. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/auth/test_source_passwords.py +0 -0
  476. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/catalog/test_catalog_foundation.py +0 -0
  477. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/catalog/test_contract_projection.py +0 -0
  478. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/catalog/test_database_config.py +0 -0
  479. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/catalog/test_index_statistics.py +0 -0
  480. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/catalog/test_migration.py +0 -0
  481. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/contracts/capabilities.json +0 -0
  482. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/contracts/client_signatures.json +0 -0
  483. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/contracts/database_operations.json +0 -0
  484. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/contracts/test_bounded_transfer.py +0 -0
  485. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/contracts/test_compiler_runtime_source.py +0 -0
  486. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/contracts/test_relation_batching.py +0 -0
  487. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/contracts/test_relation_import.py +0 -0
  488. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/contracts/test_runtime_contract_compat.py +0 -0
  489. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/contracts/test_storage_layouts.py +0 -0
  490. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/contracts/test_table_contracts.py +0 -0
  491. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/Dockerfile +0 -0
  492. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/Dockerfile.dockerignore +0 -0
  493. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/__init__.py +0 -0
  494. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/provider/__init__.py +0 -0
  495. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/provider/env.py +0 -0
  496. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
  497. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/test_api_contract.py +0 -0
  498. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/test_application_migration.py +0 -0
  499. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/test_bootstrap_recovery.py +0 -0
  500. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/test_catalog_contract.py +0 -0
  501. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/test_credential_catalog.py +0 -0
  502. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/test_physical_contract.py +0 -0
  503. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/test_relation_import.py +0 -0
  504. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/test_runtime_bootstrap.py +0 -0
  505. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/test_sql_security.py +0 -0
  506. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_backend/test_update_client.py +0 -0
  507. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_operations/test_physical_operations.py +0 -0
  508. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_operations/test_postgresql_operations.py +0 -0
  509. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/database_operations/test_runtime_and_temporal.py +0 -0
  510. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/documentation/test_project_checks.py +0 -0
  511. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_admin_installation.py +0 -0
  512. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_api_endpoint.py +0 -0
  513. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_catalog_outage.py +0 -0
  514. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_client_api_contract.py +0 -0
  515. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_client_api_coverage.py +0 -0
  516. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_client_migration_scaffold.py +0 -0
  517. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_client_migration_tls.py +0 -0
  518. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_client_package.py +0 -0
  519. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_client_signatures.py +0 -0
  520. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_client_value_behaviors.py +0 -0
  521. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_data_source_registry.py +0 -0
  522. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_local_actor_client_api.py +0 -0
  523. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_local_cli_workflow.py +0 -0
  524. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_local_client_selection.py +0 -0
  525. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_managed_finalize_client_api.py +0 -0
  526. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_namespaces_admin_http.py +0 -0
  527. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_public_imports.py +0 -0
  528. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_remaining_client_routes.py +0 -0
  529. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_run_graphs.py +0 -0
  530. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_run_logs.py +0 -0
  531. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_runtime_upgrade.py +0 -0
  532. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_sdk_local_startup.py +0 -0
  533. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_sqlite_runtime.py +0 -0
  534. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_table_delete_client_api.py +0 -0
  535. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_table_filter_client_api.py +0 -0
  536. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_table_introspection_client_api.py +0 -0
  537. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_table_patch_client_api.py +0 -0
  538. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_table_search_api.py +0 -0
  539. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_table_search_document_api.py +0 -0
  540. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_table_search_scale.py +0 -0
  541. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_table_stats_api.py +0 -0
  542. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_table_update_pipeline.py +0 -0
  543. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_table_updates_http.py +0 -0
  544. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_time_index_delete_client_api.py +0 -0
  545. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_time_index_reads_client_api.py +0 -0
  546. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_timescale_policies_client_api.py +0 -0
  547. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_update_batch_client_api.py +0 -0
  548. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
  549. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
  550. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
  551. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/e2e/test_update_registration_client_api.py +0 -0
  552. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/examples/test_documented_examples.py +0 -0
  553. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/examples/test_postgresql_examples.py +0 -0
  554. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/examples/test_setup_launch.py +0 -0
  555. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/examples/test_tutorial.py +0 -0
  556. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/integrations/test_credential_store.py +0 -0
  557. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/integrations/test_data_source_rules.py +0 -0
  558. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/integrations/test_local_data_sources.py +0 -0
  559. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/integrations/test_local_run_logs.py +0 -0
  560. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/integrations/test_postgresql_connection.py +0 -0
  561. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/integrations/test_postgresql_sql.py +0 -0
  562. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/integrations/test_postgresql_tables.py +0 -0
  563. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
  564. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/integrations/test_source_validation.py +0 -0
  565. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/integrations/test_sqlite_operations.py +0 -0
  566. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/labels/test_labels.py +0 -0
  567. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/operations/test_create_table_operation.py +0 -0
  568. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/operations/test_create_table_postgres.py +0 -0
  569. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/operations/test_physical_operation_journal.py +0 -0
  570. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/operations/test_register_catalog.py +0 -0
  571. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/operations/test_search_documents.py +0 -0
  572. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/operations/test_timescale_policies.py +0 -0
  573. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/packaging/test_client_skills.py +0 -0
  574. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/packaging/test_dev_release_version.py +0 -0
  575. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/packaging/test_distribution_sources.py +0 -0
  576. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/packaging/test_editable_build.py +0 -0
  577. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/packaging/test_installed_distribution.py +0 -0
  578. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/permissions/test_governed_sql_scope.py +0 -0
  579. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/permissions/test_local_actor_membership.py +0 -0
  580. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/permissions/test_migration_boundary.py +0 -0
  581. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/permissions/test_namespace_grants.py +0 -0
  582. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/permissions/test_security_api.py +0 -0
  583. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/permissions/test_table_body_filter.py +0 -0
  584. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/permissions/test_table_grants.py +0 -0
  585. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/permissions/test_table_queries.py +0 -0
  586. {mainsequence_metatable-0.1.27.dev47 → mainsequence_metatable-0.1.28}/tests/permissions/test_workload_principals.py +0 -0
@@ -178,3 +178,7 @@ for restart recovery. On an uncertain outcome, inspect `upload_receipt()` before
178
178
  resubmitting; do not assign a fresh key to bypass uncertainty. Administrator
179
179
  reconciliation requires verified physical evidence. This workflow uses the Main
180
180
  Sequence API and has no Artifact or temporary-URL dependency.
181
+
182
+ A 429 `transfer_capacity_exceeded` or 503 `database_connections_busy` means the
183
+ API was at capacity and nothing ran. Retry after `Retry-After`, including SQL and
184
+ writes; it is not an uncertain outcome.
@@ -54,10 +54,13 @@ migrations. Read `docs/client/deploy-application-migrations.md`.
54
54
  Environment, the application's tables need an owning Team: one platform Team
55
55
  per Environment (for example `ledger-development`), whose members are the
56
56
  migration Job's workload User and the workload User of every resource that
57
- reads or writes the tables. An Organization admin creates the application's
58
- namespace in that Environment and grants the Team Writer on it. Tell the user
59
- these steps; they are made in the platform and in MetaTables Security, not in
60
- the repository.
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.
61
64
  4. **Deploy.** The application's `.mainsequence/workflows/` file declares a
62
65
  migration Job that calls `upgrade_application` for each provider, in
63
66
  dependency order, from the candidate image. The Job and every resource that
@@ -83,8 +86,9 @@ Rules:
83
86
  with each Environment and each recreated Job; a new one needs Team membership
84
87
  only. Do not ask for direct table grants to a workload User, and do not run the
85
88
  Job as an Organization admin to get around a refusal.
86
- - Every table a provider registers goes in the Team's namespace. A table
87
- registered in a namespace the caller already writes gets no grant of its own.
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.
88
92
 
89
93
  ## Source and runtime context
90
94
 
@@ -236,6 +240,10 @@ Read `docs/operations/recovery-and-observability.md`.
236
240
  - Inspect partial DDL before retrying, especially on engines without transactional
237
241
  DDL. A finalization-only failure can be retried without reapplying committed
238
242
  revisions. Client DDL has no API executor journal.
243
+ - Finalization sends at most 10 tables per request, the version table first, and
244
+ reports `Finalizing MetaTables 11-20 of 62.` for larger providers (client 0.1.28
245
+ and later). A run that stops partway leaves earlier batches active; rerun the
246
+ same upgrade to finalize the rest.
239
247
  - Destructive catalog deletion is not migration recovery and never bypasses
240
248
  schema-management protection.
241
249
 
@@ -124,3 +124,7 @@ for restart recovery. On an uncertain outcome, inspect `upload_receipt()` before
124
124
  resubmitting; do not assign a fresh key to bypass uncertainty. Administrator
125
125
  reconciliation requires verified physical evidence. This workflow uses the Main
126
126
  Sequence API and has no Artifact or temporary-URL dependency.
127
+
128
+ A 429 `transfer_capacity_exceeded` or 503 `database_connections_busy` means the
129
+ API was at capacity and nothing ran. Retry after `Retry-After`, an upload with the
130
+ same operation UUID; it is not an uncertain outcome.
@@ -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.dev47
3
+ Version: 0.1.28
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
 
@@ -353,9 +353,13 @@ identity of the same application could not re-register its own tables
353
353
  ([#43](https://github.com/mainsequence-projects/MetaTables/issues/43)).
354
354
 
355
355
  - **A Team owns an application's tables.** Before an application's first
356
- migration in an Environment, an Organization admin creates its namespace and
357
- grants Writer on it to a platform Team. The application's migration Job and
358
- every workload User that reads or writes its tables are members of that Team.
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.
359
363
  Use one Team per Environment, so that one Environment's workloads are not
360
364
  Writers in another. A new workload User needs Team membership only; the tables
361
365
  keep their owner.
@@ -433,9 +437,9 @@ schema baseline/recreation policy remains governed by ADR 0001.
433
437
  resources through counts, search, lineage, or error details.
434
438
  - A Writer can grant/revoke Reader and Writer access only on tables they control.
435
439
  Re-registering an existing table never grants the caller ownership.
436
- - A new member of the Team with Writer on an application's namespace registers and
437
- migrates that application's existing tables; a caller outside it is refused with
438
- a recovery path that reveals nothing it cannot read.
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.
439
443
  - Team changes and namespace revocation/moves change effective access under the
440
444
  documented freshness rules; independent grants remain visible and effective.
441
445
  - Non-admins cannot manage DataSources, runtime selection, system migrations,
@@ -32,6 +32,29 @@
32
32
  > Reconciliation still records each table's cascade targets, but only so the
33
33
  > [impact pre-flight](0016-impact-preflight.md) can show their effects.
34
34
 
35
+ > Amendment (2026-10-09): On PostgreSQL and TimescaleDB, a catalog change applies
36
+ > only what it changed. Reconciliation used to rebuild every role, re-inspect every
37
+ > table and re-secure every routine on each change, all under the catalog lock, so
38
+ > one registration could hold the lock for minutes and stop every other request.
39
+ > Now a change:
40
+ >
41
+ > - re-inspects the policies of the tables it changed, plus the tables whose
42
+ > recorded cascade targets they affect;
43
+ > - rebuilds only roles that are new or whose definition changed, and grants or
44
+ > revokes only the memberships and privileges that differ from the applied
45
+ > manifest;
46
+ > - re-secures routines only when the owned schemas, routines or `PUBLIC` grants
47
+ > changed since the last sweep.
48
+ >
49
+ > The full sweep still runs when the runtime DataSource changes, at initialization
50
+ > (the migration Job of every deployment) and from the admin repair action. Those
51
+ > are when grants changed outside MetaTables are repaired, not on every catalog
52
+ > change. MySQL and SQL Server keep the full sweep on every change.
53
+
54
+ > Amendment (2026-10-09): [ADR 0022](0022-concurrent-requests-and-connection-reuse.md)
55
+ > reuses login-role connections within a pod, only by the login role that opened them
56
+ > and never through `SET ROLE`; no session state carries over from one use to the next.
57
+
35
58
 
36
59
  Date: 2026-09-29
37
60
 
@@ -0,0 +1,131 @@
1
+ # ADR 0022: Concurrent requests per pod and reused database connections
2
+
3
+ Status: Accepted.
4
+
5
+ Implementation status: implemented on development. Unit tests pass; deployment
6
+ verification, the MySQL and SQL Server container suites and the load test against the
7
+ development deployment are pending.
8
+
9
+ Owner: this repository.
10
+
11
+ Related decisions: [ADR 0007](0007-database-enforced-table-access.md) (each User
12
+ queries as their own login roles), [ADR 0012](0012-bounded-data-transfer-and-safe-retries.md)
13
+ (deadlines, cancellation and the shared SQL security guard),
14
+ [ADR 0001](0001-unified-api-storage-and-local-sqlite.md) (`configuration.yaml`),
15
+ [ADR 0008](0008-mysql-mssql-table-workflows.md) (MySQL and SQL Server) and
16
+ [ADR 0021](../agent/0021-api-serves-the-analyst-tools-over-mcp.md) (MCP tools call the
17
+ API's own routes).
18
+
19
+ ## Context
20
+
21
+ The hosted API must serve tens to hundreds of clients at the same time. Main Sequence
22
+ runs it as identical pods, each running one Uvicorn process, and adds pods under load
23
+ up to a maximum. A Python process runs Python code on one core at a time, so a pod's
24
+ capacity comes from threads that wait on the database, and the API's capacity from the
25
+ number of pods.
26
+
27
+ Today:
28
+
29
+ - Nearly every route is a plain `def`, so each request runs on one of the process's 40
30
+ worker threads, AnyIO's fixed default.
31
+ - The catalog engine uses SQLAlchemy's default pool: 5 connections plus 10 overflow,
32
+ with a 30 s wait.
33
+ - Each SQL request opens a new connection as the caller's login role and closes it
34
+ afterwards: a TCP and TLS handshake, a password check and a new database backend for
35
+ every request. MySQL and SQL Server build a whole engine per request, and physical
36
+ data-source operations build and dispose of one per call.
37
+ - A SQL request holds two connections at once: its catalog transaction keeps the shared
38
+ SQL security guard (ADR 0012) while the login-role query runs.
39
+ - ADR 0012's admission runs at most 8 data requests per process (`run-query`, `read`,
40
+ inserts and the other data actions) and answers 429 after a 1 s wait for a slot,
41
+ whatever the thread count.
42
+ - Nothing relates the connections all pods may open to what the database allows.
43
+
44
+ A burst therefore opens connections as fast as requests arrive, spends latency and
45
+ database CPU on connecting, and can exhaust the database's connection limit.
46
+
47
+ ## Decision
48
+
49
+ One number, **T**, sizes a pod: the requests it runs at once and the connections it may
50
+ hold.
51
+
52
+ | Part | Rule |
53
+ | --- | --- |
54
+ | Threads | Route handlers run on T threads per process. |
55
+ | Catalog | The catalog pool holds at most T connections, with no overflow, and closes each at the maximum age. |
56
+ | 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`. |
57
+ | 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). |
58
+ | 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. |
59
+ | 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. |
60
+ | Setting | `configuration.yaml` declares T as `serving.concurrency`. Local runtimes use the default. |
61
+
62
+ Rules for reused connections:
63
+
64
+ - Each use sets its own statement timeout, read-only or write mode, and search path.
65
+ Nothing carries over from a previous use: on PostgreSQL, `DISCARD ALL` returns the
66
+ session to its defaults before the connection is reused.
67
+ - On MySQL and SQL Server, a login-role connection closes after each use. Neither
68
+ driver can reset a session, and SQL Server may keep a session's role memberships.
69
+ These connections still count against the cap; the DataSource's own login is reused.
70
+ - A connection that errored, was cancelled, or stopped before its result was read is
71
+ closed, not reused. ADR 0012 already forbids draining a read to return a connection.
72
+ - Idle connections close after a timeout, and every connection closes at a maximum age.
73
+ The maximum age bounds how long a connection outlives a password change or a disabled
74
+ login. Grant changes apply at once, because the database checks privileges on every
75
+ statement.
76
+ - When the cap is full, the least recently used idle connection closes to make room. If
77
+ none is idle, the request waits within its deadline (ADR 0012) and then fails with 503,
78
+ `database_connections_busy` and `Retry-After: 1`. No statement ran, so a retry is safe.
79
+ - MCP tool calls keep their own threads. The route calls a tool makes count against T
80
+ like any request. Sharing T would let tool calls hold every thread while their own
81
+ route calls wait.
82
+ - Connection probes that bring their own host or timeout (DataSource validation and
83
+ maintenance), relation discovery and reads, and MySQL's administrative connections
84
+ (grant changes and `KILL QUERY`) connect per call, outside the cap. A pod's T threads
85
+ bound them to about T, the third T in the budget. A relation read holds its reader
86
+ while it runs the caller's login-role query; counting both against one cap could
87
+ leave every thread waiting for a second connection.
88
+
89
+ ### Suggested values
90
+
91
+ These are starting values, not measurements. A load test against the development
92
+ deployment replaces them.
93
+
94
+ | Setting | Suggested | Why |
95
+ | --- | --- | --- |
96
+ | Pod CPU | 1 vCPU | One process uses one core. |
97
+ | Pod memory | 2 GiB | About 160 MiB at idle, plus results in flight. |
98
+ | Minimum pods | 2 | A burst lands on two pods while more start, and one survives a restart. |
99
+ | T | 20 | At the current maximum of 10 pods: 3 × 20 × 10 = 600 connections. |
100
+ | Idle timeout | 60 s | Long enough to reuse a role's connection across a session of requests. |
101
+ | Maximum age | 30 min | Bounds a connection's life after a credential change. |
102
+
103
+ The workflow declares CPU, memory and minimum pods for the `metatables` resource;
104
+ `configuration.yaml` declares T. T is raised only when the budget allows it.
105
+
106
+ The workflow also declares the platform's per-replica request policy
107
+ (platform issues 921 and 922): `container_concurrency` equal to T, so the platform sends a pod
108
+ no more requests than it has threads and queues the rest while it adds pods, and
109
+ `max_scale` equal to the budget's maximum pods (10). Changing T changes both files.
110
+
111
+ ## Consequences
112
+
113
+ - On PostgreSQL most requests reuse a connection; a role's first request on a pod still
114
+ connects. On MySQL and SQL Server, caller SQL and caller table operations still connect
115
+ per request, though their engines are kept.
116
+ - Connections are bounded by configuration, not by traffic.
117
+ - A pod runs at most T requests at once; further requests wait for a thread. Capacity
118
+ grows by adding pods.
119
+ - Many Users share one cap per pod, so a pod serving many Users reconnects more often
120
+ than one serving few.
121
+ - A reused connection stays logged in as its role until its idle timeout or maximum age.
122
+ - SQLite has no login roles; only the thread count applies locally.
123
+ - Changing T is a configuration change and a deployment.
124
+
125
+ Verification: unit tests (`tests/integrations/test_connection_reuse.py`) cover role
126
+ isolation, per-use settings and the session reset, closing broken connections, the cap
127
+ and eviction, waiting within the deadline, the idle timeout and maximum age, T applied
128
+ to the route threads, the catalog pool and data-request admission, and the kept engines. The hosted engines,
129
+ including the MySQL and SQL Server behavior above, are verified through the container
130
+ suite on request, and a load test against the development deployment sets the values
131
+ 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) | Accepted; implemented on development; deployment 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
 
@@ -73,7 +73,7 @@ DataSource and bootstrap state and returns `Cache-Control: no-store`.
73
73
  | 404 | Resource missing or not visible to the current actor. |
74
74
  | 409 | Lifecycle, capability, protection, reference, or physical-state conflict. |
75
75
  | 422 | Request/schema validation failure. |
76
- | 503 | Catalog, SDK verification/source access, physical connection, or an uncertain operation outcome is unavailable. |
76
+ | 503 | Catalog, SDK verification/source access, physical connection, or an uncertain operation outcome is unavailable; or every database connection the API may hold stayed busy (`database_connections_busy`, `Retry-After: 1`). |
77
77
 
78
78
  Most framework errors use a `detail` field. Some domain operations provide a
79
79
  structured code and field information. Raw-query validation errors can be returned
@@ -87,4 +87,4 @@ An unknown physical commit outcome requires reconciliation, not a blind retry.
87
87
 
88
88
  ## Transfer errors
89
89
 
90
- Data routes return 413 for request/row/response byte limits, 408 for the overall transfer deadline, and 429 with `Retry-After: 1` when per-process admission capacity is exhausted. Existing SQL/driver errors can retain their engine-specific deadline codes and status. Upload conflicts use 409 and uncertainty can use 503. A limit enforced by schema validation can return 422. See [typed client exceptions and recovery](../client/bounded-transfers.md).
90
+ Data routes return 413 for request/row/response byte limits, 408 for the overall transfer deadline, and 429 `transfer_capacity_exceeded` with `Retry-After: 1` when no data-request slot freed up within the request deadline (each API process runs `serving.concurrency` data requests at once). A 503 `database_connections_busy` with `Retry-After: 1` means every database connection stayed busy until the deadline. In both cases no statement ran, so any request, including SQL and writes, is safe to retry. Existing SQL/driver errors can retain their engine-specific deadline codes and status. Upload conflicts use 409 and uncertainty can use 503. A limit enforced by schema validation can return 422. See [typed client exceptions and recovery](../client/bounded-transfers.md).
@@ -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