mainsequence-metatable 0.1.31.dev58__tar.gz → 0.1.31.dev59__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 (589) hide show
  1. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/PKG-INFO +1 -1
  2. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0013-application-owned-migrations.md +56 -0
  3. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/pyproject.toml +1 -1
  4. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/mainsequence_metatable.egg-info/PKG-INFO +1 -1
  5. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/mainsequence_metatable.egg-info/SOURCES.txt +1 -0
  6. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/managed_finalize.py +36 -17
  7. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/access.py +15 -1
  8. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/projections.py +86 -18
  9. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_application_owned_migrations.py +48 -0
  10. mainsequence_metatable-0.1.31.dev59/tests/e2e/test_managed_finalize_unchanged.py +256 -0
  11. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/analyze-with-sql/SKILL.md +0 -0
  12. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/client/metatables-local-development/SKILL.md +0 -0
  13. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/client/metatables-meta-tables/SKILL.md +0 -0
  14. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/client/metatables-migrations/SKILL.md +0 -0
  15. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/client/metatables-table-discovery/SKILL.md +0 -0
  16. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
  17. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +0 -0
  18. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/discover-tables/SKILL.md +0 -0
  19. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/ms_tau_sdk/PINNED_FROM.txt +0 -0
  20. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/ms_tau_sdk/tau_a2a_runtime_adapter/SKILL.md +0 -0
  21. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/ms_tau_sdk/tau_local_development/SKILL.md +0 -0
  22. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/ms_tau_sdk/tau_project_customization/SKILL.md +0 -0
  23. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/ms_tau_sdk/tau_repository_integration/SKILL.md +0 -0
  24. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.agents/skills/ms_tau_sdk/tau_security_and_access/SKILL.md +0 -0
  25. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/.mainsequence/workflows/metatables-api.yaml +0 -0
  26. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/LICENSE +0 -0
  27. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/MANIFEST.in +0 -0
  28. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/README.md +0 -0
  29. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/alembic.ini +0 -0
  30. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/api/metatables/main.py +0 -0
  31. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/compose.database-tests.yml +0 -0
  32. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/agent/0019-metatables-analyst-agent.md +0 -0
  33. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/agent/0020-analyst-reads-as-its-requester.md +0 -0
  34. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md +0 -0
  35. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +0 -0
  36. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0002-application-administration-and-table-ownership.md +0 -0
  37. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0004-approved-application-migrations.md +0 -0
  38. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
  39. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0006-historical-run-graphs.md +0 -0
  40. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0007-database-enforced-table-access.md +0 -0
  41. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
  42. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
  43. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0008-mysql-mssql-table-workflows.md +0 -0
  44. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0009-shared-credential-store.md +0 -0
  45. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
  46. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
  47. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +0 -0
  48. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0015-timescale-compression-and-retention-policies.md +0 -0
  49. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0016-impact-preflight.md +0 -0
  50. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0017-hosted-request-identity.md +0 -0
  51. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0018-search-document-pipeline.svg +0 -0
  52. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0018-table-search.md +0 -0
  53. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/api/0022-concurrent-requests-and-connection-reuse.md +0 -0
  54. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
  55. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
  56. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/adr/index.md +0 -0
  57. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/api/authentication-and-errors.md +0 -0
  58. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/api/data-sources.md +0 -0
  59. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/api/openapi.json +0 -0
  60. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/api/overview.md +0 -0
  61. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/api/reference.md +0 -0
  62. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/api/tables-and-migrations.md +0 -0
  63. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/api/time-index-and-updates.md +0 -0
  64. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/assets/branding/metatables.svg +0 -0
  65. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/assets/diagrams/local-client-experience.svg +0 -0
  66. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/assets/diagrams/namespace-access.svg +0 -0
  67. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/bounded-transfers.md +0 -0
  68. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/build-an-updater.md +0 -0
  69. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/define-and-migrate-tables.md +0 -0
  70. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/deploy-application-migrations.md +0 -0
  71. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/installation-and-connection.md +0 -0
  72. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/local-storage.md +0 -0
  73. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/query-and-mutate.md +0 -0
  74. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/quickstart.md +0 -0
  75. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/read-existing-time-index-tables.md +0 -0
  76. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/register-existing-tables.md +0 -0
  77. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/tutorial.md +0 -0
  78. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/client/upgrade-legacy-app.md +0 -0
  79. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/concepts/architecture.md +0 -0
  80. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/concepts/data-sources.md +0 -0
  81. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/concepts/identity-and-scope.md +0 -0
  82. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/concepts/permissions-namespaces-labels.md +0 -0
  83. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/concepts/runs-and-execution-graphs.md +0 -0
  84. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
  85. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/concepts/time-index-tables-and-updates.md +0 -0
  86. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/contributing/architecture-and-boundaries.md +0 -0
  87. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/contributing/database-backends.md +0 -0
  88. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/contributing/documentation.md +0 -0
  89. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/contributing/releasing.md +0 -0
  90. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/contributing/testing.md +0 -0
  91. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/README.md +0 -0
  92. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/__init__.py +0 -0
  93. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/bounded_reader.py +0 -0
  94. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/data_sources/README.md +0 -0
  95. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/data_sources/mssql.json +0 -0
  96. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/data_sources/mysql.json +0 -0
  97. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/data_sources/postgresql.json +0 -0
  98. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/data_sources/register.py +0 -0
  99. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/external_table.py +0 -0
  100. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/local_app/README.md +0 -0
  101. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/local_app/__init__.py +0 -0
  102. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/local_app/__main__.py +0 -0
  103. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/local_app/migrations/__init__.py +0 -0
  104. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/local_app/migrations/env.py +0 -0
  105. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/local_app/migrations/script.py.mako +0 -0
  106. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  107. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/local_app/tables.py +0 -0
  108. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/query.py +0 -0
  109. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/quickstart.py +0 -0
  110. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/reader.py +0 -0
  111. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/scripts/__init__.py +0 -0
  112. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/scripts/setup_metatables.py +0 -0
  113. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tables.py +0 -0
  114. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/README.md +0 -0
  115. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/__init__.py +0 -0
  116. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/__main__.py +0 -0
  117. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/data/README.md +0 -0
  118. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  119. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/frames.py +0 -0
  120. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/migrations/__init__.py +0 -0
  121. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/migrations/env.py +0 -0
  122. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/migrations/registry.py +0 -0
  123. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/migrations/script.py.mako +0 -0
  124. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
  125. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  126. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  127. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  128. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/operations.py +0 -0
  129. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/tables.py +0 -0
  130. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/tutorial/updaters.py +0 -0
  131. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/examples/updater.py +0 -0
  132. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/index.md +0 -0
  133. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/operations/catalog-migrations.md +0 -0
  134. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/operations/configuration.md +0 -0
  135. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/operations/hosted-runtime.md +0 -0
  136. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/operations/local-runtime.md +0 -0
  137. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/operations/recovery-and-observability.md +0 -0
  138. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/operations/run-history.md +0 -0
  139. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/operations/run-logs.md +0 -0
  140. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/reference/capabilities.md +0 -0
  141. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/reference/cli.md +0 -0
  142. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/reference/python.md +0 -0
  143. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/security/index.md +0 -0
  144. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/security/ownership-and-sharing.md +0 -0
  145. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/docs/security/permissions.md +0 -0
  146. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/mkdocs.yml +0 -0
  147. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/scripts/__init__.py +0 -0
  148. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/scripts/build_reference.py +0 -0
  149. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/scripts/check_boundaries.py +0 -0
  150. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/scripts/check_client_api_coverage.py +0 -0
  151. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/scripts/check_distribution_sources.py +0 -0
  152. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/scripts/check_docs.py +0 -0
  153. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/scripts/check_examples_debug.py +0 -0
  154. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/scripts/check_project.py +0 -0
  155. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/scripts/dev_release_version.py +0 -0
  156. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/scripts/test_databases.py +0 -0
  157. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/scripts/test_postgresql.py +0 -0
  158. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/setup.cfg +0 -0
  159. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
  160. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
  161. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/mainsequence_metatable.egg-info/requires.txt +0 -0
  162. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
  163. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/__init__.py +0 -0
  164. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/_admin_source.json +0 -0
  165. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/_build.py +0 -0
  166. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/_skill_bundle.py +0 -0
  167. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/analysis.py +0 -0
  168. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/analyst/__init__.py +0 -0
  169. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/__init__.py +0 -0
  170. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/__init__.py +0 -0
  171. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/auth/__init__.py +0 -0
  172. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/auth/boundary.py +0 -0
  173. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/auth/local_actor.py +0 -0
  174. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/bootstrap.py +0 -0
  175. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/configuration.py +0 -0
  176. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/connection_count.py +0 -0
  177. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/credential_admin.py +0 -0
  178. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/development.py +0 -0
  179. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/development_client.py +0 -0
  180. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/error_logging.py +0 -0
  181. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/main.py +0 -0
  182. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/mcp.py +0 -0
  183. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/platform_cache.py +0 -0
  184. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/__init__.py +0 -0
  185. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/access_map.py +0 -0
  186. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/caller.py +0 -0
  187. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/column_search.py +0 -0
  188. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/contract_validation.py +0 -0
  189. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/data_sources.py +0 -0
  190. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/migration_connection.py +0 -0
  191. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/namespaces.py +0 -0
  192. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/run_logs.py +0 -0
  193. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/runtime_context.py +0 -0
  194. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/schema_graph.py +0 -0
  195. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/security.py +0 -0
  196. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_cascade.py +0 -0
  197. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_crud.py +0 -0
  198. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_delete.py +0 -0
  199. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_filter.py +0 -0
  200. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_import.py +0 -0
  201. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_introspection.py +0 -0
  202. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_patch.py +0 -0
  203. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_registration.py +0 -0
  204. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_response.py +0 -0
  205. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_search.py +0 -0
  206. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_search_document.py +0 -0
  207. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_sql.py +0 -0
  208. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
  209. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/time_index_delete.py +0 -0
  210. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/time_index_reads.py +0 -0
  211. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/time_index_stats.py +0 -0
  212. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/timescale_policies.py +0 -0
  213. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/update_batch.py +0 -0
  214. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
  215. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/update_constants.py +0 -0
  216. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/update_crud.py +0 -0
  217. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/update_details.py +0 -0
  218. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/update_graph.py +0 -0
  219. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
  220. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/update_registration.py +0 -0
  221. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/update_runs.py +0 -0
  222. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/routes/update_statistics.py +0 -0
  223. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/runtime.py +0 -0
  224. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/runtime_control.py +0 -0
  225. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/runtime_database.py +0 -0
  226. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/source_passwords.py +0 -0
  227. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/app/transfer.py +0 -0
  228. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/__init__.py +0 -0
  229. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/__init__.py +0 -0
  230. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
  231. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
  232. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
  233. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -0
  234. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
  235. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
  236. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
  237. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
  238. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -0
  239. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
  240. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
  241. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
  242. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
  243. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
  244. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
  245. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
  246. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
  247. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
  248. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +0 -0
  249. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
  250. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/adapters/table_cursor.py +0 -0
  251. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/batch_inspection.py +0 -0
  252. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/catalog.py +0 -0
  253. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
  254. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/catalog_types.py +0 -0
  255. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/connection_pool.py +0 -0
  256. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/contracts.py +0 -0
  257. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/hosted.py +0 -0
  258. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/hosted_access.py +0 -0
  259. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/migration_connection.py +0 -0
  260. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/native.py +0 -0
  261. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/operations.py +0 -0
  262. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/pages.py +0 -0
  263. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/postgresql_access.py +0 -0
  264. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/registry.py +0 -0
  265. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/relation_tables.py +0 -0
  266. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/relational.py +0 -0
  267. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/restricted_sql.py +0 -0
  268. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
  269. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/streaming.py +0 -0
  270. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/backends/timescale.py +0 -0
  271. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/contracts/__init__.py +0 -0
  272. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/contracts/relation_import.py +0 -0
  273. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/contracts/storage_layouts.py +0 -0
  274. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
  275. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/contracts/values.py +0 -0
  276. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/domain/__init__.py +0 -0
  277. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
  278. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
  279. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/domain/index_statistics.py +0 -0
  280. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/domain/label_rules.py +0 -0
  281. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/domain/permission_rules.py +0 -0
  282. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/domain/update_constants.py +0 -0
  283. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/__init__.py +0 -0
  284. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
  285. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
  286. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/credential_store.py +0 -0
  287. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
  288. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
  289. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
  290. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/platform_principals.py +0 -0
  291. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/run_logs.py +0 -0
  292. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
  293. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
  294. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/integrations/source_validation.py +0 -0
  295. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/__init__.py +0 -0
  296. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/env.py +0 -0
  297. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/script.py.mako +0 -0
  298. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
  299. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
  300. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
  301. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
  302. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
  303. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
  304. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
  305. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
  306. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +0 -0
  307. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0010_cascade_targets.py +0 -0
  308. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0011_table_search.py +0 -0
  309. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/0012_table_creator.py +0 -0
  310. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
  311. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/operations/__init__.py +0 -0
  312. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
  313. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
  314. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/operations/create_table.py +0 -0
  315. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
  316. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/operations/import_relations.py +0 -0
  317. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/operations/introspect_table.py +0 -0
  318. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/operations/read_time_index.py +0 -0
  319. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/operations/register_catalog.py +0 -0
  320. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/__init__.py +0 -0
  321. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/cascade.py +0 -0
  322. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/catalog.py +0 -0
  323. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/database.py +0 -0
  324. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/grants.py +0 -0
  325. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/impact.py +0 -0
  326. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/labels.py +0 -0
  327. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/locking.py +0 -0
  328. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/models.py +0 -0
  329. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/physical_operations.py +0 -0
  330. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
  331. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
  332. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
  333. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
  334. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/table_queries.py +0 -0
  335. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/table_response.py +0 -0
  336. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/update_graph.py +0 -0
  337. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
  338. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/updates.py +0 -0
  339. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
  340. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
  341. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/search/__init__.py +0 -0
  342. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/search/documents.py +0 -0
  343. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/search/embeddings.py +0 -0
  344. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/search/index.py +0 -0
  345. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/search/ranking.py +0 -0
  346. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/search/text.py +0 -0
  347. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/backend/search/worker.py +0 -0
  348. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/metatables/__init__.py +0 -0
  349. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/metatables/configuration.yaml +0 -0
  350. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/metatables/main.py +0 -0
  351. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/api/request_timing.py +0 -0
  352. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/cli/__init__.py +0 -0
  353. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/cli/admin_install.py +0 -0
  354. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/cli/app.py +0 -0
  355. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/cli/filters.py +0 -0
  356. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/cli/local.py +0 -0
  357. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/cli/migrations.py +0 -0
  358. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/cli/project.py +0 -0
  359. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/cli/skills.py +0 -0
  360. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/compiled_sql/__init__.py +0 -0
  361. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/compiled_sql/mssql.py +0 -0
  362. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/compiled_sql/v1.py +0 -0
  363. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/dtype_codec.py +0 -0
  364. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/endpoint.py +0 -0
  365. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/README.md +0 -0
  366. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/__init__.py +0 -0
  367. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/bounded_reader.py +0 -0
  368. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/data_sources/README.md +0 -0
  369. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/data_sources/mssql.json +0 -0
  370. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/data_sources/mysql.json +0 -0
  371. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/data_sources/postgresql.json +0 -0
  372. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/data_sources/register.py +0 -0
  373. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/external_table.py +0 -0
  374. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/local_app/README.md +0 -0
  375. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/local_app/__init__.py +0 -0
  376. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/local_app/__main__.py +0 -0
  377. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
  378. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/local_app/migrations/env.py +0 -0
  379. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
  380. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  381. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/local_app/tables.py +0 -0
  382. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/query.py +0 -0
  383. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/quickstart.py +0 -0
  384. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/reader.py +0 -0
  385. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/scripts/__init__.py +0 -0
  386. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/scripts/setup_metatables.py +0 -0
  387. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tables.py +0 -0
  388. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/README.md +0 -0
  389. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/__init__.py +0 -0
  390. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/__main__.py +0 -0
  391. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/data/README.md +0 -0
  392. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  393. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/frames.py +0 -0
  394. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
  395. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/migrations/env.py +0 -0
  396. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
  397. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
  398. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
  399. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  400. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  401. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  402. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/operations.py +0 -0
  403. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/tables.py +0 -0
  404. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/tutorial/updaters.py +0 -0
  405. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/examples/updater.py +0 -0
  406. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/future_registry.py +0 -0
  407. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/hashing.py +0 -0
  408. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/instrumentation.py +0 -0
  409. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/local_connection.py +0 -0
  410. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/local_files.py +0 -0
  411. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/local_run_logs.py +0 -0
  412. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/log_contract.py +0 -0
  413. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/__init__.py +0 -0
  414. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/alembic.py +0 -0
  415. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/connection.py +0 -0
  416. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/env.py +0 -0
  417. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/provider.py +0 -0
  418. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/registry.py +0 -0
  419. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/runner.py +0 -0
  420. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/scaffold.py +0 -0
  421. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/sqlite.py +0 -0
  422. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/templates/__init__.py +0 -0
  423. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/templates/env.py.mako +0 -0
  424. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/templates/script.py.mako +0 -0
  425. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/migrations/tls.py +0 -0
  426. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/models.py +0 -0
  427. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/pydantic_metadata.py +0 -0
  428. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/run_logging.py +0 -0
  429. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/runtime.py +0 -0
  430. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/runtime_context.py +0 -0
  431. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/runtime_contract.py +0 -0
  432. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/schema_names.py +0 -0
  433. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/sdk_compat.py +0 -0
  434. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/sqlalchemy_contracts.py +0 -0
  435. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/storage_layout_contract.py +0 -0
  436. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/time_index_table_refs.py +0 -0
  437. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/transfer.py +0 -0
  438. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/transfer_contract.py +0 -0
  439. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/transport.py +0 -0
  440. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/update_configuration_contract.py +0 -0
  441. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/updaters/__init__.py +0 -0
  442. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/updaters/configuration.py +0 -0
  443. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/updaters/dependencies.py +0 -0
  444. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/updaters/managers.py +0 -0
  445. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/updaters/namespacing.py +0 -0
  446. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/updaters/runner.py +0 -0
  447. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/updaters/updaters.py +0 -0
  448. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/updaters/utils.py +0 -0
  449. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/src/metatables/upload.py +0 -0
  450. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/analyst/test_agent_surface.py +0 -0
  451. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/analyst/test_api_search.py +0 -0
  452. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/analyst/test_mcp.py +0 -0
  453. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/analyst/test_tools.py +0 -0
  454. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_bootstrap_failure_cause.py +0 -0
  455. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_caller_endpoint.py +0 -0
  456. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_data_source_identity.py +0 -0
  457. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_development_client.py +0 -0
  458. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_hosted_agent.py +0 -0
  459. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_hosted_environment_target.py +0 -0
  460. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_local_mode.py +0 -0
  461. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_platform_fact_cache.py +0 -0
  462. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_request_identity.py +0 -0
  463. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_runtime_bootstrap.py +0 -0
  464. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_runtime_database.py +0 -0
  465. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_runtime_scaffold.py +0 -0
  466. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_runtime_selection.py +0 -0
  467. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_runtime_storage_binding.py +0 -0
  468. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/auth/test_source_passwords.py +0 -0
  469. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/catalog/test_catalog_foundation.py +0 -0
  470. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/catalog/test_contract_projection.py +0 -0
  471. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/catalog/test_database_config.py +0 -0
  472. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/catalog/test_index_statistics.py +0 -0
  473. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/catalog/test_migration.py +0 -0
  474. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/catalog/test_schema_validation.py +0 -0
  475. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/conftest.py +0 -0
  476. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/contracts/capabilities.json +0 -0
  477. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/contracts/client_signatures.json +0 -0
  478. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/contracts/database_operations.json +0 -0
  479. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/contracts/test_bounded_transfer.py +0 -0
  480. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/contracts/test_compiler_runtime_source.py +0 -0
  481. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/contracts/test_relation_batching.py +0 -0
  482. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/contracts/test_relation_import.py +0 -0
  483. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/contracts/test_runtime_contract_compat.py +0 -0
  484. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/contracts/test_storage_layouts.py +0 -0
  485. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/contracts/test_table_contracts.py +0 -0
  486. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/Dockerfile +0 -0
  487. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/Dockerfile.dockerignore +0 -0
  488. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/__init__.py +0 -0
  489. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/conftest.py +0 -0
  490. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/provider/__init__.py +0 -0
  491. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/provider/env.py +0 -0
  492. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
  493. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/test_api_contract.py +0 -0
  494. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/test_application_migration.py +0 -0
  495. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/test_bootstrap_recovery.py +0 -0
  496. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/test_catalog_contract.py +0 -0
  497. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/test_credential_catalog.py +0 -0
  498. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/test_physical_contract.py +0 -0
  499. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/test_relation_import.py +0 -0
  500. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/test_runtime_bootstrap.py +0 -0
  501. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/test_sql_security.py +0 -0
  502. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_backend/test_update_client.py +0 -0
  503. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_operations/test_physical_operations.py +0 -0
  504. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_operations/test_postgresql_operations.py +0 -0
  505. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/database_operations/test_runtime_and_temporal.py +0 -0
  506. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/documentation/test_project_checks.py +0 -0
  507. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_admin_installation.py +0 -0
  508. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_api_endpoint.py +0 -0
  509. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_catalog_outage.py +0 -0
  510. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_client_api_contract.py +0 -0
  511. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_client_api_coverage.py +0 -0
  512. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_client_migration_scaffold.py +0 -0
  513. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_client_migration_tls.py +0 -0
  514. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_client_package.py +0 -0
  515. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_client_signatures.py +0 -0
  516. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_client_value_behaviors.py +0 -0
  517. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_data_source_registry.py +0 -0
  518. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_local_actor_client_api.py +0 -0
  519. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_local_cli_workflow.py +0 -0
  520. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_local_client_selection.py +0 -0
  521. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_managed_finalize_client_api.py +0 -0
  522. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_namespaces_admin_http.py +0 -0
  523. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_public_imports.py +0 -0
  524. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_remaining_client_routes.py +0 -0
  525. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_run_graphs.py +0 -0
  526. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_run_logs.py +0 -0
  527. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_runtime_upgrade.py +0 -0
  528. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_sdk_local_startup.py +0 -0
  529. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_sqlite_runtime.py +0 -0
  530. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_table_delete_client_api.py +0 -0
  531. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_table_filter_client_api.py +0 -0
  532. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_table_introspection_client_api.py +0 -0
  533. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_table_patch_client_api.py +0 -0
  534. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_table_search_api.py +0 -0
  535. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_table_search_document_api.py +0 -0
  536. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_table_search_scale.py +0 -0
  537. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_table_stats_api.py +0 -0
  538. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_table_update_pipeline.py +0 -0
  539. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_table_updates_http.py +0 -0
  540. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_time_index_delete_client_api.py +0 -0
  541. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_time_index_reads_client_api.py +0 -0
  542. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_timescale_policies_client_api.py +0 -0
  543. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_update_batch_client_api.py +0 -0
  544. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
  545. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
  546. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
  547. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/e2e/test_update_registration_client_api.py +0 -0
  548. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/examples/test_documented_examples.py +0 -0
  549. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/examples/test_postgresql_examples.py +0 -0
  550. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/examples/test_setup_launch.py +0 -0
  551. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/examples/test_tutorial.py +0 -0
  552. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_batch_introspection.py +0 -0
  553. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_connection_reuse.py +0 -0
  554. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_credential_store.py +0 -0
  555. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_data_source_rules.py +0 -0
  556. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_local_data_sources.py +0 -0
  557. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_local_run_logs.py +0 -0
  558. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_postgresql_connection.py +0 -0
  559. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_postgresql_sql.py +0 -0
  560. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_postgresql_tables.py +0 -0
  561. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
  562. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_request_timing.py +0 -0
  563. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_serving_policy.py +0 -0
  564. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_source_validation.py +0 -0
  565. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/integrations/test_sqlite_operations.py +0 -0
  566. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/labels/test_labels.py +0 -0
  567. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/operations/test_create_table_operation.py +0 -0
  568. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/operations/test_create_table_postgres.py +0 -0
  569. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/operations/test_physical_operation_journal.py +0 -0
  570. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/operations/test_register_catalog.py +0 -0
  571. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/operations/test_search_documents.py +0 -0
  572. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/operations/test_timescale_policies.py +0 -0
  573. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/packaging/test_client_skills.py +0 -0
  574. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/packaging/test_dev_release_version.py +0 -0
  575. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/packaging/test_distribution_sources.py +0 -0
  576. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/packaging/test_editable_build.py +0 -0
  577. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/packaging/test_installed_distribution.py +0 -0
  578. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/permissions/test_access_map.py +0 -0
  579. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/permissions/test_governed_sql_scope.py +0 -0
  580. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/permissions/test_incremental_security.py +0 -0
  581. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/permissions/test_local_actor_membership.py +0 -0
  582. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/permissions/test_migration_boundary.py +0 -0
  583. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/permissions/test_namespace_grants.py +0 -0
  584. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/permissions/test_security_api.py +0 -0
  585. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/permissions/test_table_body_filter.py +0 -0
  586. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/permissions/test_table_grants.py +0 -0
  587. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/permissions/test_table_queries.py +0 -0
  588. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/tests/permissions/test_workload_principals.py +0 -0
  589. {mainsequence_metatable-0.1.31.dev58 → mainsequence_metatable-0.1.31.dev59}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence-metatable
