mainsequence-metatable 0.1.7.dev9__tar.gz → 0.1.8__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 (537) hide show
  1. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/.agents/skills/client/metatables-local-development/SKILL.md +9 -5
  2. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/.agents/skills/client/metatables-meta-tables/SKILL.md +9 -2
  3. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/.agents/skills/client/metatables-migrations/SKILL.md +46 -11
  4. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +26 -4
  5. mainsequence_metatable-0.1.8/.mainsequence/workflows/metatables-api.yaml +40 -0
  6. {mainsequence_metatable-0.1.7.dev9/src/mainsequence_metatable.egg-info → mainsequence_metatable-0.1.8}/PKG-INFO +2 -2
  7. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +140 -4
  8. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0007-database-enforced-table-access.md +15 -4
  9. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0008-mysql-mssql-table-workflows.md +4 -0
  10. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0009-shared-credential-store.md +15 -7
  11. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0013-application-owned-migrations.md +4 -0
  12. mainsequence_metatable-0.1.8/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +98 -0
  13. mainsequence_metatable-0.1.8/docs/adr/api/0015-timescale-compression-and-retention-policies.md +192 -0
  14. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/index.md +3 -1
  15. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/api/data-sources.md +38 -21
  16. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/api/openapi.json +706 -129
  17. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/api/overview.md +12 -5
  18. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/api/reference.md +3 -2
  19. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/api/tables-and-migrations.md +2 -1
  20. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/api/time-index-and-updates.md +34 -0
  21. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/client/define-and-migrate-tables.md +20 -1
  22. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/client/installation-and-connection.md +5 -5
  23. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/client/local-storage.md +1 -1
  24. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/client/query-and-mutate.md +2 -1
  25. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/client/tutorial.md +2 -1
  26. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/client/upgrade-legacy-app.md +14 -3
  27. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/concepts/architecture.md +18 -13
  28. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/concepts/data-sources.md +17 -17
  29. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/concepts/identity-and-scope.md +4 -3
  30. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/contributing/database-backends.md +2 -2
  31. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/contributing/releasing.md +7 -4
  32. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/contributing/testing.md +1 -1
  33. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/README.md +4 -3
  34. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/index.md +4 -3
  35. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/operations/catalog-migrations.md +46 -32
  36. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/operations/configuration.md +13 -8
  37. mainsequence_metatable-0.1.8/docs/operations/hosted-runtime.md +189 -0
  38. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/operations/local-runtime.md +20 -10
  39. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/operations/run-history.md +4 -3
  40. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/operations/run-logs.md +2 -2
  41. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/reference/capabilities.md +4 -1
  42. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/reference/cli.md +2 -1
  43. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/security/index.md +11 -7
  44. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/security/permissions.md +1 -1
  45. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/mkdocs.yml +2 -0
  46. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/pyproject.toml +2 -2
  47. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8/src/mainsequence_metatable.egg-info}/PKG-INFO +2 -2
  48. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/mainsequence_metatable.egg-info/SOURCES.txt +10 -1
  49. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/mainsequence_metatable.egg-info/requires.txt +1 -1
  50. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/bootstrap.py +99 -135
  51. mainsequence_metatable-0.1.8/src/metatables/api/app/configuration.py +73 -0
  52. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/main.py +2 -3
  53. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/data_sources.py +13 -68
  54. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/managed_finalize.py +20 -4
  55. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/migration_connection.py +1 -1
  56. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/runtime_context.py +2 -2
  57. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_registration.py +6 -4
  58. mainsequence_metatable-0.1.8/src/metatables/api/app/routes/timescale_policies.py +295 -0
  59. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/runtime.py +5 -14
  60. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/runtime_control.py +26 -5
  61. mainsequence_metatable-0.1.8/src/metatables/api/app/runtime_database.py +121 -0
  62. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/access.py +4 -0
  63. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -11
  64. mainsequence_metatable-0.1.8/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +273 -0
  65. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/postgresql_access.py +96 -60
  66. mainsequence_metatable-0.1.8/src/metatables/api/backend/backends/timescale.py +379 -0
  67. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/contracts/storage_layouts.py +0 -6
  68. mainsequence_metatable-0.1.8/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +42 -0
  69. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/operations/register_catalog.py +0 -4
  70. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/models.py +1 -2
  71. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/physical_operations.py +2 -2
  72. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/table_response.py +5 -1
  73. mainsequence_metatable-0.1.8/src/metatables/api/metatables/configuration.yaml +12 -0
  74. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/cli/app.py +20 -1
  75. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/endpoint.py +10 -1
  76. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/README.md +4 -3
  77. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/__init__.py +0 -3
  78. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/models.py +51 -6
  79. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/runtime_contract.py +3 -2
  80. mainsequence_metatable-0.1.8/tests/auth/test_data_source_identity.py +166 -0
  81. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/auth/test_hosted_environment_target.py +1 -1
  82. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/auth/test_runtime_bootstrap.py +10 -10
  83. mainsequence_metatable-0.1.8/tests/auth/test_runtime_database.py +123 -0
  84. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/auth/test_runtime_scaffold.py +11 -25
  85. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/auth/test_runtime_selection.py +86 -50
  86. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/catalog/test_migration.py +2 -2
  87. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/contracts/capabilities.json +45 -1
  88. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/contracts/database_operations.json +0 -9
  89. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/test_catalog_contract.py +1 -1
  90. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/test_runtime_bootstrap.py +69 -48
  91. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_operations/test_runtime_and_temporal.py +9 -9
  92. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_api_endpoint.py +9 -1
  93. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_data_source_registry.py +2 -10
  94. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_runtime_transition.py +38 -24
  95. mainsequence_metatable-0.1.8/tests/e2e/test_runtime_upgrade.py +71 -0
  96. mainsequence_metatable-0.1.8/tests/e2e/test_timescale_policies_client_api.py +214 -0
  97. mainsequence_metatable-0.1.8/tests/operations/test_timescale_policies.py +104 -0
  98. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/uv.lock +5 -5
  99. mainsequence_metatable-0.1.7.dev9/.mainsequence/workflows/metatables-api.yaml +0 -10
  100. mainsequence_metatable-0.1.7.dev9/docs/operations/hosted-runtime.md +0 -106
  101. mainsequence_metatable-0.1.7.dev9/src/metatables/api/app/configuration.py +0 -36
  102. mainsequence_metatable-0.1.7.dev9/src/metatables/api/app/source_registrations.py +0 -219
  103. mainsequence_metatable-0.1.7.dev9/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -657
  104. mainsequence_metatable-0.1.7.dev9/src/metatables/api/metatables/configuration.yaml +0 -1
  105. mainsequence_metatable-0.1.7.dev9/tests/auth/test_data_source_identity.py +0 -85
  106. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
  107. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/LICENSE +0 -0
  108. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/MANIFEST.in +0 -0
  109. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/README.md +0 -0
  110. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/alembic.ini +0 -0
  111. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/api/metatables/main.py +0 -0
  112. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/compose.database-tests.yml +0 -0
  113. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0002-application-administration-and-table-ownership.md +0 -0
  114. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0004-approved-application-migrations.md +0 -0
  115. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
  116. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0006-historical-run-graphs.md +0 -0
  117. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
  118. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
  119. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
  120. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
  121. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
  122. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
  123. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/api/authentication-and-errors.md +0 -0
  124. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/assets/branding/metatables.svg +0 -0
  125. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/assets/diagrams/local-client-experience.svg +0 -0
  126. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/client/bounded-transfers.md +0 -0
  127. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/client/build-an-updater.md +0 -0
  128. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/client/quickstart.md +0 -0
  129. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/client/read-existing-time-index-tables.md +0 -0
  130. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/client/register-existing-tables.md +0 -0
  131. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/concepts/permissions-namespaces-labels.md +0 -0
  132. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/concepts/runs-and-execution-graphs.md +0 -0
  133. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
  134. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/concepts/time-index-tables-and-updates.md +0 -0
  135. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/contributing/architecture-and-boundaries.md +0 -0
  136. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/contributing/documentation.md +0 -0
  137. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/README.md +0 -0
  138. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/__init__.py +0 -0
  139. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/bounded_reader.py +0 -0
  140. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/data_sources/README.md +0 -0
  141. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/data_sources/mssql.json +0 -0
  142. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/data_sources/mysql.json +0 -0
  143. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/data_sources/postgresql.json +0 -0
  144. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/data_sources/register.py +0 -0
  145. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/external_table.py +0 -0
  146. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/local_app/README.md +0 -0
  147. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/local_app/__init__.py +0 -0
  148. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/local_app/__main__.py +0 -0
  149. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/local_app/migrations/__init__.py +0 -0
  150. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/local_app/migrations/env.py +0 -0
  151. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/local_app/migrations/script.py.mako +0 -0
  152. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  153. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/local_app/tables.py +0 -0
  154. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/query.py +0 -0
  155. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/quickstart.py +0 -0
  156. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/reader.py +0 -0
  157. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/scripts/__init__.py +0 -0
  158. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/scripts/setup_metatables.py +0 -0
  159. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tables.py +0 -0
  160. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/__init__.py +0 -0
  161. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/__main__.py +0 -0
  162. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/data/README.md +0 -0
  163. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  164. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/frames.py +0 -0
  165. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/migrations/__init__.py +0 -0
  166. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/migrations/env.py +0 -0
  167. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/migrations/registry.py +0 -0
  168. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/migrations/script.py.mako +0 -0
  169. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
  170. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  171. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  172. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  173. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/operations.py +0 -0
  174. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/tables.py +0 -0
  175. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/tutorial/updaters.py +0 -0
  176. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/examples/updater.py +0 -0
  177. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/operations/recovery-and-observability.md +0 -0
  178. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/reference/python.md +0 -0
  179. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/docs/security/ownership-and-sharing.md +0 -0
  180. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/scripts/__init__.py +0 -0
  181. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/scripts/build_reference.py +0 -0
  182. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/scripts/check_boundaries.py +0 -0
  183. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/scripts/check_client_api_coverage.py +0 -0
  184. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/scripts/check_distribution_sources.py +0 -0
  185. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/scripts/check_docs.py +0 -0
  186. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/scripts/check_examples_debug.py +0 -0
  187. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/scripts/check_project.py +0 -0
  188. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/scripts/dev_release_version.py +0 -0
  189. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/scripts/test_databases.py +0 -0
  190. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/scripts/test_postgresql.py +0 -0
  191. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/setup.cfg +0 -0
  192. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
  193. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
  194. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
  195. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/__init__.py +0 -0
  196. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/_admin_source.json +0 -0
  197. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/_build.py +0 -0
  198. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/_skill_bundle.py +0 -0
  199. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/__init__.py +0 -0
  200. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/__init__.py +0 -0
  201. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/auth/__init__.py +0 -0
  202. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/auth/boundary.py +0 -0
  203. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/auth/caller_assertions.py +0 -0
  204. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/auth/local_actor.py +0 -0
  205. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/credential_admin.py +0 -0
  206. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/development.py +0 -0
  207. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/development_client.py +0 -0
  208. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/platform_cache.py +0 -0
  209. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/__init__.py +0 -0
  210. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/column_search.py +0 -0
  211. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/contract_validation.py +0 -0
  212. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/namespaces.py +0 -0
  213. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/run_logs.py +0 -0
  214. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/schema_graph.py +0 -0
  215. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/security.py +0 -0
  216. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_cascade.py +0 -0
  217. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_crud.py +0 -0
  218. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_delete.py +0 -0
  219. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_filter.py +0 -0
  220. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_import.py +0 -0
  221. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_introspection.py +0 -0
  222. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_patch.py +0 -0
  223. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_response.py +0 -0
  224. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_search_document.py +0 -0
  225. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_sql.py +0 -0
  226. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
  227. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/time_index_delete.py +0 -0
  228. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/time_index_reads.py +0 -0
  229. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/time_index_stats.py +0 -0
  230. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/update_batch.py +0 -0
  231. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
  232. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/update_constants.py +0 -0
  233. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/update_crud.py +0 -0
  234. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/update_details.py +0 -0
  235. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/update_graph.py +0 -0
  236. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
  237. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/update_registration.py +0 -0
  238. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/update_runs.py +0 -0
  239. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/routes/update_statistics.py +0 -0
  240. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/source_passwords.py +0 -0
  241. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/app/transfer.py +0 -0
  242. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/__init__.py +0 -0
  243. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/__init__.py +0 -0
  244. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
  245. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
  246. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
  247. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
  248. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
  249. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
  250. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -0
  251. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
  252. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
  253. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
  254. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
  255. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
  256. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
  257. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
  258. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
  259. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
  260. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +0 -0
  261. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
  262. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/adapters/table_cursor.py +0 -0
  263. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/catalog.py +0 -0
  264. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
  265. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/catalog_types.py +0 -0
  266. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/contracts.py +0 -0
  267. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/hosted.py +0 -0
  268. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/hosted_access.py +0 -0
  269. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/migration_connection.py +0 -0
  270. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/native.py +0 -0
  271. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/operations.py +0 -0
  272. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/pages.py +0 -0
  273. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/registry.py +0 -0
  274. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/relation_tables.py +0 -0
  275. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/relational.py +0 -0
  276. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/restricted_sql.py +0 -0
  277. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
  278. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/backends/streaming.py +0 -0
  279. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/contracts/__init__.py +0 -0
  280. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/contracts/relation_import.py +0 -0
  281. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
  282. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/contracts/values.py +0 -0
  283. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/domain/__init__.py +0 -0
  284. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
  285. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
  286. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/domain/index_statistics.py +0 -0
  287. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/domain/label_rules.py +0 -0
  288. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/domain/permission_rules.py +0 -0
  289. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/domain/update_constants.py +0 -0
  290. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/__init__.py +0 -0
  291. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
  292. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
  293. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/credential_store.py +0 -0
  294. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
  295. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
  296. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
  297. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/platform_principals.py +0 -0
  298. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/run_logs.py +0 -0
  299. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
  300. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
  301. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/integrations/source_validation.py +0 -0
  302. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/__init__.py +0 -0
  303. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/env.py +0 -0
  304. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/script.py.mako +0 -0
  305. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
  306. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
  307. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
  308. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
  309. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
  310. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
  311. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
  312. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
  313. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
  314. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/operations/__init__.py +0 -0
  315. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
  316. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
  317. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/operations/create_table.py +0 -0
  318. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
  319. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/operations/import_relations.py +0 -0
  320. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/operations/introspect_table.py +0 -0
  321. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/operations/read_time_index.py +0 -0
  322. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/operations/search_documents.py +0 -0
  323. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/__init__.py +0 -0
  324. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/cascade.py +0 -0
  325. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/catalog.py +0 -0
  326. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/database.py +0 -0
  327. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/grants.py +0 -0
  328. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/labels.py +0 -0
  329. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/locking.py +0 -0
  330. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/projections.py +0 -0
  331. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
  332. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
  333. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
  334. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
  335. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/table_queries.py +0 -0
  336. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/update_graph.py +0 -0
  337. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
  338. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/updates.py +0 -0
  339. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
  340. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
  341. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/metatables/__init__.py +0 -0
  342. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/api/metatables/main.py +0 -0
  343. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/cli/__init__.py +0 -0
  344. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/cli/admin_install.py +0 -0
  345. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/cli/filters.py +0 -0
  346. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/cli/local.py +0 -0
  347. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/cli/migrations.py +0 -0
  348. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/cli/project.py +0 -0
  349. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/cli/skills.py +0 -0
  350. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/compiled_sql/__init__.py +0 -0
  351. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/compiled_sql/mssql.py +0 -0
  352. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/compiled_sql/v1.py +0 -0
  353. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/dtype_codec.py +0 -0
  354. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/README.md +0 -0
  355. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/__init__.py +0 -0
  356. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/bounded_reader.py +0 -0
  357. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/data_sources/README.md +0 -0
  358. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/data_sources/mssql.json +0 -0
  359. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/data_sources/mysql.json +0 -0
  360. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/data_sources/postgresql.json +0 -0
  361. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/data_sources/register.py +0 -0
  362. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/external_table.py +0 -0
  363. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/local_app/README.md +0 -0
  364. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/local_app/__init__.py +0 -0
  365. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/local_app/__main__.py +0 -0
  366. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
  367. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/local_app/migrations/env.py +0 -0
  368. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
  369. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  370. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/local_app/tables.py +0 -0
  371. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/query.py +0 -0
  372. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/quickstart.py +0 -0
  373. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/reader.py +0 -0
  374. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/scripts/__init__.py +0 -0
  375. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/scripts/setup_metatables.py +0 -0
  376. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tables.py +0 -0
  377. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/__init__.py +0 -0
  378. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/__main__.py +0 -0
  379. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/data/README.md +0 -0
  380. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  381. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/frames.py +0 -0
  382. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
  383. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/migrations/env.py +0 -0
  384. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
  385. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
  386. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
  387. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  388. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  389. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  390. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/operations.py +0 -0
  391. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/tables.py +0 -0
  392. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/tutorial/updaters.py +0 -0
  393. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/examples/updater.py +0 -0
  394. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/future_registry.py +0 -0
  395. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/hashing.py +0 -0
  396. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/instrumentation.py +0 -0
  397. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/local_connection.py +0 -0
  398. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/local_files.py +0 -0
  399. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/local_run_logs.py +0 -0
  400. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/log_contract.py +0 -0
  401. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/alembic.py +0 -0
  402. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/connection.py +0 -0
  403. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/env.py +0 -0
  404. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/provider.py +0 -0
  405. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/registry.py +0 -0
  406. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/runner.py +0 -0
  407. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/scaffold.py +0 -0
  408. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/templates/__init__.py +0 -0
  409. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/templates/env.py.mako +0 -0
  410. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/templates/script.py.mako +0 -0
  411. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/migrations/tls.py +0 -0
  412. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/pydantic_metadata.py +0 -0
  413. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/run_logging.py +0 -0
  414. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/runtime.py +0 -0
  415. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/runtime_context.py +0 -0
  416. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/schema_names.py +0 -0
  417. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/sdk_compat.py +0 -0
  418. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/sqlalchemy_contracts.py +0 -0
  419. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/time_index_table_refs.py +0 -0
  420. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/transfer.py +0 -0
  421. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/transfer_contract.py +0 -0
  422. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/transport.py +0 -0
  423. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/update_configuration_contract.py +0 -0
  424. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/updaters/__init__.py +0 -0
  425. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/updaters/configuration.py +0 -0
  426. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/updaters/dependencies.py +0 -0
  427. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/updaters/managers.py +0 -0
  428. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/updaters/namespacing.py +0 -0
  429. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/updaters/runner.py +0 -0
  430. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/updaters/updaters.py +0 -0
  431. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/updaters/utils.py +0 -0
  432. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/src/metatables/upload.py +0 -0
  433. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/auth/test_caller_assertions.py +0 -0
  434. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/auth/test_development_client.py +0 -0
  435. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/auth/test_local_mode.py +0 -0
  436. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/auth/test_platform_fact_cache.py +0 -0
  437. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/auth/test_runtime_storage_binding.py +0 -0
  438. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/auth/test_source_passwords.py +0 -0
  439. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/catalog/test_catalog_foundation.py +0 -0
  440. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/catalog/test_contract_projection.py +0 -0
  441. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/catalog/test_database_config.py +0 -0
  442. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/catalog/test_index_statistics.py +0 -0
  443. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/conftest.py +0 -0
  444. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/contracts/client_signatures.json +0 -0
  445. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/contracts/test_bounded_transfer.py +0 -0
  446. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/contracts/test_compiler_runtime_source.py +0 -0
  447. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/contracts/test_relation_batching.py +0 -0
  448. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/contracts/test_relation_import.py +0 -0
  449. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/contracts/test_storage_layouts.py +0 -0
  450. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/contracts/test_table_contracts.py +0 -0
  451. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/Dockerfile +0 -0
  452. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/Dockerfile.dockerignore +0 -0
  453. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/__init__.py +0 -0
  454. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/conftest.py +0 -0
  455. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/provider/__init__.py +0 -0
  456. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/provider/env.py +0 -0
  457. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
  458. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/test_api_contract.py +0 -0
  459. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/test_application_migration.py +0 -0
  460. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/test_bootstrap_recovery.py +0 -0
  461. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/test_credential_catalog.py +0 -0
  462. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/test_physical_contract.py +0 -0
  463. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/test_relation_import.py +0 -0
  464. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/test_sql_security.py +0 -0
  465. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_backend/test_update_client.py +0 -0
  466. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_operations/test_physical_operations.py +0 -0
  467. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/database_operations/test_postgresql_operations.py +0 -0
  468. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/documentation/test_project_checks.py +0 -0
  469. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_admin_installation.py +0 -0
  470. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_application_owned_migrations.py +0 -0
  471. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_catalog_outage.py +0 -0
  472. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_client_api_contract.py +0 -0
  473. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_client_api_coverage.py +0 -0
  474. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_client_migration_scaffold.py +0 -0
  475. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_client_migration_tls.py +0 -0
  476. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_client_package.py +0 -0
  477. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_client_signatures.py +0 -0
  478. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_client_value_behaviors.py +0 -0
  479. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_local_actor_client_api.py +0 -0
  480. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_local_cli_workflow.py +0 -0
  481. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_local_client_selection.py +0 -0
  482. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_managed_finalize_client_api.py +0 -0
  483. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_namespaces_admin_http.py +0 -0
  484. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_public_imports.py +0 -0
  485. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_remaining_client_routes.py +0 -0
  486. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_run_graphs.py +0 -0
  487. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_run_logs.py +0 -0
  488. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_sdk_local_startup.py +0 -0
  489. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_sqlite_runtime.py +0 -0
  490. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_table_delete_client_api.py +0 -0
  491. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_table_filter_client_api.py +0 -0
  492. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_table_introspection_client_api.py +0 -0
  493. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_table_patch_client_api.py +0 -0
  494. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_table_search_document_api.py +0 -0
  495. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_table_stats_api.py +0 -0
  496. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_table_update_pipeline.py +0 -0
  497. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_table_updates_http.py +0 -0
  498. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_time_index_delete_client_api.py +0 -0
  499. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_time_index_reads_client_api.py +0 -0
  500. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_update_batch_client_api.py +0 -0
  501. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
  502. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
  503. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
  504. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/e2e/test_update_registration_client_api.py +0 -0
  505. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/examples/test_documented_examples.py +0 -0
  506. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/examples/test_postgresql_examples.py +0 -0
  507. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/examples/test_setup_launch.py +0 -0
  508. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/examples/test_tutorial.py +0 -0
  509. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/integrations/test_credential_store.py +0 -0
  510. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/integrations/test_data_source_rules.py +0 -0
  511. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/integrations/test_local_data_sources.py +0 -0
  512. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/integrations/test_local_run_logs.py +0 -0
  513. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/integrations/test_postgresql_connection.py +0 -0
  514. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/integrations/test_postgresql_sql.py +0 -0
  515. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/integrations/test_postgresql_tables.py +0 -0
  516. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
  517. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/integrations/test_source_validation.py +0 -0
  518. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/integrations/test_sqlite_operations.py +0 -0
  519. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/labels/test_labels.py +0 -0
  520. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/operations/test_create_table_operation.py +0 -0
  521. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/operations/test_create_table_postgres.py +0 -0
  522. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/operations/test_physical_operation_journal.py +0 -0
  523. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/operations/test_register_catalog.py +0 -0
  524. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/operations/test_search_documents.py +0 -0
  525. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/packaging/test_client_skills.py +0 -0
  526. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/packaging/test_dev_release_version.py +0 -0
  527. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/packaging/test_distribution_sources.py +0 -0
  528. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/packaging/test_editable_build.py +0 -0
  529. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/packaging/test_installed_distribution.py +0 -0
  530. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/permissions/test_governed_sql_scope.py +0 -0
  531. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/permissions/test_local_actor_membership.py +0 -0
  532. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/permissions/test_migration_boundary.py +0 -0
  533. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/permissions/test_namespace_grants.py +0 -0
  534. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/permissions/test_security_api.py +0 -0
  535. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/permissions/test_table_body_filter.py +0 -0
  536. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/permissions/test_table_grants.py +0 -0
  537. {mainsequence_metatable-0.1.7.dev9 → mainsequence_metatable-0.1.8}/tests/permissions/test_table_queries.py +0 -0
