mainsequence-metatable 0.1.8.dev17__tar.gz → 0.1.9__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.8.dev17 → mainsequence_metatable-0.1.9}/.agents/skills/client/metatables-local-development/SKILL.md +21 -9
  2. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/.agents/skills/client/metatables-meta-tables/SKILL.md +9 -2
  3. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/.agents/skills/client/metatables-migrations/SKILL.md +41 -10
  4. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +3 -0
  5. {mainsequence_metatable-0.1.8.dev17/src/mainsequence_metatable.egg-info → mainsequence_metatable-0.1.9}/PKG-INFO +1 -1
  6. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +76 -4
  7. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0009-shared-credential-store.md +15 -7
  8. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +27 -0
  9. mainsequence_metatable-0.1.9/docs/adr/api/0015-timescale-compression-and-retention-policies.md +192 -0
  10. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/index.md +3 -2
  11. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/api/data-sources.md +28 -23
  12. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/api/openapi.json +764 -135
  13. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/api/overview.md +12 -5
  14. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/api/reference.md +3 -1
  15. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/api/tables-and-migrations.md +2 -1
  16. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/api/time-index-and-updates.md +34 -0
  17. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/client/define-and-migrate-tables.md +5 -0
  18. mainsequence_metatable-0.1.9/docs/client/deploy-application-migrations.md +103 -0
  19. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/client/local-storage.md +1 -1
  20. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/client/query-and-mutate.md +2 -1
  21. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/client/tutorial.md +2 -1
  22. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/concepts/architecture.md +18 -13
  23. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/concepts/data-sources.md +17 -17
  24. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/concepts/identity-and-scope.md +4 -3
  25. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/contributing/database-backends.md +2 -2
  26. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/README.md +4 -3
  27. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/index.md +4 -3
  28. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/operations/catalog-migrations.md +46 -36
  29. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/operations/configuration.md +13 -8
  30. mainsequence_metatable-0.1.9/docs/operations/hosted-runtime.md +189 -0
  31. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/operations/local-runtime.md +19 -17
  32. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/operations/run-history.md +4 -3
  33. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/operations/run-logs.md +2 -2
  34. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/reference/capabilities.md +4 -2
  35. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/reference/cli.md +2 -2
  36. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/security/index.md +11 -7
  37. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/security/permissions.md +1 -1
  38. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/mkdocs.yml +2 -0
  39. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/pyproject.toml +1 -1
  40. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9/src/mainsequence_metatable.egg-info}/PKG-INFO +1 -1
  41. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/mainsequence_metatable.egg-info/SOURCES.txt +9 -1
  42. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/bootstrap.py +64 -111
  43. mainsequence_metatable-0.1.9/src/metatables/api/app/configuration.py +73 -0
  44. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/main.py +2 -0
  45. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/data_sources.py +13 -74
  46. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/managed_finalize.py +20 -4
  47. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/migration_connection.py +1 -1
  48. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/runtime_context.py +2 -1
  49. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_registration.py +6 -4
  50. mainsequence_metatable-0.1.9/src/metatables/api/app/routes/timescale_policies.py +295 -0
  51. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/runtime.py +5 -2
  52. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/runtime_control.py +26 -5
  53. mainsequence_metatable-0.1.9/src/metatables/api/app/runtime_database.py +121 -0
  54. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -11
  55. mainsequence_metatable-0.1.9/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +273 -0
  56. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/postgresql_access.py +8 -1
  57. mainsequence_metatable-0.1.9/src/metatables/api/backend/backends/timescale.py +379 -0
  58. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/contracts/storage_layouts.py +0 -6
  59. mainsequence_metatable-0.1.9/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +42 -0
  60. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/operations/register_catalog.py +0 -4
  61. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/models.py +1 -2
  62. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/physical_operations.py +2 -2
  63. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/table_response.py +5 -1
  64. mainsequence_metatable-0.1.9/src/metatables/api/metatables/configuration.yaml +12 -0
  65. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/cli/app.py +7 -22
  66. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/endpoint.py +2 -4
  67. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/README.md +4 -3
  68. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/__init__.py +0 -3
  69. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/models.py +51 -6
  70. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/runtime_contract.py +3 -1
  71. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/auth/test_data_source_identity.py +16 -40
  72. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/auth/test_runtime_bootstrap.py +10 -10
  73. mainsequence_metatable-0.1.9/tests/auth/test_runtime_database.py +123 -0
  74. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/auth/test_runtime_scaffold.py +11 -25
  75. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/auth/test_runtime_selection.py +68 -41
  76. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/catalog/test_migration.py +2 -2
  77. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/contracts/capabilities.json +38 -6
  78. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/contracts/database_operations.json +0 -9
  79. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/test_catalog_contract.py +1 -1
  80. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/test_runtime_bootstrap.py +69 -48
  81. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_operations/test_runtime_and_temporal.py +9 -9
  82. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_api_endpoint.py +1 -14
  83. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_data_source_registry.py +2 -9
  84. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_runtime_transition.py +36 -18
  85. mainsequence_metatable-0.1.9/tests/e2e/test_runtime_upgrade.py +71 -0
  86. mainsequence_metatable-0.1.9/tests/e2e/test_timescale_policies_client_api.py +214 -0
  87. mainsequence_metatable-0.1.9/tests/operations/test_timescale_policies.py +104 -0
  88. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/uv.lock +1 -1
  89. mainsequence_metatable-0.1.8.dev17/docs/operations/hosted-runtime.md +0 -113
  90. mainsequence_metatable-0.1.8.dev17/src/metatables/api/app/configuration.py +0 -36
  91. mainsequence_metatable-0.1.8.dev17/src/metatables/api/app/source_registrations.py +0 -219
  92. mainsequence_metatable-0.1.8.dev17/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -657
  93. mainsequence_metatable-0.1.8.dev17/src/metatables/api/metatables/configuration.yaml +0 -1
  94. mainsequence_metatable-0.1.8.dev17/tests/e2e/test_runtime_upgrade.py +0 -55
  95. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
  96. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/.mainsequence/workflows/metatables-api.yaml +0 -0
  97. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/LICENSE +0 -0
  98. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/MANIFEST.in +0 -0
  99. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/README.md +0 -0
  100. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/alembic.ini +0 -0
  101. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/api/metatables/main.py +0 -0
  102. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/compose.database-tests.yml +0 -0
  103. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0002-application-administration-and-table-ownership.md +0 -0
  104. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0004-approved-application-migrations.md +0 -0
  105. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
  106. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0006-historical-run-graphs.md +0 -0
  107. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0007-database-enforced-table-access.md +0 -0
  108. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
  109. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
  110. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0008-mysql-mssql-table-workflows.md +0 -0
  111. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
  112. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
  113. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/api/0013-application-owned-migrations.md +0 -0
  114. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
  115. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
  116. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/api/authentication-and-errors.md +0 -0
  117. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/assets/branding/metatables.svg +0 -0
  118. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/assets/diagrams/local-client-experience.svg +0 -0
  119. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/client/bounded-transfers.md +0 -0
  120. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/client/build-an-updater.md +0 -0
  121. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/client/installation-and-connection.md +0 -0
  122. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/client/quickstart.md +0 -0
  123. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/client/read-existing-time-index-tables.md +0 -0
  124. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/client/register-existing-tables.md +0 -0
  125. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/client/upgrade-legacy-app.md +0 -0
  126. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/concepts/permissions-namespaces-labels.md +0 -0
  127. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/concepts/runs-and-execution-graphs.md +0 -0
  128. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
  129. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/concepts/time-index-tables-and-updates.md +0 -0
  130. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/contributing/architecture-and-boundaries.md +0 -0
  131. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/contributing/documentation.md +0 -0
  132. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/contributing/releasing.md +0 -0
  133. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/contributing/testing.md +0 -0
  134. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/README.md +0 -0
  135. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/__init__.py +0 -0
  136. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/bounded_reader.py +0 -0
  137. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/data_sources/README.md +0 -0
  138. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/data_sources/mssql.json +0 -0
  139. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/data_sources/mysql.json +0 -0
  140. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/data_sources/postgresql.json +0 -0
  141. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/data_sources/register.py +0 -0
  142. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/external_table.py +0 -0
  143. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/local_app/README.md +0 -0
  144. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/local_app/__init__.py +0 -0
  145. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/local_app/__main__.py +0 -0
  146. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/local_app/migrations/__init__.py +0 -0
  147. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/local_app/migrations/env.py +0 -0
  148. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/local_app/migrations/script.py.mako +0 -0
  149. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  150. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/local_app/tables.py +0 -0
  151. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/query.py +0 -0
  152. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/quickstart.py +0 -0
  153. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/reader.py +0 -0
  154. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/scripts/__init__.py +0 -0
  155. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/scripts/setup_metatables.py +0 -0
  156. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tables.py +0 -0
  157. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/__init__.py +0 -0
  158. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/__main__.py +0 -0
  159. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/data/README.md +0 -0
  160. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  161. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/frames.py +0 -0
  162. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/migrations/__init__.py +0 -0
  163. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/migrations/env.py +0 -0
  164. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/migrations/registry.py +0 -0
  165. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/migrations/script.py.mako +0 -0
  166. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
  167. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  168. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  169. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  170. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/operations.py +0 -0
  171. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/tables.py +0 -0
  172. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/tutorial/updaters.py +0 -0
  173. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/examples/updater.py +0 -0
  174. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/operations/recovery-and-observability.md +0 -0
  175. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/reference/python.md +0 -0
  176. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/docs/security/ownership-and-sharing.md +0 -0
  177. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/scripts/__init__.py +0 -0
  178. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/scripts/build_reference.py +0 -0
  179. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/scripts/check_boundaries.py +0 -0
  180. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/scripts/check_client_api_coverage.py +0 -0
  181. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/scripts/check_distribution_sources.py +0 -0
  182. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/scripts/check_docs.py +0 -0
  183. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/scripts/check_examples_debug.py +0 -0
  184. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/scripts/check_project.py +0 -0
  185. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/scripts/dev_release_version.py +0 -0
  186. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/scripts/test_databases.py +0 -0
  187. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/scripts/test_postgresql.py +0 -0
  188. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/setup.cfg +0 -0
  189. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
  190. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
  191. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/mainsequence_metatable.egg-info/requires.txt +0 -0
  192. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
  193. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/__init__.py +0 -0
  194. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/_admin_source.json +0 -0
  195. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/_build.py +0 -0
  196. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/_skill_bundle.py +0 -0
  197. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/__init__.py +0 -0
  198. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/__init__.py +0 -0
  199. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/auth/__init__.py +0 -0
  200. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/auth/boundary.py +0 -0
  201. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/auth/caller_assertions.py +0 -0
  202. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/auth/local_actor.py +0 -0
  203. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/credential_admin.py +0 -0
  204. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/development.py +0 -0
  205. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/development_client.py +0 -0
  206. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/platform_cache.py +0 -0
  207. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/__init__.py +0 -0
  208. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/column_search.py +0 -0
  209. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/contract_validation.py +0 -0
  210. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/namespaces.py +0 -0
  211. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/run_logs.py +0 -0
  212. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/schema_graph.py +0 -0
  213. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/security.py +0 -0
  214. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_cascade.py +0 -0
  215. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_crud.py +0 -0
  216. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_delete.py +0 -0
  217. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_filter.py +0 -0
  218. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_import.py +0 -0
  219. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_introspection.py +0 -0
  220. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_patch.py +0 -0
  221. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_response.py +0 -0
  222. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_search_document.py +0 -0
  223. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_sql.py +0 -0
  224. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
  225. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/time_index_delete.py +0 -0
  226. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/time_index_reads.py +0 -0
  227. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/time_index_stats.py +0 -0
  228. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/update_batch.py +0 -0
  229. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
  230. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/update_constants.py +0 -0
  231. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/update_crud.py +0 -0
  232. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/update_details.py +0 -0
  233. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/update_graph.py +0 -0
  234. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
  235. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/update_registration.py +0 -0
  236. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/update_runs.py +0 -0
  237. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/routes/update_statistics.py +0 -0
  238. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/source_passwords.py +0 -0
  239. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/app/transfer.py +0 -0
  240. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/__init__.py +0 -0
  241. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/__init__.py +0 -0
  242. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/access.py +0 -0
  243. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
  244. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
  245. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
  246. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
  247. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
  248. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
  249. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -0
  250. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
  251. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
  252. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
  253. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
  254. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
  255. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
  256. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
  257. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
  258. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
  259. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +0 -0
  260. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
  261. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/adapters/table_cursor.py +0 -0
  262. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/catalog.py +0 -0
  263. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
  264. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/catalog_types.py +0 -0
  265. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/contracts.py +0 -0
  266. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/hosted.py +0 -0
  267. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/hosted_access.py +0 -0
  268. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/migration_connection.py +0 -0
  269. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/native.py +0 -0
  270. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/operations.py +0 -0
  271. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/pages.py +0 -0
  272. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/registry.py +0 -0
  273. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/relation_tables.py +0 -0
  274. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/relational.py +0 -0
  275. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/restricted_sql.py +0 -0
  276. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
  277. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/backends/streaming.py +0 -0
  278. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/contracts/__init__.py +0 -0
  279. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/contracts/relation_import.py +0 -0
  280. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
  281. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/contracts/values.py +0 -0
  282. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/domain/__init__.py +0 -0
  283. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
  284. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
  285. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/domain/index_statistics.py +0 -0
  286. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/domain/label_rules.py +0 -0
  287. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/domain/permission_rules.py +0 -0
  288. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/domain/update_constants.py +0 -0
  289. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/__init__.py +0 -0
  290. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
  291. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
  292. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/credential_store.py +0 -0
  293. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
  294. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
  295. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
  296. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/platform_principals.py +0 -0
  297. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/run_logs.py +0 -0
  298. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
  299. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
  300. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/integrations/source_validation.py +0 -0
  301. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/__init__.py +0 -0
  302. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/env.py +0 -0
  303. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/script.py.mako +0 -0
  304. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
  305. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
  306. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
  307. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
  308. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
  309. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
  310. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
  311. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
  312. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
  313. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/operations/__init__.py +0 -0
  314. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
  315. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
  316. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/operations/create_table.py +0 -0
  317. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
  318. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/operations/import_relations.py +0 -0
  319. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/operations/introspect_table.py +0 -0
  320. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/operations/read_time_index.py +0 -0
  321. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/operations/search_documents.py +0 -0
  322. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/__init__.py +0 -0
  323. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/cascade.py +0 -0
  324. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/catalog.py +0 -0
  325. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/database.py +0 -0
  326. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/grants.py +0 -0
  327. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/labels.py +0 -0
  328. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/locking.py +0 -0
  329. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/projections.py +0 -0
  330. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
  331. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
  332. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
  333. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
  334. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/table_queries.py +0 -0
  335. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/update_graph.py +0 -0
  336. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
  337. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/updates.py +0 -0
  338. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
  339. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
  340. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/metatables/__init__.py +0 -0
  341. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/api/metatables/main.py +0 -0
  342. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/cli/__init__.py +0 -0
  343. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/cli/admin_install.py +0 -0
  344. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/cli/filters.py +0 -0
  345. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/cli/local.py +0 -0
  346. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/cli/migrations.py +0 -0
  347. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/cli/project.py +0 -0
  348. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/cli/skills.py +0 -0
  349. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/compiled_sql/__init__.py +0 -0
  350. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/compiled_sql/mssql.py +0 -0
  351. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/compiled_sql/v1.py +0 -0
  352. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/dtype_codec.py +0 -0
  353. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/README.md +0 -0
  354. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/__init__.py +0 -0
  355. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/bounded_reader.py +0 -0
  356. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/data_sources/README.md +0 -0
  357. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/data_sources/mssql.json +0 -0
  358. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/data_sources/mysql.json +0 -0
  359. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/data_sources/postgresql.json +0 -0
  360. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/data_sources/register.py +0 -0
  361. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/external_table.py +0 -0
  362. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/local_app/README.md +0 -0
  363. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/local_app/__init__.py +0 -0
  364. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/local_app/__main__.py +0 -0
  365. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
  366. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/local_app/migrations/env.py +0 -0
  367. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
  368. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  369. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/local_app/tables.py +0 -0
  370. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/query.py +0 -0
  371. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/quickstart.py +0 -0
  372. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/reader.py +0 -0
  373. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/scripts/__init__.py +0 -0
  374. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/scripts/setup_metatables.py +0 -0
  375. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tables.py +0 -0
  376. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/__init__.py +0 -0
  377. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/__main__.py +0 -0
  378. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/data/README.md +0 -0
  379. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  380. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/frames.py +0 -0
  381. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
  382. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/migrations/env.py +0 -0
  383. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
  384. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
  385. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
  386. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  387. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  388. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  389. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/operations.py +0 -0
  390. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/tables.py +0 -0
  391. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/tutorial/updaters.py +0 -0
  392. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/examples/updater.py +0 -0
  393. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/future_registry.py +0 -0
  394. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/hashing.py +0 -0
  395. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/instrumentation.py +0 -0
  396. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/local_connection.py +0 -0
  397. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/local_files.py +0 -0
  398. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/local_run_logs.py +0 -0
  399. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/log_contract.py +0 -0
  400. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/alembic.py +0 -0
  401. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/connection.py +0 -0
  402. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/env.py +0 -0
  403. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/provider.py +0 -0
  404. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/registry.py +0 -0
  405. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/runner.py +0 -0
  406. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/scaffold.py +0 -0
  407. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/templates/__init__.py +0 -0
  408. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/templates/env.py.mako +0 -0
  409. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/templates/script.py.mako +0 -0
  410. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/migrations/tls.py +0 -0
  411. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/pydantic_metadata.py +0 -0
  412. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/run_logging.py +0 -0
  413. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/runtime.py +0 -0
  414. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/runtime_context.py +0 -0
  415. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/schema_names.py +0 -0
  416. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/sdk_compat.py +0 -0
  417. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/sqlalchemy_contracts.py +0 -0
  418. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/time_index_table_refs.py +0 -0
  419. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/transfer.py +0 -0
  420. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/transfer_contract.py +0 -0
  421. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/transport.py +0 -0
  422. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/update_configuration_contract.py +0 -0
  423. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/updaters/__init__.py +0 -0
  424. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/updaters/configuration.py +0 -0
  425. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/updaters/dependencies.py +0 -0
  426. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/updaters/managers.py +0 -0
  427. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/updaters/namespacing.py +0 -0
  428. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/updaters/runner.py +0 -0
  429. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/updaters/updaters.py +0 -0
  430. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/updaters/utils.py +0 -0
  431. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/src/metatables/upload.py +0 -0
  432. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/auth/test_caller_assertions.py +0 -0
  433. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/auth/test_development_client.py +0 -0
  434. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/auth/test_hosted_environment_target.py +0 -0
  435. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/auth/test_local_mode.py +0 -0
  436. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/auth/test_platform_fact_cache.py +0 -0
  437. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/auth/test_runtime_storage_binding.py +0 -0
  438. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/auth/test_source_passwords.py +0 -0
  439. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/catalog/test_catalog_foundation.py +0 -0
  440. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/catalog/test_contract_projection.py +0 -0
  441. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/catalog/test_database_config.py +0 -0
  442. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/catalog/test_index_statistics.py +0 -0
  443. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/conftest.py +0 -0
  444. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/contracts/client_signatures.json +0 -0
  445. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/contracts/test_bounded_transfer.py +0 -0
  446. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/contracts/test_compiler_runtime_source.py +0 -0
  447. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/contracts/test_relation_batching.py +0 -0
  448. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/contracts/test_relation_import.py +0 -0
  449. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/contracts/test_storage_layouts.py +0 -0
  450. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/contracts/test_table_contracts.py +0 -0
  451. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/Dockerfile +0 -0
  452. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/Dockerfile.dockerignore +0 -0
  453. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/__init__.py +0 -0
  454. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/conftest.py +0 -0
  455. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/provider/__init__.py +0 -0
  456. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/provider/env.py +0 -0
  457. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
  458. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/test_api_contract.py +0 -0
  459. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/test_application_migration.py +0 -0
  460. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/test_bootstrap_recovery.py +0 -0
  461. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/test_credential_catalog.py +0 -0
  462. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/test_physical_contract.py +0 -0
  463. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/test_relation_import.py +0 -0
  464. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/test_sql_security.py +0 -0
  465. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_backend/test_update_client.py +0 -0
  466. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_operations/test_physical_operations.py +0 -0
  467. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/database_operations/test_postgresql_operations.py +0 -0
  468. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/documentation/test_project_checks.py +0 -0
  469. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_admin_installation.py +0 -0
  470. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_application_owned_migrations.py +0 -0
  471. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_catalog_outage.py +0 -0
  472. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_client_api_contract.py +0 -0
  473. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_client_api_coverage.py +0 -0
  474. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_client_migration_scaffold.py +0 -0
  475. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_client_migration_tls.py +0 -0
  476. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_client_package.py +0 -0
  477. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_client_signatures.py +0 -0
  478. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_client_value_behaviors.py +0 -0
  479. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_local_actor_client_api.py +0 -0
  480. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_local_cli_workflow.py +0 -0
  481. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_local_client_selection.py +0 -0
  482. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_managed_finalize_client_api.py +0 -0
  483. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_namespaces_admin_http.py +0 -0
  484. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_public_imports.py +0 -0
  485. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_remaining_client_routes.py +0 -0
  486. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_run_graphs.py +0 -0
  487. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_run_logs.py +0 -0
  488. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_sdk_local_startup.py +0 -0
  489. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_sqlite_runtime.py +0 -0
  490. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_table_delete_client_api.py +0 -0
  491. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_table_filter_client_api.py +0 -0
  492. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_table_introspection_client_api.py +0 -0
  493. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_table_patch_client_api.py +0 -0
  494. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_table_search_document_api.py +0 -0
  495. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_table_stats_api.py +0 -0
  496. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_table_update_pipeline.py +0 -0
  497. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_table_updates_http.py +0 -0
  498. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_time_index_delete_client_api.py +0 -0
  499. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_time_index_reads_client_api.py +0 -0
  500. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_update_batch_client_api.py +0 -0
  501. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
  502. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
  503. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
  504. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/e2e/test_update_registration_client_api.py +0 -0
  505. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/examples/test_documented_examples.py +0 -0
  506. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/examples/test_postgresql_examples.py +0 -0
  507. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/examples/test_setup_launch.py +0 -0
  508. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/examples/test_tutorial.py +0 -0
  509. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/integrations/test_credential_store.py +0 -0
  510. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/integrations/test_data_source_rules.py +0 -0
  511. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/integrations/test_local_data_sources.py +0 -0
  512. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/integrations/test_local_run_logs.py +0 -0
  513. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/integrations/test_postgresql_connection.py +0 -0
  514. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/integrations/test_postgresql_sql.py +0 -0
  515. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/integrations/test_postgresql_tables.py +0 -0
  516. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
  517. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/integrations/test_source_validation.py +0 -0
  518. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/integrations/test_sqlite_operations.py +0 -0
  519. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/labels/test_labels.py +0 -0
  520. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/operations/test_create_table_operation.py +0 -0
  521. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/operations/test_create_table_postgres.py +0 -0
  522. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/operations/test_physical_operation_journal.py +0 -0
  523. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/operations/test_register_catalog.py +0 -0
  524. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/operations/test_search_documents.py +0 -0
  525. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/packaging/test_client_skills.py +0 -0
  526. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/packaging/test_dev_release_version.py +0 -0
  527. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/packaging/test_distribution_sources.py +0 -0
  528. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/packaging/test_editable_build.py +0 -0
  529. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/packaging/test_installed_distribution.py +0 -0
  530. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/permissions/test_governed_sql_scope.py +0 -0
  531. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/permissions/test_local_actor_membership.py +0 -0
  532. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/permissions/test_migration_boundary.py +0 -0
  533. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/permissions/test_namespace_grants.py +0 -0
  534. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/permissions/test_security_api.py +0 -0
  535. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/permissions/test_table_body_filter.py +0 -0
  536. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/permissions/test_table_grants.py +0 -0
  537. {mainsequence_metatable-0.1.8.dev17 → mainsequence_metatable-0.1.9}/tests/permissions/test_table_queries.py +0 -0
