mainsequence-metatable 0.1.8.dev16__tar.gz → 0.1.8.dev18__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 (536) hide show
  1. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/.agents/skills/client/metatables-local-development/SKILL.md +9 -5
  2. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/.agents/skills/client/metatables-meta-tables/SKILL.md +9 -2
  3. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/.agents/skills/client/metatables-migrations/SKILL.md +4 -3
  4. {mainsequence_metatable-0.1.8.dev16/src/mainsequence_metatable.egg-info → mainsequence_metatable-0.1.8.dev18}/PKG-INFO +1 -1
  5. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +82 -10
  6. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0007-database-enforced-table-access.md +15 -4
  7. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0009-shared-credential-store.md +15 -7
  8. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +27 -0
  9. mainsequence_metatable-0.1.8.dev18/docs/adr/api/0015-timescale-compression-and-retention-policies.md +192 -0
  10. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/index.md +3 -2
  11. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/api/data-sources.md +37 -39
  12. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/api/openapi.json +764 -135
  13. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/api/overview.md +12 -5
  14. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/api/reference.md +3 -1
  15. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/api/tables-and-migrations.md +2 -1
  16. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/api/time-index-and-updates.md +34 -0
  17. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/client/local-storage.md +1 -1
  18. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/client/query-and-mutate.md +2 -1
  19. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/client/tutorial.md +2 -1
  20. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/concepts/architecture.md +18 -13
  21. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/concepts/data-sources.md +17 -17
  22. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/concepts/identity-and-scope.md +4 -3
  23. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/contributing/database-backends.md +2 -2
  24. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/README.md +4 -3
  25. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/index.md +4 -3
  26. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/operations/catalog-migrations.md +46 -36
  27. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/operations/configuration.md +13 -8
  28. mainsequence_metatable-0.1.8.dev18/docs/operations/hosted-runtime.md +189 -0
  29. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/operations/local-runtime.md +19 -17
  30. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/operations/run-history.md +4 -3
  31. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/operations/run-logs.md +2 -2
  32. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/reference/capabilities.md +4 -2
  33. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/reference/cli.md +2 -2
  34. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/security/index.md +11 -7
  35. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/security/permissions.md +1 -1
  36. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/mkdocs.yml +1 -0
  37. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/pyproject.toml +1 -1
  38. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18/src/mainsequence_metatable.egg-info}/PKG-INFO +1 -1
  39. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/mainsequence_metatable.egg-info/SOURCES.txt +8 -1
  40. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/bootstrap.py +64 -111
  41. mainsequence_metatable-0.1.8.dev18/src/metatables/api/app/configuration.py +73 -0
  42. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/main.py +2 -0
  43. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/data_sources.py +13 -74
  44. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/managed_finalize.py +20 -4
  45. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/migration_connection.py +1 -1
  46. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/runtime_context.py +2 -1
  47. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_registration.py +6 -4
  48. mainsequence_metatable-0.1.8.dev18/src/metatables/api/app/routes/timescale_policies.py +295 -0
  49. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/runtime.py +5 -2
  50. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/runtime_control.py +26 -5
  51. mainsequence_metatable-0.1.8.dev18/src/metatables/api/app/runtime_database.py +121 -0
  52. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -11
  53. mainsequence_metatable-0.1.8.dev18/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +273 -0
  54. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/postgresql_access.py +88 -98
  55. mainsequence_metatable-0.1.8.dev18/src/metatables/api/backend/backends/timescale.py +379 -0
  56. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/contracts/storage_layouts.py +0 -6
  57. mainsequence_metatable-0.1.8.dev18/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +42 -0
  58. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/operations/register_catalog.py +0 -4
  59. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/models.py +1 -2
  60. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/physical_operations.py +2 -2
  61. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/table_response.py +5 -1
  62. mainsequence_metatable-0.1.8.dev18/src/metatables/api/metatables/configuration.yaml +12 -0
  63. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/cli/app.py +7 -22
  64. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/endpoint.py +2 -4
  65. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/README.md +4 -3
  66. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/__init__.py +0 -3
  67. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/models.py +51 -6
  68. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/runtime_contract.py +3 -1
  69. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/auth/test_data_source_identity.py +35 -40
  70. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/auth/test_runtime_bootstrap.py +10 -10
  71. mainsequence_metatable-0.1.8.dev18/tests/auth/test_runtime_database.py +123 -0
  72. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/auth/test_runtime_scaffold.py +11 -25
  73. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/auth/test_runtime_selection.py +68 -41
  74. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/catalog/test_migration.py +2 -2
  75. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/contracts/capabilities.json +38 -6
  76. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/contracts/database_operations.json +0 -9
  77. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/test_catalog_contract.py +1 -1
  78. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/test_runtime_bootstrap.py +69 -48
  79. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_operations/test_runtime_and_temporal.py +9 -9
  80. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_api_endpoint.py +1 -14
  81. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_data_source_registry.py +2 -9
  82. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_runtime_transition.py +36 -18
  83. mainsequence_metatable-0.1.8.dev18/tests/e2e/test_runtime_upgrade.py +71 -0
  84. mainsequence_metatable-0.1.8.dev18/tests/e2e/test_timescale_policies_client_api.py +214 -0
  85. mainsequence_metatable-0.1.8.dev18/tests/operations/test_timescale_policies.py +104 -0
  86. mainsequence_metatable-0.1.8.dev16/docs/operations/hosted-runtime.md +0 -113
  87. mainsequence_metatable-0.1.8.dev16/src/metatables/api/app/configuration.py +0 -36
  88. mainsequence_metatable-0.1.8.dev16/src/metatables/api/app/source_registrations.py +0 -219
  89. mainsequence_metatable-0.1.8.dev16/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -657
  90. mainsequence_metatable-0.1.8.dev16/src/metatables/api/metatables/configuration.yaml +0 -1
  91. mainsequence_metatable-0.1.8.dev16/tests/e2e/test_runtime_upgrade.py +0 -55
  92. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
  93. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +0 -0
  94. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/.mainsequence/workflows/metatables-api.yaml +0 -0
  95. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/LICENSE +0 -0
  96. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/MANIFEST.in +0 -0
  97. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/README.md +0 -0
  98. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/alembic.ini +0 -0
  99. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/api/metatables/main.py +0 -0
  100. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/compose.database-tests.yml +0 -0
  101. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0002-application-administration-and-table-ownership.md +0 -0
  102. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0004-approved-application-migrations.md +0 -0
  103. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
  104. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0006-historical-run-graphs.md +0 -0
  105. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
  106. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
  107. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0008-mysql-mssql-table-workflows.md +0 -0
  108. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
  109. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
  110. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/api/0013-application-owned-migrations.md +0 -0
  111. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
  112. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
  113. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/api/authentication-and-errors.md +0 -0
  114. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/assets/branding/metatables.svg +0 -0
  115. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/assets/diagrams/local-client-experience.svg +0 -0
  116. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/client/bounded-transfers.md +0 -0
  117. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/client/build-an-updater.md +0 -0
  118. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/client/define-and-migrate-tables.md +0 -0
  119. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/client/installation-and-connection.md +0 -0
  120. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/client/quickstart.md +0 -0
  121. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/client/read-existing-time-index-tables.md +0 -0
  122. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/client/register-existing-tables.md +0 -0
  123. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/client/upgrade-legacy-app.md +0 -0
  124. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/concepts/permissions-namespaces-labels.md +0 -0
  125. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/concepts/runs-and-execution-graphs.md +0 -0
  126. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
  127. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/concepts/time-index-tables-and-updates.md +0 -0
  128. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/contributing/architecture-and-boundaries.md +0 -0
  129. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/contributing/documentation.md +0 -0
  130. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/contributing/releasing.md +0 -0
  131. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/contributing/testing.md +0 -0
  132. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/README.md +0 -0
  133. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/__init__.py +0 -0
  134. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/bounded_reader.py +0 -0
  135. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/data_sources/README.md +0 -0
  136. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/data_sources/mssql.json +0 -0
  137. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/data_sources/mysql.json +0 -0
  138. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/data_sources/postgresql.json +0 -0
  139. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/data_sources/register.py +0 -0
  140. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/external_table.py +0 -0
  141. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/local_app/README.md +0 -0
  142. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/local_app/__init__.py +0 -0
  143. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/local_app/__main__.py +0 -0
  144. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/local_app/migrations/__init__.py +0 -0
  145. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/local_app/migrations/env.py +0 -0
  146. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/local_app/migrations/script.py.mako +0 -0
  147. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  148. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/local_app/tables.py +0 -0
  149. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/query.py +0 -0
  150. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/quickstart.py +0 -0
  151. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/reader.py +0 -0
  152. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/scripts/__init__.py +0 -0
  153. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/scripts/setup_metatables.py +0 -0
  154. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tables.py +0 -0
  155. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/__init__.py +0 -0
  156. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/__main__.py +0 -0
  157. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/data/README.md +0 -0
  158. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  159. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/frames.py +0 -0
  160. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/migrations/__init__.py +0 -0
  161. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/migrations/env.py +0 -0
  162. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/migrations/registry.py +0 -0
  163. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/migrations/script.py.mako +0 -0
  164. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
  165. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  166. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  167. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  168. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/operations.py +0 -0
  169. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/tables.py +0 -0
  170. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/tutorial/updaters.py +0 -0
  171. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/examples/updater.py +0 -0
  172. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/operations/recovery-and-observability.md +0 -0
  173. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/reference/python.md +0 -0
  174. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/docs/security/ownership-and-sharing.md +0 -0
  175. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/scripts/__init__.py +0 -0
  176. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/scripts/build_reference.py +0 -0
  177. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/scripts/check_boundaries.py +0 -0
  178. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/scripts/check_client_api_coverage.py +0 -0
  179. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/scripts/check_distribution_sources.py +0 -0
  180. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/scripts/check_docs.py +0 -0
  181. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/scripts/check_examples_debug.py +0 -0
  182. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/scripts/check_project.py +0 -0
  183. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/scripts/dev_release_version.py +0 -0
  184. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/scripts/test_databases.py +0 -0
  185. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/scripts/test_postgresql.py +0 -0
  186. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/setup.cfg +0 -0
  187. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
  188. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
  189. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/mainsequence_metatable.egg-info/requires.txt +0 -0
  190. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
  191. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/__init__.py +0 -0
  192. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/_admin_source.json +0 -0
  193. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/_build.py +0 -0
  194. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/_skill_bundle.py +0 -0
  195. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/__init__.py +0 -0
  196. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/__init__.py +0 -0
  197. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/auth/__init__.py +0 -0
  198. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/auth/boundary.py +0 -0
  199. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/auth/caller_assertions.py +0 -0
  200. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/auth/local_actor.py +0 -0
  201. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/credential_admin.py +0 -0
  202. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/development.py +0 -0
  203. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/development_client.py +0 -0
  204. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/platform_cache.py +0 -0
  205. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/__init__.py +0 -0
  206. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/column_search.py +0 -0
  207. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/contract_validation.py +0 -0
  208. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/namespaces.py +0 -0
  209. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/run_logs.py +0 -0
  210. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/schema_graph.py +0 -0
  211. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/security.py +0 -0
  212. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_cascade.py +0 -0
  213. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_crud.py +0 -0
  214. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_delete.py +0 -0
  215. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_filter.py +0 -0
  216. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_import.py +0 -0
  217. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_introspection.py +0 -0
  218. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_patch.py +0 -0
  219. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_response.py +0 -0
  220. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_search_document.py +0 -0
  221. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_sql.py +0 -0
  222. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
  223. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/time_index_delete.py +0 -0
  224. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/time_index_reads.py +0 -0
  225. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/time_index_stats.py +0 -0
  226. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/update_batch.py +0 -0
  227. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
  228. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/update_constants.py +0 -0
  229. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/update_crud.py +0 -0
  230. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/update_details.py +0 -0
  231. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/update_graph.py +0 -0
  232. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
  233. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/update_registration.py +0 -0
  234. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/update_runs.py +0 -0
  235. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/routes/update_statistics.py +0 -0
  236. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/source_passwords.py +0 -0
  237. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/app/transfer.py +0 -0
  238. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/__init__.py +0 -0
  239. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/__init__.py +0 -0
  240. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/access.py +0 -0
  241. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
  242. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
  243. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
  244. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
  245. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
  246. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
  247. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -0
  248. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
  249. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
  250. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
  251. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
  252. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
  253. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
  254. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
  255. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
  256. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
  257. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +0 -0
  258. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
  259. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/adapters/table_cursor.py +0 -0
  260. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/catalog.py +0 -0
  261. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
  262. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/catalog_types.py +0 -0
  263. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/contracts.py +0 -0
  264. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/hosted.py +0 -0
  265. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/hosted_access.py +0 -0
  266. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/migration_connection.py +0 -0
  267. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/native.py +0 -0
  268. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/operations.py +0 -0
  269. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/pages.py +0 -0
  270. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/registry.py +0 -0
  271. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/relation_tables.py +0 -0
  272. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/relational.py +0 -0
  273. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/restricted_sql.py +0 -0
  274. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
  275. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/backends/streaming.py +0 -0
  276. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/contracts/__init__.py +0 -0
  277. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/contracts/relation_import.py +0 -0
  278. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
  279. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/contracts/values.py +0 -0
  280. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/domain/__init__.py +0 -0
  281. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
  282. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
  283. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/domain/index_statistics.py +0 -0
  284. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/domain/label_rules.py +0 -0
  285. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/domain/permission_rules.py +0 -0
  286. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/domain/update_constants.py +0 -0
  287. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/__init__.py +0 -0
  288. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
  289. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
  290. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/credential_store.py +0 -0
  291. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
  292. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
  293. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
  294. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/platform_principals.py +0 -0
  295. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/run_logs.py +0 -0
  296. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
  297. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
  298. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/integrations/source_validation.py +0 -0
  299. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/__init__.py +0 -0
  300. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/env.py +0 -0
  301. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/script.py.mako +0 -0
  302. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
  303. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
  304. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
  305. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
  306. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
  307. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
  308. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
  309. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
  310. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
  311. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/operations/__init__.py +0 -0
  312. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
  313. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
  314. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/operations/create_table.py +0 -0
  315. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
  316. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/operations/import_relations.py +0 -0
  317. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/operations/introspect_table.py +0 -0
  318. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/operations/read_time_index.py +0 -0
  319. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/operations/search_documents.py +0 -0
  320. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/__init__.py +0 -0
  321. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/cascade.py +0 -0
  322. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/catalog.py +0 -0
  323. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/database.py +0 -0
  324. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/grants.py +0 -0
  325. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/labels.py +0 -0
  326. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/locking.py +0 -0
  327. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/projections.py +0 -0
  328. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
  329. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
  330. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
  331. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
  332. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/table_queries.py +0 -0
  333. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/update_graph.py +0 -0
  334. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
  335. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/updates.py +0 -0
  336. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
  337. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
  338. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/metatables/__init__.py +0 -0
  339. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/api/metatables/main.py +0 -0
  340. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/cli/__init__.py +0 -0
  341. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/cli/admin_install.py +0 -0
  342. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/cli/filters.py +0 -0
  343. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/cli/local.py +0 -0
  344. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/cli/migrations.py +0 -0
  345. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/cli/project.py +0 -0
  346. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/cli/skills.py +0 -0
  347. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/compiled_sql/__init__.py +0 -0
  348. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/compiled_sql/mssql.py +0 -0
  349. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/compiled_sql/v1.py +0 -0
  350. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/dtype_codec.py +0 -0
  351. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/README.md +0 -0
  352. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/__init__.py +0 -0
  353. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/bounded_reader.py +0 -0
  354. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/data_sources/README.md +0 -0
  355. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/data_sources/mssql.json +0 -0
  356. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/data_sources/mysql.json +0 -0
  357. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/data_sources/postgresql.json +0 -0
  358. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/data_sources/register.py +0 -0
  359. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/external_table.py +0 -0
  360. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/local_app/README.md +0 -0
  361. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/local_app/__init__.py +0 -0
  362. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/local_app/__main__.py +0 -0
  363. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
  364. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/local_app/migrations/env.py +0 -0
  365. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
  366. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  367. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/local_app/tables.py +0 -0
  368. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/query.py +0 -0
  369. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/quickstart.py +0 -0
  370. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/reader.py +0 -0
  371. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/scripts/__init__.py +0 -0
  372. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/scripts/setup_metatables.py +0 -0
  373. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tables.py +0 -0
  374. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/__init__.py +0 -0
  375. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/__main__.py +0 -0
  376. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/data/README.md +0 -0
  377. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  378. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/frames.py +0 -0
  379. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
  380. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/migrations/env.py +0 -0
  381. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
  382. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
  383. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
  384. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  385. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  386. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  387. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/operations.py +0 -0
  388. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/tables.py +0 -0
  389. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/tutorial/updaters.py +0 -0
  390. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/examples/updater.py +0 -0
  391. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/future_registry.py +0 -0
  392. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/hashing.py +0 -0
  393. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/instrumentation.py +0 -0
  394. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/local_connection.py +0 -0
  395. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/local_files.py +0 -0
  396. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/local_run_logs.py +0 -0
  397. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/log_contract.py +0 -0
  398. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/alembic.py +0 -0
  399. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/connection.py +0 -0
  400. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/env.py +0 -0
  401. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/provider.py +0 -0
  402. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/registry.py +0 -0
  403. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/runner.py +0 -0
  404. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/scaffold.py +0 -0
  405. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/templates/__init__.py +0 -0
  406. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/templates/env.py.mako +0 -0
  407. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/templates/script.py.mako +0 -0
  408. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/migrations/tls.py +0 -0
  409. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/pydantic_metadata.py +0 -0
  410. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/run_logging.py +0 -0
  411. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/runtime.py +0 -0
  412. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/runtime_context.py +0 -0
  413. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/schema_names.py +0 -0
  414. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/sdk_compat.py +0 -0
  415. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/sqlalchemy_contracts.py +0 -0
  416. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/time_index_table_refs.py +0 -0
  417. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/transfer.py +0 -0
  418. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/transfer_contract.py +0 -0
  419. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/transport.py +0 -0
  420. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/update_configuration_contract.py +0 -0
  421. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/updaters/__init__.py +0 -0
  422. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/updaters/configuration.py +0 -0
  423. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/updaters/dependencies.py +0 -0
  424. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/updaters/managers.py +0 -0
  425. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/updaters/namespacing.py +0 -0
  426. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/updaters/runner.py +0 -0
  427. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/updaters/updaters.py +0 -0
  428. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/updaters/utils.py +0 -0
  429. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/src/metatables/upload.py +0 -0
  430. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/auth/test_caller_assertions.py +0 -0
  431. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/auth/test_development_client.py +0 -0
  432. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/auth/test_hosted_environment_target.py +0 -0
  433. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/auth/test_local_mode.py +0 -0
  434. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/auth/test_platform_fact_cache.py +0 -0
  435. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/auth/test_runtime_storage_binding.py +0 -0
  436. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/auth/test_source_passwords.py +0 -0
  437. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/catalog/test_catalog_foundation.py +0 -0
  438. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/catalog/test_contract_projection.py +0 -0
  439. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/catalog/test_database_config.py +0 -0
  440. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/catalog/test_index_statistics.py +0 -0
  441. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/conftest.py +0 -0
  442. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/contracts/client_signatures.json +0 -0
  443. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/contracts/test_bounded_transfer.py +0 -0
  444. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/contracts/test_compiler_runtime_source.py +0 -0
  445. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/contracts/test_relation_batching.py +0 -0
  446. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/contracts/test_relation_import.py +0 -0
  447. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/contracts/test_storage_layouts.py +0 -0
  448. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/contracts/test_table_contracts.py +0 -0
  449. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/Dockerfile +0 -0
  450. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/Dockerfile.dockerignore +0 -0
  451. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/__init__.py +0 -0
  452. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/conftest.py +0 -0
  453. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/provider/__init__.py +0 -0
  454. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/provider/env.py +0 -0
  455. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
  456. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/test_api_contract.py +0 -0
  457. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/test_application_migration.py +0 -0
  458. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/test_bootstrap_recovery.py +0 -0
  459. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/test_credential_catalog.py +0 -0
  460. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/test_physical_contract.py +0 -0
  461. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/test_relation_import.py +0 -0
  462. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/test_sql_security.py +0 -0
  463. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_backend/test_update_client.py +0 -0
  464. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_operations/test_physical_operations.py +0 -0
  465. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/database_operations/test_postgresql_operations.py +0 -0
  466. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/documentation/test_project_checks.py +0 -0
  467. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_admin_installation.py +0 -0
  468. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_application_owned_migrations.py +0 -0
  469. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_catalog_outage.py +0 -0
  470. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_client_api_contract.py +0 -0
  471. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_client_api_coverage.py +0 -0
  472. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_client_migration_scaffold.py +0 -0
  473. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_client_migration_tls.py +0 -0
  474. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_client_package.py +0 -0
  475. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_client_signatures.py +0 -0
  476. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_client_value_behaviors.py +0 -0
  477. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_local_actor_client_api.py +0 -0
  478. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_local_cli_workflow.py +0 -0
  479. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_local_client_selection.py +0 -0
  480. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_managed_finalize_client_api.py +0 -0
  481. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_namespaces_admin_http.py +0 -0
  482. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_public_imports.py +0 -0
  483. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_remaining_client_routes.py +0 -0
  484. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_run_graphs.py +0 -0
  485. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_run_logs.py +0 -0
  486. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_sdk_local_startup.py +0 -0
  487. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_sqlite_runtime.py +0 -0
  488. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_table_delete_client_api.py +0 -0
  489. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_table_filter_client_api.py +0 -0
  490. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_table_introspection_client_api.py +0 -0
  491. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_table_patch_client_api.py +0 -0
  492. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_table_search_document_api.py +0 -0
  493. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_table_stats_api.py +0 -0
  494. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_table_update_pipeline.py +0 -0
  495. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_table_updates_http.py +0 -0
  496. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_time_index_delete_client_api.py +0 -0
  497. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_time_index_reads_client_api.py +0 -0
  498. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_update_batch_client_api.py +0 -0
  499. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
  500. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
  501. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
  502. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/e2e/test_update_registration_client_api.py +0 -0
  503. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/examples/test_documented_examples.py +0 -0
  504. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/examples/test_postgresql_examples.py +0 -0
  505. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/examples/test_setup_launch.py +0 -0
  506. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/examples/test_tutorial.py +0 -0
  507. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/integrations/test_credential_store.py +0 -0
  508. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/integrations/test_data_source_rules.py +0 -0
  509. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/integrations/test_local_data_sources.py +0 -0
  510. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/integrations/test_local_run_logs.py +0 -0
  511. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/integrations/test_postgresql_connection.py +0 -0
  512. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/integrations/test_postgresql_sql.py +0 -0
  513. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/integrations/test_postgresql_tables.py +0 -0
  514. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
  515. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/integrations/test_source_validation.py +0 -0
  516. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/integrations/test_sqlite_operations.py +0 -0
  517. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/labels/test_labels.py +0 -0
  518. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/operations/test_create_table_operation.py +0 -0
  519. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/operations/test_create_table_postgres.py +0 -0
  520. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/operations/test_physical_operation_journal.py +0 -0
  521. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/operations/test_register_catalog.py +0 -0
  522. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/operations/test_search_documents.py +0 -0
  523. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/packaging/test_client_skills.py +0 -0
  524. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/packaging/test_dev_release_version.py +0 -0
  525. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/packaging/test_distribution_sources.py +0 -0
  526. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/packaging/test_editable_build.py +0 -0
  527. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/packaging/test_installed_distribution.py +0 -0
  528. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/permissions/test_governed_sql_scope.py +0 -0
  529. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/permissions/test_local_actor_membership.py +0 -0
  530. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/permissions/test_migration_boundary.py +0 -0
  531. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/permissions/test_namespace_grants.py +0 -0
  532. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/permissions/test_security_api.py +0 -0
  533. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/permissions/test_table_body_filter.py +0 -0
  534. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/permissions/test_table_grants.py +0 -0
  535. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/tests/permissions/test_table_queries.py +0 -0
  536. {mainsequence_metatable-0.1.8.dev16 → mainsequence_metatable-0.1.8.dev18}/uv.lock +0 -0