3
- Version: 0.1.31.dev58
3
+ Version: 0.1.31.dev59
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
@@ -124,6 +124,51 @@ HTTP request/response contract is unchanged. Client inventory improvements requi
124
124
  a package update and application rebuild. API batching benefits existing clients
125
125
  after the shared API is deployed, with larger gains for clients sending batches.
126
126
 
127
+ ### Conditional catalog reconciliation (2026-10-10 amendment)
128
+
129
+ Reconciliation means making the catalog describe the freshly observed physical
130
+ table while preserving declared semantic metadata. It is additional MetaTables
131
+ behavior around Alembic, not an instruction to reapply migration scripts or rebuild
132
+ identical catalog rows. An unchanged Alembic revision does not prove absence of
133
+ physical drift or completion of an earlier catalog finalization.
134
+
135
+ ```mermaid
136
+ flowchart TD
137
+ A[Run pending Alembic revisions] --> B[Fresh admission and physical inspection]
138
+ B --> C[Reconcile physical facts with existing semantic metadata]
139
+ C --> D{Do stored projections match?}
140
+ D -->|Yes| E[Keep existing projection rows and UUIDs]
141
+ D -->|No| F[Replace damaged or changed projections]
142
+ E --> G[Update only changed contract and lifecycle fields]
143
+ F --> G
144
+ G --> H[Fresh security-policy checks and commit]
145
+ ```
146
+
147
+ - Finalization retains the catalog lock, per-table Writer/provider/source checks,
148
+ fresh physical inspection, owner reachability, foreign-key target validation,
149
+ missing-table/removal handling, and Timescale hypertable checks. No physical
150
+ snapshot or authorization result is cached across requests.
151
+ - The API reads existing column, index and foreign-key projections in three batch
152
+ queries. Comparison includes their scalar fields, full contract fragments and
153
+ resolved FK target UIDs, and detects missing, extra or damaged rows. Projection
154
+ row UUIDs and reflection ordering of independent objects are not differences;
155
+ column ordinals and the order of columns inside keys/indexes remain meaningful.
156
+ - Matching projections are kept, even if only the recorded Alembic revision or
157
+ lifecycle metadata changes. Changed projections are replaced inside the existing
158
+ per-table savepoint. Equal-valued contract, snapshot and lifecycle fields are not
159
+ assigned, avoiding unnecessary ORM dirtiness and metadata/search writes.
160
+ - Hosted/local runtime security-policy checks are explicitly retained at commit
161
+ even when table metadata is unchanged. Existing policy reconciliation repairs
162
+ policy differences; equal policies and their JSON permission manifest do not
163
+ require metadata writes. A failed physical check or conversion still fails
164
+ rather than being hidden by equality.
165
+ - A healthy unchanged finalization issues no table/projection metadata DML. A
166
+ matching contract with damaged projections still repairs them. A previously
167
+ committed migration with failed finalization can retry at the same revision;
168
+ physical drift is freshly observed and catalog reconciliation completes without
169
+ replaying already-applied DDL. The response contract and client calls stay the
170
+ same; no consuming-application opt-in is required.
171
+
127
172
  ## MetaTables system migrations
