mainsequence-metatable 0.1.4.dev5__tar.gz → 0.1.5.dev6__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 (533) hide show
  1. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/.agents/skills/client/metatables-local-development/SKILL.md +7 -8
  2. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/.agents/skills/client/metatables-meta-tables/SKILL.md +20 -5
  3. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/.agents/skills/client/metatables-migrations/SKILL.md +36 -32
  4. mainsequence_metatable-0.1.5.dev6/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +91 -0
  5. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/PKG-INFO +1 -1
  6. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/configuration.py +1 -2
  7. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/main.py +0 -2
  8. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/managed_finalize.py +1 -1
  9. mainsequence_metatable-0.1.5.dev6/api/app/routes/migration_connection.py +93 -0
  10. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/run_logs.py +34 -1
  11. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/runtime_context.py +0 -1
  12. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/update_crud.py +7 -3
  13. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/catalog.py +0 -24
  14. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/contracts.py +0 -2
  15. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/hosted.py +0 -13
  16. mainsequence_metatable-0.1.5.dev6/api/backend/backends/migration_connection.py +62 -0
  17. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/run_logs.py +3 -3
  18. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/run_graphs.py +15 -4
  19. mainsequence_metatable-0.1.5.dev6/api/metatables/configuration.yaml +1 -0
  20. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +9 -2
  21. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0002-application-administration-and-table-ownership.md +11 -3
  22. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0004-approved-application-migrations.md +10 -1
  23. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0007-database-enforced-table-access.md +14 -0
  24. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0008-mysql-mssql-table-workflows.md +7 -0
  25. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0009-shared-credential-store.md +7 -0
  26. mainsequence_metatable-0.1.5.dev6/docs/adr/api/0013-application-owned-migrations.md +113 -0
  27. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +19 -16
  28. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/index.md +3 -2
  29. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/api/openapi.json +164 -63
  30. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/api/overview.md +5 -4
  31. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/api/reference.md +1 -1
  32. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/api/tables-and-migrations.md +20 -11
  33. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/api/time-index-and-updates.md +11 -4
  34. mainsequence_metatable-0.1.5.dev6/docs/client/define-and-migrate-tables.md +102 -0
  35. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/client/installation-and-connection.md +12 -6
  36. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/client/query-and-mutate.md +4 -0
  37. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/client/tutorial.md +86 -36
  38. mainsequence_metatable-0.1.5.dev6/docs/client/upgrade-legacy-app.md +157 -0
  39. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/concepts/architecture.md +6 -4
  40. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/concepts/runs-and-execution-graphs.md +37 -18
  41. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/contributing/releasing.md +3 -3
  42. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/README.md +1 -1
  43. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/local_app/README.md +5 -7
  44. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/local_app/migrations/__init__.py +1 -1
  45. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/scripts/setup_metatables.py +2 -12
  46. mainsequence_metatable-0.1.5.dev6/docs/examples/tutorial/README.md +129 -0
  47. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tutorial/__main__.py +12 -6
  48. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6/docs}/examples/tutorial/frames.py +32 -1
  49. mainsequence_metatable-0.1.5.dev6/docs/examples/tutorial/migrations/registry.py +11 -0
  50. mainsequence_metatable-0.1.5.dev6/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +42 -0
  51. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tutorial/operations.py +9 -1
  52. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6/docs}/examples/tutorial/tables.py +37 -1
  53. mainsequence_metatable-0.1.5.dev6/docs/examples/tutorial/updaters.py +172 -0
  54. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/index.md +3 -1
  55. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/operations/catalog-migrations.md +2 -2
  56. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/operations/configuration.md +6 -12
  57. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/operations/local-runtime.md +4 -3
  58. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/operations/run-history.md +30 -17
  59. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/operations/run-logs.md +4 -1
  60. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/reference/capabilities.md +8 -8
  61. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/reference/cli.md +5 -5
  62. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/security/index.md +15 -13
  63. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/security/permissions.md +8 -6
  64. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/README.md +1 -1
  65. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/local_app/README.md +5 -7
  66. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/local_app/migrations/__init__.py +1 -1
  67. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/scripts/setup_metatables.py +2 -12
  68. mainsequence_metatable-0.1.5.dev6/examples/tutorial/README.md +127 -0
  69. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/__main__.py +12 -6
  70. {mainsequence_metatable-0.1.4.dev5/docs → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/frames.py +32 -1
  71. mainsequence_metatable-0.1.5.dev6/examples/tutorial/migrations/registry.py +11 -0
  72. mainsequence_metatable-0.1.5.dev6/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +42 -0
  73. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/operations.py +9 -1
  74. {mainsequence_metatable-0.1.4.dev5/docs → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/tables.py +37 -1
  75. mainsequence_metatable-0.1.5.dev6/examples/tutorial/updaters.py +172 -0
  76. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/mainsequence_metatable.egg-info/PKG-INFO +1 -1
  77. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/mainsequence_metatable.egg-info/SOURCES.txt +9 -1
  78. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/mkdocs.yml +2 -0
  79. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/pyproject.toml +1 -1
  80. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/build_reference.py +1 -1
  81. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/check_boundaries.py +1 -5
  82. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/cli/app.py +2 -3
  83. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/cli/migrations.py +51 -88
  84. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/cli/project.py +1 -11
  85. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/migrations/__init__.py +14 -3
  86. mainsequence_metatable-0.1.5.dev6/src/metatables/migrations/connection.py +75 -0
  87. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/migrations/env.py +7 -33
  88. mainsequence_metatable-0.1.5.dev6/src/metatables/migrations/runner.py +152 -0
  89. mainsequence_metatable-0.1.5.dev6/src/metatables/migrations/tls.py +41 -0
  90. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/models.py +7 -2
  91. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/runtime.py +6 -6
  92. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/runtime_contract.py +0 -1
  93. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/auth/test_runtime_selection.py +7 -4
  94. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/auth/test_runtime_storage_binding.py +2 -2
  95. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/contracts/capabilities.json +27 -19
  96. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/provider/__init__.py +1 -1
  97. mainsequence_metatable-0.1.5.dev6/tests/database_backend/test_application_migration.py +28 -0
  98. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_api_endpoint.py +4 -3
  99. mainsequence_metatable-0.1.5.dev6/tests/e2e/test_application_owned_migrations.py +240 -0
  100. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_data_source_registry.py +2 -2
  101. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_local_cli_workflow.py +2 -2
  102. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_local_client_selection.py +12 -7
  103. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_remaining_client_routes.py +2 -2
  104. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_run_graphs.py +9 -0
  105. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_run_logs.py +62 -3
  106. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_sqlite_runtime.py +79 -13
  107. mainsequence_metatable-0.1.5.dev6/tests/examples/test_setup_launch.py +102 -0
  108. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/examples/test_tutorial.py +146 -6
  109. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/packaging/test_client_skills.py +1 -0
  110. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/packaging/test_distribution_sources.py +1 -0
  111. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/packaging/test_installed_distribution.py +5 -3
  112. mainsequence_metatable-0.1.5.dev6/tests/permissions/test_migration_boundary.py +77 -0
  113. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/permissions/test_security_api.py +5 -2
  114. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/uv.lock +1 -1
  115. mainsequence_metatable-0.1.4.dev5/api/app/routes/application_migrations.py +0 -170
  116. mainsequence_metatable-0.1.4.dev5/api/app/routes/migration_connection.py +0 -41
  117. mainsequence_metatable-0.1.4.dev5/api/metatables/configuration.yaml +0 -3
  118. mainsequence_metatable-0.1.4.dev5/docs/client/define-and-migrate-tables.md +0 -88
  119. mainsequence_metatable-0.1.4.dev5/docs/examples/tutorial/README.md +0 -82
  120. mainsequence_metatable-0.1.4.dev5/docs/examples/tutorial/migrations/registry.py +0 -9
  121. mainsequence_metatable-0.1.4.dev5/docs/examples/tutorial/updaters.py +0 -95
  122. mainsequence_metatable-0.1.4.dev5/examples/tutorial/README.md +0 -80
  123. mainsequence_metatable-0.1.4.dev5/examples/tutorial/migrations/registry.py +0 -9
  124. mainsequence_metatable-0.1.4.dev5/examples/tutorial/updaters.py +0 -95
  125. mainsequence_metatable-0.1.4.dev5/src/metatables/migrations/tls.py +0 -23
  126. mainsequence_metatable-0.1.4.dev5/tests/database_backend/test_application_migration.py +0 -36
  127. mainsequence_metatable-0.1.4.dev5/tests/examples/test_setup_launch.py +0 -45
  128. mainsequence_metatable-0.1.4.dev5/tests/permissions/test_migration_boundary.py +0 -19
  129. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
  130. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/.mainsequence/workflows/metatables-api.yaml +0 -0
  131. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/LICENSE +0 -0
  132. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/MANIFEST.in +0 -0
  133. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/README.md +0 -0
  134. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/alembic.ini +0 -0
  135. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/__init__.py +0 -0
  136. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/__init__.py +0 -0
  137. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/auth/__init__.py +0 -0
  138. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/auth/boundary.py +0 -0
  139. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/auth/caller_assertions.py +0 -0
  140. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/auth/local_actor.py +0 -0
  141. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/bootstrap.py +0 -0
  142. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/credential_admin.py +0 -0
  143. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/development.py +0 -0
  144. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/development_client.py +0 -0
  145. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/platform_cache.py +0 -0
  146. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/__init__.py +0 -0
  147. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/column_search.py +0 -0
  148. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/contract_validation.py +0 -0
  149. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/data_sources.py +0 -0
  150. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/namespaces.py +0 -0
  151. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/schema_graph.py +0 -0
  152. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/security.py +0 -0
  153. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_cascade.py +0 -0
  154. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_crud.py +0 -0
  155. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_delete.py +0 -0
  156. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_filter.py +0 -0
  157. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_import.py +0 -0
  158. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_introspection.py +0 -0
  159. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_patch.py +0 -0
  160. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_registration.py +0 -0
  161. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_response.py +0 -0
  162. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_search_document.py +0 -0
  163. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_sql.py +0 -0
  164. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/table_update_pipeline.py +0 -0
  165. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/time_index_delete.py +0 -0
  166. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/time_index_reads.py +0 -0
  167. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/time_index_stats.py +0 -0
  168. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/update_batch.py +0 -0
  169. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/update_chunk_insert.py +0 -0
  170. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/update_constants.py +0 -0
  171. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/update_details.py +0 -0
  172. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/update_graph.py +0 -0
  173. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/update_index_statistics.py +0 -0
  174. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/update_registration.py +0 -0
  175. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/update_runs.py +0 -0
  176. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/routes/update_statistics.py +0 -0
  177. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/runtime.py +0 -0
  178. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/runtime_control.py +0 -0
  179. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/source_passwords.py +0 -0
  180. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/source_registrations.py +0 -0
  181. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/app/transfer.py +0 -0
  182. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/__init__.py +0 -0
  183. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/__init__.py +0 -0
  184. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/access.py +0 -0
  185. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/__init__.py +0 -0
  186. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/maintenance/__init__.py +0 -0
  187. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
  188. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/maintenance/runtime.py +0 -0
  189. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/maintenance/temporal.py +0 -0
  190. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
  191. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/maintenance/validation.py +0 -0
  192. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
  193. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/postgresql_connection.py +0 -0
  194. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/postgresql_introspection.py +0 -0
  195. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
  196. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/postgresql_tables.py +0 -0
  197. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/postgresql_time_index.py +0 -0
  198. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
  199. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
  200. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
  201. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
  202. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/source_validation.py +0 -0
  203. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/sqlite_connection.py +0 -0
  204. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/sqlite_introspection.py +0 -0
  205. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/adapters/table_cursor.py +0 -0
  206. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/catalog_ddl.py +0 -0
  207. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/catalog_types.py +0 -0
  208. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/hosted_access.py +0 -0
  209. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/native.py +0 -0
  210. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/operations.py +0 -0
  211. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/pages.py +0 -0
  212. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/postgresql_access.py +0 -0
  213. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/registry.py +0 -0
  214. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/relation_tables.py +0 -0
  215. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/relational.py +0 -0
  216. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/restricted_sql.py +0 -0
  217. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/sqlite_access.py +0 -0
  218. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/backends/streaming.py +0 -0
  219. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/contracts/__init__.py +0 -0
  220. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/contracts/relation_import.py +0 -0
  221. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/contracts/storage_layouts.py +0 -0
  222. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/contracts/table_contracts.py +0 -0
  223. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/contracts/values.py +0 -0
  224. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/domain/__init__.py +0 -0
  225. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/domain/catalog_rules.py +0 -0
  226. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/domain/data_source_rules.py +0 -0
  227. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/domain/index_statistics.py +0 -0
  228. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/domain/label_rules.py +0 -0
  229. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/domain/permission_rules.py +0 -0
  230. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/domain/update_constants.py +0 -0
  231. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/__init__.py +0 -0
  232. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/catalog_data_sources.py +0 -0
  233. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/credential_keys.py +0 -0
  234. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/credential_store.py +0 -0
  235. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/data_source_provider.py +0 -0
  236. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/local_credentials.py +0 -0
  237. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/local_workspace.py +0 -0
  238. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/platform_principals.py +0 -0
  239. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/runtime_binding.py +0 -0
  240. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/runtime_data_sources.py +0 -0
  241. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/integrations/source_validation.py +0 -0
  242. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/__init__.py +0 -0
  243. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/env.py +0 -0
  244. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/script.py.mako +0 -0
  245. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/versions/0001_initial.py +0 -0
  246. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/versions/0002_security_model.py +0 -0
  247. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
  248. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
  249. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/versions/0005_database_access.py +0 -0
  250. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/versions/0006_local_credentials.py +0 -0
  251. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
  252. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
  253. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/migrations/versions/__init__.py +0 -0
  254. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/operations/__init__.py +0 -0
  255. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/operations/bootstrap_migrations.py +0 -0
  256. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/operations/catalog_schema.py +0 -0
  257. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/operations/create_table.py +0 -0
  258. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/operations/finalize_managed.py +0 -0
  259. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/operations/import_relations.py +0 -0
  260. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/operations/introspect_table.py +0 -0
  261. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/operations/read_time_index.py +0 -0
  262. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/operations/register_catalog.py +0 -0
  263. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/operations/search_documents.py +0 -0
  264. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/__init__.py +0 -0
  265. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/cascade.py +0 -0
  266. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/catalog.py +0 -0
  267. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/database.py +0 -0
  268. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/grants.py +0 -0
  269. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/labels.py +0 -0
  270. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/locking.py +0 -0
  271. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/models.py +0 -0
  272. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/physical_operations.py +0 -0
  273. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/projections.py +0 -0
  274. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/schema_graph.py +0 -0
  275. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/sqlite_types.py +0 -0
  276. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/table_body_filter.py +0 -0
  277. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/table_queries.py +0 -0
  278. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/table_response.py +0 -0
  279. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/update_graph.py +0 -0
  280. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/update_pipeline.py +0 -0
  281. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/updates.py +0 -0
  282. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/persistence/upload_receipts.py +0 -0
  283. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/backend/presentation/data_source_summary.py +0 -0
  284. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/metatables/__init__.py +0 -0
  285. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/api/metatables/main.py +0 -0
  286. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/compose.database-tests.yml +0 -0
  287. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
  288. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0006-historical-run-graphs.md +0 -0
  289. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
  290. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
  291. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
  292. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
  293. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
  294. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/api/authentication-and-errors.md +0 -0
  295. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/api/data-sources.md +0 -0
  296. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/assets/branding/metatables.svg +0 -0
  297. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/assets/diagrams/local-client-experience.svg +0 -0
  298. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/client/bounded-transfers.md +0 -0
  299. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/client/build-an-updater.md +0 -0
  300. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/client/local-storage.md +0 -0
  301. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/client/quickstart.md +0 -0
  302. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/client/read-existing-time-index-tables.md +0 -0
  303. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/client/register-existing-tables.md +0 -0
  304. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/concepts/data-sources.md +0 -0
  305. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/concepts/identity-and-scope.md +0 -0
  306. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/concepts/permissions-namespaces-labels.md +0 -0
  307. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
  308. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/concepts/time-index-tables-and-updates.md +0 -0
  309. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/contributing/architecture-and-boundaries.md +0 -0
  310. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/contributing/database-backends.md +0 -0
  311. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/contributing/documentation.md +0 -0
  312. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/contributing/testing.md +0 -0
  313. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/__init__.py +0 -0
  314. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/bounded_reader.py +0 -0
  315. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/data_sources/README.md +0 -0
  316. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/data_sources/mssql.json +0 -0
  317. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/data_sources/mysql.json +0 -0
  318. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/data_sources/postgresql.json +0 -0
  319. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/data_sources/register.py +0 -0
  320. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/external_table.py +0 -0
  321. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/local_app/__init__.py +0 -0
  322. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/local_app/__main__.py +0 -0
  323. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/local_app/migrations/env.py +0 -0
  324. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/local_app/migrations/script.py.mako +0 -0
  325. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  326. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/local_app/tables.py +0 -0
  327. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/query.py +0 -0
  328. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/quickstart.py +0 -0
  329. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/reader.py +0 -0
  330. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/scripts/__init__.py +0 -0
  331. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tables.py +0 -0
  332. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tutorial/__init__.py +0 -0
  333. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tutorial/data/README.md +0 -0
  334. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  335. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tutorial/migrations/__init__.py +0 -0
  336. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tutorial/migrations/env.py +0 -0
  337. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tutorial/migrations/script.py.mako +0 -0
  338. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
  339. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  340. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  341. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/examples/updater.py +0 -0
  342. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/operations/hosted-runtime.md +0 -0
  343. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/operations/recovery-and-observability.md +0 -0
  344. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/reference/python.md +0 -0
  345. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/docs/security/ownership-and-sharing.md +0 -0
  346. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/__init__.py +0 -0
  347. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/bounded_reader.py +0 -0
  348. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/data_sources/README.md +0 -0
  349. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/data_sources/mssql.json +0 -0
  350. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/data_sources/mysql.json +0 -0
  351. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/data_sources/postgresql.json +0 -0
  352. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/data_sources/register.py +0 -0
  353. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/external_table.py +0 -0
  354. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/local_app/__init__.py +0 -0
  355. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/local_app/__main__.py +0 -0
  356. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/local_app/migrations/env.py +0 -0
  357. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/local_app/migrations/script.py.mako +0 -0
  358. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  359. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/local_app/tables.py +0 -0
  360. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/query.py +0 -0
  361. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/quickstart.py +0 -0
  362. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/reader.py +0 -0
  363. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/scripts/__init__.py +0 -0
  364. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tables.py +0 -0
  365. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/__init__.py +0 -0
  366. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/data/README.md +0 -0
  367. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  368. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/migrations/__init__.py +0 -0
  369. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/migrations/env.py +0 -0
  370. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/migrations/script.py.mako +0 -0
  371. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/migrations/versions/__init__.py +0 -0
  372. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  373. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  374. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/examples/updater.py +0 -0
  375. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
  376. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/mainsequence_metatable.egg-info/entry_points.txt +0 -0
  377. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/mainsequence_metatable.egg-info/requires.txt +0 -0
  378. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/mainsequence_metatable.egg-info/top_level.txt +0 -0
  379. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/__init__.py +0 -0
  380. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/build_package.py +0 -0
  381. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/check_client_api_coverage.py +0 -0
  382. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/check_distribution_sources.py +0 -0
  383. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/check_docs.py +0 -0
  384. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/check_examples_debug.py +0 -0
  385. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/check_project.py +0 -0
  386. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/dev_release_version.py +0 -0
  387. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/test_databases.py +0 -0
  388. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/scripts/test_postgresql.py +0 -0
  389. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/setup.cfg +0 -0
  390. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/__init__.py +0 -0
  391. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/_admin_source.json +0 -0
  392. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/_skill_bundle.py +0 -0
  393. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/cli/__init__.py +0 -0
  394. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/cli/admin_install.py +0 -0
  395. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/cli/filters.py +0 -0
  396. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/cli/local.py +0 -0
  397. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/cli/skills.py +0 -0
  398. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/compiled_sql/__init__.py +0 -0
  399. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/compiled_sql/mssql.py +0 -0
  400. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/compiled_sql/v1.py +0 -0
  401. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/dtype_codec.py +0 -0
  402. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/endpoint.py +0 -0
  403. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/future_registry.py +0 -0
  404. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/hashing.py +0 -0
  405. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/instrumentation.py +0 -0
  406. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/local_connection.py +0 -0
  407. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/local_files.py +0 -0
  408. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/local_run_logs.py +0 -0
  409. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/log_contract.py +0 -0
  410. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/migrations/alembic.py +0 -0
  411. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/migrations/provider.py +0 -0
  412. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/migrations/registry.py +0 -0
  413. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/migrations/scaffold.py +0 -0
  414. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/migrations/templates/__init__.py +0 -0
  415. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/migrations/templates/env.py.mako +0 -0
  416. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/migrations/templates/script.py.mako +0 -0
  417. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/pydantic_metadata.py +0 -0
  418. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/run_logging.py +0 -0
  419. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/runtime_context.py +0 -0
  420. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/schema_names.py +0 -0
  421. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/sdk_compat.py +0 -0
  422. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/sqlalchemy_contracts.py +0 -0
  423. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/time_index_table_refs.py +0 -0
  424. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/transfer.py +0 -0
  425. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/transfer_contract.py +0 -0
  426. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/transport.py +0 -0
  427. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/update_configuration_contract.py +0 -0
  428. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/updaters/__init__.py +0 -0
  429. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/updaters/configuration.py +0 -0
  430. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/updaters/dependencies.py +0 -0
  431. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/updaters/managers.py +0 -0
  432. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/updaters/namespacing.py +0 -0
  433. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/updaters/runner.py +0 -0
  434. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/updaters/updaters.py +0 -0
  435. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/updaters/utils.py +0 -0
  436. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/src/metatables/upload.py +0 -0
  437. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/auth/test_caller_assertions.py +0 -0
  438. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/auth/test_data_source_identity.py +0 -0
  439. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/auth/test_development_client.py +0 -0
  440. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/auth/test_hosted_environment_target.py +0 -0
  441. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/auth/test_local_mode.py +0 -0
  442. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/auth/test_platform_fact_cache.py +0 -0
  443. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/auth/test_runtime_bootstrap.py +0 -0
  444. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/auth/test_runtime_scaffold.py +0 -0
  445. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/auth/test_source_passwords.py +0 -0
  446. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/catalog/test_catalog_foundation.py +0 -0
  447. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/catalog/test_contract_projection.py +0 -0
  448. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/catalog/test_database_config.py +0 -0
  449. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/catalog/test_index_statistics.py +0 -0
  450. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/catalog/test_migration.py +0 -0
  451. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/conftest.py +0 -0
  452. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/contracts/client_signatures.json +0 -0
  453. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/contracts/database_operations.json +0 -0
  454. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/contracts/test_bounded_transfer.py +0 -0
  455. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/contracts/test_relation_batching.py +0 -0
  456. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/contracts/test_relation_import.py +0 -0
  457. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/contracts/test_storage_layouts.py +0 -0
  458. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/contracts/test_table_contracts.py +0 -0
  459. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/Dockerfile +0 -0
  460. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/Dockerfile.dockerignore +0 -0
  461. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/__init__.py +0 -0
  462. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/conftest.py +0 -0
  463. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/provider/env.py +0 -0
  464. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
  465. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/test_api_contract.py +0 -0
  466. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/test_bootstrap_recovery.py +0 -0
  467. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/test_catalog_contract.py +0 -0
  468. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/test_credential_catalog.py +0 -0
  469. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/test_physical_contract.py +0 -0
  470. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/test_relation_import.py +0 -0
  471. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/test_runtime_bootstrap.py +0 -0
  472. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/test_sql_security.py +0 -0
  473. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_backend/test_update_client.py +0 -0
  474. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_operations/test_physical_operations.py +0 -0
  475. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_operations/test_postgresql_operations.py +0 -0
  476. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/database_operations/test_runtime_and_temporal.py +0 -0
  477. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/documentation/test_project_checks.py +0 -0
  478. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_admin_installation.py +0 -0
  479. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_catalog_outage.py +0 -0
  480. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_client_api_contract.py +0 -0
  481. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_client_api_coverage.py +0 -0
  482. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_client_migration_scaffold.py +0 -0
  483. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_client_migration_tls.py +0 -0
  484. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_client_package.py +0 -0
  485. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_client_signatures.py +0 -0
  486. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_client_value_behaviors.py +0 -0
  487. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_local_actor_client_api.py +0 -0
  488. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_managed_finalize_client_api.py +0 -0
  489. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_namespaces_admin_http.py +0 -0
  490. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_public_imports.py +0 -0
  491. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_runtime_transition.py +0 -0
  492. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_sdk_local_startup.py +0 -0
  493. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_table_delete_client_api.py +0 -0
  494. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_table_filter_client_api.py +0 -0
  495. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_table_introspection_client_api.py +0 -0
  496. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_table_patch_client_api.py +0 -0
  497. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_table_search_document_api.py +0 -0
  498. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_table_stats_api.py +0 -0
  499. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_table_update_pipeline.py +0 -0
  500. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_table_updates_http.py +0 -0
  501. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_time_index_delete_client_api.py +0 -0
  502. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_time_index_reads_client_api.py +0 -0
  503. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_update_batch_client_api.py +0 -0
  504. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
  505. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
  506. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
  507. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/e2e/test_update_registration_client_api.py +0 -0
  508. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/examples/test_documented_examples.py +0 -0
  509. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/examples/test_postgresql_examples.py +0 -0
  510. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/integrations/test_credential_store.py +0 -0
  511. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/integrations/test_data_source_rules.py +0 -0
  512. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/integrations/test_local_data_sources.py +0 -0
  513. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/integrations/test_local_run_logs.py +0 -0
  514. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/integrations/test_postgresql_connection.py +0 -0
  515. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/integrations/test_postgresql_sql.py +0 -0
  516. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/integrations/test_postgresql_tables.py +0 -0
  517. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
  518. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/integrations/test_source_validation.py +0 -0
  519. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/integrations/test_sqlite_operations.py +0 -0
  520. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/labels/test_labels.py +0 -0
  521. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/operations/test_create_table_operation.py +0 -0
  522. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/operations/test_create_table_postgres.py +0 -0
  523. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/operations/test_physical_operation_journal.py +0 -0
  524. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/operations/test_register_catalog.py +0 -0
  525. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/operations/test_search_documents.py +0 -0
  526. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/packaging/test_dev_release_version.py +0 -0
  527. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/packaging/test_editable_build.py +0 -0
  528. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/permissions/test_governed_sql_scope.py +0 -0
  529. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/permissions/test_local_actor_membership.py +0 -0
  530. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/permissions/test_namespace_grants.py +0 -0
  531. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/permissions/test_table_body_filter.py +0 -0
  532. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/permissions/test_table_grants.py +0 -0
  533. {mainsequence_metatable-0.1.4.dev5 → mainsequence_metatable-0.1.5.dev6}/tests/permissions/test_table_queries.py +0 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: metatables-local-development
3
- description: "Develop and test applications using the installed MetaTables client against local SQLite before returning to the intended environment database. Covers project/API/Admin setup, runtime verification, isolated fixtures, approved migrations and switching back after verification. Excludes MetaTables client/API implementation and hosted frontend deployment."
3
+ description: "Develop and test applications using the installed MetaTables client against local SQLite before returning to the intended environment database. Covers project/API/Admin setup, runtime verification, isolated fixtures, application-owned migrations and switching back after verification. Excludes MetaTables client/API implementation and hosted frontend deployment."
4
4
  ---
5
5
 
6
6
  # Local-first MetaTables application development
@@ -62,17 +62,16 @@ Do not retry against automatic hosted discovery when a local connection fails.
62
62
  `metatables --local runtime initialize`, then inspect status again.
63
63
  Starting the API does not initialize or migrate a database.
64
64
  4. Author and review application migrations using the
65
- [migrations skill](../metatables-migrations/SKILL.md). Approve the installed
66
- provider in configuration and apply its head to the verified local runtime:
65
+ [migrations skill](../metatables-migrations/SKILL.md). Run the application-local
66
+ provider against the verified local runtime:
67
67
 
68
68
  ```bash
69
- metatables init --local --provider ledger=ledger.migrations:migration
70
- metatables --local migrations upgrade --provider ledger
69
+ metatables --local migrations upgrade --provider ledger.migrations:migration
71
70
  ```
72
71
 
73
- Substitute the application's own alias and module. Execution takes an approved
74
- alias; authoring takes a Python reference. System initialization and application
75
- migration history remain separate.
72
+ Substitute the application's own module. Provider code and revisions are
73
+ installed in the application process; the API requires no provider approval
74
+ or installation. System initialization and application histories remain separate.
76
75
  5. Build application contracts/queries with the
77
76
  [table skill](../metatables-meta-tables/SKILL.md), or producers/readers with the
78
77
  [updater skill](../metatables-time-index-table-updates/SKILL.md). Use small,
@@ -85,11 +85,26 @@ revisions; do not recompute identity from columns or rewrite applied history.
85
85
  ## Queries and mutations
86
86
 
87
87
  Read `docs/client/query-and-mutate.md` and `examples/query.py`. Use
88
- `compile_sqlalchemy_statement` with bound parameters and explicit catalog table
89
- scope/access. Resolve registered physical names instead of guessing them from
90
- identifiers. Use the documented expression subset and scopes for actual read/write targets.
91
- Arbitrary DDL, system relations, multiple statements and indirect view/trigger
92
- writes are unsupported by the governed SQL API.
88
+ `compile_sqlalchemy_statement` with bound parameters. The request sends SQL and
89
+ selects one DataSource; the API executes as the authenticated user, and the
90
+ selected database backend enforces Reader/Writer permissions on the tables
91
+ actually touched. The API does not parse SQL for authorization. The compiler can
92
+ resolve DataSource and dialect from the selected runtime; supply both explicitly
93
+ for offline compilation. Preserve execution mode, row limits and timeouts.
94
+
95
+ There is no declared table list: `MetaTableOperationScopeTable`,
96
+ `MetaTableOperationScope` and `scope_tables` were intentionally removed. Do not
97
+ recreate them, add per-query registration checks, or parse SQL to enforce a client
98
+ scope. Use existing physical bindings in SQLAlchemy models. Registration and
99
+ schema evolution belong to their lifecycle workflows. For older applications,
100
+ use the [legacy upgrade skill](../metatables-upgrade-legacy-app/SKILL.md) and
101
+ `docs/client/upgrade-legacy-app.md`.
102
+
103
+ `operation="select"` selects read execution; the other labels select write
104
+ execution. The label does not classify the SQL. Database permissions enforce
105
+ access; row/time limits and transaction handling remain in the API. Refer to the
106
+ query guide for engine-specific statement/batch behavior. Application DDL belongs
107
+ to the separate migration-provider workflow.
93
108
 
94
109
  Column search is supported. Description search, search-index refresh, and
95
110
  legacy convenience sharing/label actions are not supported API workflows.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: metatables-migrations
3
- description: "Create and evolve managed application tables through Alembic migration providers with the installed MetaTables Python client. Covers provider scope, scaffolding, offline revisions, approved API-side execution, and reservation or finalization failures. Excludes API catalog migrations, client-library implementation, API/server changes and repository tooling."
3
+ description: "Create and evolve managed application tables through Alembic migration providers with the installed MetaTables Python client. Covers provider scope, scaffolding, revision authoring, client-side execution, and reservation or finalization failures. Excludes API catalog migrations, client-library implementation, API/server changes and repository tooling."
4
4
  ---
5
5
 
6
6
  # MetaTables client application migrations
@@ -12,6 +12,10 @@ client. It covers application-facing models and workflows. Client-library
12
12
  implementation, this repository's development/release tooling, and API internals
13
13
  have separate ownership.
14
14
 
15
+ For upgrading older client imports, SQL scopes or provider integration, use the
16
+ [legacy upgrade skill](../metatables-upgrade-legacy-app/SKILL.md). This skill
17
+ covers authoring and running application schema revisions.
18
+
15
19
  In a copied skill, resolve the `docs/` and `examples/` paths below relative to
16
20
  this skill's `references/` directory. The client CLI bundles the matching version's
17
21
  guides and examples there, including their linked documents. In the MetaTables
@@ -25,8 +29,8 @@ verification within the requested scope.
25
29
  Read `docs/client/define-and-migrate-tables.md`,
26
30
  `docs/concepts/table-contracts-and-lifecycle.md`, and the tested
27
31
  `examples/tables.py`. Managed authoring is migration-first: define SQLAlchemy
28
- models, select a provider, author a revision, then let the API apply it and
29
- finalize the catalog bindings. Use the
32
+ models, select a provider, author and apply a revision with the client, then
33
+ finalize catalog bindings through the API. Use the
30
34
  [table skill](../metatables-meta-tables/SKILL.md) for contract design.
31
35
 
32
36
  Check `docs/reference/capabilities.md` and `metatables migrations --help` before
@@ -36,14 +40,15 @@ are not application-provider revisions.
36
40
 
37
41
  ## Source and runtime context
38
42
 
39
- - The API selects its active runtime DataSource. Do not accept a caller-supplied
40
- DataSource, database URL, revision path, or branch override.
43
+ - The API selects its active runtime DataSource. Upgrade and downgrade use that
44
+ environment connection. An explicit `--sqlalchemy-url` is available for revision
45
+ authoring; use it only when that authoring target is intended.
41
46
  - Git source facts come from the current checkout through the SDK. Do not ask the
42
47
  user to choose a branch or environment for a migration.
43
48
  - An explicit `METATABLES_API_URL` selects an API endpoint, not a branch or a
44
49
  storage binding. See `docs/client/installation-and-connection.md`.
45
- - Provider aliases are API deployment configuration, not Python import paths
46
- supplied by a request.
50
+ - Provider references resolve in the application process, for example
51
+ `ledger.migrations:migration`. The API needs no provider code or allowlist.
47
52
 
48
53
  ## Author the migration
49
54
 
@@ -66,12 +71,11 @@ are not application-provider revisions.
66
71
  5. Edit the generated `registry.py` so it returns exactly the models owned by
67
72
  that migration stream. Scaffolding alone selects no models and creates no
68
73
  tables.
69
- 6. Create and review an offline Alembic revision:
74
+ 6. Create and review an Alembic revision (defaults to autogeneration):
70
75
 
71
76
  ```bash
72
77
  metatables migrations revision \
73
78
  --provider ledger.migrations:migration \
74
- --no-autogenerate \
75
79
  --message "create ledger"
76
80
  ```
77
81
 
@@ -79,33 +83,32 @@ Use `--source-root` and `--code-repository-root` when the application does not
79
83
  use the default `src/` layout. Keep applied revisions immutable; add a new
80
84
  revision for every later schema change.
81
85
 
82
- ## Execute through the approved runtime
86
+ ## Execute with the environment connection
83
87
 
84
- Direct client-side Alembic execution, `current`, `downgrade`, migration
85
- connections and database autogeneration are unsupported. `--sqlalchemy-url` does
86
- not bypass that boundary. The supported upgrade command executes inside the API.
87
- After verifying Local mode and the selected DataSource, use:
88
+ After verifying the intended runtime, use the application's provider reference:
88
89
 
89
90
  ```bash
90
- metatables --local migrations upgrade --provider ledger
91
+ metatables --local migrations upgrade --provider ledger.migrations:migration
92
+ metatables --local migrations current --provider ledger.migrations:migration
93
+ metatables --local migrations downgrade 0001 --provider ledger.migrations:migration
91
94
  ```
92
95
 
93
- `ledger` is the approved alias, not a Python provider reference. Only `head` is
94
- supported. The global `--local` selects the running project's API connection;
95
- inspect runtime status because Admin can switch that API to Hosted.
96
+ The global `--local` selects the running project's API connection; inspect runtime
97
+ status because Admin can switch that API to Hosted. Upgrade/downgrade accept
98
+ Alembic targets. Use `--no-autogenerate` for offline revision authoring.
96
99
 
97
- The API applies a provider through `POST /application-migrations/upgrade/`, which
98
- accepts only an alias listed in its `application_migration_providers`. The
99
- deployment must already install the reviewed provider code. The API reserves the
100
- provider's catalog rows, runs Alembic to the provider head, and finalizes the
101
- physical bindings. The caller needs Writer access to every existing provider
102
- table and cannot upload revisions, choose a database or target revision, or
103
- downgrade. See `docs/api/tables-and-migrations.md`.
100
+ The client imports and executes application revisions, using the connection
101
+ resolved for the selected environment. Environment operators supply the database
102
+ login's DDL privileges. MetaTables does not mint migration roles or sandbox DDL.
103
+ API Writer checks govern connection admission and provider catalog operations.
104
+ The client reserves catalog entries, runs Alembic, closes its physical connection,
105
+ and finalizes contracts through the API. Treat connection material as private.
104
106
 
105
- Use the application's tested setup entry point when one exists;
106
- `examples/scripts/setup_metatables.py` and `docs/client/tutorial.md` show the
107
- pattern. Do not replace it with direct model registration or an undocumented
108
- request body.
107
+ Use the application's setup entry point when available. Python code can call
108
+ `metatables.upgrade_application("ledger.migrations:migration")`;
109
+ `examples/scripts/setup_metatables.py` shows the pattern. Remove the retired
110
+ `application_migration_providers` setting and use Python references instead of aliases.
111
+ Application migration histories remain separate from API system migrations.
109
112
 
110
113
  ## Lifecycle invariants
111
114
 
@@ -134,13 +137,14 @@ Read `docs/operations/recovery-and-observability.md`.
134
137
  - If Alembic succeeds but finalization fails, physical DDL may already be
135
138
  committed. Inspect every per-table result and the actual schema before
136
139
  retrying.
137
- - Treat an uncertain journal outcome as reconciliation work. Do not blindly
138
- retry, stamp, downgrade, cascade-delete, or register around it.
140
+ - Inspect partial DDL before retrying, especially on engines without transactional
141
+ DDL. A finalization-only failure can be retried without reapplying committed
142
+ revisions. Client DDL has no API executor journal.
139
143
  - Destructive catalog deletion is not migration recovery and never bypasses
140
144
  schema-management protection.
141
145
 
142
146
  ## Validation
143
147
 
144
- Verify provider scope, revision content, the approved-provider configuration,
148
+ Verify provider scope, revision content, the selected environment connection,
145
149
  repeat execution, and final active bindings. Report separately what was checked
146
150
  offline and what was exercised against a configured API.
@@ -0,0 +1,91 @@
1
+ ---
2
+ name: metatables-upgrade-legacy-app
3
+ description: "Upgrade consuming applications from MainSequence 8.x MetaTables or older extracted clients to the installed metatables package. Use for legacy imports, removed SQL scopes, repository compilers and application migration-provider integration. Excludes MetaTables client/API implementation and ordinary schema revision authoring."
4
+ ---
5
+
6
+ # Upgrade a legacy MetaTables application
7
+
8
+ ## Scope and references
9
+
10
+ Update the consuming application to the installed client's current contract.
11
+ Removed scope APIs are intentional; do not restore them in the client or create
12
+ application compatibility shims. Keep identity/login and Git source integration
13
+ in the MainSequence SDK.
14
+
15
+ Read `docs/client/upgrade-legacy-app.md` for the conversion table and before/after
16
+ repository compiler examples. In a copied skill, resolve the `docs/` and
17
+ `examples/` paths here relative to this skill's `references/` directory. In the
18
+ MetaTables source checkout, resolve them from the repository root.
19
+
20
+ Use `docs/client/installation-and-connection.md` to establish the target package
21
+ and compatible SDK versions. Refresh copied skills after a client upgrade with
22
+ `metatables copy-metatables-skills`. Inspect the installed public exports and CLI
23
+ help before mapping an unfamiliar old interface; avoid broad import rewrites.
24
+
25
+ ## Find and replace legacy usage
26
+
27
+ Inspect dependency pins, table imports, shared repository compilers and their
28
+ callers, runtime setup, and existing Alembic provider integration. Useful search
29
+ terms are `mainsequence.client.metatables`, `mainsequence.meta_tables`,
30
+ `MetaTableOperationScopeTable`, `MetaTableOperationScope`, `scope_tables`, and
31
+ `application_migration_providers`.
32
+
33
+ For SQL operations:
34
+
35
+ - Import public table resources from `metatables` and the compiler from
36
+ `metatables.compiled_sql.v1`.
37
+ - Send SQL and a DataSource. The API executes as the authenticated user, and the
38
+ selected engine enforces that user's table permissions on actual SQL access.
39
+ Removing the declared table list does not remove table permissions.
40
+ - Delete scope classes, `scope_tables`, and scope-only wrappers or parameters,
41
+ including `models`, `access`, aliases or `reserved_policy` when they serve only
42
+ scope construction. Update callers and old nested wire payloads together.
43
+ - Do not substitute per-query catalog lookups, registration/binding preflights,
44
+ local permission checks or SQL parsing for the removed scope machinery.
45
+ Registration/finalization remain table lifecycle operations. Preserve separate
46
+ application business rules.
47
+ - Let the compiler obtain DataSource and dialect from the selected API runtime,
48
+ or supply both explicitly for offline compilation. Never use a MetaTable UID as
49
+ a DataSource UID or infer a new database from the retired table list.
50
+ - Preserve the query's physical bindings, bound parameters, result behavior,
51
+ execution mode, offsets, row limits, statement deadlines and HTTP timeouts.
52
+ `select` selects read execution; the other operation labels select write
53
+ execution. These labels do not classify the SQL statement.
54
+
55
+ Read `docs/client/query-and-mutate.md` for current query behavior and
56
+ `docs/adr/api/0007-database-enforced-table-access.md` for the decision. The retained
57
+ `compiled-sql.v1` label does not make the old scoped payload compatible.
58
+
59
+ ## Upgrade application migration integration
60
+
61
+ Keep the existing provider package, namespace, model registry, version-table
62
+ binding and applied revision history. Update bootstrap/import wiring to the
63
+ installed client's public migration interfaces. Do not scaffold a replacement
64
+ provider, rewrite applied history or stamp the database to bypass an upgrade issue.
65
+
66
+ Providers load in the application process from Python references such as
67
+ `ledger.migrations:migration`. The client executes Alembic with the environment
68
+ connection; the API handles authorization, reservations and finalization. The
69
+ environment operator supplies database DDL privileges. Remove retired API provider
70
+ allowlists and aliases; the API needs no application provider code installed.
71
+ MetaTables' internal catalog migrations remain a separate history.
72
+
73
+ Use the [application migrations skill](../metatables-migrations/SKILL.md),
74
+ `docs/client/define-and-migrate-tables.md`, and
75
+ `docs/adr/api/0013-application-owned-migrations.md` for that workflow. Ordinary
76
+ SQL continues through the governed API, independently of the migration connection.
77
+
78
+ ## Verify the upgrade
79
+
80
+ Run imports and offline compilation first. The guide includes an example that
81
+ needs no registration, credentials or running API. Check actual query parameters,
82
+ mode and limits; use existing tests for application business behavior. Review
83
+ provider loading and unchanged Alembic history. Remove obsolete tests that assert
84
+ scope construction rather than recreating that behavior to make them pass.
85
+
86
+ For application execution checks, follow the
87
+ [local development skill](../metatables-local-development/SKILL.md), verify the
88
+ actual local runtime, and exercise the smallest relevant workflow. Respect the
89
+ requested scope for database mutations; a client upgrade alone does not authorize
90
+ hosted migrations. Distinguish offline verification from API execution and from
91
+ hosted-engine verification in the result.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence-metatable
3
- Version: 0.1.4.dev5
3
+ Version: 0.1.5.dev6
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
@@ -4,7 +4,7 @@ from pathlib import Path
4
4
  from typing import Literal
5
5
 
6
6
  import yaml
7
- from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
7
+ from pydantic import BaseModel, ConfigDict, Field, StrictBool
8
8
 
9
9
 
10
10
  class LocalCredentialConfiguration(BaseModel):
@@ -16,7 +16,6 @@ class LocalCredentialConfiguration(BaseModel):
16
16
  class DeploymentConfiguration(BaseModel):
17
17
  model_config = ConfigDict(extra="forbid", frozen=True)
18
18
  local_mode_available: StrictBool = False
19
- application_migration_providers: dict[StrictStr, StrictStr] = Field(default_factory=dict)
20
19
  local_credentials: LocalCredentialConfiguration = Field(default_factory=LocalCredentialConfiguration)
21
20
 
22
21
  @classmethod
@@ -10,7 +10,6 @@ from sqlalchemy.orm import Session
10
10
 
11
11
  from api.app.auth.boundary import trusted_actor_facts
12
12
  from api.app.auth.local_actor import catalog_session
13
- from api.app.routes.application_migrations import router as application_migrations_router
14
13
  from api.app.routes.column_search import router as column_search_router
15
14
  from api.app.routes.contract_validation import router as contract_validation_router
16
15
  from api.app.routes.data_sources import router as data_sources_router
@@ -189,7 +188,6 @@ def create_app(config: RuntimeConfig | None = None) -> FastAPI:
189
188
  service.include_router(managed_finalize_router)
190
189
  service.include_router(table_sql_router)
191
190
  service.include_router(migration_connection_router)
192
- service.include_router(application_migrations_router)
193
191
  service.include_router(table_import_router)
194
192
  service.include_router(source_relations_router)
195
193
  service.include_router(table_registration_router)
@@ -203,7 +203,7 @@ def finalize_managed(
203
203
  table.introspection_snapshot = snapshot
204
204
  table.provisioning_status = "active"
205
205
  table.protect_from_deletion = True
206
- if payload.alembic_revision:
206
+ if "alembic_revision" in payload.model_fields_set:
207
207
  table.alembic_revision = payload.alembic_revision
208
208
  if version_root is not None and uid != version_root:
209
209
  table.alembic_version_meta_table_uid = version_root
@@ -0,0 +1,93 @@
1
+ """Resolve the selected environment connection for application-owned migrations."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any, Literal
6
+ from uuid import UUID
7
+
8
+ from fastapi import APIRouter, Depends, HTTPException, Request, Response
9
+ from pydantic import BaseModel, ConfigDict, Field
10
+ from sqlalchemy import select
11
+ from sqlalchemy.orm import Session
12
+
13
+ from api.app.auth.boundary import trusted_actor_facts
14
+ from api.app.auth.local_actor import catalog_session
15
+ from api.app.routes.table_introspection import data_source_provider
16
+ from api.app.routes.table_sql import authorized_table
17
+ from api.backend.backends.migration_connection import migration_connection_description
18
+ from api.backend.domain.data_source_rules import (
19
+ DataSourceAdmissionError,
20
+ require_data_source_access,
21
+ )
22
+ from api.backend.domain.permission_rules import TrustedActorFacts
23
+ from api.backend.integrations.runtime_data_sources import DataSourceIntegrationError
24
+ from api.backend.persistence.grants import GrantRepository
25
+ from api.backend.persistence.locking import lock_catalog
26
+ from api.backend.persistence.models import MetaTable
27
+
28
+ router = APIRouter(prefix="/meta-tables", tags=["MetaTables"])
29
+
30
+
31
+ class MigrationRequest(BaseModel):
32
+ model_config = ConfigDict(extra="forbid")
33
+ purpose: Literal["schema_migration"] = "schema_migration"
34
+ package: str = ""
35
+ migration_namespace: str = ""
36
+ migration_provider_key: str = ""
37
+ ttl_seconds: int = Field(default=900, ge=60, le=3600)
38
+ code_repository_context: dict[str, Any] | None = None
39
+
40
+
41
+ @router.post("/{table_uid}/migration-connection/")
42
+ def migration_connection(
43
+ table_uid: UUID,
44
+ payload: MigrationRequest,
45
+ request: Request,
46
+ response: Response,
47
+ actor: TrustedActorFacts = Depends(trusted_actor_facts),
48
+ session: Session = Depends(catalog_session),
49
+ sources=Depends(data_source_provider),
50
+ ):
51
+ lock_catalog(session)
52
+ table = authorized_table(session, actor, table_uid, edit=True, reserved_policy="reconcile")
53
+ if (
54
+ table.management_mode != "platform_managed"
55
+ or table.schema_management_mode != "alembic_managed"
56
+ ):
57
+ raise HTTPException(409, "MetaTable is not Alembic managed.")
58
+ for field, value in [
59
+ ("migration_package", payload.package),
60
+ ("migration_namespace", payload.migration_namespace),
61
+ ("migration_provider_key", payload.migration_provider_key),
62
+ ]:
63
+ if value and value != getattr(table, field):
64
+ raise HTTPException(409, "Migration provider identity does not match.")
65
+ root_uid = table.alembic_version_meta_table_uid or table.uid
66
+ tables = list(
67
+ session.scalars(
68
+ select(MetaTable).where(
69
+ (MetaTable.uid == root_uid) | (MetaTable.alembic_version_meta_table_uid == root_uid)
70
+ )
71
+ )
72
+ )
73
+ if any(
74
+ not GrantRepository(session).may_access_table(table_uid=item.uid, actor=actor, edit=True)
75
+ for item in tables
76
+ ):
77
+ raise HTTPException(403, "Writer access is required for every provider catalog table.")
78
+ try:
79
+ source = sources.get(table.data_source_uid)
80
+ require_data_source_access(source, access="write")
81
+ result = migration_connection_description(source)
82
+ except DataSourceAdmissionError as exc:
83
+ raise HTTPException(exc.status_code, exc.code) from exc
84
+ except DataSourceIntegrationError as exc:
85
+ raise HTTPException(503, "DataSource is unavailable.") from exc
86
+ # Include removed provider models so finalization reconciles dropped tables.
87
+ result["meta_table_uids"] = [str(item.uid) for item in tables if item.uid != root_uid]
88
+ control = getattr(request.app.state, "runtime_control", None)
89
+ if control is not None:
90
+ result.update(control.hold_migration(actor.user_uid))
91
+ response.headers["Cache-Control"] = "no-store"
92
+ response.headers["Pragma"] = "no-cache"
93
+ return result
@@ -14,7 +14,9 @@ from api.app.auth.local_actor import catalog_session
14
14
  from api.app.routes.update_crud import admitted_update
15
15
  from api.backend.domain.permission_rules import TrustedActorFacts
16
16
  from api.backend.integrations.run_logs import _query, read_logs
17
- from api.backend.persistence.models import UpdateRun
17
+ from api.backend.persistence.grants import GrantRepository
18
+ from api.backend.persistence.models import MetaTable, UpdateNode, UpdateRun
19
+ from api.backend.persistence.run_graphs import MAX_NODES
18
20
  from metatables.log_contract import LogPage
19
21
 
20
22
  router = APIRouter(tags=["TimeIndexTableUpdates"])
@@ -49,6 +51,37 @@ def run_logs(
49
51
  return read_logs(state, state.log_snapshots, [run], request.query_params, scope=str(run_uid))
50
52
 
51
53
 
54
+ @router.get("/table-update-runs/{run_uid}/invocation-logs/", response_model=LogPage)
55
+ def invocation_logs(
56
+ run_uid: UUID,
57
+ request: Request,
58
+ query: Annotated[LogQuery, Query()],
59
+ actor: TrustedActorFacts = Depends(trusted_actor_facts),
60
+ session: Session = Depends(catalog_session),
61
+ ):
62
+ """One time-ordered page across the readable attempts of the selected run's invocation.
63
+
64
+ `run_uid` narrows the page to one attempt of that invocation. A run without a
65
+ saved graph is its own invocation.
66
+ """
67
+ run = session.get(UpdateRun, run_uid)
68
+ if run is None:
69
+ raise HTTPException(404, "Run not found.")
70
+ admitted_update(session, actor, run.update_uid)
71
+ member = UpdateRun.root_run_uid == run.root_run_uid if run.root_run_uid else UpdateRun.uid == run.uid
72
+ statement = select(UpdateRun).join(UpdateNode, UpdateNode.uid == UpdateRun.update_uid).join(
73
+ MetaTable, MetaTable.uid == UpdateNode.output_table_uid
74
+ ).where(member, GrantRepository.table_access_predicate(actor))
75
+ if query.run_uid is not None:
76
+ statement = statement.where(UpdateRun.uid == query.run_uid)
77
+ runs = list(session.scalars(statement.order_by(UpdateRun.started_at, UpdateRun.uid)))
78
+ if not runs:
79
+ raise HTTPException(422, "Run filter is not a readable attempt of this invocation.")
80
+ state = request.app.state.runtime
81
+ return read_logs(state, state.log_snapshots, runs, request.query_params,
82
+ scope=f"invocation:{run.root_run_uid or run.uid}", max_runs=MAX_NODES)
83
+
84
+
52
85
  @router.get("/time-index-table-updates/{update_uid}/logs/", response_model=LogPage)
53
86
  def update_logs(
54
87
  update_uid: UUID,
@@ -74,7 +74,6 @@ def runtime_context(
74
74
 
75
75
  result = {
76
76
  "credential_store": state.credential_store.descriptor(),
77
- "application_migrations_available": bool(getattr(deployment, "application_migration_providers", {})),
78
77
  "is_admin": caller.is_admin,
79
78
  "user_uid": str(caller.user_uid),
80
79
  "local_mode": state.config.local_mode,
@@ -16,6 +16,7 @@ from api.app.auth.local_actor import catalog_session
16
16
  from api.app.routes.table_response import project_table_response
17
17
  from api.app.routes.update_runs import _run_payload
18
18
  from api.backend.domain.permission_rules import TrustedActorFacts
19
+ from api.backend.persistence import run_graphs
19
20
  from api.backend.persistence.grants import GrantRepository
20
21
  from api.backend.persistence.labels import LabelRepository
21
22
  from api.backend.persistence.models import (
@@ -207,7 +208,7 @@ def list_runs(request: Request, actor: TrustedActorFacts = Depends(trusted_actor
207
208
  item = _run_payload(row)
208
209
  graph = session.get(UpdateRunGraph, row.root_run_uid) if row.root_run_uid else None
209
210
  saved = next((node for node in graph.snapshot['nodes'] if node['id'] == f'update:{row.update_uid}'), None) if graph else None
210
- item['updater_label'] = saved['label'] if saved else session.get(UpdateNode, row.update_uid).update_hash
211
+ item['updater_label'] = saved['label'] if saved else run_graphs.updater_label(session.get(UpdateNode, row.update_uid))
211
212
  item['graph_availability'] = 'available' if graph else 'unavailable'
212
213
  if graph is None:
213
214
  item['root_run_uid'] = None
@@ -220,9 +221,12 @@ def get_run(run_uid: UUID, actor: TrustedActorFacts = Depends(trusted_actor_fact
220
221
  run = session.get(UpdateRun, run_uid)
221
222
  if run is None:
222
223
  raise HTTPException(404, 'Run not found.')
223
- admitted_update(session, actor, run.update_uid)
224
+ update = admitted_update(session, actor, run.update_uid)
224
225
  result = _run_payload(run)
225
- if run.root_run_uid is None or session.get(UpdateRunGraph, run.root_run_uid) is None:
226
+ graph = session.get(UpdateRunGraph, run.root_run_uid) if run.root_run_uid else None
227
+ saved = next((node for node in graph.snapshot['nodes'] if node['id'] == f'update:{run.update_uid}'), None) if graph else None
228
+ result['updater_label'] = saved['label'] if saved else run_graphs.updater_label(update)
229
+ if graph is None:
226
230
  result.update(root_run_uid=None, graph_availability='unavailable')
227
231
  return result
228
232
 
@@ -167,24 +167,11 @@ class PostgreSQLCatalog:
167
167
  "SELECT pg_advisory_unlock(hashtext('metatables:bootstrap'))"
168
168
  )
169
169
 
170
- @contextmanager
171
- def migration_guard(self, connection):
172
- from sqlalchemy.orm import Session
173
-
174
- with Session(bind=connection.engine) as session:
175
- yield session
176
-
177
170
  @contextmanager
178
171
  def migration_connection(self, engine):
179
172
  with engine.connect() as connection, connection.begin():
180
173
  yield connection
181
174
 
182
- @contextmanager
183
- def application_migration_connection(self, engine):
184
- with self.migration_connection(engine) as connection:
185
- connection.exec_driver_sql("SET LOCAL search_path TO public")
186
- yield connection
187
-
188
175
 
189
176
  class SQLiteCatalog(PostgreSQLCatalog):
190
177
  default_schema = None
@@ -192,17 +179,6 @@ class SQLiteCatalog(PostgreSQLCatalog):
192
179
  def initialize_namespace(self, connection):
193
180
  pass
194
181
 
195
- @contextmanager
196
- def migration_guard(self, connection):
197
- from sqlalchemy.orm import Session
198
- with Session(bind=connection) as session:
199
- yield session
200
-
201
- @contextmanager
202
- def application_migration_connection(self, engine):
203
- with self.migration_connection(engine) as connection:
204
- yield connection
205
-
206
182
  def create_engine(self, url, *, native_values=False):
207
183
  options = {"timeout": 30, "check_same_thread": False}
208
184
  if native_values:
@@ -173,8 +173,6 @@ class CatalogBackend(Protocol):
173
173
  def schema(self, name: str | None) -> str | None: ...
174
174
  def bootstrap_lock(self, engine: Engine) -> AbstractContextManager[None]: ...
175
175
  def migration_connection(self, engine: Engine) -> AbstractContextManager[Connection]: ...
176
- def application_migration_connection(self, engine: Engine) -> AbstractContextManager[Connection]: ...
177
- def migration_guard(self, connection: Connection) -> AbstractContextManager[Session]: ...
178
176
  def schema_object_state(self, connection: Connection, name: str) -> Any: ...
179
177
  def column_type_matches(self, expected: Any, actual: Any, dialect: Any) -> bool: ...
180
178
  def index_names(self, inspector: Any, table: str) -> set[str]: ...
@@ -21,11 +21,6 @@ class HostedCatalog(PostgreSQLCatalog):
21
21
  def initialize_namespace(self, connection):
22
22
  pass
23
23
 
24
- @contextmanager
25
- def application_migration_connection(self, engine):
26
- with self.migration_connection(engine) as connection:
27
- yield connection
28
-
29
24
  def registration_schema(self, source, name):
30
25
  return self.physical_schema(source, name)
31
26
 
@@ -126,14 +121,6 @@ class MySQLCatalog(HostedCatalog):
126
121
  ]:
127
122
  raise CatalogConfigurationError("catalog_index_definition_drift")
128
123
 
129
- @contextmanager
130
- def migration_guard(self, connection):
131
- from sqlalchemy.orm import Session
132
-
133
- # Hold catalog admission while implicit DDL commits use a separate connection.
134
- with Session(connection.engine) as session:
135
- yield session
136
-
137
124
  @contextmanager
138
125
  def migration_connection(self, engine):
139
126
  # DDL implicitly commits on MySQL. The shared bootstrap journal records