@@ -140,12 +140,16 @@ local rows, catalog UIDs, credentials and fixture data are not promoted by a swi
140
140
  When returning to the environment is part of the requested workflow:
141
141
 
142
142
  1. Finish local tests and stop active writers. In Admin **Settings → Runtime mode**,
143
- inspect the displayed hosted environment and choose the intended registered
144
- DataSource. Use **Switch to Hosted**. This changes the API worker and selected
145
- database; it does not copy or merge the local database. Leave local capability
146
- enabled if the developer needs to switch back later.
143
+ inspect the displayed hosted environment and use **Switch to Hosted**. Hosted
144
+ opens the runtime database the API's deployment declares, through the same
145
+ Environment Secret; there is no DataSource to choose and the launcher never
146
+ migrates it. This changes the API worker and database; it does not copy or merge
147
+ the local database. Leave local capability enabled if the developer needs to
148
+ switch back later.
147
149
  2. Re-read runtime status and verify `local_mode: false`, the intended verified
148
- hosted environment, the expected DataSource and readiness. The same local
150
+ hosted environment, the expected DataSource and readiness. `migration_required`
151
+ means the branch has system migrations the deployed API does not have yet; it
152
+ clears once that code is deployed. The same local
149
153
  connection command still reaches this supervised API; its `--local` flag alone