@@ -140,12 +140,16 @@ local rows, catalog UIDs, credentials and fixture data are not promoted by a swi
140
140
  When returning to the environment is part of the requested workflow:
141
141
 
142
142
  1. Finish local tests and stop active writers. In Admin **Settings → Runtime mode**,
143
- inspect the displayed hosted environment and choose the intended registered
144
- DataSource. Use **Switch to Hosted**. This changes the API worker and selected
145
- database; it does not copy or merge the local database. Leave local capability
146
- enabled if the developer needs to switch back later.
143
+ inspect the displayed hosted environment and use **Switch to Hosted**. Hosted
144
+ opens the runtime database the API's deployment declares, through the same
145
+ Environment Secret; there is no DataSource to choose and the launcher never
146
+ migrates it. This changes the API worker and database; it does not copy or merge
147
+ the local database. Leave local capability enabled if the developer needs to
148
+ switch back later.
147
149
  2. Re-read runtime status and verify `local_mode: false`, the intended verified
148
- hosted environment, the expected DataSource and readiness. The same local
150
+ hosted environment, the expected DataSource and readiness. `migration_required`
151
+ means the branch has system migrations the deployed API does not have yet; it
152
+ clears once that code is deployed. The same local
149
153
  connection command still reaches this supervised API; its `--local` flag alone
