mainsequence-metatable 0.1.45__tar.gz → 0.1.46.dev73__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.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/client/metatables-meta-tables/SKILL.md +9 -7
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/client/metatables-migrations/SKILL.md +26 -28
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/client/metatables-table-discovery/SKILL.md +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/ms_tau_sdk/PINNED_FROM.txt +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/ms_tau_sdk/tau_project_customization/SKILL.md +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/ms_tau_sdk/tau_security_and_access/SKILL.md +81 -24
- {mainsequence_metatable-0.1.45/src/mainsequence_metatable.egg-info → mainsequence_metatable-0.1.46.dev73}/PKG-INFO +4 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/README.md +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0002-application-administration-and-table-ownership.md +5 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0007-database-enforced-table-access.md +5 -0
- mainsequence_metatable-0.1.46.dev73/docs/adr/api/0024-namespace-and-table-access-roles.md +365 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/index.md +1 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/api/authentication-and-errors.md +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/api/openapi.json +351 -143
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/api/overview.md +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/api/reference.md +10 -6
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/api/tables-and-migrations.md +13 -9
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/api/time-index-and-updates.md +5 -5
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/assets/diagrams/namespace-access.svg +10 -10
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/define-and-migrate-tables.md +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/deploy-application-migrations.md +50 -37
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/query-and-mutate.md +5 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/register-existing-tables.md +3 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/tutorial.md +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/concepts/architecture.md +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/concepts/identity-and-scope.md +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/concepts/permissions-namespaces-labels.md +20 -19
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/contributing/database-backends.md +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/README.md +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/index.md +3 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/operations/catalog-migrations.md +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/operations/hosted-runtime.md +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/reference/capabilities.md +14 -12
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/reference/python.md +1 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/security/index.md +51 -44
- mainsequence_metatable-0.1.46.dev73/docs/security/ownership-and-sharing.md +231 -0
- mainsequence_metatable-0.1.46.dev73/docs/security/permissions.md +173 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/mkdocs.yml +1 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/pyproject.toml +3 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73/src/mainsequence_metatable.egg-info}/PKG-INFO +4 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/mainsequence_metatable.egg-info/SOURCES.txt +3 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/mainsequence_metatable.egg-info/requires.txt +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/__init__.py +1 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/auth/boundary.py +23 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/auth/team_membership.py +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/access_map.py +6 -7
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/managed_finalize.py +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/migration_connection.py +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/namespaces.py +47 -6
- mainsequence_metatable-0.1.46.dev73/src/metatables/api/app/routes/security.py +385 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_delete.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_patch.py +4 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_registration.py +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_sql.py +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/time_index_delete.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/time_index_reads.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/time_index_stats.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/timescale_policies.py +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/update_batch.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/update_chunk_insert.py +4 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/update_crud.py +4 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/update_details.py +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/update_graph.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/update_index_statistics.py +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/update_registration.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/update_runs.py +5 -5
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/update_statistics.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/access.py +23 -8
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/table_cursor.py +0 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/operations.py +2 -1
- mainsequence_metatable-0.1.46.dev73/src/metatables/api/backend/backends/pages.py +56 -0
- mainsequence_metatable-0.1.46.dev73/src/metatables/api/backend/domain/access_roles.py +186 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/domain/permission_rules.py +7 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/platform_principals.py +17 -0
- mainsequence_metatable-0.1.46.dev73/src/metatables/api/backend/migrations/versions/0014_access_roles.py +57 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/operations/create_table.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/operations/import_relations.py +4 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/operations/introspect_table.py +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/operations/read_time_index.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/operations/register_catalog.py +60 -34
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/grants.py +55 -25
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/impact.py +7 -6
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/models.py +29 -22
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/run_graphs.py +4 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/table_queries.py +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/table_response.py +4 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/README.md +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/__init__.py +9 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/runner.py +40 -37
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/models.py +112 -36
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_local_mode.py +13 -6
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_runtime_bootstrap.py +8 -8
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_runtime_selection.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_runtime_storage_binding.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_team_membership.py +6 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/catalog/test_migration.py +6 -5
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/contracts/capabilities.json +140 -107
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/contracts/test_bounded_transfer.py +35 -6
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/test_catalog_contract.py +2 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/test_relation_import.py +8 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/test_sql_security.py +4 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/test_update_client.py +2 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_application_owned_migrations.py +104 -31
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_data_source_registry.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_local_actor_client_api.py +2 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_managed_finalize_client_api.py +4 -8
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_managed_finalize_unchanged.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_namespaces_admin_http.py +2 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_run_graphs.py +4 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_run_logs.py +7 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_runtime_upgrade.py +3 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_sqlite_runtime.py +7 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_table_delete_client_api.py +3 -6
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_table_filter_client_api.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_table_introspection_client_api.py +2 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_table_patch_client_api.py +2 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_table_search_api.py +4 -5
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_table_search_document_api.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_table_search_scale.py +2 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_table_stats_api.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_table_update_pipeline.py +2 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_table_updates_http.py +2 -4
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_time_index_delete_client_api.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_time_index_reads_client_api.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_timescale_policies_client_api.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_update_batch_client_api.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_update_chunk_insert_client_api.py +2 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_update_dependency_priority_client_api.py +6 -12
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_update_index_statistics_client_api.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_update_registration_client_api.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/operations/test_create_table_operation.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/operations/test_create_table_postgres.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/operations/test_register_catalog.py +58 -36
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_access_map.py +9 -9
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_deployment_security.py +1 -1
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_namespace_grants.py +12 -16
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_security_api.py +146 -141
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_security_check.py +3 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_table_body_filter.py +1 -2
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_table_grants.py +13 -21
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_table_queries.py +2 -3
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/uv.lock +9 -9
- mainsequence_metatable-0.1.45/docs/security/ownership-and-sharing.md +0 -248
- mainsequence_metatable-0.1.45/docs/security/permissions.md +0 -163
- mainsequence_metatable-0.1.45/src/metatables/api/app/routes/security.py +0 -321
- mainsequence_metatable-0.1.45/src/metatables/api/backend/backends/pages.py +0 -41
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/analyze-with-sql/SKILL.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/client/metatables-local-development/SKILL.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/discover-tables/SKILL.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/ms_tau_sdk/tau_a2a_runtime_adapter/SKILL.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/ms_tau_sdk/tau_local_development/SKILL.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.agents/skills/ms_tau_sdk/tau_repository_integration/SKILL.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/.mainsequence/workflows/metatables-api.yaml +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/LICENSE +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/MANIFEST.in +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/alembic.ini +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/api/metatables/main.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/compose.database-tests.yml +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/agent/0019-metatables-analyst-agent.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/agent/0020-analyst-reads-as-its-requester.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0004-approved-application-migrations.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0006-historical-run-graphs.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0008-mysql-mssql-table-workflows.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0009-shared-credential-store.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0013-application-owned-migrations.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0015-timescale-compression-and-retention-policies.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0016-impact-preflight.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0017-hosted-request-identity.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0018-search-document-pipeline.svg +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0018-table-search.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0022-concurrent-requests-and-connection-reuse.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/api/0023-daily-security-check.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/api/data-sources.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/assets/branding/metatables.svg +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/assets/diagrams/local-client-experience.svg +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/bounded-transfers.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/build-an-updater.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/installation-and-connection.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/local-storage.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/quickstart.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/read-existing-time-index-tables.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/client/upgrade-legacy-app.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/concepts/data-sources.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/concepts/runs-and-execution-graphs.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/concepts/time-index-tables-and-updates.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/contributing/architecture-and-boundaries.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/contributing/documentation.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/contributing/releasing.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/contributing/testing.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/README.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/bounded_reader.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/data_sources/README.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/data_sources/mssql.json +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/data_sources/mysql.json +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/data_sources/postgresql.json +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/data_sources/register.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/external_table.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/local_app/README.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/local_app/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/local_app/__main__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/local_app/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/local_app/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/local_app/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/local_app/tables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/query.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/quickstart.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/reader.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/scripts/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/scripts/setup_metatables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/__main__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/data/README.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/frames.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/operations.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/tables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/tutorial/updaters.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/examples/updater.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/operations/configuration.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/operations/local-runtime.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/operations/recovery-and-observability.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/operations/run-history.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/operations/run-logs.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/docs/reference/cli.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/scripts/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/scripts/build_reference.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/scripts/check_boundaries.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/scripts/check_client_api_coverage.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/scripts/check_distribution_sources.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/scripts/check_docs.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/scripts/check_examples_debug.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/scripts/check_project.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/scripts/dev_release_version.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/scripts/test_databases.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/scripts/test_postgresql.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/setup.cfg +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/_admin_source.json +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/_build.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/_skill_bundle.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/analysis.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/analyst/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/auth/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/auth/local_actor.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/bootstrap.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/configuration.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/connection_count.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/credential_admin.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/development.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/development_client.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/error_logging.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/main.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/mcp.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/platform_cache.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/caller.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/column_search.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/contract_validation.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/data_sources.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/run_logs.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/runtime_context.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/schema_graph.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_cascade.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_crud.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_filter.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_import.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_introspection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_response.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_search.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_search_document.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/routes/update_constants.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/runtime.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/runtime_control.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/runtime_database.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/source_passwords.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/app/transfer.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/batch_inspection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/catalog.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/catalog_types.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/connection_pool.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/contracts.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/hosted.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/hosted_access.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/migration_connection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/native.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/postgresql_access.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/registry.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/relation_tables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/relational.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/restricted_sql.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/streaming.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/backends/timescale.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/contracts/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/contracts/relation_import.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/contracts/storage_layouts.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/contracts/values.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/domain/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/domain/index_statistics.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/domain/label_rules.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/domain/update_constants.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/credential_store.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/run_logs.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/security_check_job.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/integrations/source_validation.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0010_cascade_targets.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0011_table_search.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0012_table_creator.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/0013_security_check.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/operations/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/operations/bootstrap_timing.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/operations/security_check.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/cascade.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/catalog.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/database.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/labels.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/locking.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/physical_operations.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/projections.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/update_graph.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/updates.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/search/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/search/documents.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/search/embeddings.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/search/index.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/search/ranking.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/search/text.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/backend/search/worker.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/metatables/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/metatables/configuration.yaml +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/metatables/main.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/api/request_timing.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/cli/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/cli/admin_install.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/cli/app.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/cli/filters.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/cli/local.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/cli/migrations.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/cli/project.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/cli/skills.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/compiled_sql/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/compiled_sql/mssql.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/compiled_sql/v1.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/dtype_codec.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/endpoint.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/README.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/bounded_reader.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/data_sources/README.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/data_sources/mssql.json +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/data_sources/mysql.json +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/data_sources/postgresql.json +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/data_sources/register.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/external_table.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/local_app/README.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/local_app/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/local_app/__main__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/local_app/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/local_app/tables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/query.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/quickstart.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/reader.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/scripts/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/scripts/setup_metatables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/__main__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/data/README.md +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/frames.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/operations.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/tables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/tutorial/updaters.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/examples/updater.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/future_registry.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/hashing.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/instrumentation.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/local_connection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/local_files.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/local_run_logs.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/log_contract.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/alembic.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/connection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/provider.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/scaffold.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/sqlite.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/templates/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/templates/env.py.mako +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/templates/script.py.mako +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/migrations/tls.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/pydantic_metadata.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/run_logging.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/runtime.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/runtime_context.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/runtime_contract.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/schema_names.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/sdk_compat.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/sqlalchemy_contracts.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/storage_layout_contract.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/time_index_table_refs.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/transfer.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/transfer_contract.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/transport.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/update_configuration_contract.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/updaters/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/updaters/configuration.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/updaters/dependencies.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/updaters/managers.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/updaters/namespacing.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/updaters/runner.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/updaters/updaters.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/updaters/utils.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/src/metatables/upload.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/analyst/test_agent_surface.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/analyst/test_api_search.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/analyst/test_mcp.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/analyst/test_tools.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_bootstrap_failure_cause.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_caller_endpoint.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_data_source_identity.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_development_client.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_hosted_agent.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_hosted_environment_target.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_platform_fact_cache.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_request_identity.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_runtime_database.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_runtime_scaffold.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/auth/test_source_passwords.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/catalog/test_catalog_foundation.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/catalog/test_contract_projection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/catalog/test_database_config.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/catalog/test_index_statistics.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/catalog/test_schema_validation.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/conftest.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/contracts/client_signatures.json +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/contracts/database_operations.json +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/contracts/test_compiler_runtime_source.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/contracts/test_relation_batching.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/contracts/test_relation_import.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/contracts/test_runtime_contract_compat.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/contracts/test_storage_layouts.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/contracts/test_table_contracts.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/Dockerfile +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/Dockerfile.dockerignore +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/conftest.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/provider/__init__.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/provider/env.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/test_api_contract.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/test_application_migration.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/test_bootstrap_recovery.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/test_credential_catalog.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/test_physical_contract.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_backend/test_runtime_bootstrap.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_operations/test_physical_operations.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_operations/test_postgresql_operations.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/database_operations/test_runtime_and_temporal.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/documentation/test_project_checks.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_admin_installation.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_api_endpoint.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_catalog_outage.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_client_api_contract.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_client_api_coverage.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_client_migration_scaffold.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_client_migration_tls.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_client_package.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_client_signatures.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_client_value_behaviors.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_local_cli_workflow.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_local_client_selection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_migration_metadata_and_downgrade.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_public_imports.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_remaining_client_routes.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/e2e/test_sdk_local_startup.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/examples/test_documented_examples.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/examples/test_postgresql_examples.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/examples/test_setup_launch.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/examples/test_tutorial.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_batch_introspection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_connection_reuse.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_credential_store.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_data_source_rules.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_local_data_sources.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_local_run_logs.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_postgresql_connection.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_postgresql_sql.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_postgresql_tables.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_request_timing.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_serving_policy.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_source_validation.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/integrations/test_sqlite_operations.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/labels/test_labels.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/operations/test_bootstrap_lock.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/operations/test_physical_operation_journal.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/operations/test_search_documents.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/operations/test_timescale_policies.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/packaging/test_client_skills.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/packaging/test_dev_release_version.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/packaging/test_distribution_sources.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/packaging/test_editable_build.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/packaging/test_installed_distribution.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_governed_sql_scope.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_incremental_security.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_local_actor_membership.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_migration_boundary.py +0 -0
- {mainsequence_metatable-0.1.45 → mainsequence_metatable-0.1.46.dev73}/tests/permissions/test_workload_principals.py +0 -0
|
@@ -109,7 +109,7 @@ revisions; do not recompute identity from columns or rewrite applied history.
|
|
|
109
109
|
Read `docs/client/query-and-mutate.md` and `src/metatables/examples/query.py`. Use
|
|
110
110
|
`compile_sqlalchemy_statement` with bound parameters. The request sends SQL and
|
|
111
111
|
selects one DataSource; the API executes as the authenticated user, and the
|
|
112
|
-
selected database backend enforces
|
|
112
|
+
selected database backend enforces the caller's roles (`data_viewer` reads, `data_writer` and above write) on the tables
|
|
113
113
|
actually touched. The API does not parse SQL for authorization. The compiler can
|
|
114
114
|
resolve DataSource and dialect from the selected runtime; supply both explicitly
|
|
115
115
|
for offline compilation. Preserve execution mode, row limits and timeouts.
|
|
@@ -129,14 +129,16 @@ to the separate migration-provider workflow.
|
|
|
129
129
|
To find tables, use `MetaTable.search` as described in the
|
|
130
130
|
[table discovery skill](../metatables-table-discovery/SKILL.md). Legacy convenience
|
|
131
131
|
sharing/label actions are not supported API workflows.
|
|
132
|
-
Use `get_access`, `
|
|
133
|
-
|
|
134
|
-
|
|
132
|
+
Use `get_access`, `grant_role`, `revoke_role`, `allowed_actions` and `explain` on a
|
|
133
|
+
table or `Namespace` for roles (`metadata_viewer`, `data_viewer`, `data_writer`,
|
|
134
|
+
`editor`, `owner`); `Namespace.create(name)` makes the caller its owner. Labels can be
|
|
135
|
+
changed through the documented table PATCH path. Authorization is owned by the API
|
|
136
|
+
catalog; see `docs/security/ownership-and-sharing.md`.
|
|
135
137
|
|
|
136
138
|
Updater output rollback uses `TimeIndexMetaTable.delete_after_date` with an
|
|
137
139
|
inclusive time cutoff and explicit dimension/coordinate scope when appropriate.
|
|
138
140
|
A null cutoff requires a scope. Do not replace that workflow with ad hoc SQL.
|
|
139
|
-
Deletion/cascade requires
|
|
141
|
+
Deletion/cascade requires `tables.delete` (`editor`), relevant protection checks, and explicit
|
|
140
142
|
cascade intent; it is not an administrator-role bypass or migration repair.
|
|
141
143
|
|
|
142
144
|
Before a destructive action, or to show impact in an application UI, call
|
|
@@ -144,12 +146,12 @@ Before a destructive action, or to show impact in an application UI, call
|
|
|
144
146
|
The API returns whether the caller may run it, every blocker, and a graph of
|
|
145
147
|
affected tables, foreign-key effects and reading updates; render that result
|
|
146
148
|
rather than re-deriving foreign-key or permission rules in the client. Cascading
|
|
147
|
-
foreign keys are allowed. Write on a table depends only on its own
|
|
149
|
+
foreign keys are allowed. Write on a table depends only on its own roles; the
|
|
148
150
|
cascade effects in the result are information, never a reason the action is blocked.
|
|
149
151
|
|
|
150
152
|
On a TimescaleDB DataSource, time-index tables are hypertables. Their compression
|
|
151
153
|
and retention policies are set only through `TimeIndexMetaTable.set_timescale_policies`
|
|
152
|
-
(
|
|
154
|
+
(`tables.update`, `editor`) and read with `get_timescale_policies`. Do not add policies to table
|
|
153
155
|
contracts or Alembic revisions; to keep them in code, call the client from a
|
|
154
156
|
bootstrap Job. Retention permanently drops older chunks, including backfills.
|
|
155
157
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: metatables-migrations
|
|
3
|
-
description: "Create and evolve managed application tables through Alembic migration providers with the installed MetaTables Python client. Covers provider scope and placement, scaffolding, revision authoring, local execution, the deployment-workflow migration Job for hosted runtimes, the
|
|
3
|
+
description: "Create and evolve managed application tables through Alembic migration providers with the installed MetaTables Python client. Covers provider scope and placement, scaffolding, revision authoring, local execution, the deployment-workflow migration Job for hosted runtimes, the namespace and roles that give the Job access in each Environment, and reservation or finalization failures. Excludes API catalog migrations, client-library implementation, API/server changes and repository tooling."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# MetaTables client application migrations
|
|
@@ -46,17 +46,15 @@ migrations. Read `docs/client/deploy-application-migrations.md`.
|
|
|
46
46
|
1. **Develop locally.** Author the revision and apply it to verified local SQLite
|
|
47
47
|
with the [local development skill](../metatables-local-development/SKILL.md).
|
|
48
48
|
2. **Commit the revision with the code that needs it.**
|
|
49
|
-
3. **Give
|
|
50
|
-
Environment,
|
|
51
|
-
|
|
52
|
-
migration Job's workload User and
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
Tell the user these steps; they are made in the platform and in MetaTables
|
|
59
|
-
Security, not in the repository.
|
|
49
|
+
3. **Give the Job access.** Before the first hosted migration in each
|
|
50
|
+
Environment, a person (no admin needed) creates each namespace the provider
|
|
51
|
+
creates tables in, with `Namespace.create(name)` or the Admin, and becomes its
|
|
52
|
+
`owner`. As owner they grant `editor` to the migration Job's workload User and
|
|
53
|
+
`data_writer` to resources that only read and write rows, directly or through a
|
|
54
|
+
Team they belong to that contains those workloads. Recommend one namespace per
|
|
55
|
+
application; it is not required (see "Namespaces and applications" in
|
|
56
|
+
`docs/security/ownership-and-sharing.md`). Tell the user these steps; they are
|
|
57
|
+
made in MetaTables (and, for a Team, the platform), not in the repository.
|
|
60
58
|
4. **Deploy.** The application's `.mainsequence/workflows/` file declares a
|
|
61
59
|
migration Job that calls `upgrade_application` for each provider, in
|
|
62
60
|
dependency order, from the candidate image. The Job and every resource that
|
|
@@ -78,13 +76,14 @@ Rules:
|
|
|
78
76
|
during and after a failed rollout. Add first; drop or rename in a later release.
|
|
79
77
|
- Redeploying an older image does not roll back the schema. Downgrade is never a
|
|
80
78
|
deployment step.
|
|
81
|
-
- Tables belong to
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
Job
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
79
|
+
- Tables belong to their namespace's roles, never to one workload User. A table
|
|
80
|
+
created in a namespace gets no binding of its own. Workloads cannot create tables
|
|
81
|
+
outside a namespace (`namespace_required`). Workload Users change with each
|
|
82
|
+
Environment and each recreated Job: a direct role needs granting again, a Team
|
|
83
|
+
only membership. Do not run the Job as an Organization admin to get around a
|
|
84
|
+
refusal.
|
|
85
|
+
- The Job needs `editor` on every namespace the provider uses; resources that only
|
|
86
|
+
read and write rows need `data_writer`.
|
|
88
87
|
|
|
89
88
|
## Source and runtime context
|
|
90
89
|
|
|
@@ -182,7 +181,7 @@ branch on `op.get_bind().dialect.name`.
|
|
|
182
181
|
The client imports and executes application revisions, using the connection
|
|
183
182
|
resolved for the selected environment. Environment operators supply the database
|
|
184
183
|
login's DDL privileges. MetaTables does not mint migration roles or sandbox DDL.
|
|
185
|
-
API
|
|
184
|
+
API `tables.migrate` checks govern connection admission and provider catalog operations.
|
|
186
185
|
The client reserves catalog entries, runs Alembic, closes its physical connection,
|
|
187
186
|
and finalizes contracts through the API. Treat connection material as private.
|
|
188
187
|
|
|
@@ -252,13 +251,12 @@ Read `docs/operations/recovery-and-observability.md`.
|
|
|
252
251
|
another install overwrote it. Move the provider under an application-owned
|
|
253
252
|
module (see [Provider placement](#provider-placement)), preserving its provider
|
|
254
253
|
identity and applied revision history. Do not edit files in `site-packages`.
|
|
255
|
-
- If reservation fails with `
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
change code or physical names to get around it.
|
|
254
|
+
- If reservation fails with `namespace_not_found` (403), create the namespace and
|
|
255
|
+
grant the Job `editor`, as in step 3. With `namespace_access_required`, an owner
|
|
256
|
+
the error lists grants the `caller_user_uid` `editor` on the namespace, or adds it
|
|
257
|
+
to a Team that holds it. With `namespace_required`, set the table's namespace.
|
|
258
|
+
With `table_not_editable`, an owner of the table or its namespace grants `editor`.
|
|
259
|
+
Do not change code or physical names to get around it.
|
|
262
260
|
- If reservation fails otherwise, compare provider scope and physical identities
|
|
263
261
|
before changing code. Do not create a second catalog row for the same table.
|
|
264
262
|
- If Alembic succeeds but finalization fails, physical DDL may already be
|
|
@@ -296,5 +294,5 @@ Read `docs/operations/recovery-and-observability.md`.
|
|
|
296
294
|
Verify provider scope and placement, revision content, the selected environment
|
|
297
295
|
connection, repeat execution, and final active bindings. Check that the deployment
|
|
298
296
|
workflow runs the migration Job before every resource that uses the tables, and
|
|
299
|
-
that each Environment
|
|
297
|
+
that each Environment's namespaces grant the Job's workload User `editor`. Report
|
|
300
298
|
separately what was checked offline and what was exercised against a configured API.
|
|
@@ -154,7 +154,7 @@ key, the time index and the identity dimensions.
|
|
|
154
154
|
table is published.
|
|
155
155
|
- `__metatable_namespace__` is the owning application or source, not a SQL schema.
|
|
156
156
|
Its description (one or two sentences about the application or source) is
|
|
157
|
-
written once by the namespace
|
|
157
|
+
written once by someone with `editor` on the namespace; do not repeat it in table descriptions.
|
|
158
158
|
|
|
159
159
|
### Time-index tables, in addition
|
|
160
160
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
schema=1
|
|
2
2
|
library_name=ms-tau-sdk
|
|
3
3
|
namespace=ms_tau_sdk
|
|
4
|
-
pinned_version=2.0.
|
|
4
|
+
pinned_version=2.0.18
|
|
5
5
|
skills_path=src/ms_tau_sdk/agent_skills
|
|
6
6
|
skills=tau_a2a_runtime_adapter,tau_local_development,tau_project_customization,tau_repository_integration,tau_security_and_access
|
|
7
7
|
command=ms-tau skills sync --path .
|
|
@@ -161,7 +161,7 @@ async def revenue_by_region(tool_call_id, arguments, signal=None, on_update=None
|
|
|
161
161
|
- `current_requester()` returns the person the turn serves, with `uid` and
|
|
162
162
|
`await in_teams(team_uids, *, max_age_seconds=None)`, or `None`. `in_teams()` answers while the
|
|
163
163
|
person is the verified caller of the turn's request (see `tau_security_and_access`, "Checking the
|
|
164
|
-
person's teams");
|
|
164
|
+
person's teams"); the person carries no team list. The platform names that person when the turn
|
|
165
165
|
starts, whoever called; it is `None` when the platform names nobody, in local mode, and in code
|
|
166
166
|
outside a turn. Only it names the requester: never take a person's UID from tool arguments, the
|
|
167
167
|
prompt, history, or a header.
|
|
@@ -184,7 +184,7 @@ Rules for tools that act for the requester:
|
|
|
184
184
|
a URL, and never sets `Authorization` or an `X-MainSequence-*` header.
|
|
185
185
|
- A delegated call uses the person's ordinary permissions, including administrative ones; any other
|
|
186
186
|
call uses the Agent's own. Each operation decides what it needs. Never infer write permission
|
|
187
|
-
from
|
|
187
|
+
from read access.
|
|
188
188
|
- Return to the model only business results, such as rows, numbers, and names. Never return the
|
|
189
189
|
response object, its headers, a token, a proof, or a raw error body.
|
|
190
190
|
- Keep nothing for another turn or another person. The delegation ends with the turn, and a task
|
|
@@ -163,8 +163,9 @@ What makes it safe:
|
|
|
163
163
|
|
|
164
164
|
- No tool takes a Secret value or a Secret name from the model. The name is built from
|
|
165
165
|
`current_requester().uid`, so prompt injection cannot point the tool at another Secret.
|
|
166
|
-
- `delegation="required"` reads the Secret as the person. The platform returns
|
|
167
|
-
person
|
|
166
|
+
- `delegation="required"` reads the Secret as the person. The platform returns the value only if
|
|
167
|
+
the person holds `value_reader`, `editor` or `owner` on it; the name is a lookup key, not the
|
|
168
|
+
protection.
|
|
168
169
|
- The value exists only inside one call. It never goes into the result, `details`, a log, an
|
|
169
170
|
exception message, a file or a cache for the next turn. It travels in a header, never in a URL,
|
|
170
171
|
because URLs reach logs. Errors from the outside call are caught, and the provider's raw body is
|
|
@@ -178,19 +179,19 @@ What makes it safe:
|
|
|
178
179
|
|
|
179
180
|
A delegated read returns anything the person can view in the Agent's Environment: what they
|
|
180
181
|
created and what others shared with them, directly or through a team. This holds for Secrets and
|
|
181
|
-
other shared resources.
|
|
182
|
-
can
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
182
|
+
other shared resources. A team's members receive what is shared with it, and `in_teams()` answers
|
|
183
|
+
membership. Who can see and manage a team is decided separately, by the `viewer`,
|
|
184
|
+
`membership_manager`, `editor` and `owner` policies on it: any person can create a team and
|
|
185
|
+
becomes its owner and first member, members can see the team and leave it, and Organization admins
|
|
186
|
+
manage every team from their role, without being members. No membership is protected. See the SDK
|
|
187
|
+
Security and access guide's **Teams and membership** section. The platform enforces sharing;
|
|
188
|
+
which of those objects a tool uses is part of the tool's design. For Secrets, the naming
|
|
189
|
+
convention states that design:
|
|
189
190
|
|
|
190
191
|
- **A personal credential:** a name tied to the person, such as `QUOTES_API_KEY__<person uid>`.
|
|
191
192
|
The person decides whether to share it.
|
|
192
|
-
- **A team credential:** a name the team agrees on,
|
|
193
|
-
it for any member.
|
|
193
|
+
- **A team credential:** a name the team agrees on, with `value_reader` attached to the team. The
|
|
194
|
+
tool reads it for any member.
|
|
194
195
|
- **Someone else's Secret shared with the person:** valid whenever the tool is meant to use it.
|
|
195
196
|
|
|
196
197
|
Whoever can edit a Secret decides its value, so the tool uses whatever value they set. Granting or
|
|
@@ -199,13 +200,68 @@ decision people make through sharing, not one the platform makes for them.
|
|
|
199
200
|
|
|
200
201
|
How sharing works:
|
|
201
202
|
|
|
202
|
-
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
-
|
|
207
|
-
|
|
208
|
-
|
|
203
|
+
- Policies on a Secret decide access: `reader` sees that it exists and its name, never its value;
|
|
204
|
+
`value_reader` also reads the current value; `editor` also reads earlier values, sets a new value,
|
|
205
|
+
deletes it and sees who has access; `owner` also decides who has access. The creator becomes its
|
|
206
|
+
owner, and Organization admins hold every policy on their Organization's Secrets from their role.
|
|
207
|
+
- Owners attach and detach these policies for people, teams and workloads; whoever manages a
|
|
208
|
+
workload can also give it a policy they hold, and anyone can remove their own. No policy is
|
|
209
|
+
protected: an owner can remove the creator's. Nobody gives a policy with more than they hold, and
|
|
210
|
+
people other than Organization admins give access only to people who share an active team with
|
|
211
|
+
them, to teams they belong to and to workloads they can view.
|
|
212
|
+
- `GET /api/v1/secrets/<uid>/access/` lists who holds which policy, for editors and owners, and
|
|
213
|
+
`GET /api/v1/secrets/<uid>/access/me/` answers what the caller may do with it. A tool can use
|
|
214
|
+
them when its design needs to, for example to refuse a team key where it expects a personal one.
|
|
215
|
+
That is a choice of the tool, not a platform rule.
|
|
216
|
+
|
|
217
|
+
## Model providers
|
|
218
|
+
|
|
219
|
+
The model a session runs on uses a provider credential or custom endpoint that the session owner
|
|
220
|
+
may use; a delegated child session uses its parent's owner. A policy that only the Agent's workload
|
|
221
|
+
holds does not count in a person's session. Policies on the record decide who may use it, held
|
|
222
|
+
directly or through a team:
|
|
223
|
+
|
|
224
|
+
- `user` uses it: a credential is selected and delivered to sessions and workloads, including local
|
|
225
|
+
Tau, and a custom endpoint receives their requests.
|
|
226
|
+
- `editor` also refreshes, reconnects or revokes a credential, or changes or deletes an endpoint,
|
|
227
|
+
and sees who has access; `owner` also decides who has access.
|
|
228
|
+
- The credential's person and the endpoint's creator hold `owner`, and Organization admins hold
|
|
229
|
+
every action on their Organization's records. Owners give and remove the policies in Command
|
|
230
|
+
Center's provider settings or through `/api/v1/model-provider-credentials/<uid>/access/` and
|
|
231
|
+
`/api/v1/custom-model-providers/<uid>/access/`; a refused change answers `403` `missing_action`
|
|
232
|
+
with the `granting_policies` that would allow it.
|
|
233
|
+
|
|
234
|
+
Holding `user` delivers the credential, or the endpoint's stored authentication, to the holder's own
|
|
235
|
+
runtime, including local Tau, where it can be copied; removing the policy stops later deliveries,
|
|
236
|
+
not copies already made. To let a team run an Agent on one credential, its owner gives the team
|
|
237
|
+
`user`.
|
|
238
|
+
|
|
239
|
+
## Agents
|
|
240
|
+
|
|
241
|
+
Policies on an Agent decide who may talk to it and manage it, held directly or through a team:
|
|
242
|
+
|
|
243
|
+
- `user` talks to it and gives it Tasks, seeing only the Tasks they asked for; `viewer` also sees
|
|
244
|
+
every Task of the Agent with its requests and results; `operator` also stops any Task or
|
|
245
|
+
conversation run, other people's included; `editor` also configures it, moves it to a new runtime
|
|
246
|
+
build, deletes it, manages what its workload can reach and sees who has access; `owner` also
|
|
247
|
+
decides who has access.
|
|
248
|
+
- A conversation stays its owner's: no Agent policy, `owner` included, reads another person's
|
|
249
|
+
conversation (Organization admins can read it, never change it), and only a Task's requesters
|
|
250
|
+
continue it. On an Agent that acts for its requester, a Task is visible only to its requesters
|
|
251
|
+
and Organization admins.
|
|
252
|
+
- Whoever creates an Agent holds `owner`, and Organization admins hold every action on their
|
|
253
|
+
Organization's Agents. Owners give and remove the policies through
|
|
254
|
+
`/api/v1/agents/<uid>/access/`; a refused change answers `403` `missing_action` with the
|
|
255
|
+
`granting_policies` that would allow it, and an Agent the caller holds no policy on answers `404`.
|
|
256
|
+
- The release an Agent runs on takes no policy of its own: `viewer` and `operator` on the Agent see
|
|
257
|
+
it, and `editor` and `owner` change it.
|
|
258
|
+
|
|
259
|
+
A tool reaches Agents and their Tasks with the caller's policies: the person's in a delegated call,
|
|
260
|
+
the Agent's workload's otherwise. To send another Agent work without a delegation, the workload
|
|
261
|
+
needs its own policy on that Agent, declared under `access.agents` in its workflow file, usually
|
|
262
|
+
`policy: user`. Calling another application with `call_release()` needs a policy on its release
|
|
263
|
+
that includes calling it (`resource-releases.invoke`, which every release policy has), and the
|
|
264
|
+
platform checks it again on every call.
|
|
209
265
|
|
|
210
266
|
## Checking the person's teams
|
|
211
267
|
|
|
@@ -220,7 +276,9 @@ if person is None or REPORTS_TEAM_UID not in await person.in_teams([REPORTS_TEAM
|
|
|
220
276
|
```
|
|
221
277
|
|
|
222
278
|
- `await in_teams(team_uids, *, max_age_seconds=None)` returns the subset of `team_uids` the
|
|
223
|
-
person is an active member of, as a `frozenset`. Unknown and inactive teams are left out
|
|
279
|
+
person is an active member of, as a `frozenset`. Unknown and inactive teams are left out, and so
|
|
280
|
+
is a team the person only manages: managing a team, also as an Organization admin, does not make
|
|
281
|
+
anyone a member.
|
|
224
282
|
- On the turn's requester it answers only while that person is the verified caller of the request
|
|
225
283
|
the turn runs in, such as a chat or A2A Message they sent. A turn with no such request raises
|
|
226
284
|
`TauSDKError`: a Task attempt the platform dispatches, a turn that resumes a caller delivery, or
|
|
@@ -230,9 +288,7 @@ if person is None or REPORTS_TEAM_UID not in await person.in_teams([REPORTS_TEAM
|
|
|
230
288
|
`0`: only within its request); set it in `harness_agent.spec.env_vars`. `max_age_seconds=0`
|
|
231
289
|
always asks the platform: use it before a write that must see a removal at once.
|
|
232
290
|
- A check the platform cannot answer raises `BackendError`; it never answers "not a member".
|
|
233
|
-
-
|
|
234
|
-
not know the person's teams, and raises when the caller's assertion carried no team list, as
|
|
235
|
-
every assertion will once the platform stops signing them. Use `in_teams()`.
|
|
291
|
+
- The requester carries no team list; `in_teams()` is the only membership check.
|
|
236
292
|
|
|
237
293
|
## What never reaches the model
|
|
238
294
|
|
|
@@ -274,4 +330,5 @@ Patch the extension module's `current_requester` and `platform_client` with fake
|
|
|
274
330
|
- Secret values stay inside one call, in headers, never in results, logs, errors, URLs or caches.
|
|
275
331
|
- The naming convention says whose Secrets the tool uses, and the people sharing them know it.
|
|
276
332
|
- A refused delegated call is reported, never retried as the Agent.
|
|
277
|
-
- The Agent's workload holds no grants it does not need, and none on people's Secrets
|
|
333
|
+
- The Agent's workload holds no grants it does not need, and none on people's Secrets; `user` is
|
|
334
|
+
enough on an Agent it only sends work to.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mainsequence-metatable
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.46.dev73
|
|
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
|
|
@@ -14,7 +14,7 @@ Classifier: Operating System :: OS Independent
|
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: mainsequence[mcp]<10,>=9.0.
|
|
17
|
+
Requires-Dist: mainsequence[mcp]<10,>=9.0.29
|
|
18
18
|
Requires-Dist: alembic<2,>=1.18
|
|
19
19
|
Requires-Dist: cachetools
|
|
20
20
|
Requires-Dist: cryptography<51,>=46
|
|
@@ -51,7 +51,7 @@ Requires-Dist: twine<7,>=6; extra == "dev"
|
|
|
51
51
|
Provides-Extra: docs
|
|
52
52
|
Requires-Dist: mkdocs<2,>=1.6; extra == "docs"
|
|
53
53
|
Provides-Extra: agent
|
|
54
|
-
Requires-Dist: ms-tau-sdk==2.0.
|
|
54
|
+
Requires-Dist: ms-tau-sdk==2.0.18; extra == "agent"
|
|
55
55
|
Provides-Extra: mysql
|
|
56
56
|
Requires-Dist: PyMySQL[rsa]<1.2,>=1.1.1; extra == "mysql"
|
|
57
57
|
Provides-Extra: mssql
|
|
@@ -93,7 +93,7 @@ through Settings; startup never runs Alembic.
|
|
|
93
93
|
|
|
94
94
|
- [Install and connect](docs/client/installation-and-connection.md), including the complete local CLI workflow.
|
|
95
95
|
- [Understand the concepts](docs/concepts/architecture.md) and [identity and scope](docs/concepts/identity-and-scope.md).
|
|
96
|
-
- [Understand the security model](docs/security/index.md): administration,
|
|
96
|
+
- [Understand the security model](docs/security/index.md): administration, roles on namespaces and tables, and implementation status.
|
|
97
97
|
- [Follow the market-data tutorial](docs/client/tutorial.md) with its complete examples folder.
|
|
98
98
|
- [Define and migrate managed tables](docs/client/define-and-migrate-tables.md).
|
|
99
99
|
- [Register existing tables](docs/client/register-existing-tables.md).
|
|
@@ -34,7 +34,7 @@ through Settings; startup never runs Alembic.
|
|
|
34
34
|
|
|
35
35
|
- [Install and connect](docs/client/installation-and-connection.md), including the complete local CLI workflow.
|
|
36
36
|
- [Understand the concepts](docs/concepts/architecture.md) and [identity and scope](docs/concepts/identity-and-scope.md).
|
|
37
|
-
- [Understand the security model](docs/security/index.md): administration,
|
|
37
|
+
- [Understand the security model](docs/security/index.md): administration, roles on namespaces and tables, and implementation status.
|
|
38
38
|
- [Follow the market-data tutorial](docs/client/tutorial.md) with its complete examples folder.
|
|
39
39
|
- [Define and migrate managed tables](docs/client/define-and-migrate-tables.md).
|
|
40
40
|
- [Register existing tables](docs/client/register-existing-tables.md).
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# ADR 0002: Application administration and table ownership
|
|
2
2
|
|
|
3
|
+
> Amendment (2026-10-19): [ADR 0024](0024-namespace-and-table-access-roles.md) replaces Reader/Writer
|
|
4
|
+
> with roles (`metadata_viewer`, `data_viewer`, `data_writer`, `editor`, `owner`) checked as actions.
|
|
5
|
+
> Any person creates a namespace and owns it, namespace owners grant on it instead of
|
|
6
|
+
> Security, and Organization admins hold every action, data included.
|
|
7
|
+
|
|
3
8
|
> Amendment (2026-10-01): [ADR 0013](0013-application-owned-migrations.md) establishes application-owned
|
|
4
9
|
> client Alembic execution using the configured environment connection. Its DDL
|
|
5
10
|
> privileges belong to the environment database role. It supersedes this ADR's
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# ADR 0007: Enforce table grants in the database
|
|
2
2
|
|
|
3
|
+
> Amendment (2026-10-19): [ADR 0024](0024-namespace-and-table-access-roles.md) keeps the two
|
|
4
|
+
> privilege sets: `data_viewer` maps to Reader's `SELECT`, `data_writer`, `editor` and `owner`
|
|
5
|
+
> to Writer's privileges, and `metadata_viewer` to none. An admin group role holds write
|
|
6
|
+
> privileges on every managed table; admins' login roles are its members.
|
|
7
|
+
|
|
3
8
|
> Amendment (2026-10-01): [ADR 0013](0013-application-owned-migrations.md) establishes application-owned
|
|
4
9
|
> client Alembic execution using the configured environment connection. Its DDL
|
|
5
10
|
> privileges belong to the environment database role. It supersedes this ADR's
|