150
154
  does not prove SQLite. If the switch fails and the old worker is restored,
151
155
  report the actual mode instead of claiming the switch succeeded.
@@ -35,8 +35,9 @@ identity and Git source facts use SDK imports. Table operations use the client's
35
35
  with SQLite behind it; ordinary clients never open local table files. Local
36
36
  workspaces use one persistent SQLite database for system and user tables per
37
37
  checkout; Git branches share it.
38
- Settings explicitly initializes or selects the runtime DataSource in both modes;
39
- startup never runs Alembic. See `docs/operations/catalog-migrations.md`.
38
+ A hosted API's deployment declares and initializes its runtime DataSource; Local
39
+ Settings explicitly initializes or selects the SQLite file. Startup never runs
40
+ Alembic. See `docs/operations/catalog-migrations.md`.
40
41
 
41
42
  ## Authoring decisions
42
43
 
@@ -118,6 +119,12 @@ A null cutoff requires a scope. Do not replace that workflow with ad hoc SQL.
118
119
  Deletion/cascade requires edit access, relevant protection checks, and explicit
119
120
  cascade intent; it is not an administrator-role bypass or migration repair.
120
121
 
122
+ On a TimescaleDB DataSource, time-index tables are hypertables. Their compression
123
+ and retention policies are set only through `TimeIndexMetaTable.set_timescale_policies`
124
+ (Writer) and read with `get_timescale_policies`. Do not add policies to table
125
+ contracts or Alembic revisions; to keep them in code, call the client from a
126
+ bootstrap Job. Retention permanently drops older chunks, including backfills.
127
+
121
128
  ## Validation