128
173
 
129
174
  Hosted system upgrades also run as a deployment prerequisite Job
@@ -167,3 +212,14 @@ fresh reflection after DDL, unchanged-revision reconciliation, authorization bef
167
212
  inspection, independent failures and dialect fallbacks. PostgreSQL query grouping is
168
213
  checked with a recording driver; SQLite executes real local DDL. Hosted performance
169
214
  and live MySQL/SQL Server/PostgreSQL verification remain pending.
215
+
216
+ The conditional-reconciliation amendment adds SQL-recording checks for zero
217
+ metadata writes and stable projection UUIDs on unchanged finalization, damaged
218
+ scalar/fragment and missing/extra projection repair, revision-only updates,
219
+ semantic changes at the same revision, drift plus failed-finalization retry, and
220
+ fresh permission/missing/inaccessible/owner checks, including self-referencing key
221
+ projection repair. A real local-runtime check verifies zero catalog DML on an
222
+ unchanged upgrade while still refreshing physical security policies, and detects
223
+ a newly added trigger that changes write safety without changing the contract.
224
+ Existing local SQLite application-provider tests verify actual physical drift and recovery without
225
+ reapplying DDL. These are focused non-container checks, not new required CI jobs.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence-metatable"
7
- version = "0.1.31.dev58"
7
+ version = "0.1.31.dev59"
8
8
  description = "Main Sequence MetaTables Python client and standalone API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence-metatable