150
154
  does not prove SQLite. If the switch fails and the old worker is restored,
151
155
  report the actual mode instead of claiming the switch succeeded.
@@ -35,8 +35,9 @@ identity and Git source facts use SDK imports. Table operations use the client's
35
35
  with SQLite behind it; ordinary clients never open local table files. Local
36
36
  workspaces use one persistent SQLite database for system and user tables per
37
37
  checkout; Git branches share it.
38
- Settings explicitly initializes or selects the runtime DataSource in both modes;
39
- startup never runs Alembic. See `docs/operations/catalog-migrations.md`.
38
+ A hosted API's deployment declares and initializes its runtime DataSource; Local
39
+ Settings explicitly initializes or selects the SQLite file. Startup never runs
40
+ Alembic. See `docs/operations/catalog-migrations.md`.
40
41
 
41
42
  ## Authoring decisions
42
43
 
@@ -118,6 +119,12 @@ A null cutoff requires a scope. Do not replace that workflow with ad hoc SQL.
118
119
  Deletion/cascade requires edit access, relevant protection checks, and explicit
119
120
  cascade intent; it is not an administrator-role bypass or migration repair.
120
121
 
122
+ On a TimescaleDB DataSource, time-index tables are hypertables. Their compression
123
+ and retention policies are set only through `TimeIndexMetaTable.set_timescale_policies`
124
+ (Writer) and read with `get_timescale_policies`. Do not add policies to table
125
+ contracts or Alembic revisions; to keep them in code, call the client from a
126
+ bootstrap Job. Retention permanently drops older chunks, including backfills.
127
+
121
128
  ## Validation