122
129
 
123
130
  Check authored models, normalization, physical naming, FK targets, and time grain
@@ -34,9 +34,10 @@ finalize catalog bindings through the API. Use the
34
34
  [table skill](../metatables-meta-tables/SKILL.md) for contract design.
35
35
 
36
36
  Check `docs/reference/capabilities.md` and `metatables migrations --help` before
37
- promising a command. The API's own catalog migrations are a separate history that
38
- an admin runs from Settings; see `docs/operations/catalog-migrations.md`. They
39
- are not application-provider revisions.
37
+ promising a command. The API's own catalog migrations are a separate history: a
38
+ hosted API's deployment applies them before it rolls out, and Local mode runs them
39
+ from Settings; see `docs/operations/catalog-migrations.md`. They are not
40
+ application-provider revisions.
40
41
 
41
42
  ## Source and runtime context
42
43
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence-metatable
3
- Version: 0.1.8.dev16
3
+ Version: 0.1.8.dev18
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
@@ -174,12 +238,12 @@ never activates a partially initialized runtime. A database already initialized
174
238
  and compatible can be selected without running migrations.
175
239
 
176
240
  Amended 2026-10-02: before any runtime is registered, inspection also checks,
177
- read-only, that the login can secure the database under
178
- [ADR 0007](0007-database-enforced-table-access.md): it owns the database, has
179
- `CREATEROLE`, and owns every non-system object. Unmet prerequisites make the
180
- target incompatible, with each reason shown in Settings, so setup never leaves a
181
- database half-initialized. A registered runtime is not rechecked, because it may
182
- hold imported external objects.
241
+ read-only, the login's prerequisites under
242
+ [ADR 0007](0007-database-enforced-table-access.md): `CREATEROLE`, and permission to
243
+ create the `metatables` schema and tables in the default schema. Unmet
244
+ prerequisites make the target incompatible, with each reason shown in Settings,
245
+ so setup never leaves a database half-initialized. A registered runtime is not
246
+ rechecked.
183
247
 