3
- Version: 0.1.31.dev58
3
+ Version: 0.1.31.dev59
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
@@ -517,6 +517,7 @@ tests/e2e/test_local_actor_client_api.py
517
517
  tests/e2e/test_local_cli_workflow.py
518
518
  tests/e2e/test_local_client_selection.py
519
519
  tests/e2e/test_managed_finalize_client_api.py
520
+ tests/e2e/test_managed_finalize_unchanged.py
520
521
  tests/e2e/test_namespaces_admin_http.py
521
522
  tests/e2e/test_public_imports.py
522
523
  tests/e2e/test_remaining_client_routes.py
@@ -17,6 +17,7 @@ from sqlalchemy.orm import Session
17
17
  from metatables.api.app.auth.boundary import trusted_actor_facts
18
18
  from metatables.api.app.auth.local_actor import catalog_session
19
19
  from metatables.api.app.routes.table_introspection import data_source_provider
20
+ from metatables.api.backend.backends.access import check_table_security_on_commit
20
21
  from metatables.api.backend.backends.operations import (
21
22
  PhysicalConnectionUnavailable,
22
23
  PhysicalIntrospectionError,
@@ -45,8 +46,11 @@ from metatables.api.backend.persistence.models import (
45
46
  TimeIndexTable,
46
47
  )
47
48
  from metatables.api.backend.persistence.projections import (
49
+ contract_projection_matches,
50
+ load_contract_projections,
48
51
  materialize_contract_projection,
49
52
  resolved_foreign_key_targets,
53
+ same_contract_state,
50
54
  )
51
55
 
52
56
  logger = logging.getLogger(__name__)
@@ -194,6 +198,7 @@ def finalize_managed(
194
198
  finally:
195
199
  logger.info("Managed finalization: physical inspection of %s tables took %.3fs",
196
200
  len(eligible), perf_counter() - inspection_started)
201
+ projections = load_contract_projections(session, [uid for uid, *_ in eligible])
197
202
  for uid, table, previous, specialization in eligible:
198
203
  try:
199
204
  snapshot = snapshots[(table.physical_schema, table.physical_table_name)]
@@ -232,13 +237,24 @@ def finalize_managed(
232
237
  )
233
238
  targets = resolved_foreign_key_targets(
234
239
  session, data_source_uid=table.data_source_uid, contract=contract,
240
+ source_table_uid=uid,
235
241
  )
236
- session.execute(delete(MetaTableForeignKey).where(MetaTableForeignKey.source_table_uid == uid))
237
- session.execute(delete(MetaTableIndex).where(MetaTableIndex.meta_table_uid == uid))
238
- session.execute(delete(MetaTableColumn).where(MetaTableColumn.meta_table_uid == uid))
239
- session.flush()
240
- table.table_contract = contract
241
- table.contract_version = contract["version"]
242
+ replace_projection = not contract_projection_matches(projections[uid], contract, targets)
243
+ if replace_projection:
244
+ session.execute(delete(MetaTableForeignKey).where(MetaTableForeignKey.source_table_uid == uid))
245
+ session.execute(delete(MetaTableIndex).where(MetaTableIndex.meta_table_uid == uid))
246
+ session.execute(delete(MetaTableColumn).where(MetaTableColumn.meta_table_uid == uid))
247
+ session.flush()
248
+ updates = {
249
+ "contract_version": contract["version"],
250
+ "physical_schema": contract["physical"]["schema"] or table.physical_schema,
251
+ "provisioning_status": "active",
252
+ "protect_from_deletion": True,
253
+ }
254
+ if not same_contract_state(table.table_contract, contract):
255
+ updates["table_contract"] = contract
256
+ if not same_contract_state(table.introspection_snapshot, snapshot):
257
+ updates["introspection_snapshot"] = snapshot
242
258
  authoring = contract.get("authoring") or {}
243
259
  has_time_profile = (
244
260
  contract.get("table_kind") == "time_indexed"
@@ -254,19 +270,22 @@ def finalize_managed(
254
270
  cadence=spec.cadence,
255
271
  )
256
272
  session.add(specialization)
257
- table.kind = "time_index"
258
- table.physical_schema = contract["physical"]["schema"] or table.physical_schema
259
- convert_time_index_table(source, table, specialization, convert=make_hypertable)
260
- table.introspection_snapshot = snapshot
261
- table.provisioning_status = "active"
262
- table.protect_from_deletion = True
273
+ updates["kind"] = "time_index"
263
274
  if "alembic_revision" in payload.model_fields_set:
264
- table.alembic_revision = payload.alembic_revision
275
+ updates["alembic_revision"] = payload.alembic_revision
265
276
  if version_root is not None and uid != version_root:
266
- table.alembic_version_meta_table_uid = version_root
267
- materialize_contract_projection(
268
- session, table=table, contract=contract, foreign_key_targets=targets
269
- )
277
+ updates["alembic_version_meta_table_uid"] = version_root
278
+ # Do not dirty equal-valued rows: pre-flush hooks see assignments
279
+ # before SQLAlchemy decides whether they need an UPDATE.
280
+ for field, value in updates.items():
281
+ if getattr(table, field) != value:
282
+ setattr(table, field, value)
283
+ convert_time_index_table(source, table, specialization, convert=make_hypertable)
284
+ if replace_projection:
285
+ materialize_contract_projection(
286
+ session, table=table, contract=contract, foreign_key_targets=targets
287
+ )
288
+ check_table_security_on_commit(session, table)
270
289
  rows.append(_row(table, uid, previous=previous, specialization=specialization,
271
290
  exists=True, finalized=previous != "active"))
272
291
  except (CatalogInvariantError, ContractValidationError, IntegrityError) as exc:
@@ -5,6 +5,7 @@ runtime DataSource's resolved platform Secret, never persisted in the catalog.
5
5
  """
6
6
 
7
7
  import hmac
8
+ import json
8
9
  from dataclasses import dataclass, field
9
10
  from hashlib import sha256
10
11
 
@@ -328,7 +329,12 @@ class DatabaseAccess:
328
329
  self.refresh_policies(session, tables=self.policy_scope(session, tables))
329
330
  desired = self.plan(session)
330
331
  self.apply(session, desired, state.manifest, full=inspect_objects)
331
- state.manifest, state.pending = desired, False
332
+ # JSON loads arrays as lists, while plan() builds tuples. Compare the
333
+ # persisted representation so equal grants do not rewrite security state.
334
+ if json.dumps(state.manifest, sort_keys=True) != json.dumps(desired, sort_keys=True):
335
+ state.manifest = desired
336
+ if state.pending:
337
+ state.pending = False
332
338
  session.flush()
333
339
 
334
340
  def reconcile_change(self, session, *, tables, full=False):
@@ -439,6 +445,14 @@ def install_session_security(session, resolver):
439
445
  session.info["sql_security_resolver"] = resolver
440
446
 
441
447
 
448
+ def check_table_security_on_commit(session, table):
449
+ """Finalization checks physical policies even when metadata needs no writes."""
450
+ resolver = session.info.get("sql_security_resolver")
451
+ if resolver is not None and table.data_source_uid == resolver().source.uid:
452
+ session.info.setdefault("sql_security_tables", []).append(table)
453
+ session.info["sql_security_changed"] = True
454
+
455
+
442
456
  def _changed(session, *_):
443
457
  resolver = session.info.get("sql_security_resolver")
444
458
  relevant_types = (MetaTable, MetaTableGrant, Namespace, NamespaceGrant, DataSource)
@@ -2,6 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import json
6
+ from collections import Counter
5
7
  from uuid import UUID
6
8
 
7
9
  from sqlalchemy import select
@@ -15,6 +17,69 @@ from metatables.api.backend.persistence.models import (
15
17
  MetaTableIndex,
16
18
  )
17
19
 
20
+ # Compare persisted scalar fields as well as fragments: either can be damaged
21
+ # independently. Row UUIDs and retrieval order are not contract state.
22
+ _PROJECTION_FIELDS = {
23
+ "columns": (MetaTableColumn, "meta_table_uid", (
24
+ "name", "logical_name", "data_type", "backend_type", "nullable",
25
+ "primary_key", "unique", "ordinal_position", "description", "label",
26
+ )),
27
+ "indexes": (MetaTableIndex, "meta_table_uid", (
28
+ "name", "columns", "unique", "method", "expression",
29
+ )),
30
+ "foreign_keys": (MetaTableForeignKey, "source_table_uid", (
31
+ "name", "source_columns", "target_columns", "on_delete",
32
+ )),
33
+ }
34
+
35
+
36
+ def load_contract_projections(session: Session, table_uids: list[UUID]) -> dict:
37
+ """Read one batch under the caller's catalog lock; never cache across requests."""
38
+ projections = {uid: {kind: [] for kind in _PROJECTION_FIELDS} for uid in table_uids}
39
+ if not table_uids:
40
+ return projections
41
+ for kind, (model, owner, fields) in _PROJECTION_FIELDS.items():
42
+ for row in session.scalars(select(model).where(getattr(model, owner).in_(table_uids))):
43
+ values = {field: getattr(row, field) for field in fields}
44
+ values["contract_fragment"] = row.contract_fragment
45
+ if kind == "foreign_keys":
46
+ values["target_table_uid"] = str(row.target_table_uid)
47
+ projections[getattr(row, owner)][kind].append(values)
48
+ return projections
49
+
50
+
51
+ def contract_projection_matches(projection: dict, contract: dict, targets: list[UUID]) -> bool:
52
+ """Require exact projection contents, including duplicate/extra/missing rows."""
53
+ def encode(value):
54
+ return json.dumps(value, sort_keys=True, separators=(",", ":"))
55
+
56
+ for kind, (_, _, fields) in _PROJECTION_FIELDS.items():
57
+ expected = []
58
+ for position, fragment in enumerate(contract[kind]):
59
+ values = {field: fragment[field] for field in fields}
60
+ values["contract_fragment"] = fragment
61
+ if kind == "foreign_keys":
62
+ values["target_table_uid"] = str(targets[position])
63
+ expected.append(values)
64
+ if Counter(map(encode, projection[kind])) != Counter(map(encode, expected)):
65
+ return False
66
+ return True
67
+
68
+
69
+ def same_contract_state(previous: dict, current: dict) -> bool:
70
+ """Ignore reflection ordering of object lists, retaining order inside each object."""
71
+ if not isinstance(previous, dict) or not isinstance(current, dict):
72
+ return False
73
+
74
+ def canonical(value):
75
+ return {
76
+ **value,
77
+ **{key: sorted(value[key], key=lambda item: json.dumps(item, sort_keys=True))
78
+ for key in ("columns", "indexes", "foreign_keys", "constraints")
79
+ if isinstance(value.get(key), list)},
80
+ }
81
+ return canonical(previous) == canonical(current)
82
+
18
83
 
19
84
  def _target_for_foreign_key(
20
85
  session: Session,
@@ -40,15 +105,24 @@ def _target_for_foreign_key(
40
105
  return target
41
106
 
42
107
 
43
- def _check_target_columns(session: Session, *, foreign_key: dict, target: MetaTable) -> None:
44
- columns = list(
45
- session.scalars(
108
+ def _check_target_columns(
109
+ session: Session, *, foreign_key: dict, target: MetaTable, contract: dict | None = None
110
+ ) -> None:
111
+ if contract is None:
112
+ columns = [{"name": row.name, "primary_key": row.primary_key, "unique": row.unique}
113
+ for row in session.scalars(
46
114
  select(MetaTableColumn)
47
115
  .where(MetaTableColumn.meta_table_uid == target.uid)
48
116
  .order_by(MetaTableColumn.ordinal_position)
49
- )
50
- )
51
- target_names = {column.name for column in columns}
117
+ )]
118
+ indexes = [index.columns for index in session.scalars(select(MetaTableIndex).where(
119
+ MetaTableIndex.meta_table_uid == target.uid, MetaTableIndex.unique.__eq__(True)))]
120
+ else:
121
+ # A self-reference must validate against its freshly observed contract,
122
+ # not a damaged projection that this finalization is about to repair.
123
+ columns = sorted(contract["columns"], key=lambda column: column["ordinal_position"])
124
+ indexes = [index["columns"] for index in contract["indexes"] if index["unique"]]
125
+ target_names = {column["name"] for column in columns}
52
126
  wanted = foreign_key["target_columns"]
53
127
  missing = [name for name in wanted if name not in target_names]
54
128
  if missing:
@@ -58,19 +132,11 @@ def _check_target_columns(session: Session, *, foreign_key: dict, target: MetaTa
58
132
  field="table_contract.foreign_keys",
59
133
  )
60
134
  single_unique = len(wanted) == 1 and any(
61
- column.name == wanted[0] and (column.primary_key or column.unique) for column in columns
135
+ column["name"] == wanted[0] and (column["primary_key"] or column["unique"]) for column in columns
62
136
  )
63
- primary_key_names = [column.name for column in columns if column.primary_key]
137
+ primary_key_names = [column["name"] for column in columns if column["primary_key"]]
64
138
  primary_key_set = bool(primary_key_names) and primary_key_names == wanted
65
- unique_index = any(
66
- list(index.columns or []) == wanted
67
- for index in session.scalars(
68
- select(MetaTableIndex).where(
69
- MetaTableIndex.meta_table_uid == target.uid,
70
- MetaTableIndex.unique.__eq__(True),
71
- )
72
- )
73
- )
139
+ unique_index = any(list(index or []) == wanted for index in indexes)
74
140
  if not (single_unique or primary_key_set or unique_index):
75
141
  raise ContractValidationError(
76
142
  "Foreign key target_columns must reference a primary-key or unique MetaTable column set.",
@@ -84,6 +150,7 @@ def resolved_foreign_key_targets(
84
150
  *,
85
151
  data_source_uid: UUID,
86
152
  contract: dict,
153
+ source_table_uid: UUID | None = None,
87
154
  ) -> list[UUID]:
88
155
  """Preflight all targets before registering the new source table."""
89
156
  targets = []
@@ -93,7 +160,8 @@ def resolved_foreign_key_targets(
93
160
  source_data_source_uid=data_source_uid,
94
161
  foreign_key=foreign_key,
95
162
  )
96
- _check_target_columns(session, foreign_key=foreign_key, target=target)
163
+ _check_target_columns(session, foreign_key=foreign_key, target=target,
164
+ contract=contract if target.uid == source_table_uid else None)
97
165
  targets.append(target.uid)
98
166
  return targets
99
167
 
@@ -127,6 +127,54 @@ def test_two_client_only_providers_evolve_downgrade_and_preserve_system_history(
127
127
  engine.dispose()
128
128
 
129
129
 
130
+ @pytest.mark.parametrize("api_runtime", ["sqlite"], indirect=True)
131
+ def test_unchanged_upgrade_has_no_metadata_writes_and_refreshes_security(
132
+ api_runtime, providers, monkeypatch
133
+ ):
134
+ from sqlalchemy import event
135
+ from sqlalchemy.orm import Session
136
+
137
+ from metatables import MetaTable
138
+ from metatables.api.backend.backends.sqlite_access import SQLiteAccess
139
+ from metatables.api.backend.persistence.models import SQLTablePolicy
140
+
141
+ migration = providers[0]
142
+ author(migration)
143
+ run_migration(migration)
144
+ uid = UUID(MetaTable.get(identifier="client_ledger.item").uid)
145
+ engine = api_runtime.app.state.runtime.bootstrap.engine
146
+ statements, validated = [], []
147
+ validate = SQLiteAccess.validate_table
148
+
149
+ def fresh_validate(access, connection, table):
150
+ validated.append(table.uid)
151
+ return validate(access, connection, table)
152
+
153
+ def record(_connection, _cursor, sql, _parameters, _context, _executemany):
154
+ if sql.lstrip().split()[0].upper() in {"INSERT", "UPDATE", "DELETE"}:
155
+ statements.append(sql)
156
+
157
+ monkeypatch.setattr(SQLiteAccess, "validate_table", fresh_validate)
158
+ event.listen(engine, "before_cursor_execute", record)
159
+ try:
160
+ result = run_migration(migration)
161
+ assert result["ok"] and not result["migrated"]
162
+ assert uid in validated
163
+ assert statements == []
164
+ # A trigger changes write safety without changing the table contract.
165
+ with engine.begin() as connection:
166
+ connection.exec_driver_sql("CREATE TRIGGER observed_trigger AFTER INSERT ON client_ledger_item "
167
+ "BEGIN SELECT 1; END")
168
+ run_migration(migration)
169
+ with Session(engine) as session:
170
+ assert session.get(SQLTablePolicy, uid).writable is False
171
+ assert not any("meta_table " in sql.lower() or "meta_table_column" in sql.lower()
172
+ or "meta_table_index" in sql.lower() or "meta_table_foreign_key" in sql.lower()
173
+ for sql in statements)
174
+ finally:
175
+ event.remove(engine, "before_cursor_execute", record)
176
+
177
+
130
178
  @pytest.mark.parametrize("api_runtime", ["sqlite"], indirect=True)
131
179
  def test_failed_finalization_can_be_retried_without_reapplying_ddl(
132
180
  api_runtime, providers, monkeypatch