122
129
 
123
130
  Check authored models, normalization, physical naming, FK targets, and time grain
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: metatables-migrations
3
- description: "Create and evolve managed application tables through Alembic migration providers with the installed MetaTables Python client. Covers provider scope, scaffolding, revision authoring, client-side execution, and reservation or finalization failures. Excludes API catalog migrations, client-library implementation, API/server changes and repository tooling."
3
+ description: "Create and evolve managed application tables through Alembic migration providers with the installed MetaTables Python client. Covers provider scope and placement, scaffolding, revision authoring, client-side execution, and reservation or finalization failures. Excludes API catalog migrations, client-library implementation, API/server changes and repository tooling."
4
4
  ---
5
5
 
6
6
  # MetaTables client application migrations
@@ -34,9 +34,10 @@ finalize catalog bindings through the API. Use the
34
34
  [table skill](../metatables-meta-tables/SKILL.md) for contract design.
35
35
 
36
36
  Check `docs/reference/capabilities.md` and `metatables migrations --help` before
37
- promising a command. The API's own catalog migrations are a separate history that
38
- an admin runs from Settings; see `docs/operations/catalog-migrations.md`. They
39
- are not application-provider revisions.
37
+ promising a command. The API's own catalog migrations are a separate history: a
38
+ hosted API's deployment applies them before it rolls out, and Local mode runs them
39
+ from Settings; see `docs/operations/catalog-migrations.md`. They are not
40
+ application-provider revisions.
40
41
 
41
42
  ## Source and runtime context
42
43
 
@@ -55,9 +56,11 @@ are not application-provider revisions.
55
56
  1. Define the SQLAlchemy models with stable, application-prefixed physical names.
56
57
  2. Identify one provider module, migration namespace, target `MetaData`, model
57
58
  registry, and prefixed Alembic version-table binding.