@@ -72,6 +72,8 @@ Do not retry against automatic hosted discovery when a local connection fails.
72
72
  Substitute the application's own module. Provider code and revisions are
73
73
  installed in the application process; the API requires no provider approval
74
74
  or installation. System initialization and application histories remain separate.
75
+ Running the provider yourself is for the local runtime only; hosted runtimes
76
+ receive the same revisions from the deployment workflow's migration Job.
75
77
  5. Build application contracts/queries with the
76
78
  [table skill](../metatables-meta-tables/SKILL.md), or producers/readers with the
77
79
  [updater skill](../metatables-time-index-table-updates/SKILL.md). Use small,
@@ -134,26 +136,36 @@ integration-test fixture.
134
136
  ## Finish verification and switch back
135
137
 
136
138
  Record what passed, the runtime/DataSource used, and any engine-specific work still
137
- unverified. Carry forward the reviewed application code and migration revisions;
139
+ unverified. Commit the reviewed application code and its migration revisions together;
138
140
  local rows, catalog UIDs, credentials and fixture data are not promoted by a switch.
141
+ The application's deployment workflow applies those revisions to the hosted runtime
142
+ before the code rolls out; see the [migrations skill](../metatables-migrations/SKILL.md)
143
+ and `docs/client/deploy-application-migrations.md`. Add the migration Job if the
144
+ workflow lacks one.
139
145
 
