mainsequence-metatable 0.1.5.dev6__tar.gz → 0.1.6__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.
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/.agents/skills/client/metatables-local-development/SKILL.md +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/.agents/skills/client/metatables-meta-tables/SKILL.md +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/.agents/skills/client/metatables-migrations/SKILL.md +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/MANIFEST.in +3 -2
- {mainsequence_metatable-0.1.5.dev6/mainsequence_metatable.egg-info → mainsequence_metatable-0.1.6}/PKG-INFO +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/README.md +1 -1
- mainsequence_metatable-0.1.6/alembic.ini +3 -0
- mainsequence_metatable-0.1.6/api/metatables/main.py +5 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +7 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0004-approved-application-migrations.md +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0007-database-enforced-table-access.md +8 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0008-mysql-mssql-table-workflows.md +12 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0010-import-external-tables-and-views.md +17 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0013-application-owned-migrations.md +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/client/0003-api-endpoint-resolution.md +96 -48
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +10 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/index.md +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/client/build-an-updater.md +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/client/installation-and-connection.md +25 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/client/query-and-mutate.md +44 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/client/quickstart.md +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/client/read-existing-time-index-tables.md +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/client/register-existing-tables.md +4 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/client/tutorial.md +11 -11
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/client/upgrade-legacy-app.md +10 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/concepts/architecture.md +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/contributing/architecture-and-boundaries.md +16 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/contributing/documentation.md +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/contributing/testing.md +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/README.md +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/data_sources/README.md +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/local_app/README.md +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/local_app/__main__.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/local_app/migrations/__init__.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/local_app/migrations/env.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/scripts/setup_metatables.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/README.md +7 -7
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/docs}/examples/tutorial/__main__.py +2 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/docs}/examples/tutorial/migrations/__init__.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/migrations/env.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/operations/catalog-migrations.md +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/operations/configuration.md +5 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/operations/hosted-runtime.md +13 -7
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/reference/python.md +1 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/pyproject.toml +10 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/scripts/build_reference.py +5 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/scripts/check_boundaries.py +21 -14
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/scripts/check_client_api_coverage.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/scripts/check_distribution_sources.py +15 -17
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/scripts/check_docs.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/scripts/test_postgresql.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/mainsequence_metatable.egg-info}/PKG-INFO +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src}/mainsequence_metatable.egg-info/SOURCES.txt +214 -212
- mainsequence_metatable-0.1.6/src/mainsequence_metatable.egg-info/top_level.txt +1 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/__init__.py +1 -0
- mainsequence_metatable-0.1.5.dev6/scripts/build_package.py → mainsequence_metatable-0.1.6/src/metatables/_build.py +7 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/_skill_bundle.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/auth/boundary.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/auth/local_actor.py +7 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/bootstrap.py +28 -23
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/credential_admin.py +12 -12
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/development.py +7 -7
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/main.py +54 -47
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/column_search.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/contract_validation.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/data_sources.py +19 -13
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/managed_finalize.py +16 -16
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/migration_connection.py +11 -11
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/namespaces.py +9 -9
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/run_logs.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/runtime_context.py +7 -7
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/schema_graph.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/security.py +12 -12
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_cascade.py +11 -11
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_crud.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_delete.py +13 -13
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_filter.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_import.py +14 -11
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_introspection.py +15 -13
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_patch.py +16 -13
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_registration.py +18 -15
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_response.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_search_document.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_sql.py +19 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/table_update_pipeline.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/time_index_delete.py +12 -12
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/time_index_reads.py +18 -13
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/time_index_stats.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/update_batch.py +15 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/update_chunk_insert.py +22 -17
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/update_constants.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/update_crud.py +12 -12
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/update_details.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/update_graph.py +9 -9
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/update_index_statistics.py +17 -14
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/update_registration.py +10 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/update_runs.py +10 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/routes/update_statistics.py +10 -7
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/runtime.py +21 -15
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/runtime_control.py +8 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/source_passwords.py +4 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/source_registrations.py +12 -9
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/access.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/maintenance/runtime.py +7 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/postgresql_cascade_delete.py +6 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/postgresql_connection.py +7 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/postgresql_introspection.py +7 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/postgresql_table_delete.py +7 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/postgresql_tables.py +7 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/postgresql_time_index.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/postgresql_time_index_delete.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/postgresql_time_index_queries.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/postgresql_time_index_stats.py +7 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/postgresql_time_index_write.py +7 -7
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/source_validation.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/sqlite_connection.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/sqlite_introspection.py +6 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/table_cursor.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/catalog.py +8 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/contracts.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/hosted.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/hosted_access.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/migration_connection.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/native.py +15 -11
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/operations.py +7 -7
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/postgresql_access.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/registry.py +14 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/relation_tables.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/relational.py +10 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/restricted_sql.py +7 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/sqlite_access.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/contracts/values.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/domain/catalog_rules.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/catalog_data_sources.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/credential_keys.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/credential_store.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/data_source_provider.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/local_credentials.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/local_workspace.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/runtime_binding.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/runtime_data_sources.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/source_validation.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/env.py +5 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/versions/0001_initial.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/versions/0002_security_model.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/versions/0004_historical_run_graphs.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/versions/0005_database_access.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/versions/0006_local_credentials.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/versions/0007_external_relation_names.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/versions/0008_upload_receipts.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/operations/bootstrap_migrations.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/operations/catalog_schema.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/operations/create_table.py +14 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/operations/finalize_managed.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/operations/import_relations.py +17 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/operations/introspect_table.py +10 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/operations/read_time_index.py +7 -7
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/operations/register_catalog.py +14 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/cascade.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/catalog.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/database.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/grants.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/labels.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/locking.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/models.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/physical_operations.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/projections.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/run_graphs.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/schema_graph.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/table_body_filter.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/table_queries.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/table_response.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/update_graph.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/update_pipeline.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/updates.py +4 -4
- mainsequence_metatable-0.1.6/src/metatables/api/metatables/main.py +8 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/cli/app.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/cli/local.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/cli/project.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/compiled_sql/v1.py +16 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/endpoint.py +50 -15
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/README.md +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/data_sources/README.md +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/local_app/README.md +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/local_app/__main__.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/local_app/migrations/__init__.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/local_app/migrations/env.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/scripts/setup_metatables.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/README.md +8 -8
- {mainsequence_metatable-0.1.5.dev6/docs → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/__main__.py +2 -3
- {mainsequence_metatable-0.1.5.dev6/docs → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/migrations/__init__.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/migrations/env.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/models.py +4 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/runtime_context.py +1 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/runtime_contract.py +28 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/auth/test_caller_assertions.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/auth/test_data_source_identity.py +7 -7
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/auth/test_development_client.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/auth/test_hosted_environment_target.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/auth/test_local_mode.py +19 -19
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/auth/test_platform_fact_cache.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/auth/test_runtime_bootstrap.py +27 -27
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/auth/test_runtime_scaffold.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/auth/test_runtime_selection.py +19 -19
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/auth/test_runtime_storage_binding.py +44 -21
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/auth/test_source_passwords.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/catalog/test_catalog_foundation.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/catalog/test_contract_projection.py +8 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/catalog/test_database_config.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/catalog/test_index_statistics.py +4 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/catalog/test_migration.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/conftest.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/contracts/capabilities.json +1 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/contracts/test_bounded_transfer.py +12 -12
- mainsequence_metatable-0.1.6/tests/contracts/test_compiler_runtime_source.py +139 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/contracts/test_relation_batching.py +16 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/contracts/test_relation_import.py +7 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/contracts/test_storage_layouts.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/contracts/test_table_contracts.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/Dockerfile +0 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/conftest.py +21 -21
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/test_api_contract.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/test_application_migration.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/test_bootstrap_recovery.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/test_catalog_contract.py +14 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/test_credential_catalog.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/test_physical_contract.py +16 -16
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/test_relation_import.py +22 -22
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/test_runtime_bootstrap.py +12 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/test_sql_security.py +14 -14
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/test_update_client.py +19 -15
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_operations/test_physical_operations.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_operations/test_postgresql_operations.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_operations/test_runtime_and_temporal.py +11 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/documentation/test_project_checks.py +21 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_api_endpoint.py +167 -17
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_application_owned_migrations.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_catalog_outage.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_client_api_contract.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_client_package.py +16 -12
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_data_source_registry.py +24 -24
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_local_actor_client_api.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_local_cli_workflow.py +9 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_local_client_selection.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_managed_finalize_client_api.py +15 -12
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_namespaces_admin_http.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_remaining_client_routes.py +31 -25
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_run_graphs.py +12 -12
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_run_logs.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_runtime_transition.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_sdk_local_startup.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_sqlite_runtime.py +18 -18
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_table_delete_client_api.py +13 -11
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_table_filter_client_api.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_table_introspection_client_api.py +13 -10
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_table_patch_client_api.py +9 -9
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_table_search_document_api.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_table_stats_api.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_table_update_pipeline.py +9 -9
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_table_updates_http.py +9 -9
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_time_index_delete_client_api.py +16 -11
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_time_index_reads_client_api.py +14 -11
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_update_batch_client_api.py +9 -9
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_update_chunk_insert_client_api.py +17 -12
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_update_dependency_priority_client_api.py +11 -11
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_update_index_statistics_client_api.py +14 -12
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_update_registration_client_api.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/examples/test_documented_examples.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/examples/test_postgresql_examples.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/examples/test_setup_launch.py +13 -13
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/examples/test_tutorial.py +14 -9
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/integrations/test_credential_store.py +17 -14
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/integrations/test_data_source_rules.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/integrations/test_local_data_sources.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/integrations/test_postgresql_connection.py +9 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/integrations/test_postgresql_sql.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/integrations/test_postgresql_tables.py +9 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/integrations/test_postgresql_time_index_queries.py +18 -11
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/integrations/test_source_validation.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/integrations/test_sqlite_operations.py +19 -17
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/labels/test_labels.py +16 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/operations/test_create_table_operation.py +8 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/operations/test_create_table_postgres.py +11 -8
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/operations/test_physical_operation_journal.py +4 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/operations/test_register_catalog.py +13 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/operations/test_search_documents.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/packaging/test_client_skills.py +1 -1
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/packaging/test_distribution_sources.py +21 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/packaging/test_editable_build.py +10 -4
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/packaging/test_installed_distribution.py +63 -14
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/permissions/test_governed_sql_scope.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/permissions/test_local_actor_membership.py +3 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/permissions/test_migration_boundary.py +2 -2
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/permissions/test_namespace_grants.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/permissions/test_security_api.py +14 -14
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/permissions/test_table_body_filter.py +7 -7
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/permissions/test_table_grants.py +5 -5
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/permissions/test_table_queries.py +6 -6
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/uv.lock +1 -1
- mainsequence_metatable-0.1.5.dev6/alembic.ini +0 -3
- mainsequence_metatable-0.1.5.dev6/api/metatables/main.py +0 -8
- mainsequence_metatable-0.1.5.dev6/mainsequence_metatable.egg-info/top_level.txt +0 -3
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/.mainsequence/workflows/metatables-api.yaml +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/LICENSE +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/compose.database-tests.yml +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0002-application-administration-and-table-ownership.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0006-historical-run-graphs.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0009-shared-credential-store.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/api/authentication-and-errors.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/api/data-sources.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/api/openapi.json +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/api/overview.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/api/reference.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/api/tables-and-migrations.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/api/time-index-and-updates.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/assets/branding/metatables.svg +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/assets/diagrams/local-client-experience.svg +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/client/bounded-transfers.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/client/define-and-migrate-tables.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/client/local-storage.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/concepts/data-sources.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/concepts/identity-and-scope.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/concepts/permissions-namespaces-labels.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/concepts/runs-and-execution-graphs.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/concepts/time-index-tables-and-updates.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/contributing/database-backends.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/contributing/releasing.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/bounded_reader.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/data_sources/mssql.json +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/data_sources/mysql.json +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/data_sources/postgresql.json +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/data_sources/register.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/external_table.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/local_app/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/local_app/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/local_app/tables.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/query.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/quickstart.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/reader.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/scripts/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tables.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/data/README.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/frames.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.5.dev6/api/app → mainsequence_metatable-0.1.6/docs/examples/tutorial/migrations/versions}/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
- {mainsequence_metatable-0.1.5.dev6/api/app/routes → mainsequence_metatable-0.1.6/docs/examples/tutorial/migrations/versions/metatables_market_tutorial}/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/operations.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/tables.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/tutorial/updaters.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/examples/updater.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/index.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/operations/local-runtime.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/operations/recovery-and-observability.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/operations/run-history.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/operations/run-logs.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/reference/capabilities.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/reference/cli.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/security/index.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/security/ownership-and-sharing.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/docs/security/permissions.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/mkdocs.yml +0 -0
- {mainsequence_metatable-0.1.5.dev6/api/backend/operations → mainsequence_metatable-0.1.6/scripts}/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/scripts/check_examples_debug.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/scripts/check_project.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/scripts/dev_release_version.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/scripts/test_databases.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/setup.cfg +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src}/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src}/mainsequence_metatable.egg-info/entry_points.txt +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src}/mainsequence_metatable.egg-info/requires.txt +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/_admin_source.json +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6/docs/examples/tutorial/migrations/versions → mainsequence_metatable-0.1.6/src/metatables/api/app}/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/auth/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/auth/caller_assertions.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/configuration.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/development_client.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/platform_cache.py +0 -0
- {mainsequence_metatable-0.1.5.dev6/docs/examples/tutorial/migrations/versions/metatables_market_tutorial → mainsequence_metatable-0.1.6/src/metatables/api/app/routes}/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/app/transfer.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/maintenance/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/maintenance/temporal.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/adapters/maintenance/validation.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/catalog_ddl.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/catalog_types.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/pages.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/backends/streaming.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/contracts/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/contracts/relation_import.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/contracts/storage_layouts.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/contracts/table_contracts.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/domain/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/domain/data_source_rules.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/domain/index_statistics.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/domain/label_rules.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/domain/permission_rules.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/domain/update_constants.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/platform_principals.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/integrations/run_logs.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/migrations/versions/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6/examples/tutorial/migrations/versions → mainsequence_metatable-0.1.6/src/metatables/api/backend/operations}/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/operations/search_documents.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/sqlite_types.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/persistence/upload_receipts.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/backend/presentation/data_source_summary.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/metatables/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/api/metatables/configuration.yaml +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/cli/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/cli/admin_install.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/cli/filters.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/cli/migrations.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/cli/skills.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/compiled_sql/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/compiled_sql/mssql.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/dtype_codec.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/bounded_reader.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/data_sources/mssql.json +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/data_sources/mysql.json +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/data_sources/postgresql.json +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/data_sources/register.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/external_table.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/local_app/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/local_app/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/local_app/tables.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/query.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/quickstart.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/reader.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/scripts/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tables.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/data/README.md +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/frames.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.5.dev6/examples/tutorial/migrations/versions/metatables_market_tutorial → mainsequence_metatable-0.1.6/src/metatables/examples/tutorial/migrations/versions}/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
- {mainsequence_metatable-0.1.5.dev6/scripts → mainsequence_metatable-0.1.6/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial}/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/operations.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/tables.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/tutorial/updaters.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6/src/metatables}/examples/updater.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/future_registry.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/hashing.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/instrumentation.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/local_connection.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/local_files.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/local_run_logs.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/log_contract.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/alembic.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/connection.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/provider.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/runner.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/scaffold.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/templates/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/templates/env.py.mako +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/templates/script.py.mako +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/migrations/tls.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/pydantic_metadata.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/run_logging.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/runtime.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/schema_names.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/sdk_compat.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/sqlalchemy_contracts.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/time_index_table_refs.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/transfer.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/transfer_contract.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/transport.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/update_configuration_contract.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/updaters/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/updaters/configuration.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/updaters/dependencies.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/updaters/managers.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/updaters/namespacing.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/updaters/runner.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/updaters/updaters.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/updaters/utils.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/src/metatables/upload.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/contracts/client_signatures.json +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/contracts/database_operations.json +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/Dockerfile.dockerignore +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/provider/__init__.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/provider/env.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_admin_installation.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_client_api_coverage.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_client_migration_scaffold.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_client_migration_tls.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_client_signatures.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_client_value_behaviors.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/e2e/test_public_imports.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/integrations/test_local_run_logs.py +0 -0
- {mainsequence_metatable-0.1.5.dev6 → mainsequence_metatable-0.1.6}/tests/packaging/test_dev_release_version.py +0 -0
|
@@ -12,11 +12,11 @@ development fixtures and test writes in the local runtime, then return to the
|
|
|
12
12
|
intended environment as part of the requested workflow. Respect an explicitly
|
|
13
13
|
requested target or backend-specific test scope.
|
|
14
14
|
|
|
15
|
-
In a copied skill, resolve the `docs/` and `examples/` paths below relative to
|
|
15
|
+
In a copied skill, resolve the `docs/` and `src/metatables/examples/` paths below relative to
|
|
16
16
|
this skill's `references/` directory. In the MetaTables source checkout, resolve
|
|
17
17
|
them from the repository root. Read `docs/operations/local-runtime.md` for runtime
|
|
18
18
|
selection and persistence, and `docs/client/installation-and-connection.md` when
|
|
19
|
-
installing or troubleshooting. `examples/local_app/README.md` provides a complete
|
|
19
|
+
installing or troubleshooting. `src/metatables/examples/local_app/README.md` provides a complete
|
|
20
20
|
installed-package migration/write/read example.
|
|
21
21
|
|
|
22
22
|
## Select local storage deliberately
|
|
@@ -12,7 +12,7 @@ client. It covers application-facing models and workflows. Client-library
|
|
|
12
12
|
implementation, this repository's development/release tooling, and API internals
|
|
13
13
|
have separate ownership.
|
|
14
14
|
|
|
15
|
-
In a copied skill, resolve the `docs/` and `examples/` paths below relative to
|
|
15
|
+
In a copied skill, resolve the `docs/` and `src/metatables/examples/` paths below relative to
|
|
16
16
|
this skill's `references/` directory. The client CLI bundles the matching version's
|
|
17
17
|
guides and examples there, including their linked documents. In the MetaTables
|
|
18
18
|
source checkout, read the same paths from the repository root.
|
|
@@ -51,7 +51,7 @@ contract. Preserve the user's existing authorization and scope.
|
|
|
51
51
|
evolution.
|
|
52
52
|
- Existing externally owned tables use `register_external_sqlalchemy_model` with
|
|
53
53
|
their actual physical binding. Registration does not create the physical table;
|
|
54
|
-
see `docs/client/register-existing-tables.md` and `examples/external_table.py`.
|
|
54
|
+
see `docs/client/register-existing-tables.md` and `src/metatables/examples/external_table.py`.
|
|
55
55
|
- `backend_managed` is a separate low-level API provisioning intent. Do not use it
|
|
56
56
|
as a substitute for ordinary managed application-table migrations.
|
|
57
57
|
|
|
@@ -62,7 +62,7 @@ are fingerprints, not table identity. See `docs/concepts/identity-and-scope.md`.
|
|
|
62
62
|
|
|
63
63
|
## SQLAlchemy contract rules
|
|
64
64
|
|
|
65
|
-
Use `examples/tables.py` as the tested pattern. Declare an explicit
|
|
65
|
+
Use `src/metatables/examples/tables.py` as the tested pattern. Declare an explicit
|
|
66
66
|
application-prefixed physical name with `schema_table_name(app, concept)`, a
|
|
67
67
|
stable logical identifier, and an intention-rich `__metatable_description__`.
|
|
68
68
|
Give columns useful `info={"label": ..., "description": ...}` metadata. Explain
|
|
@@ -84,7 +84,7 @@ revisions; do not recompute identity from columns or rewrite applied history.
|
|
|
84
84
|
|
|
85
85
|
## Queries and mutations
|
|
86
86
|
|
|
87
|
-
Read `docs/client/query-and-mutate.md` and `examples/query.py`. Use
|
|
87
|
+
Read `docs/client/query-and-mutate.md` and `src/metatables/examples/query.py`. Use
|
|
88
88
|
`compile_sqlalchemy_statement` with bound parameters. The request sends SQL and
|
|
89
89
|
selects one DataSource; the API executes as the authenticated user, and the
|
|
90
90
|
selected database backend enforces Reader/Writer permissions on the tables
|
|
@@ -16,7 +16,7 @@ For upgrading older client imports, SQL scopes or provider integration, use the
|
|
|
16
16
|
[legacy upgrade skill](../metatables-upgrade-legacy-app/SKILL.md). This skill
|
|
17
17
|
covers authoring and running application schema revisions.
|
|
18
18
|
|
|
19
|
-
In a copied skill, resolve the `docs/` and `examples/` paths below relative to
|
|
19
|
+
In a copied skill, resolve the `docs/` and `src/metatables/examples/` paths below relative to
|
|
20
20
|
this skill's `references/` directory. The client CLI bundles the matching version's
|
|
21
21
|
guides and examples there, including their linked documents. In the MetaTables
|
|
22
22
|
source checkout, read the same paths from the repository root.
|
|
@@ -28,7 +28,7 @@ verification within the requested scope.
|
|
|
28
28
|
|
|
29
29
|
Read `docs/client/define-and-migrate-tables.md`,
|
|
30
30
|
`docs/concepts/table-contracts-and-lifecycle.md`, and the tested
|
|
31
|
-
`examples/tables.py`. Managed authoring is migration-first: define SQLAlchemy
|
|
31
|
+
`src/metatables/examples/tables.py`. Managed authoring is migration-first: define SQLAlchemy
|
|
32
32
|
models, select a provider, author and apply a revision with the client, then
|
|
33
33
|
finalize catalog bindings through the API. Use the
|
|
34
34
|
[table skill](../metatables-meta-tables/SKILL.md) for contract design.
|
|
@@ -106,7 +106,7 @@ and finalizes contracts through the API. Treat connection material as private.
|
|
|
106
106
|
|
|
107
107
|
Use the application's setup entry point when available. Python code can call
|
|
108
108
|
`metatables.upgrade_application("ledger.migrations:migration")`;
|
|
109
|
-
`examples/scripts/setup_metatables.py` shows the pattern. Remove the retired
|
|
109
|
+
`src/metatables/examples/scripts/setup_metatables.py` shows the pattern. Remove the retired
|
|
110
110
|
`application_migration_providers` setting and use Python references instead of aliases.
|
|
111
111
|
Application migration histories remain separate from API system migrations.
|
|
112
112
|
|
|
@@ -12,7 +12,7 @@ client. It covers application-facing models and workflows. Client-library
|
|
|
12
12
|
implementation, this repository's development/release tooling, and API internals
|
|
13
13
|
have separate ownership.
|
|
14
14
|
|
|
15
|
-
In a copied skill, resolve the `docs/` and `examples/` paths below relative to
|
|
15
|
+
In a copied skill, resolve the `docs/` and `src/metatables/examples/` paths below relative to
|
|
16
16
|
this skill's `references/` directory. The client CLI bundles the matching version's
|
|
17
17
|
guides and examples there, including their linked documents. In the MetaTables
|
|
18
18
|
source checkout, read the same paths from the repository root.
|
|
@@ -24,8 +24,8 @@ verification within the requested scope.
|
|
|
24
24
|
|
|
25
25
|
Read `docs/client/build-an-updater.md`,
|
|
26
26
|
`docs/concepts/time-index-tables-and-updates.md`, and the tested
|
|
27
|
-
`examples/updater.py`. Use `docs/client/read-existing-time-index-tables.md` and
|
|
28
|
-
`examples/reader.py` for consumers that only need existing output.
|
|
27
|
+
`src/metatables/examples/updater.py`. Use `docs/client/read-existing-time-index-tables.md` and
|
|
28
|
+
`src/metatables/examples/reader.py` for consumers that only need existing output.
|
|
29
29
|
|
|
30
30
|
The storage contract is a `PlatformTimeIndexMetaTable` SQLAlchemy class. The
|
|
31
31
|
producer is a `TimeIndexTableUpdater`; the API record is `TimeIndexTableUpdate`.
|
|
@@ -41,7 +41,7 @@ choices, first-run/backfill bounds, and whether identity must be preserved from
|
|
|
41
41
|
the task and existing code. Clarify only unresolved choices that change the
|
|
42
42
|
published contract. Keep storage description, namespace, identifier, cadence,
|
|
43
43
|
columns, and FK/index metadata on the authoring model, not the updater config.
|
|
44
|
-
Use intention-rich table and column descriptions; see `examples/tables.py`.
|
|
44
|
+
Use intention-rich table and column descriptions; see `src/metatables/examples/tables.py`.
|
|
45
45
|
|
|
46
46
|
Migrate and bind the output class before constructing the producer. Pass explicit
|
|
47
47
|
`config` and `output_table`; do not create/register tables inside `update()`.
|
|
@@ -14,7 +14,7 @@ in the MainSequence SDK.
|
|
|
14
14
|
|
|
15
15
|
Read `docs/client/upgrade-legacy-app.md` for the conversion table and before/after
|
|
16
16
|
repository compiler examples. In a copied skill, resolve the `docs/` and
|
|
17
|
-
`examples/` paths here relative to this skill's `references/` directory. In the
|
|
17
|
+
`src/metatables/examples/` paths here relative to this skill's `references/` directory. In the
|
|
18
18
|
MetaTables source checkout, resolve them from the repository root.
|
|
19
19
|
|
|
20
20
|
Use `docs/client/installation-and-connection.md` to establish the target package
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
include alembic.ini mkdocs.yml uv.lock compose.database-tests.yml
|
|
2
2
|
include .mainsequence/workflows/metatables-api.yaml
|
|
3
|
-
include api/metatables/
|
|
3
|
+
include api/metatables/main.py
|
|
4
|
+
include src/metatables/api/metatables/configuration.yaml
|
|
4
5
|
recursive-include docs *.md *.json *.py *.csv *.mako *.svg
|
|
5
|
-
recursive-include examples *.md *.json *.py *.csv *.mako
|
|
6
|
+
recursive-include src/metatables/examples *.md *.json *.py *.csv *.mako
|
|
6
7
|
recursive-include scripts *.py
|
|
7
8
|
recursive-include tests *.py *.json Dockerfile Dockerfile.dockerignore
|
|
8
9
|
graft .agents/skills/client
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mainsequence-metatable
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.6
|
|
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
|
|
@@ -100,7 +100,7 @@ through Settings; startup never runs Alembic.
|
|
|
100
100
|
The [documentation index](docs/index.md) separates client, API, operations, and
|
|
101
101
|
contributor guides. The [capability reference](docs/reference/capabilities.md)
|
|
102
102
|
records implemented and unavailable operations, including inherited methods and
|
|
103
|
-
CLI commands. Runnable guide assets live in [examples](examples/README.md).
|
|
103
|
+
CLI commands. Runnable guide assets live in [examples](src/metatables/examples/README.md).
|
|
104
104
|
|
|
105
105
|
## Client skills
|
|
106
106
|
|
|
@@ -45,7 +45,7 @@ through Settings; startup never runs Alembic.
|
|
|
45
45
|
The [documentation index](docs/index.md) separates client, API, operations, and
|
|
46
46
|
contributor guides. The [capability reference](docs/reference/capabilities.md)
|
|
47
47
|
records implemented and unavailable operations, including inherited methods and
|
|
48
|
-
CLI commands. Runnable guide assets live in [examples](examples/README.md).
|
|
48
|
+
CLI commands. Runnable guide assets live in [examples](src/metatables/examples/README.md).
|
|
49
49
|
|
|
50
50
|
## Client skills
|
|
51
51
|
|
|
@@ -14,6 +14,13 @@ Status: Accepted.
|
|
|
14
14
|
Owner: MetaTables API. Scope: runtime binding, storage and bootstrap, with shared
|
|
15
15
|
client/API execution constraints.
|
|
16
16
|
|
|
17
|
+
Clarified 2026-10-01 (MetaTables #9): applications automatically obtain the
|
|
18
|
+
selected runtime DataSource from this API after Environment-scoped deployment
|
|
19
|
+
discovery. UID and SQL dialect belong to the same fresh descriptor. Applications
|
|
20
|
+
need no source configuration for the default path; an uninitialized API reports
|
|
21
|
+
a configuration error. ADR 0010 permits optional bounded reads from registered
|
|
22
|
+
external sources without changing this runtime's catalog or write destination.
|
|
23
|
+
|
|
17
24
|
Client endpoint selection is governed by
|
|
18
25
|
[client ADR 0003](../client/0003-api-endpoint-resolution.md). Its endpoint cache
|
|
19
26
|
does not cache this API's runtime context or select its runtime mode or DataSource.
|
|
@@ -50,7 +50,7 @@ remain explicit Settings operations.
|
|
|
50
50
|
|
|
51
51
|
## Example integration
|
|
52
52
|
|
|
53
|
-
`examples/scripts/setup_metatables.py` only reserves, upgrades and finalizes the
|
|
53
|
+
`src/metatables/examples/scripts/setup_metatables.py` only reserves, upgrades and finalizes the
|
|
54
54
|
tutorial provider. Every data-dependent tutorial command calls it first. VS Code
|
|
55
55
|
launches then seed instruments and run producers through `--prepare-data` before
|
|
56
56
|
the requested example. Offline preview and endpoint-only connect skip preparation.
|
|
@@ -17,6 +17,14 @@ and repair; the Python client and examples use DataSource-only SQL requests.
|
|
|
17
17
|
|
|
18
18
|
Owner: MetaTables API.
|
|
19
19
|
|
|
20
|
+
Clarified 2026-10-01 (MetaTables #9): automatic compiler source resolution must
|
|
21
|
+
preserve the selected runtime's restricted SQL identity. An explicit different
|
|
22
|
+
source UID is not SQL admission, even with `operation=select`; return a specific
|
|
23
|
+
source-policy conflict rather than claiming the database is unavailable. ADR
|
|
24
|
+
0010's registered-table reader remains the supported external read path. General
|
|
25
|
+
external SQL requires a separate permission design that preserves caller grants
|
|
26
|
+
without using the source's shared account as an unrestricted SQL identity.
|
|
27
|
+
|
|
20
28
|
Related decisions: [API ADR 0001: Unified API storage](0001-unified-api-storage-and-local-sqlite.md),
|
|
21
29
|
[API ADR 0002: Administration and table ownership](0002-application-administration-and-table-ownership.md)
|
|
22
30
|
and [API ADR 0008: Database backend contract](0008-mysql-mssql-table-workflows.md).
|
|
@@ -11,6 +11,13 @@ Date: 2026-09-29
|
|
|
11
11
|
|
|
12
12
|
Status: Accepted.
|
|
13
13
|
|
|
14
|
+
Clarified 2026-10-01 (MetaTables #9): the compiler obtains the runtime DataSource
|
|
15
|
+
UID, dialect and parameter style together, with no caller configuration. The
|
|
16
|
+
default path covers PostgreSQL/TimescaleDB, SQLite, MySQL and MSSQL. An explicit
|
|
17
|
+
different source must not inherit the runtime source's dialect. Offline explicit
|
|
18
|
+
UID/dialect compilation remains supported but does not relax API execution
|
|
19
|
+
binding. Optional external bounded reads retain ADR 0010's source selection.
|
|
20
|
+
|
|
14
21
|
Amended 2026-09-29: one selected execution DataSource, explicit workflow and
|
|
15
22
|
transaction ownership, first-bootstrap recovery, and a Compose database test suite.
|
|
16
23
|
|
|
@@ -46,7 +53,7 @@ ownership and unknown-outcome reconciliation. Local verification is complete; ho
|
|
|
46
53
|
|
|
47
54
|
`POST /data-sources/` accepts `mysql` and `mssql`, and validation opens their
|
|
48
55
|
connections and runs `SELECT 1`. At the time of the original decision, the
|
|
49
|
-
static feature registry declared no table support for either. The physical operations in `api/backend/integrations/`
|
|
56
|
+
static feature registry declared no table support for either. The physical operations in `src/metatables/api/backend/integrations/`
|
|
50
57
|
use PostgreSQL or SQLite connections, SQL and introspection; they cannot act on
|
|
51
58
|
the registered MySQL or MSSQL source.
|
|
52
59
|
|
|
@@ -172,14 +179,14 @@ engine matrices in routes, Admin and documentation.
|
|
|
172
179
|
|
|
173
180
|
Refactor the current SQLite and PostgreSQL paths into this contract before
|
|
174
181
|
adding MySQL and MSSQL implementations. In particular, remove engine decisions
|
|
175
|
-
from `api/app/bootstrap.py`, `api/app/routes/application_migrations.py`,
|
|
176
|
-
`api/app/routes/table_sql.py`, `api/app/routes/runtime_context.py`, and
|
|
177
|
-
`api/backend/integrations/source_validation.py`; route existing SQLite and
|
|
182
|
+
from `src/metatables/api/app/bootstrap.py`, `src/metatables/api/app/routes/application_migrations.py`,
|
|
183
|
+
`src/metatables/api/app/routes/table_sql.py`, `src/metatables/api/app/routes/runtime_context.py`, and
|
|
184
|
+
`src/metatables/api/backend/integrations/source_validation.py`; route existing SQLite and
|
|
178
185
|
PostgreSQL work through the bound backend in this first step, before implementing
|
|
179
186
|
MySQL or MSSQL table support. During the refactor, retain the existing MySQL/MSSQL
|
|
180
187
|
connection probes without pretending they satisfy the full backend contract.
|
|
181
188
|
Move the branches in `postgresql_*`
|
|
182
|
-
physical helpers and `api/backend/database_operations/runtime.py` into adapter
|
|
189
|
+
physical helpers and `src/metatables/api/backend/database_operations/runtime.py` into adapter
|
|
183
190
|
implementations or shared engine-neutral helpers. This refactor must preserve
|
|
184
191
|
current SQLite and PostgreSQL behavior under the existing contract tests. It
|
|
185
192
|
prevents the new engines from multiplying conditionals across every endpoint.
|
|
@@ -9,6 +9,15 @@ client and Vite import/Rows views. Verification and boundaries are recorded belo
|
|
|
9
9
|
|
|
10
10
|
Owner: MetaTables API. The Python client and Vite application consume its contract.
|
|
11
11
|
|
|
12
|
+
Clarified 2026-10-01 (MetaTables #9): default compiler calls discover the API's
|
|
13
|
+
runtime DataSource automatically. Selecting an imported MetaTable for an optional
|
|
14
|
+
external read uses that table's registered source through `read_rows()` or
|
|
15
|
+
`iter_rows()` and the same API. It does not mutate the default, replace Environment
|
|
16
|
+
selection or authorize external writes. Arbitrary external SQL and joins remain
|
|
17
|
+
outside this implementation; SQL selection of another source reports a specific
|
|
18
|
+
policy conflict. Client guides must show the working external read workflow and
|
|
19
|
+
must not present `data_source_uid` alone as enabling arbitrary external SQL.
|
|
20
|
+
|
|
12
21
|
Related decisions: [ADR 0002: Administration and ownership](0002-application-administration-and-table-ownership.md),
|
|
13
22
|
[ADR 0007: Database-enforced table access](0007-database-enforced-table-access.md),
|
|
14
23
|
[ADR 0008: Database backend contract](0008-mysql-mssql-table-workflows.md), and
|
|
@@ -60,10 +69,10 @@ explicitly identified as belonging to the Vite application.
|
|
|
60
69
|
|
|
61
70
|
| Area | Current evidence | Required change |
|
|
62
71
|
| --- | --- | --- |
|
|
63
|
-
| HTTP workflow | Generated OpenAPI has `POST /meta-tables/register/` and `POST /meta-tables/{uid}/introspect/`, but no import action. `api/app/routes/table_registration.py` requires one caller-authored contract. | One import operation with discovery, preview, selection, reconciliation, and structured results. |
|
|
64
|
-
| Discovery | `TableBackend` in `api/backend/backends/contracts.py` introspects a known name. It has no relation discovery or batch introspection contract. | Add narrow discovery and read operations to this existing facet. |
|
|
72
|
+
| HTTP workflow | Generated OpenAPI has `POST /meta-tables/register/` and `POST /meta-tables/{uid}/introspect/`, but no import action. `src/metatables/api/app/routes/table_registration.py` requires one caller-authored contract. | One import operation with discovery, preview, selection, reconciliation, and structured results. |
|
|
73
|
+
| Discovery | `TableBackend` in `src/metatables/api/backend/backends/contracts.py` introspects a known name. It has no relation discovery or batch introspection contract. | Add narrow discovery and read operations to this existing facet. |
|
|
65
74
|
| External source resolution | `CatalogDataSourceProvider.get()` calls `RuntimeStorageBinding.require_execution_source()`. A saved non-runtime source cannot be used by table operations. | Resolve sources according to the authorized operation; preserve the runtime restriction for managed DDL, migrations, and caller-written SQL. |
|
|
66
|
-
| Restart invariants | `RuntimeBootstrap.inspect()` in `api/app/bootstrap.py` rejects any `MetaTable` or `PhysicalOperation` referencing another source. | Permit externally owned MetaTables on registered sources, while keeping physical mutation journals and managed tables bound to the runtime source. |
|
|
75
|
+
| Restart invariants | `RuntimeBootstrap.inspect()` in `src/metatables/api/app/bootstrap.py` rejects any `MetaTable` or `PhysicalOperation` referencing another source. | Permit externally owned MetaTables on registered sources, while keeping physical mutation journals and managed tables bound to the runtime source. |
|
|
67
76
|
| View access | `postgresql_access.py` and `sqlite_access.py` require ordinary tables. `hosted.py` rejects MySQL objects other than base tables and MSSQL objects other than user tables. | Explicit view admission and read semantics. Changing an introspection query alone is insufficient. |
|
|
68
77
|
| Physical metadata | `MetaTable.kind` distinguishes relational and time-index tables. Contract normalization preserves extra physical fields but does not validate `relation_kind` as a first-class invariant. | Validate physical relation kind independently of the existing logical kind. A view is a relational MetaTable. |
|
|
69
78
|
| Names and types | `catalog_rules.py` and `table_contracts.py` impose an unqualified 63-character table-name rule; `models.py` stores `String(63)`. Some type validation retains PostgreSQL assumptions. | Preserve legal external identifiers and native types through adapter normalization, without truncation or executing catalog expressions. |
|
|
@@ -118,7 +127,7 @@ generic capability registry is introduced.
|
|
|
118
127
|
### 2. Extend the existing backend contract
|
|
119
128
|
|
|
120
129
|
Add these conceptual operations to `DatabaseBackend.tables` in
|
|
121
|
-
`api/backend/backends/contracts.py`; retain `backend_for(source)` as the only
|
|
130
|
+
`src/metatables/api/backend/backends/contracts.py`; retain `backend_for(source)` as the only
|
|
122
131
|
engine dispatch point:
|
|
123
132
|
|
|
124
133
|
```text
|
|
@@ -556,11 +565,11 @@ availability.
|
|
|
556
565
|
|
|
557
566
|
## Implementation and verification record
|
|
558
567
|
|
|
559
|
-
- Shared orchestration: `api/backend/operations/import_relations.py`; engine
|
|
568
|
+
- Shared orchestration: `src/metatables/api/backend/operations/import_relations.py`; engine
|
|
560
569
|
discovery, read-only sessions and safe runtime-view validation:
|
|
561
|
-
`api/backend/backends/relation_tables.py`, selected by the existing registry.
|
|
562
|
-
- Published commands/results: `api/backend/contracts/relation_import.py` and
|
|
563
|
-
`api/app/routes/table_import.py`. Existing introspect handles Writer refresh.
|
|
570
|
+
`src/metatables/api/backend/backends/relation_tables.py`, selected by the existing registry.
|
|
571
|
+
- Published commands/results: `src/metatables/api/backend/contracts/relation_import.py` and
|
|
572
|
+
`src/metatables/api/app/routes/table_import.py`. Existing introspect handles Writer refresh.
|
|
564
573
|
- Migration `0007_external_relation_names` widens hosted physical names to 128
|
|
565
574
|
characters. SQLite retains its descriptive legacy VARCHAR width without a table
|
|
566
575
|
rebuild; SQLite does not enforce that width. Missing relation kinds read as table.
|
|
@@ -80,7 +80,7 @@ dropped tables. Revision files already applied remain immutable.
|
|
|
80
80
|
|
|
81
81
|
## MetaTables system migrations
|
|
82
82
|
|
|
83
|
-
The API continues to own `api.backend.migrations`, `metatables_catalog_version`
|
|
83
|
+
The API continues to own `metatables.api.backend.migrations`, `metatables_catalog_version`
|
|
84
84
|
and the explicit admin bootstrap/upgrade operation in Settings. Application
|
|
85
85
|
migration commands do not invoke that operation. Applications must keep their
|
|
86
86
|
physical names and version tables separate from reserved system objects.
|
|
@@ -9,8 +9,16 @@ Owner: MetaTables Python client, including the CLI.
|
|
|
9
9
|
|
|
10
10
|
Related decision: [API ADR 0001: One API execution path with SQLite for local development](../api/0001-unified-api-storage-and-local-sqlite.md).
|
|
11
11
|
|
|
12
|
-
The client implements this decision using the SDK's
|
|
13
|
-
and
|
|
12
|
+
The client implements this decision using the SDK's Environment context,
|
|
13
|
+
exact-name release filter, owning-branch metadata and release-access operation.
|
|
14
|
+
|
|
15
|
+
Amended 2026-10-01 ([MetaTables #11](https://github.com/mainsequence-projects/MetaTables/issues/11)):
|
|
16
|
+
hosted discovery must select the caller's resolved Organization Environment.
|
|
17
|
+
The previous visibility-only lookup and hosted URL workaround violated that
|
|
18
|
+
contract. `METATABLES_API_URL` is reserved for loopback development APIs. Identical
|
|
19
|
+
deployment names in different Environments are expected and must work without
|
|
20
|
+
user configuration. Connection and configuration documentation must describe
|
|
21
|
+
this distinction and the Environment-specific failure cases.
|
|
14
22
|
|
|
15
23
|
Amended 2026-09-29: obtain the target name from the MetaTables automatic
|
|
16
24
|
deployment. Remove the proposed conventional name and manually configured
|
|
@@ -25,7 +33,7 @@ with the client and use the SDK for the subsequent release lookup and access.
|
|
|
25
33
|
Previously, the client constructed resource URLs from a model's `ROOT_URL` or
|
|
26
34
|
`METATABLES_API_URL`, and failed when neither was configured. The CLI separately
|
|
27
35
|
required the environment variable. This decision replaces that duplicated
|
|
28
|
-
selection with automatic discovery and
|
|
36
|
+
selection with automatic hosted discovery and a local development URL override.
|
|
29
37
|
|
|
30
38
|
A client connecting to a hosted MetaTables deployment obtains the correct name
|
|
31
39
|
from the automatic deployment's authoritative metadata. Users should not copy
|
|
@@ -37,8 +45,11 @@ local API through an environment variable.
|
|
|
37
45
|
The SDK supplies generic platform release operations. Ordinary release collection
|
|
38
46
|
queries currently infer the consuming repository's branch, whereas the MetaTables
|
|
39
47
|
deployment can belong to another repository. A name filter alone does not solve
|
|
40
|
-
that distinction.
|
|
41
|
-
|
|
48
|
+
that distinction. The caller's Environment, obtained from the SDK's resolved
|
|
49
|
+
repository context or authenticated runtime credential, selects the intended
|
|
50
|
+
deployment across repositories. Release names can repeat across Environments;
|
|
51
|
+
visibility alone, text search or selecting the first result cannot establish the
|
|
52
|
+
intended target. Selecting the wrong API also selects the wrong runtime DataSource.
|
|
42
53
|
|
|
43
54
|
Endpoint selection is a client transport concern. The API's runtime mode,
|
|
44
55
|
bootstrap and DataSource binding remain governed by API ADR 0001. Connecting to
|
|
@@ -47,7 +58,7 @@ runtime mode through Settings.
|
|
|
47
58
|
|
|
48
59
|
## Decision
|
|
49
60
|
|
|
50
|
-
### 1. One resolver with
|
|
61
|
+
### 1. One resolver with a local development URL override
|
|
51
62
|
|
|
52
63
|
All Python resource models, runtime-context requests, readers, updaters and CLI
|
|
53
64
|
commands use one client endpoint resolver. Migration commands use the same
|
|
@@ -57,19 +68,21 @@ The resolver uses the following precedence:
|
|
|
57
68
|
|
|
58
69
|
| Configuration | Behavior |
|
|
59
70
|
| --- | --- |
|
|
60
|
-
| Nonempty `METATABLES_API_URL` |
|
|
61
|
-
| URL unset or empty | Obtain the MetaTables API's name from its automatic-deployment metadata
|
|
71
|
+
| Nonempty `METATABLES_API_URL` | Require a loopback HTTP(S) development URL, use it and skip platform Environment/deployment discovery. |
|
|
72
|
+
| URL unset or empty | Obtain the MetaTables API's name from its automatic-deployment metadata and resolve that deployment in the caller's SDK-owned Environment. |
|
|
62
73
|
|
|
63
74
|
The deployment name is derived data, owned by the automatic deployment. There is
|
|
64
75
|
no hardcoded default such as `metatables`, and no manually maintained
|
|
65
76
|
`METATABLES_API_DEPLOYMENT_NAME` setting. The client must consume the actual name
|
|
66
77
|
produced by that deployment, so changing it does not require editing consuming
|
|
67
|
-
projects. `METATABLES_API_URL` remains the
|
|
78
|
+
projects. `METATABLES_API_URL` remains the local development override; there is no
|
|
68
79
|
additional automatic/manual mode variable.
|
|
69
80
|
|
|
70
|
-
An explicit URL
|
|
71
|
-
|
|
72
|
-
|
|
81
|
+
An explicit URL must target `localhost` or a loopback IP address. Hosted URLs
|
|
82
|
+
are rejected with an instruction to unset the variable and use Environment
|
|
83
|
+
discovery. Preserve any local path prefix when joining resource routes. A nonempty
|
|
84
|
+
invalid URL produces a configuration error; it must not fall through to automatic
|
|
85
|
+
discovery. Model-level
|
|
73
86
|
`ROOT_URL` assignments must no longer independently override the environment or
|
|
74
87
|
split different resources across different API targets.
|
|
75
88
|
|
|
@@ -101,25 +114,30 @@ for exact-name lookup and stable endpoint retrieval. It does not call platform
|
|
|
101
114
|
routes directly, inspect platform persistence models, derive hostnames from UIDs,
|
|
102
115
|
or maintain a second platform client.
|
|
103
116
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
117
|
+
Resolve the caller's Environment with the public SDK
|
|
118
|
+
`resolve_organization_environment_uid()` helper. The SDK owns Git registration,
|
|
119
|
+
authenticated runtime context and authorization. A developer's signed-in process
|
|
120
|
+
connecting to a hosted API follows the same Environment selection rule. Local
|
|
121
|
+
development URL selection does not require a registered branch or Environment.
|
|
122
|
+
|
|
123
|
+
The installed SDK does not expose an Environment filter on `ResourceRelease`.
|
|
124
|
+
Use `ResourceRelease.filter_admin(name=..., release_kind="fastapi")` only to
|
|
125
|
+
obtain exact-name candidates, without restricting them to the consuming
|
|
126
|
+
application's repository branch. Each candidate supplies its owning
|
|
127
|
+
`code_repository_branch_uid`. Read those public `CodeRepositoryBranch` records
|
|
128
|
+
through the SDK using `filter(uid__in=...)`, in batches of at most 100 unique UIDs,
|
|
129
|
+
and compare their `organization_environment_uid` with the caller's Environment.
|
|
130
|
+
The client must verify ownership before requesting runtime access, even if only
|
|
131
|
+
one release is visible. Missing or inconsistent ownership metadata fails closed.
|
|
132
|
+
An owning branch with no Environment cannot match an Environment-bound caller.
|
|
133
|
+
|
|
134
|
+
Require exactly one match **within that Environment**, then call the selected
|
|
135
|
+
release's `resolve_runtime_access()` for its backend-issued URL. The same name in
|
|
136
|
+
other Environments is neither an error nor a fallback. Zero matches report a
|
|
137
|
+
missing deployment in the selected Environment; multiple matches report duplicate
|
|
138
|
+
deployments within it. Neither error recommends a URL override or globally unique
|
|
139
|
+
deployment names. No first-result selection, SDK context reset, consumer branch
|
|
140
|
+
override, direct platform request or new platform endpoint is needed.
|
|
123
141
|
|
|
124
142
|
Existing SDK release-access operations may report a starting or unavailable
|
|
125
143
|
runtime. Such a result is not a successful endpoint resolution. Respect the
|
|
@@ -131,18 +149,21 @@ mechanism, credential type, account-binding policy or Organization policy.
|
|
|
131
149
|
|
|
132
150
|
Resolve lazily on the first operation that needs an API address. Cache a
|
|
133
151
|
successful result in process memory for the selected platform endpoint and
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
152
|
+
resolved Organization Environment. The entry holds the release UID and derived
|
|
153
|
+
deployment name. The discovery sequence obtains target metadata, verifies the
|
|
154
|
+
candidate owners' Environments and retrieves the endpoint; subsequent operations
|
|
155
|
+
reuse its result without repeating those platform lookups. Read the SDK-owned
|
|
156
|
+
process context when selecting the cache key; do not maintain a separate
|
|
157
|
+
Environment cache or reuse an endpoint after that context changes.
|
|
137
158
|
|
|
138
159
|
Concurrent first callers share one resolution attempt. Do not cache failed,
|
|
139
160
|
ambiguous, starting or unavailable results as successful entries. Later calls
|
|
140
161
|
can retry after a failed attempt. Forked or new processes start with their own
|
|
141
162
|
cache; no discovered address is persisted to disk.
|
|
142
163
|
|
|
143
|
-
The
|
|
164
|
+
The local URL is checked before consulting the discovery cache, so setting
|
|
144
165
|
`METATABLES_API_URL` takes effect even after automatic resolution. Configuration
|
|
145
|
-
changes invalidate the previous target's cache; an explicit client reset or
|
|
166
|
+
and Environment changes invalidate the previous target's cache; an explicit client reset or
|
|
146
167
|
process restart also permits a fresh lookup, including reacquiring the name from
|
|
147
168
|
the packaged workflow. Editable installs observe workflow changes on that fresh
|
|
148
169
|
lookup; installed wheels use their immutable workflow snapshot. Stable configuration
|
|
@@ -155,6 +176,25 @@ silently select another deployment or replay a mutation against a different API.
|
|
|
155
176
|
|
|
156
177
|
### 4. Keep endpoint discovery separate from runtime state
|
|
157
178
|
|
|
179
|
+
Amended 2026-10-01 ([MetaTables #9](https://github.com/mainsequence-projects/MetaTables/issues/9)):
|
|
180
|
+
the compiler's default is Environment → API deployment → fresh `/runtime-context/`
|
|
181
|
+
→ selected DataSource UID and SQL dialect. Consuming applications configure none
|
|
182
|
+
of these values. Runtime bootstrap and Settings remain operator responsibilities.
|
|
183
|
+
The client preserves the runtime descriptor's public `data_source` dictionary
|
|
184
|
+
and uses a shared validated UID accessor. Missing, unavailable or malformed source
|
|
185
|
+
metadata raises `DataSourceResolutionError`, including when the compiler is given
|
|
186
|
+
an isolated runtime descriptor. UID, dialect and parameter style must describe
|
|
187
|
+
the same source. Never combine an explicit different source UID with the runtime
|
|
188
|
+
source's inferred dialect. Supplying both a UID and dialect retains offline
|
|
189
|
+
compilation; execution still applies API source binding and grants.
|
|
190
|
+
|
|
191
|
+
Optional reads from another registered source use the imported MetaTable's source
|
|
192
|
+
through ADR 0010's bounded reader. They do not change the resolved API, runtime
|
|
193
|
+
default or write destination. General SQL on another source needs a separate
|
|
194
|
+
database-permission design; the client must not imply that an explicit UID grants
|
|
195
|
+
that capability. Document default compilation, offline compilation, source-specific
|
|
196
|
+
errors and the distinction between bounded external reads and runtime SQL.
|
|
197
|
+
|
|
158
198
|
Cache only the stable endpoint and the release identity needed to describe that
|
|
159
199
|
selection. Do not cache temporary release-access tokens, admission/readiness
|
|
160
200
|
decisions, permission facts or the API's effective DataSource with it. SDK session
|
|
@@ -165,7 +205,7 @@ Keep it in a separate, memory-only SDK `SessionJWTAuthProvider`, outside the
|
|
|
165
205
|
endpoint cache and shared platform session. The SDK request helper retries a
|
|
166
206
|
401 once: reacquire access for the same release UID and reject a changed URL
|
|
167
207
|
instead of retargeting the request. This does not repeat name discovery or add an
|
|
168
|
-
authentication contract. Local
|
|
208
|
+
authentication contract. Local development transports retain their existing
|
|
169
209
|
SDK session behavior.
|
|
170
210
|
|
|
171
211
|
The API's `/runtime-context/` response remains fresh under API ADR 0001. Resetting
|
|
@@ -177,8 +217,8 @@ those changes or introduce client database access.
|
|
|
177
217
|
|
|
178
218
|
| Owner | Responsibility |
|
|
179
219
|
| --- | --- |
|
|
180
|
-
| MetaTables client | Read the packaged workflow,
|
|
181
|
-
| Main Sequence SDK/platform |
|
|
220
|
+
| MetaTables client | Read the packaged workflow, select the release in the SDK-owned Environment, enforce the local URL override, share and cache endpoints, and report resolution errors. |
|
|
221
|
+
| Main Sequence SDK/platform | Resolve the caller's Environment and provide authorized release discovery, owning-branch metadata and release access. |
|
|
182
222
|
| MetaTables API | Own the automatic deployment declaration, runtime descriptor, admission, Settings, bootstrap and its enforced DataSource binding. |
|
|
183
223
|
|
|
184
224
|
This is a separate client ADR because API runtime selection and storage ownership
|
|
@@ -186,9 +226,10 @@ do not change. API ADR 0001's prohibition on caching effective runtime context
|
|
|
186
226
|
remains in force. The Vite Admin site's connection configuration is outside this
|
|
187
227
|
Python-client decision.
|
|
188
228
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
229
|
+
Local explicit URL configurations continue to work. Existing hosted URL overrides
|
|
230
|
+
must be removed; Environment discovery replaces them. Hosted selection requires
|
|
231
|
+
SDK Environment context and authorized reads of candidate branch metadata. A
|
|
232
|
+
deleted or replaced deployment can require an explicit reset or process restart to discover a new
|
|
192
233
|
address; normal requests do not repeatedly search for one.
|
|
193
234
|
|
|
194
235
|
## Implementation and acceptance criteria
|
|
@@ -206,17 +247,22 @@ The workflow must be applied on the platform before the hosted launch can find i
|
|
|
206
247
|
|
|
207
248
|
- The client obtains the actual MetaTables deployment name from automatic
|
|
208
249
|
deployment metadata and resolves it through the SDK without a user-supplied
|
|
209
|
-
name or
|
|
250
|
+
name, UID or URL, including outside the consuming repository's branch but
|
|
251
|
+
always within its resolved Environment.
|
|
252
|
+
- Identically named deployments in other Environments are ignored; a lone release
|
|
253
|
+
in the wrong Environment cannot be selected. Missing Environment context,
|
|
254
|
+
unverifiable ownership or duplicate releases within the selected Environment
|
|
255
|
+
fail before runtime access. Test both signed-in and authenticated runtime context.
|
|
210
256
|
- Tests use distinct deployment-generated names and verify that a fresh lookup
|
|
211
257
|
after an editable-workflow rename uses updated metadata without edits to
|
|
212
258
|
consuming projects. Wheels retain their packaged deployment declaration.
|
|
213
259
|
Missing or ambiguous metadata/names fail clearly without a constant fallback.
|
|
214
260
|
- Repeated and concurrent operations across resource classes and CLI consumers
|
|
215
261
|
perform one successful discovery sequence per process and configuration.
|
|
216
|
-
-
|
|
217
|
-
retrieval and a populated cache, and preserves
|
|
218
|
-
URLs
|
|
219
|
-
- Failed resolution remains retryable; reset, configuration changes and process
|
|
262
|
+
- A local loopback URL bypasses all discovery, including Environment and
|
|
263
|
+
automatic-deployment metadata retrieval and a populated cache, and preserves
|
|
264
|
+
route prefixes. Invalid URLs and hosted URL overrides fail without discovery.
|
|
265
|
+
- Failed resolution remains retryable; reset, Environment/configuration changes and process
|
|
220
266
|
forks do not reuse a stale target.
|
|
221
267
|
- Local explicit-URL operations still work on an unregistered branch without
|
|
222
268
|
introducing a platform release or Environment requirement.
|
|
@@ -225,7 +271,9 @@ The workflow must be applied on the platform before the hosted launch can find i
|
|
|
225
271
|
- Resource calls and migration lifecycles consistently use their selected API;
|
|
226
272
|
the resolver never redirects ordinary SDK platform requests to that API.
|
|
227
273
|
- Update connection guides, configuration reference and executable examples with
|
|
228
|
-
automatic and
|
|
274
|
+
automatic hosted discovery and local development selection once behavior is verified.
|
|
275
|
+
Document removal of hosted URL overrides and Environment-specific deployment
|
|
276
|
+
errors without suggesting URL or name workarounds. Keep dependency and
|
|
229
277
|
authentication boundaries covered by the existing checks.
|
|
230
278
|
|
|
231
279
|
## References
|