58
- 3. Keep provider scope explicit. Do not scan all imported models or installed
59
+ 3. Choose a provider module name that no other installed package uses (see
60
+ [Provider placement](#provider-placement)).
61
+ 4. Keep provider scope explicit. Do not scan all imported models or installed
59
62
  packages.
60
- 4. Scaffold only when the application has no provider yet:
63
+ 5. Scaffold only when the application has no provider yet:
61
64
 
62
65
  ```bash
63
66
  metatables migrations scaffold \
@@ -65,13 +68,17 @@ are not application-provider revisions.
65
68
  --module ledger.migrations \
66
69
  --namespace ledger \
67
70
  --base ledger.tables:Base \
68
- --metadata ledger.tables:Base.metadata
71
+ --metadata ledger.tables:Base.metadata \
72
+ --alembic-version-table-name ledger__alembic_version
69
73
  ```
70
74
 
71
- 5. Edit the generated `registry.py` so it returns exactly the models owned by
75
+ Always pass `--module` and `--alembic-version-table-name`. Without them the
76
+ scaffold creates a top-level `migrations` module and the shared
77
+ `public.alembic_version` table.
78
+ 6. Edit the generated `registry.py` so it returns exactly the models owned by
72
79
  that migration stream. Scaffolding alone selects no models and creates no
73
80
  tables.
74
- 6. Create and review an Alembic revision (defaults to autogeneration):
81
+ 7. Create and review an Alembic revision (defaults to autogeneration):
75
82
 
76
83
  ```bash
77
84
  metatables migrations revision \
@@ -83,6 +90,27 @@ Use `--source-root` and `--code-repository-root` when the application does not
83
90
  use the default `src/` layout. Keep applied revisions immutable; add a new
84
91
  revision for every later schema change.
85
92
 
93
+ ## Provider placement
94
+
95
+ The application decides where its provider lives. The module name, however,
96
+ must not collide with any other package installed in the same environment. A
97
+ library's provider ships in its wheel and runs inside its consumers'
98
+ environments, next to providers from other libraries. When two packages install
99
+ the same top-level module, such as `migrations`, the later install overwrites
100
+ the earlier one's files. Imports then load the wrong provider, and Alembic reads
101
+ the wrong revisions.
102
+
103
+ - Place the provider under an import package the application owns, for example
104
+ `ledger.migrations`, or give it a name specific to the application, for example
105
+ `ledger_migrations`.
106
+ - Point `script_location` and `version_location_prefix` at that module. The
107
+ scaffold derives both from `--module`. A hand-written
108
+ `build_metatable_migration_provider` call must pass both, because the builder
109
+ defaults to `migrations:`.
110
+ - Before releasing a package that others install, list the built wheel with
111
+ `python -m zipfile -l <wheel>`. Its top-level entries must be packages the
112
+ application owns.
113
+
86
114
  ## Execute with the environment connection
87
115
 
88
116
  After verifying the intended runtime, use the application's provider reference:
@@ -132,6 +160,13 @@ Read `docs/operations/recovery-and-observability.md`.
132
160
 
133
161
  - If provider loading fails, verify the import path, model registry, metadata,
134
162
  version-table binding, and installed `metatables` version.
163
+ - If the provider loads another package's code or revisions, find the file that
164
+ its module resolves to with
165
+ `python -c "import importlib.util as u; print(u.find_spec('migrations').origin)"`,
166
+ replacing `migrations` with the provider module. A shared module name means
167
+ another install overwrote it. Move the provider as the
168
+ [legacy upgrade skill](../metatables-upgrade-legacy-app/SKILL.md) describes;
169
+ do not edit files in `site-packages`.
135
170
  - If reservation fails, compare provider scope and physical identities before
136
171
  changing code. Do not create a second catalog row for the same table.
137
172
  - If Alembic succeeds but finalization fails, physical DDL may already be
@@ -145,6 +180,6 @@ Read `docs/operations/recovery-and-observability.md`.
145
180
 
146
181
  ## Validation
147
182
 
148
- Verify provider scope, revision content, the selected environment connection,
149
- repeat execution, and final active bindings. Report separately what was checked
183
+ Verify provider scope and placement, revision content, the selected environment
184
+ connection, repeat execution, and final active bindings. Report separately what was checked
150
185
  offline and what was exercised against a configured API.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: metatables-upgrade-legacy-app
3
- description: "Upgrade consuming applications from MainSequence 8.x MetaTables or older extracted clients to the installed metatables package. Use for legacy imports, removed SQL scopes, repository compilers and application migration-provider integration. Excludes MetaTables client/API implementation and ordinary schema revision authoring."
3
+ description: "Upgrade consuming applications from MainSequence 8.x MetaTables or older extracted clients to the installed metatables package. Use for legacy imports, removed SQL scopes, repository compilers, application migration-provider integration and provider modules that collide with other installed packages. Excludes MetaTables client/API implementation and ordinary schema revision authoring."
4
4
  ---
5
5
 
6
6
  # Upgrade a legacy MetaTables application
@@ -58,11 +58,33 @@ Read `docs/client/query-and-mutate.md` for current query behavior and
58
58
 
59
59
  ## Upgrade application migration integration
60
60
 
61
- Keep the existing provider package, namespace, model registry, version-table
62
- binding and applied revision history. Update bootstrap/import wiring to the
63
- installed client's public migration interfaces. Do not scaffold a replacement
61
+ Keep the existing provider `package=` value, namespace, model registry,
62
+ version-table binding and applied revision history. Update bootstrap/import wiring
63
+ to the installed client's public migration interfaces. Do not scaffold a replacement
64
64
  provider, rewrite applied history or stamp the database to bypass an upgrade issue.
65
65
 
66
+ ### Move a provider whose module name collides
67
+
68
+ A provider installed under a generic top-level module, such as `migrations`,
69
+ shares files and imports with every other installed package that chose the same
70
+ name. Move it under a module the application owns, for example `ledger.migrations`
71
+ or `ledger_migrations`:
72
+
73
+ - Move the provider package with its `env.py`, `script.py.mako` and `versions/`
74
+ tree.
75
+ - Update `script_location`, `version_location_prefix`, the `env.py` import,
76
+ imports inside the provider, packaging configuration, and every provider
77
+ reference in code, scripts and jobs.
78
+ - Keep `package=`, `migration_namespace`, the version-table binding and the
79
+ revision files unchanged. The catalog binds provider tables to
80
+ `package:namespace` and rejects a reservation from a different key. Alembic
81
+ stores only revision IDs, so the module path can change.
82
+ - Do not ship a module under the old name. A forwarding module would keep the
83
+ file collision.
84
+
85
+ Then confirm that `migrations current` reports the same revision as before the
86
+ move, and that the built wheel no longer installs the old top-level name.
87
+
66
88
  Providers load in the application process from Python references such as
67
89
  `ledger.migrations:migration`. The client executes Alembic with the environment
68
90
  connection; the API handles authorization, reservations and finalization. The
@@ -0,0 +1,40 @@
1
+ api_version: "2.3.0"
2
+ name: metatables-api
3
+ resources:
4
+ - key: metatables-api
5
+ kind: fastapi
6
+ spec:
7
+ source_path: api/metatables/main.py
8
+ automatic_deployment: true
9
+ automatic_redeployment:
10
+ enabled: true
11
+ tag_regex: null
12
+ min_scale: 1
13
+ revision_retention_count: 3
14
+
15
+ - key: migrate-system
16
+ kind: job
17
+ spec:
18
+ name: MetaTables system migrations
19
+ execution_path: jobs/migrate_system.py
20
+ cpu_request: "1"
21
+ memory_request: "1"
22
+ max_runtime_seconds: 1800
23
+ automatic_redeployment:
24
+ enabled: true
25
+ tag_regex: null
26
+
27
+ execution:
28
+ steps:
29
+ image:
30
+ prepare_image: metatables-api
31
+
32
+ migrate:
33
+ run_job: migrate-system
34
+ image_from: image
35
+ needs: [image]
36
+
37
+ deploy_api:
38
+ deploy: metatables-api
39
+ image_from: image
40
+ needs: [migrate]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence-metatable
3
- Version: 0.1.7.dev9
3
+ Version: 0.1.8
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
@@ -14,7 +14,7 @@ Classifier: Operating System :: OS Independent
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: mainsequence[server]<10,>=9.0.1
17
+ Requires-Dist: mainsequence[server]<10,>=9.0.4
18
18
  Requires-Dist: alembic<2,>=1.18
19
19
  Requires-Dist: cachetools
20
20
  Requires-Dist: cryptography<51,>=46
@@ -28,6 +28,10 @@ does not cache this API's runtime context or select its runtime mode or DataSour
28
28
  Updated 2026-09-28: application Environment policy and relationships are removed.
29
29
  Amended 2026-09-29: one enforced runtime binding and explicit bootstrap select one
30
30
  database for system and user tables.
31
+ Amended 2026-10-02: each runtime mode lists and selects only its own DataSources,
32
+ and inspection checks the login's prerequisites before setup.
33
+ Amended 2026-10-03: the deployment declares the hosted runtime database; Settings
34
+ is read-only in Hosted mode.
31
35
 
32
36
  Companion decision: [Main Sequence SDK ADR 0035: Independent Git source and platform execution context](https://github.com/mainsequence-sdk/mainsequence-sdk/blob/metatables_removal/docs/adr/0035-independent-git-source-and-platform-context.md).
33
37
  The SDK prerequisite is implemented on `metatables_removal`; the current local
@@ -81,6 +85,114 @@ API requirement. The guides and examples describe the implemented shared path.
81
85
 
82
86
  ## Decision
83
87
 
88
+ ### The deployment declares the hosted runtime database (amended 2026-10-03)
89
+
90
+ Implemented 2026-10-03 for [MetaTables #13](https://github.com/mainsequence-projects/MetaTables/issues/13) in the API, the migration Job and the Admin.
91
+ The PostgreSQL transition test and the container suite were updated but not run;
92
+ hosted verification is pending.
93
+
94
+ Settings used to save the hosted selection in the database it pointed to, with a
95
+ pointer file on the pod. A restarted or additional pod lost that pointer. The
96
+ hosted runtime database is now declared by the deployment:
97
+
98
+ - **Declaration.** The API's `configuration.yaml`
99
+ (`metatables/api/metatables/configuration.yaml`) has a `runtime_database`
100
+ section with the engine, the name of the Environment Secret holding the
101
+ connection URI, the default schema, the TLS mode and optional certificate
102
+ Secret names. It holds names and settings, never secret values. Each branch
103
+ keeps its own file, so each Environment's deployment reads its own file and
104
+ Secret.
105
+ - **Secret.** The database administrator creates it in each Environment, for
106
+ example `postgresql://login:password@host:5432/database`. Host, port, database,
107
+ login and password come only from the URI, certificates only from the named
108
+ Secrets. The runtime DataSource's `password_secret_uid` is the URI Secret's UID
109
+ ([ADR 0009](0009-shared-credential-store.md)).
110
+ - **Deployment.** On every deployment the `migrate-system` Job reads the
111
+ declaration and the Secret. It checks the prerequisites, applies the system
112
+ migrations, registers the runtime DataSource and reapplies access setup
113
+ ([ADR 0014](0014-main-sequence-release-jobs-and-production-migrations.md)).
114
+ Pointing the Secret at another database follows the same procedure: that
115
+ database is initialized and becomes the runtime. Each database keeps its own
116
+ catalog, and nothing is transferred. When only the connection changes (host,
117
+ login, TLS), the deployment updates the registration.
118
+ - **API.** Every pod reads the same declaration and Secret at startup and takes
119
+ the runtime row from the catalog. It never runs DDL and writes no pointer, so
120
+ restarts and additional pods agree and report the same instance identity
121
+ ([MetaTables #14](https://github.com/mainsequence-projects/MetaTables/issues/14)).
122
+ A pod that starts on an unprepared database reports `migration_required` or
123
+ `registration_required` and serves no application operations. A Secret change
124
+ therefore takes effect on deployment.
125
+ - **Settings, Hosted mode.** Settings is read-only: it shows the declaration, the
126
+ resolved connection, the status and the revisions.
127
+ - Hosted `configure`, `migrate` and `activate` answer 409.
128
+ - `select` and the pre-activation Hosted registry
129
+ (`runtime-source-candidates.json`, `hosted_source_uid`) are removed.
130
+ - Hosted DataSources are registered only in the active runtime catalog.
131
+ - Settings does not show the migration Job's result; the deployment run
132
+ reports a failed Job.
133
+ - **Developer launcher, Hosted mode.** The launcher reads the packaged deployment
134
+ file and the same Secret, so it uses the same database; its own
135
+ `configuration.yaml` only grants the developer capability. It never migrates. A
136
+ newer local migration reports `migration_required` until it is deployed.
137
+
138
+ Local mode is unchanged. For Hosted mode, this supersedes three earlier
139
+ decisions:
140
+ - the Hosted registry and selection in the 2026-10-02 amendment;
141
+ - Settings-initiated hosted initialization in the 2026-09-29 bootstrap amendment;
142
+ - the persisted hosted selection in the 2026-09-29 bootstrap amendment.
143
+
144
+ ### Each runtime mode selects only its own DataSources (amended 2026-10-02)
145
+
146
+ Hosted rows are superseded by the 2026-10-03 amendment above: Hosted has no
147
+ registry before activation and no selection.
148
+
149
+ Implemented 2026-10-02 in the API and Admin; the PostgreSQL runtime-transition test
150
+ was updated but not run.
151
+
152
+ A DataSource belongs to the runtime mode that registered it. Data Sources and
153
+ Settings show only the current mode's registrations:
154
+
155
+ | Mode | Registrations | Credential references |
156
+ | --- | --- | --- |
157
+ | Local | The workspace SQLite catalog | Local CredentialStore |
158
+ | Hosted | The Hosted registry until activation, then the hosted catalog | SDK Secrets |
159
+
160
+ Neither mode lists, selects or copies the other mode's registrations. This applies
161
+ ADR 0009's rule against automatic credential transfers to selection. A Hosted
162
+ DataSource is registered and selected after switching to Hosted. Local mode offers
163
+ **Switch to Hosted** without choosing a source; Hosted starts with its saved
164
+ selection or uninitialized, as the supervised-selection amendment below requires.
165
+
166
+ Gap observed 2026-10-02: in Local mode, the Settings Hosted picker listed the local
167
+ catalog (`GET /data-sources/`). Selecting a TimescaleDB registered there made
168
+ `POST /runtime-bootstrap/hosted/select/` copy the row, with its local password
169
+ reference, into `.local/runtime-source-candidates.json`. SDK Secrets could not
170
+ resolve that reference ("SDK Secret access failed"). Local mode also offered no
171
+ way to register a Hosted source: **Add DataSource** writes the local catalog, and
172
+ the Admin disables **Switch to Hosted** until a Hosted source is selected. The
173
+ operations guide documents this cross-mode flow.
174
+
175
+ Fix:
176
+
177
+ 1. API: remove Local-mode Hosted preselection: `POST /runtime-bootstrap/hosted/select/`,
178
+ the Local `hosted_bootstrap` and its runtime-context field. Remove the
179
+ local-catalog lookup and `remember()` from `registered_hosted_source`. Hosted
180
+ `POST /runtime-bootstrap/select/` resolves only the Hosted registry or the
181
+ active hosted catalog.
182
+ 2. Admin: in Local mode, Settings enables **Switch to Hosted** with no source
183
+ picker. The Hosted picker and its **Add DataSource** render only in Hosted
184
+ mode, where Data Sources is the Hosted registry.
185
+ 3. Docs: `docs/operations/local-runtime.md` describes the order Switch to Hosted,
186
+ register in Data Sources, select in Settings, then run MetaTables migrations
187
+ or use the existing catalog.
188
+ 4. Tests: the Local-mode selection route no longer exists; Hosted selection
189
+ rejects a local-catalog UID; a fresh Hosted runtime registers a source with an
190
+ SDK Secret reference and selects it; Settings in Local mode switches without a
191
+ selection.
192
+
193
+ Hosted registry entries already copied from a local catalog carry unusable
194
+ references; developers remove them. No data migration is provided.
195
+
84
196
  ### One local runtime across branches (amended 2026-09-30)
85
197
 
86
198
  MetaTables owns one persistent local SQLite runtime for a checkout. Git branches,
@@ -99,11 +211,19 @@ by startup or migration. This supersedes the previous branch isolation policy.
99
211
 
100
212
  ### Explicit runtime bootstrap in the selected DataSource (amended 2026-09-29)
101
213
 
214
+ Hosted upgrades: before each API rollout, the deployment workflow runs
215
+ `metatables runtime upgrade` from the new image against the active runtime
216
+ ([ADR 0014](0014-main-sequence-release-jobs-and-production-migrations.md)). Initializing a selected DataSource and startup
217
+ inspection follow the lifecycle below.
218
+
102
219
  This amendment supersedes the separate catalog connection, the two-file SQLite
103
220
  binding, automatic local catalog upgrades, and the requirement that switching to
104
221
  Hosted already have a migrated catalog. It corrects this ADR's runtime lifecycle;
105
222
  it does not introduce a second execution architecture.
106
223
 
224
+ For Hosted mode, the 2026-10-03 amendment replaces Settings selection and
225
+ initialization with the deployment's declaration and migration Job.
226
+
107
227
  Settings selects the runtime mode and its DataSource. That database contains both
108
228
  MetaTables' system tables and user tables. Local selects one persistent SQLite
109
229
  file; Hosted selects PostgreSQL/TimescaleDB. MySQL and MSSQL remain connection-only
@@ -117,6 +237,14 @@ configuration inserted as the runtime DataSource in that database. Failed work
117
237
  never activates a partially initialized runtime. A database already initialized
118
238
  and compatible can be selected without running migrations.
119
239
 
240
+ Amended 2026-10-02: before any runtime is registered, inspection also checks,
241
+ read-only, the login's prerequisites under
242
+ [ADR 0007](0007-database-enforced-table-access.md): `CREATEROLE`, and permission to
243
+ create the `metatables` schema and tables in the default schema. Unmet
244
+ prerequisites make the target incompatible, with each reason shown in Settings,
245
+ so setup never leaves a database half-initialized. A registered runtime is not
246
+ rechecked.
247
+
120
248
  Settings, runtime context, mode selection and bootstrap actions do not depend on
121
249
  catalog sessions or catalog memberships. They retain the existing request admission.
122
250
  The caller who configures a pending target controls its initialization; an existing
@@ -210,10 +338,18 @@ The supervisor passes mode and transport parameters explicitly to the child;
210
338
  `METATABLES_LOCAL_RUNTIME` has no authority. Database credentials remain private
211
339
  deployment inputs and are never stored in YAML or sent to Vite.
212
340
 
213
- The runtime descriptor reports capability, switching availability and a fresh
214
- instance identity. Admin requests carry that identity so stale requests are
215
- rejected after a restart. During transition the UI blocks work, reloads runtime
216
- context and remounts cached views. A mode change affects the entire developer API
341
+ The runtime descriptor reports capability, switching availability and an
342
+ instance identity. Admin requests carry that identity so requests made against a
343
+ previous runtime are rejected. During transition the UI blocks work, reloads runtime
344
+ context and remounts cached views.
345
+
346
+ Amended 2026-10-03 for [MetaTables #14](https://github.com/mainsequence-projects/MetaTables/issues/14):
347
+ the instance identity names the runtime binding, not the process. It is derived
348
+ from the mode, the runtime database's public configuration, the runtime
349
+ DataSource UID, its activation and the catalog revision. Every process and pod
350
+ serving one binding reports the same identity, so an API deploy or restart keeps
351
+ open pages valid; selecting another DataSource, activating it, applying
352
+ migrations or switching mode changes it. A mode change affects the entire developer API
217
353
  instance, never an individual user's view of a shared service.
218
354
 
219
355
  ### Enforced runtime binding (amended 2026-09-29)
@@ -6,6 +6,14 @@
6
6
  > conflicting application-migration execution and credential restrictions;
7
7
  > governed API operations and MetaTables system migrations remain separate.
8
8
 
9
+ > Amendment (2026-10-02): MetaTables secures only what it owns: its `metatables`
10
+ > schema, the tables it manages and the roles it creates. Database-wide defaults
11
+ > and `PUBLIC` access to other owners' objects, including extensions and other
12
+ > applications sharing the database, are the database administrator's
13
+ > responsibility. The login needs `CREATEROLE` and permission to create the
14
+ > `metatables` schema and tables in the DataSource's default schema; it need not
15
+ > own the database.
16
+
9
17
 
10
18
  Date: 2026-09-29
11
19
 
@@ -160,12 +168,14 @@ client.
160
168
  - **Ownership.** Tables are owned by `mt_owner`, a role that cannot log in, because
161
169
  an owner holds every privilege. The API's own role manages grants and schema
162
170
  changes and never runs caller SQL.
163
- - **Defaults.** PostgreSQL's default `PUBLIC` privileges are revoked: connecting,
164
- creating objects and temporary tables, and executing new functions.
171
+ - **Defaults.** On objects MetaTables owns, PostgreSQL's default `PUBLIC`
172
+ privileges are revoked, including for future tables and routines. Database-wide
173
+ defaults (connecting, creating objects and temporary tables) and other owners'
174
+ objects belong to the database administrator.
165
175
  - **Privileged routines.** Restricted caller roles must not be able to execute
166
176
  application routines with elevated owner privileges, including
167
177
  `SECURITY DEFINER` routines. Initialization establishes this restriction for
168
- existing routines as well as future defaults, covering direct grants, inherited
178
+ the routines MetaTables owns, existing and future, covering direct grants, inherited
169
179
  roles and `PUBLIC`. Revoking a direct User grant alone is insufficient if
170
180
  another grant still permits execution. Schema changes and extension installation
171
181
  preserve the restriction before exposing new or changed routines to callers.
@@ -261,7 +271,8 @@ and [MySQL implicit commits](https://dev.mysql.com/doc/refman/8.4/en/implicit-co
261
271
 
262
272
  - The explorer can run any PostgreSQL query, and the API has no SQL parser left
263
273
  to get wrong.
264
- - The DataSource login needs `CREATEROLE`.
274
+ - The DataSource login needs `CREATEROLE` and the right to create the `metatables`
275
+ schema; it does not need to own the database.
265
276
  - Physical table names become visible to explorer users.
266
277
  - Cascading foreign keys are unavailable where the explorer is enabled.
267
278
  - Team membership reaches the database at the pace of the existing one-hour
@@ -253,6 +253,10 @@ this work must not require recreation or transfer them to another DataSource.
253
253
 
254
254
  ### First-bootstrap and migration recovery
255
255
 
256
+ The deployment workflow's `metatables runtime upgrade` ([ADR 0014](0014-main-sequence-release-jobs-and-production-migrations.md))
257
+ runs this same protocol, with its backend locks, progress reconciliation,
258
+ registration and schema verification, before each hosted API rollout.
259
+
256
260
  The shared bootstrap service operates before a DataSource row or the full operation
257
261
  journal exists. Startup and Settings inspection remain read-only. Only the explicit
258
262
  **Run MetaTables migrations** action may initialize or upgrade the selected database.
@@ -9,6 +9,10 @@
9
9
 
10
10
  Date: 2026-09-30
11
11
 
12
+ Amended 2026-10-03 ([MetaTables #13](https://github.com/mainsequence-projects/MetaTables/issues/13)): the hosted runtime login's password comes from the
13
+ URI Secret that the deployment declares. See
14
+ [Bootstrap, restart and lifecycle](#bootstrap-restart-and-lifecycle).
15
+
12
16
  Status: Accepted. Implemented by the API CredentialStore providers and catalog
13
17
  revision `0006_local_credentials`.
14
18
 
@@ -131,17 +135,21 @@ coverage must additionally run on its corresponding host.
131
135
  ### Bootstrap, restart and lifecycle
132
136
 
133
137
  Local SQLite opens using the existing API-owned file binding, before credential
134
- lookup. Hosted bootstrap resolves the selected connection's UUID through SDK
135
- Secrets before opening the catalog. Its credential never depends on opening the
136
- database that needs that password. Saved selection JSON holds only public
137
- settings and UUID references.
138
+ lookup. Hosted bootstrap reads the Environment Secret named by
139
+ `runtime_database.uri_secret` (amended 2026-10-03). It reads the Secret by name
140
+ through the SDK before opening the catalog. The login and password come from that
141
+ URI, and the runtime DataSource references the Secret's UID as
142
+ `password_secret_uid`. The hosted store serves that UID only as the database
143
+ password and refuses to delete it. Every other reference still resolves through
144
+ SDK Secrets by UID. The credential never depends on opening the database that
145
+ needs it. Local selection JSON holds only public settings and UUID references.
138
146
 
139
147
  A fresh local catalog must receive explicit system migrations before saving
140
148
  sources/credentials. Local saves never substitute JSON for encrypted SQL storage.
141
149
  Previously saved local candidate metadata can be materialized by explicit setup,
142
- retaining DataSource UIDs. Hosted pre-catalog registration continues to use SDK
143
- Secrets and its existing metadata registry; it becomes the runtime row during
144
- explicit setup. Startup never silently applies migrations.
150
+ retaining DataSource UIDs. Hosted has no pre-catalog registration: the
151
+ deployment's migration Job registers the declared runtime, and other hosted
152
+ sources are registered in its catalog. Startup never silently applies migrations.
145
153
 
146
154
  `metatables credentials` provides admin-only local operations:
147
155
 
@@ -80,6 +80,10 @@ dropped tables. Revision files already applied remain immutable.
80
80
 
81
81
  ## MetaTables system migrations
82
82
 
83
+ Hosted system upgrades also run as a deployment prerequisite Job
84
+ ([ADR 0014](0014-main-sequence-release-jobs-and-production-migrations.md)). Application providers keep their own histories and are not
85
+ part of that Job.
86
+
83
87
  The API continues to own `metatables.api.backend.migrations`, `metatables_catalog_version`
84
88
  and the explicit admin bootstrap/upgrade operation in Settings. Application
85
89
  migration commands do not invoke that operation. Applications must keep their
@@ -0,0 +1,98 @@
1
+ # ADR 0014: System migrations in the deployment workflow
2
+
3
+ Date: 2026-10-02
4
+
5
+ Status: Accepted. Implemented on `development`; hosted verification pending.
6
+ Amended 2026-10-03 ([MetaTables #13](https://github.com/mainsequence-projects/MetaTables/issues/13)): the Job reads the declared runtime database itself
7
+ and initializes it on the first deployment.
8
+
9
+ Owners: MetaTables API. Main Sequence owns Job execution, images, deployment and
10
+ platform authentication.
11
+
12
+ Related: [ADR 0001: Runtime storage and bootstrap](0001-unified-api-storage-and-local-sqlite.md),
13
+ [ADR 0008: Database workflows and recovery](0008-mysql-mssql-table-workflows.md) and
14
+ [ADR 0013: Application-owned migrations](0013-application-owned-migrations.md).
15
+
16
+ ## Context
17
+
18
+ Main Sequence deploys the hosted API from `.mainsequence/workflows/metatables-api.yaml`.
19
+ Settings runs system migrations inside the running API, and that API can only
20
+ apply the revisions it ships. A release's new revisions must be applied before
21
+ its API serves.
22
+
23
+ ## Decision
24
+
25
+ ### The Job prepares the declared database (amended 2026-10-03)
26
+
27
+ The Job no longer reads the running API. `metatables runtime upgrade` loads
28
+ `runtime_database` from the candidate image's `configuration.yaml` and the
29
+ Environment Secret it names ([ADR 0001](0001-unified-api-storage-and-local-sqlite.md)).
30
+ Every run executes the same steps:
31
+
32
+ 1. Check that the login can secure the database (ADR 0007 prerequisites).
33
+ 2. Apply the system migrations.
34
+ 3. Register the runtime DataSource, or update its connection to the declaration.
35
+ 4. Reapply access setup. Per-User role passwords derive from the login password,
36
+ so a rotated password reaches them on the next deployment.
37
+
38
+ The first deployment therefore initializes the database. A missing declaration
39
+ or Secret, an unreachable database or unmet prerequisites fail the Job and block
40
+ the rollout. The deployment workflow is the authority, so no admin caller is
41
+ required. A new runtime DataSource records the Job's SDK user as its creator.
42
+ The Job prints `initialized`, `upgraded` or `up_to_date` with the revisions.
43
+
44
+ Settings' **Run MetaTables migrations** and `metatables runtime initialize` remain
45
+ for Local mode only. The original decision follows. The amendment supersedes
46
+ steps 1–2, the skip rules and the Settings initialization paragraph.
47
+
48
+ ### Original decision (2026-10-02)
49
+
50
+ The deployment workflow upgrades the runtime from the candidate image before the
51
+ rollout:
52
+
53
+ ```text
54
+ candidate image -> migrate-system Job -> API deployment
55
+ ```
56
+
57
+ A failed upgrade blocks the rollout.
58
+
59
+ The Job, `jobs/migrate_system.py`, runs `metatables runtime upgrade`:
60
+
61
+ 1. Find the Environment's MetaTables API the same way the client does.
62
+ 2. Read `GET /runtime-context/` as an organization admin. For admins,
63
+ `bootstrap.candidate` is the Settings DataSource's public configuration with
64
+ its Secret references; the Secrets are resolved through the SDK.
65
+ 3. Apply this package's system migrations through the shared bootstrap operation:
66
+ backend lock, progress recovery, runtime registration, access setup and
67
+ verification. A runtime already at the current revision is left untouched.
68
+
69
+ The command acts only on an active runtime. With no API deployment or no active
70
+ runtime yet, it succeeds without DDL. The Environment's DataSource is set
71
+ through the deployed API, so if it is set the command migrates when necessary;
72
+ if it is not, it skips migrations and the API deploys. An API release that the
73
+ workflow created but has never deployed counts as no API deployment, so the
74
+ first run deploys the API. A non-admin identity or an unreadable
75
+ context fails before DDL. When it registers the runtime DataSource, it records
76
+ the Job identity's user UID as the creator.
77
+
78
+ Settings' **Run MetaTables migrations** and `metatables runtime initialize` keep
79
+ initializing a newly selected DataSource: the API serving them is the deployed
80
+ revision and runs its own migrations, so there is no version skew. API startup
81
+ stays inspection-only.
82
+
83
+ Both targets declare `automatic_redeployment` with `tag_regex: null`, so every
84
+ eligible commit runs the graph. Package publication stays in GitHub Actions.
85
+
86
+ The upgrade owns only `metatables.api.backend.migrations` and
87
+ `metatables_catalog_version`. Application providers keep their own histories
88
+ under ADR 0013.
89
+
90
+ ## Consequences
91
+
92
+ - The previous API keeps serving during the upgrade, so each schema change must
93
+ stay compatible with the previous release. Coordination with its writes is not
94
+ defined yet.
95
+ - An upgrade followed by a failed deployment leaves the database upgraded. There
96
+ is no automatic downgrade.
97
+ - The workflow runs only when the platform receives the branch's commit.
98
+ Verification in a hosted Environment is pending.