140
146
  When returning to the environment is part of the requested workflow:
141
147
 
142
148
  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.
149
+ inspect the displayed hosted environment and use **Switch to Hosted**. Hosted
150
+ opens the runtime database the API's deployment declares, through the same
151
+ Environment Secret; there is no DataSource to choose and the launcher never
152
+ migrates it. This changes the API worker and database; it does not copy or merge
153
+ the local database. Leave local capability enabled if the developer needs to
154
+ switch back later.
147
155
  2. Re-read runtime status and verify `local_mode: false`, the intended verified
148
- hosted environment, the expected DataSource and readiness. The same local
156
+ hosted environment, the expected DataSource and readiness. `migration_required`
157
+ means the branch has system migrations the deployed API does not have yet; it
158
+ clears once that code is deployed. The same local
149
159
  connection command still reaches this supervised API; its `--local` flag alone
150
160
  does not prove SQLite. If the switch fails and the old worker is restored,
151
161
  report the actual mode instead of claiming the switch succeeded.
152
162
  3. Restart application/test client processes and resolve catalog bindings again.
153
163
  Do not reuse local table UIDs or already-bound updater instances against the
154
- environment database. Apply reviewed revisions or perform environment writes
155
- only within the user's requested scope; passing local tests is not itself a
156
- request to seed fixtures, run backfills or migrate that database.
164
+ environment database. Do not apply application revisions from this session;
165
+ the deployment's migration Job does. `migrations current` can confirm the
166
+ deployed revision. Perform other environment writes only within the user's
167
+ requested scope; passing local tests is not itself a request to seed fixtures
168
+ or run backfills.
157
169
 