184
248
  Settings, runtime context, mode selection and bootstrap actions do not depend on
185
249
  catalog sessions or catalog memberships. They retain the existing request admission.
@@ -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)
@@ -6,6 +6,14 @@
6
6
  > conflicting application-migration execution and credential restrictions;
7
7
  > governed API operations and MetaTables system migrations remain separate.
8
8
 
9
+ > Amendment (2026-10-02): MetaTables secures only what it owns: its `metatables`
10
+ > schema, the tables it manages and the roles it creates. Database-wide defaults
11
+ > and `PUBLIC` access to other owners' objects, including extensions and other
12
+ > applications sharing the database, are the database administrator's
13
+ > responsibility. The login needs `CREATEROLE` and permission to create the
14
+ > `metatables` schema and tables in the DataSource's default schema; it need not
15
+ > own the database.
16
+
9
17
 
10
18
  Date: 2026-09-29
11
19
 
@@ -160,12 +168,14 @@ client.
160
168
  - **Ownership.** Tables are owned by `mt_owner`, a role that cannot log in, because
161
169
  an owner holds every privilege. The API's own role manages grants and schema
162
170
  changes and never runs caller SQL.
163
- - **Defaults.** PostgreSQL's default `PUBLIC` privileges are revoked: connecting,
164
- creating objects and temporary tables, and executing new functions.
171
+ - **Defaults.** On objects MetaTables owns, PostgreSQL's default `PUBLIC`
172
+ privileges are revoked, including for future tables and routines. Database-wide
173
+ defaults (connecting, creating objects and temporary tables) and other owners'
174
+ objects belong to the database administrator.
165
175
  - **Privileged routines.** Restricted caller roles must not be able to execute
166
176
  application routines with elevated owner privileges, including
167
177
  `SECURITY DEFINER` routines. Initialization establishes this restriction for
168
- existing routines as well as future defaults, covering direct grants, inherited
178
+ the routines MetaTables owns, existing and future, covering direct grants, inherited
169
179
  roles and `PUBLIC`. Revoking a direct User grant alone is insufficient if
170
180
  another grant still permits execution. Schema changes and extension installation
171
181
  preserve the restriction before exposing new or changed routines to callers.
@@ -261,7 +271,8 @@ and [MySQL implicit commits](https://dev.mysql.com/doc/refman/8.4/en/implicit-co
261
271
 
262
272
  - The explorer can run any PostgreSQL query, and the API has no SQL parser left
263
273
  to get wrong.
264
- - The DataSource login needs `CREATEROLE`.
274
+ - The DataSource login needs `CREATEROLE` and the right to create the `metatables`
275
+ schema; it does not need to own the database.
265
276
  - Physical table names become visible to explorer users.
266
277
  - Cascading foreign keys are unavailable where the explorer is enabled.
267
278
  - Team membership reaches the database at the pace of the existing one-hour
@@ -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. |