158
170
  If the user instead wants to connect to a separately deployed API, follow the
159
171
  installation guide's hosted endpoint selection. Restore prior connection settings
@@ -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 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."
3
+ description: "Create and evolve managed application tables through Alembic migration providers with the installed MetaTables Python client. Covers provider scope and placement, scaffolding, revision authoring, local execution, the deployment-workflow migration Job for hosted runtimes, and reservation or finalization failures. Excludes API catalog migrations, client-library implementation, API/server changes and repository tooling."
4
4
  ---
5
5
 
6
6
  # MetaTables client application migrations
@@ -34,9 +34,38 @@ 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.
41
+
42
+ ## Recommended workflow
43
+
44
+ Follow this sequence, which mirrors how the MetaTables API deploys its own system
45
+ migrations. Read `docs/client/deploy-application-migrations.md`.
46
+
47
+ 1. **Develop locally.** Author the revision and apply it to verified local SQLite
48
+ with the [local development skill](../metatables-local-development/SKILL.md).
49
+ 2. **Commit the revision with the code that needs it.**
50
+ 3. **Deploy.** The application's `.mainsequence/workflows/` file declares a
51
+ migration Job that calls `upgrade_application` for each provider, in
52
+ dependency order, from the candidate image. Every deployed resource that reads
53
+ or writes the tables (FastAPI, `harness_agent` and others) has a deploy step
54
+ with `needs: [migrate]`. A failed migration blocks the rollout.
55
+
56
+ Rules:
57
+
58
+ - Hosted runtimes are migrated only by that Job. Do not run `migrations upgrade`
59
+ or `downgrade` against a hosted API from a developer or agent session. If the
60
+ user explicitly requests it, do it once and recommend adding the Job.
61
+ - When the application has no migration Job yet, add one alongside its first
62
+ managed table or its MetaTables upgrade.
63
+ - Do not migrate at application startup: several pods would race, and a failure
64
+ would not stop the rollout.
65
+ - Keep each revision usable by the release currently deployed, which keeps serving
66
+ during and after a failed rollout. Add first; drop or rename in a later release.
67
+ - Redeploying an older image does not roll back the schema. Downgrade is never a
68
+ deployment step.
40
69
 
41
70
  ## Source and runtime context
42
71
 
@@ -112,7 +141,8 @@ the wrong revisions.
112
141
 
113
142
  ## Execute with the environment connection
114
143
 
115
- After verifying the intended runtime, use the application's provider reference:
144
+ During development, after verifying the local runtime, use the application's
145
+ provider reference:
116
146
 
117
147
  ```bash
118
148
  metatables --local migrations upgrade --provider ledger.migrations:migration
@@ -131,9 +161,9 @@ API Writer checks govern connection admission and provider catalog operations.
131
161
  The client reserves catalog entries, runs Alembic, closes its physical connection,
132
162
  and finalizes contracts through the API. Treat connection material as private.
133
163
 
134
- Use the application's setup entry point when available. Python code can call
135
- `metatables.upgrade_application("ledger.migrations:migration")`;
136
- `src/metatables/examples/scripts/setup_metatables.py` shows the pattern. Remove the retired
164
+ Python code can call `metatables.upgrade_application("ledger.migrations:migration")`;
165
+ `src/metatables/examples/scripts/setup_metatables.py` shows the pattern, and the
166
+ deployment migration Job uses the same call. Remove the retired
137
167
  `application_migration_providers` setting and use Python references instead of aliases.
138
168
  Application migration histories remain separate from API system migrations.
139
169
 
@@ -180,5 +210,6 @@ Read `docs/operations/recovery-and-observability.md`.
180
210
  ## Validation
181
211
 
182
212
  Verify provider scope and placement, revision content, the selected environment
183
- connection, repeat execution, and final active bindings. Report separately what was checked
184
- offline and what was exercised against a configured API.
213
+ connection, repeat execution, and final active bindings. Check that the deployment
214
+ workflow runs the migration Job before every resource that uses the tables. Report
215
+ separately what was checked offline and what was exercised against a configured API.
@@ -96,6 +96,9 @@ Use the [application migrations skill](../metatables-migrations/SKILL.md),
96
96
  `docs/client/define-and-migrate-tables.md`, and
97
97
  `docs/adr/api/0013-application-owned-migrations.md` for that workflow. Ordinary
98
98
  SQL continues through the governed API, independently of the migration connection.
99
+ If the application's deployment workflow does not yet run its providers in a
100
+ migration Job before its API and agents roll out, add one as
101
+ `docs/client/deploy-application-migrations.md` describes.
99
102
 
100
103
  ## Verify the upgrade
101
104
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence-metatable
3
- Version: 0.1.8.dev17
3
+ Version: 0.1.9
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
@@ -30,6 +30,8 @@ Amended 2026-09-29: one enforced runtime binding and explicit bootstrap select o
30
30
  database for system and user tables.
31
31
  Amended 2026-10-02: each runtime mode lists and selects only its own DataSources,
32
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.
33
35
 
34
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).
35
37
  The SDK prerequisite is implemented on `metatables_removal`; the current local
@@ -83,8 +85,67 @@ API requirement. The guides and examples describe the implemented shared path.
83
85
 
84
86
  ## Decision
85
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
+
86
144
  ### Each runtime mode selects only its own DataSources (amended 2026-10-02)
87
145
 
146
+ Hosted rows are superseded by the 2026-10-03 amendment above: Hosted has no
147
+ registry before activation and no selection.
148
+
88
149
  Implemented 2026-10-02 in the API and Admin; the PostgreSQL runtime-transition test
89
150
  was updated but not run.
90
151
 
@@ -160,6 +221,9 @@ binding, automatic local catalog upgrades, and the requirement that switching to
160
221
  Hosted already have a migrated catalog. It corrects this ADR's runtime lifecycle;
161
222
  it does not introduce a second execution architecture.
162
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
+
163
227
  Settings selects the runtime mode and its DataSource. That database contains both
164
228
  MetaTables' system tables and user tables. Local selects one persistent SQLite
165
229
  file; Hosted selects PostgreSQL/TimescaleDB. MySQL and MSSQL remain connection-only
@@ -274,10 +338,18 @@ The supervisor passes mode and transport parameters explicitly to the child;
274
338
  `METATABLES_LOCAL_RUNTIME` has no authority. Database credentials remain private
275
339
  deployment inputs and are never stored in YAML or sent to Vite.
276
340
 
277
- The runtime descriptor reports capability, switching availability and a fresh
278
- instance identity. Admin requests carry that identity so stale requests are
279
- rejected after a restart. During transition the UI blocks work, reloads runtime
280
- 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
281
353
  instance, never an individual user's view of a shared service.
282
354
 
283
355
  ### Enforced runtime binding (amended 2026-09-29)
@@ -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
 
@@ -3,6 +3,8 @@
3
3
  Date: 2026-10-02
4
4
 
5
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.
6
8
 
7
9
  Owners: MetaTables API. Main Sequence owns Job execution, images, deployment and
8
10
  platform authentication.
@@ -20,6 +22,31 @@ its API serves.
20
22
 
21
23
  ## Decision
22
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
+
23
50
  The deployment workflow upgrades the runtime from the candidate image before the
24
51
  rollout:
25
52
 
@@ -0,0 +1,192 @@
1
+ # ADR 0015: TimescaleDB compression and retention policies
2
+
3
+ Date: 2026-10-02
4
+
5
+ Status: Accepted.
6
+
7
+ Implementation status: Implemented on the `timescale-policies` branches of the API
8
+ and the Admin, with focused tests. TimescaleDB container verification is pending.
9
+
10
+ Owner: MetaTables API. The Admin owns the screens described here.
11
+
12
+ Related decisions: [ADR 0002: Table ownership](0002-application-administration-and-table-ownership.md),
13
+ [ADR 0007: Database-enforced access](0007-database-enforced-table-access.md) (amended
14
+ below), [ADR 0012: Safe retries](0012-bounded-data-transfer-and-safe-retries.md) and
15
+ [ADR 0013: Application-owned migrations](0013-application-owned-migrations.md).
16
+
17
+ ## Context
18
+
19
+ Time-index tables on `timescale_db` DataSources grow without bound. Users need to
20
+ compress older data and drop expired data on a schedule, without database access.
21
+
22
+ Source inspection on 2026-10-02 found:
23
+
24
+ - The Admin's Timescale Policies tab calls `GET/PATCH meta-tables/{uid}/policies`
25
+ and appears only when a table reports `capabilities.timescale_policies`. The API
26
+ provides neither, so the tab never appears.
27
+ - No current path creates hypertables. `storage_layout.partitioning.strategy`
28
+ accepts `timescale_hypertable`, but only the legacy
29
+ `create_multi_index_table_for_metadata` calls `create_hypertable`. Timescale
30
+ policies require hypertables.
31
+ - The legacy policy helpers in `adapters/maintenance/timescaledb.py` have no route
32
+ callers. They sleep between steps, remove and re-add policies in separate
33
+ commits, and some build SQL with f-strings.
34
+ - TimescaleDB creates a policy job owned by the hypertable owner and refuses to
35
+ create it when that role lacks `LOGIN`. ADR 0007 makes `mt_owner`, a `NOLOGIN`
36
+ role, the owner of every managed table.
37
+
38
+ ## Decision
39
+
40
+ ### Core model
41
+
42
+ **TimescaleDB stores the policy; MetaTables keeps no copy.** A policy is a
43
+ Timescale background job. Timescale already schedules and runs it, so MetaTables
44
+ adds no scheduler and no policy table. The API authorizes in the catalog, reads
45
+ jobs from `timescaledb_information`, and writes with Timescale's policy functions.
46
+
47
+ Policies are set only through the API and the Admin. An application that wants
48
+ its policies in code runs a Job at bootstrap that calls the client method. Table
49
+ contracts and application migrations carry no policy fields.
50
+
51
+ | Policy | User sets | MetaTables derives |
52
+ | --- | --- | --- |
53
+ | Compression | `after`; optional `schedule_interval`, `initial_start`, `timezone` | `segmentby` = identity dimensions; `orderby` = time index `DESC` |
54
+ | Retention | `after`; optional `schedule_interval`, `initial_start`, `timezone` | — |
55
+
56
+ - `after: null` removes that policy. Removing compression leaves already
57
+ compressed chunks compressed.
58
+ - If both are set, retention `after` must be longer than compression `after`.
59
+ - Each change runs in one transaction with parameterized SQL and no sleeps.
60
+ - Dropping a table removes its jobs.
61
+ - TimescaleDB 2.11 or later is required, since it accepts inserts, updates,
62
+ deletes and upserts on compressed chunks. Uploads and tail deletes therefore
63
+ need no decompression step.
64
+
65
+ ### Eligible tables
66
+
67
+ A table can have policies when:
68
+
69
+ 1. its DataSource is `timescale_db`;
70
+ 2. it is a time-index table and not `external_registered`;
71
+ 3. its physical table is a hypertable; and
72
+ 4. the installed TimescaleDB version is supported.
73
+
74
+ Conditions 1–2 are catalog facts. They set `capabilities.timescale_policies` on
75
+ the table response without opening a database connection. Conditions 3–4 are
76
+ checked live when policies are read or written. Saving additionally requires a
77
+ `read_write` DataSource. Tables on any other engine never show policies.
78
+
79
+ ### Hypertables
80
+
81
+ On a `timescale_db` DataSource, managed finalization converts each new time-index
82
+ table into a hypertable on its time index (`create_hypertable`, `if_not_exists`,
83
+ `migrate_data`). Strategy `backend_default` means hypertable there; `none` opts
84
+ out. `partitioning.strategy` is the only switch, so the duplicate
85
+ `backend_hints.timescale.partitioning` hint and `time_index_table.partition_strategy`
86
+ are removed. Chunk interval stays at Timescale's default. Every unique constraint
87
+ must include the time index; the storage layout's `uniqueness` already does.
88
+
89
+ ### Authorization and ownership
90
+
91
+ Writer on the table is the only permission check: a Writer can finalize the
92
+ hypertable and set or remove both policies. Readers can view policies and job
93
+ status. Organization admins also see every job on the DataSource.
94
+
95
+ **Amendment to ADR 0007:** on `timescale_db` DataSources, hypertables are owned
96
+ by the API's database login instead of `mt_owner`, so their policy jobs run as
97
+ that login. Access setup leaves hypertable ownership unchanged instead of handing
98
+ the tables to `mt_owner`. The API's login already owns the database and is a member of
99
+ `mt_owner`, so this grants it nothing new. Reader/Writer grants, caller SQL roles,
100
+ application migrations and other engines are unchanged. If the DataSource later
101
+ uses a different login, existing jobs keep running as the old one until the
102
+ tables are reassigned.
103
+
104
+ Each policy change is recorded in the `physical_operation` journal as
105
+ `timescale_policy`, with the requesting User. System migration
106
+ `0009_timescale_policies` adds that kind, drops `time_index_table.partition_strategy`
107
+ and removes the Timescale hint from stored layouts; existing runtimes upgrade
108
+ through Settings.
109
+
110
+ ### API
111
+
112
+ ```text
113
+ TimescalePolicy { after, schedule_interval?, initial_start?, timezone? }
114
+ TimescaleTablePolicies { compression, retention,
115
+ eligibility { eligible, reason? }, read-only
116
+ jobs [TimescaleJob], read-only
117
+ compression_stats { before_bytes, after_bytes,
118
+ compressed_chunks, total_chunks } } read-only
119
+ TimescaleJob { job_id, kind, table_uid?, hypertable, scheduled, status,
120
+ last_run_status, last_successful_finish, next_start,
121
+ total_failures, last_error? }
122
+ ```
123
+
124
+ Intervals use PostgreSQL interval text such as `30 days`; the database validates them.
125
+
126
+ | Endpoint | Access | Behavior |
127
+ | --- | --- | --- |
128
+ | `GET /meta-tables/{uid}/timescale-policies/` | Reader | Policies, eligibility, jobs and compression stats. |
129
+ | `PUT /meta-tables/{uid}/timescale-policies/` | Writer | Replaces both policies; idempotent, safe to retry. Returns the GET body. |
130
+ | `GET /data-sources/{uid}/timescale-jobs/` | Any User who can see the source | Jobs for tables the caller can read; admins see all. `timescale_db` only. |
131
+
132
+ Errors: `404 timescale_policies_unavailable` for other engines,
133
+ `403 write_access_required`, `409 timescale_not_hypertable`,
134
+ `409 timescale_version_unsupported`, `409 timescale_extension_missing`, the existing
135
+ DataSource access codes for read-only or disabled sources, and `422` for an invalid
136
+ interval or timezone or `timescale_retention_not_after_compression`.
137
+
138
+ The Python client exposes `get_timescale_policies()` and `set_timescale_policies()`
139
+ on time-index tables.
140
+
141
+ ### Admin
142
+
143
+ - **Table → Timescale Policies** (the existing tab, reworked): Compression and
144
+ Retention cards, each with an on/off switch, an `after` number with a unit
145
+ (days, weeks, months), and an Advanced section for schedule, start and timezone.
146
+ Each card shows its job's status (Scheduled, Running, Failed, Paused), last
147
+ success, next run and failures. Compression shows size before and after.
148
+ Saving retention asks for confirmation, naming the cutoff date and stating that
149
+ older chunks are permanently dropped on every run and that older backfills are
150
+ dropped too. Readers see the tab read-only. An ineligible table shows the reason.
151
+ - **DataSource → Jobs** (`timescale_db` only): a table of jobs — table link,
152
+ policy, status, last run, next run, failures — with a failed-only filter and
153
+ Refresh, under Policies and Failed jobs counts.
154
+
155
+ Screens use Command Center SDK components and theme tokens only.
156
+
157
+ ### Monitoring
158
+
159
+ Monitoring is read on demand from `jobs`, `job_stats`, `job_errors` and
160
+ `hypertable_compression_stats`. MetaTables stores no job history, polls nothing,
161
+ and sends no alerts.
162
+
163
+ ## Consequences
164
+
165
+ - One source of truth: a policy changed directly in the database appears in the
166
+ Admin as it is.
167
+ - The legacy Timescale policy, decompression and hypertable helpers and their
168
+ runtime registrations are deleted.
169
+ - Retention is destructive and available to every Writer; the confirmation is
170
+ the safeguard.
171
+ - Policy jobs belong to the API's login. Rotating its password does not affect
172
+ them; no role gains `LOGIN`.
173
+
174
+ ## Alternatives considered
175
+
176
+ - **Policies in table contracts or migrations.** Two authorities would overwrite
177
+ each other. A bootstrap Job calling the API covers code-defined policies.
178
+ - **A catalog copy with a reconciler.** It duplicates Timescale's job store and
179
+ adds drift handling.
180
+ - **A MetaTables scheduler.** Timescale already schedules policy jobs.
181
+ - **`mt_owner` with `LOGIN` and no password.** It changes a login setting and
182
+ depends on the server never accepting passwordless authentication for that role.
183
+
184
+ ## Verification
185
+
186
+ Focused tests cover eligibility, interval validation, authorization, the request
187
+ contract and the derived compression settings, using a fake backend. The
188
+ TimescaleDB container suite, run only on explicit request, verifies hypertable
189
+ conversion, policy add/replace/remove, job ownership by the API's login, Reader and
190
+ Writer grants reaching chunks and compressed chunks, and upserts into compressed
191
+ chunks. Admin checks cover tab visibility, read-only mode and the retention
192
+ confirmation.
@@ -23,7 +23,7 @@ decisions belong in the SDK repository and are linked as dependencies.
23
23
 
24
24
  | ADR | Status | Scope |
25
25
  | --- | --- | --- |
26
- | [0001: One API execution path with SQLite for local development](api/0001-unified-api-storage-and-local-sqlite.md) | Accepted and implemented | Shared execution, API-owned local storage, SDK context dependency, and DuckDB removal; each runtime mode lists and selects only its own DataSources. |
26
+ | [0001: One API execution path with SQLite for local development](api/0001-unified-api-storage-and-local-sqlite.md) | Accepted and implemented; hosted declaration verification pending | Shared execution, API-owned local storage, SDK context dependency, and DuckDB removal; the deployment declares the hosted runtime database in `configuration.yaml` and an Environment Secret, and Settings is read-only in Hosted mode. |
27
27
  | [0002: Application administration and table ownership](api/0002-application-administration-and-table-ownership.md) | Accepted and implemented | Platform admin facts, table Reader/Writer ownership, User/Team grants, live namespace inheritance, and application-owned access management. |
28
28
  | [0004: Execute approved application migrations inside the API](api/0004-approved-application-migrations.md) | Superseded by ADR 0013 | Historical API-installed provider execution model. |
29
29
  | [0005: Shared run logs with local file capture](api/0005-run-logs-and-local-file-capture.md) | Accepted and implemented; live hosted verification pending | Shared run correlation and log API, runtime-bound local JSONL files, and hosted retrieval through the SDK. |
@@ -34,4 +34,5 @@ decisions belong in the SDK repository and are linked as dependencies.
34
34
  | [0010: Import external tables and views](api/0010-import-external-tables-and-views.md) | Accepted; implemented (verification boundaries in ADR) | Shared backend discovery, metadata import/refresh, and bounded reads of external tables and views, preserving one runtime catalog and existing grants. |
35
35
  | [0012: Bounded data transfer, concurrent execution, and safe retries](api/0012-bounded-data-transfer-and-safe-retries.md) | Accepted; implemented; hosted engine verification pending | API/client row and byte budgets, incremental fetching, concurrent admission, durable chunk receipts, safe recovery, and required user documentation; independent of Artifacts and temporary URLs. |
36
36
  | [0013: Application-owned migrations](api/0013-application-owned-migrations.md) | Accepted and implemented | Application-side Alembic, environment database authority, API catalog integration and separate system migrations. |
37
- | [0014: System migrations in the deployment workflow](api/0014-main-sequence-release-jobs-and-production-migrations.md) | Accepted; implemented on development; hosted verification pending | A Main Sequence Job upgrades the active runtime from the candidate image before each API rollout. |
37
+ | [0014: System migrations in the deployment workflow](api/0014-main-sequence-release-jobs-and-production-migrations.md) | Accepted; implemented on development; hosted verification pending | A Main Sequence Job verifies, migrates and registers the declared runtime database from the candidate image before each API rollout, including the first. |
38
+ | [0015: TimescaleDB compression and retention policies](api/0015-timescale-compression-and-retention-policies.md) | Accepted; implemented on branch; TimescaleDB verification pending | Time-index tables on TimescaleDB become hypertables; Writers set compression and retention through the API/Admin; Timescale keeps the jobs, and the Admin shows their status. |