mainsequence 8.1.20.dev8__tar.gz → 8.1.20.dev10__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-8.1.20.dev8/mainsequence.egg-info → mainsequence-8.1.20.dev10}/PKG-INFO +1 -1
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/skills/data_access/exploration/SKILL.md +3 -3
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +12 -9
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +13 -16
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/skills/data_publishing/time_index_table_updates/SKILL.md +3 -2
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +6 -9
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +8 -4
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10/mainsequence.egg-info}/PKG-INFO +1 -1
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/pyproject.toml +1 -1
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_code_repository_documentation_contract.py +64 -14
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/LICENSE +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/MANIFEST.in +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/README.md +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/AGENTS.md +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/skills/maintenance/code_repository_maintenance/SKILL.md +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/agent_scaffold/skills/sdk_code_repository_execution/SKILL.md +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/__init__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/__main__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/bootstrap.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/api.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/cli.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/code_repository_status.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/config.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/migrations.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/ui.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/__init__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/agent_runtime_models.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/base.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/client.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/compute_validation.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/dtype_codec.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/github_issues.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/metatables/__init__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/metatables/core.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/models_foundry.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/models_user.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/observability.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/utils.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/code_repository_context.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/code_repository_skills.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/defaults.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/logconf.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/__init__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/__main__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/future_registry.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/hashing.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/migrations/__init__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/migrations/alembic.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/migrations/env.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/migrations/provider.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/migrations/registry.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/schema_names.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/time_index_table_refs.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/time_index_table_updates/__init__.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/time_index_table_updates/configuration.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/time_index_table_updates/dependencies.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/time_index_table_updates/managers.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/time_index_table_updates/namespacing.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/time_index_table_updates/runner.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/time_index_table_updates/updaters.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/time_index_table_updates/utils.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/repository_identity_security.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/scaffold_skills.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence.egg-info/SOURCES.txt +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/setup.cfg +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/fixtures/time_index_table_update_hash_v2_golden.json +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_auth_precedence.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_canonical_api_route_contract.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_cli.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_cli_migrations.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_client.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_code_repository_batch_jobs_from_file.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_code_repository_branch_contract.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_code_repository_runtime_context.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_code_repository_skills.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_dependency_extras.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_dev_release_version.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_duckdb_interface_dimensions.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_environment_resource_context.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_environment_response_contracts.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_filter_normalization.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_github_issues_client.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_instrumentation.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_local_ops.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_logconf.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_meta_table_migrations.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_meta_tables_client_models.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_notification_uid_contract.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_observability_client.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_scaffold_skills.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_schema_names.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_secret_client_model.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_source_table_configuration.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_sqlite_interface_dimensions.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_ssh_utils.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_time_index_table_access_dimension_audit.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_time_index_table_dimension_queries.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_time_index_table_update_configuration.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_time_index_table_update_configuration_client.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_time_index_table_update_flow.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_time_index_table_update_hard_cut.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_tolerant_response_reading.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_update_runner_uid_runtime.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_update_statistics.py +0 -0
- {mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_update_uid_guards.py +0 -0
|
@@ -60,9 +60,9 @@ This skill discovers and identifies data. It does not publish, redesign, or defi
|
|
|
60
60
|
## Read First
|
|
61
61
|
|
|
62
62
|
1. `AGENTS.md`
|
|
63
|
-
2.
|
|
64
|
-
3.
|
|
65
|
-
4.
|
|
63
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/cli/>
|
|
64
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/time_index_table_updates/>
|
|
65
|
+
4. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/> when the exploration touches row-oriented storage
|
|
66
66
|
|
|
67
67
|
## Inputs This Skill Needs
|
|
68
68
|
|
|
@@ -17,16 +17,13 @@ platform-managed application tables outside the migration workflow.
|
|
|
17
17
|
|
|
18
18
|
## Read First
|
|
19
19
|
|
|
20
|
-
1. `
|
|
21
|
-
2.
|
|
22
|
-
3.
|
|
23
|
-
4. `docs/adr/0026-sdk-owned-migration-scaffolding.md`
|
|
20
|
+
1. `AGENTS.md`
|
|
21
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/migrations/>
|
|
22
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/api/>
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<https://github.com/mainsequence-projects/mainsequence-sdk-tutorial>; read it
|
|
29
|
-
only when a runnable end-to-end example is needed.
|
|
24
|
+
The pages above are the authoritative reference for provider behavior and
|
|
25
|
+
migration contracts. This skill states the contract it needs; read those pages
|
|
26
|
+
for the full provider and catalog-binding detail.
|
|
30
27
|
|
|
31
28
|
## Required Decisions
|
|
32
29
|
|
|
@@ -103,6 +100,12 @@ platform-managed, Alembic-managed reservations and are validated before HTTP.
|
|
|
103
100
|
|
|
104
101
|
- Keep Alembic as the schema migration engine; do not build custom operation
|
|
105
102
|
lists or fake migration payload formats.
|
|
103
|
+
- These are intentionally unsupported and must not be reintroduced: SDK-managed
|
|
104
|
+
migration artifact table models, packaged migration rows,
|
|
105
|
+
`load_packaged_migration`, `sync_packaged_migration`,
|
|
106
|
+
`build_migration_registry_row`, custom `operations()` migration modules, and
|
|
107
|
+
operation names such as `add_column` or `create_index`. Use provider-selected
|
|
108
|
+
Alembic revisions and Alembic-rendered SQL only.
|
|
106
109
|
- Keep provider scope explicit. Do not scan all imported models or installed
|
|
107
110
|
packages.
|
|
108
111
|
- For one-model or configured dynamic providers, use `metadata_for_models(...)`
|
|
@@ -49,19 +49,16 @@ If the user is still in the discovery process and does not yet know what data ex
|
|
|
49
49
|
|
|
50
50
|
## Read First
|
|
51
51
|
|
|
52
|
-
1. `
|
|
53
|
-
2.
|
|
54
|
-
3.
|
|
55
|
-
4.
|
|
56
|
-
5.
|
|
57
|
-
6.
|
|
52
|
+
1. `AGENTS.md`
|
|
53
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/>
|
|
54
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/sqlalchemy/>
|
|
55
|
+
4. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/compiled_sql/>
|
|
56
|
+
5. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/migrations/>
|
|
57
|
+
6. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/api/>
|
|
58
|
+
7. For migration work, use
|
|
58
59
|
`.agents/skills/mainsequence/data_publishing/meta_table_migrations/SKILL.md`
|
|
59
60
|
|
|
60
|
-
The
|
|
61
|
-
The runnable beginner walkthrough is maintained in the separate canonical
|
|
62
|
-
tutorial CodeRepository at
|
|
63
|
-
<https://github.com/mainsequence-projects/mainsequence-sdk-tutorial>; read it
|
|
64
|
-
only when a runnable end-to-end example is needed.
|
|
61
|
+
The pages above are the authoritative reference for MetaTables.
|
|
65
62
|
|
|
66
63
|
## Inputs This Skill Needs
|
|
67
64
|
|
|
@@ -313,9 +310,9 @@ asset_meta_table = MetaTable.register(asset_request)
|
|
|
313
310
|
### 4. Schema changes use Alembic
|
|
314
311
|
|
|
315
312
|
When doing migration work, use
|
|
316
|
-
`.agents/skills/mainsequence/data_publishing/meta_table_migrations/SKILL.md
|
|
317
|
-
|
|
318
|
-
|
|
313
|
+
`.agents/skills/mainsequence/data_publishing/meta_table_migrations/SKILL.md`,
|
|
314
|
+
which owns the provider-based Alembic lifecycle and carries the migration
|
|
315
|
+
reading list.
|
|
319
316
|
|
|
320
317
|
Do not apply in-place contract changes by changing a `PlatformManagedMetaTable`
|
|
321
318
|
SQLAlchemy class and calling normal registration again. Shape-addressed
|
|
@@ -355,8 +352,8 @@ physical table and Alembic version table names. Use `suffix` for a namespace or
|
|
|
355
352
|
variant, for example `schema_table_name("msm", "positions", suffix="broker")`.
|
|
356
353
|
|
|
357
354
|
Do not ask users to construct backend migration payloads or call low-level
|
|
358
|
-
migration request models. The backend request shape is
|
|
359
|
-
|
|
355
|
+
migration request models. The backend request shape is internal; the
|
|
356
|
+
user-facing path is:
|
|
360
357
|
|
|
361
358
|
```bash
|
|
362
359
|
mainsequence migrations current --provider sdk_examples.migrations:migration
|
|
@@ -64,8 +64,9 @@ If the task depends on one of those areas, route it explicitly instead of guessi
|
|
|
64
64
|
|
|
65
65
|
## Read First
|
|
66
66
|
|
|
67
|
-
1. `
|
|
68
|
-
2.
|
|
67
|
+
1. `AGENTS.md`
|
|
68
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/time_index_table_updates/>
|
|
69
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/sqlalchemy/>
|
|
69
70
|
|
|
70
71
|
## Inputs This Skill Needs
|
|
71
72
|
|
|
@@ -61,16 +61,13 @@ This skill only reasons about access to deployed resources such as `ResourceRele
|
|
|
61
61
|
|
|
62
62
|
## Read First
|
|
63
63
|
|
|
64
|
-
1. `
|
|
65
|
-
2.
|
|
64
|
+
1. `AGENTS.md`
|
|
65
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/infrastructure/users_and_access/>
|
|
66
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/infrastructure/constants_and_secrets/>
|
|
66
67
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
and sharing. The runnable beginner walkthrough is maintained in the separate
|
|
71
|
-
canonical tutorial CodeRepository at
|
|
72
|
-
<https://github.com/mainsequence-projects/mainsequence-sdk-tutorial>; read it
|
|
73
|
-
only when a runnable end-to-end example is needed.
|
|
68
|
+
The pages above are the authoritative reference for access control and sharing.
|
|
69
|
+
If the task is specifically about a resource type, also read that resource's own
|
|
70
|
+
page from the documentation root at <https://mainsequence-sdk.github.io/mainsequence-sdk/>.
|
|
74
71
|
|
|
75
72
|
## Inputs This Skill Needs
|
|
76
73
|
|
|
@@ -57,10 +57,14 @@ This skill must not claim ownership of:
|
|
|
57
57
|
|
|
58
58
|
## Read First
|
|
59
59
|
|
|
60
|
-
1. `
|
|
61
|
-
2.
|
|
62
|
-
3.
|
|
63
|
-
|
|
60
|
+
1. `AGENTS.md`
|
|
61
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/infrastructure/scheduling_jobs/>
|
|
62
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/infrastructure/artifacts/>
|
|
63
|
+
4. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/infrastructure/owner_observability/> when inspecting logs or resource usage
|
|
64
|
+
|
|
65
|
+
If the task touches deployed FastAPI APIs, also use
|
|
66
|
+
`.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md` before
|
|
67
|
+
changing the operational workflow.
|
|
64
68
|
|
|
65
69
|
## Inputs This Skill Needs
|
|
66
70
|
|
|
@@ -24,10 +24,14 @@ STREAMLIT_REMOVAL_LINK_PATHS = {
|
|
|
24
24
|
Path("docs/index.md"),
|
|
25
25
|
}
|
|
26
26
|
SKILL_ROOT = REPOSITORY_ROOT / "agent_scaffold" / "skills"
|
|
27
|
-
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
|
|
27
|
+
DOCUMENTATION_SITE_ROOT = "https://mainsequence-sdk.github.io/mainsequence-sdk"
|
|
28
|
+
# The wheel ships `agent_scaffold/skills` and no `docs/`, and the CLI copies those
|
|
29
|
+
# skills into a user's CodeRepository under `.agents/skills/<namespace>/`. There,
|
|
30
|
+
# `docs/` is that repository's own directory, so a skill that names an SDK
|
|
31
|
+
# documentation page by repository-relative path names a file the agent reading it
|
|
32
|
+
# cannot open. Skills cite the published documentation site instead.
|
|
33
|
+
SKILL_REPOSITORY_DOCUMENTATION_PATH = re.compile(r"`(docs/[A-Za-z0-9_./-]+\.md)`")
|
|
34
|
+
SKILL_DOCUMENTATION_URL = re.compile(re.escape(DOCUMENTATION_SITE_ROOT) + r"(/[A-Za-z0-9_./-]*)")
|
|
31
35
|
# Skills are copied into a CodeRepository under `.agents/skills/<namespace>/`, so
|
|
32
36
|
# a cross-skill reference maps back to a shipped `agent_scaffold/skills` path.
|
|
33
37
|
SKILL_CROSS_REFERENCE = re.compile(r"`\.agents/skills/[A-Za-z0-9_]+/([A-Za-z0-9_./-]+/SKILL\.md)`")
|
|
@@ -54,8 +58,33 @@ RETIRED_PUBLIC_IDENTIFIERS = {
|
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
|
|
57
|
-
def
|
|
58
|
-
|
|
61
|
+
def _shipped_scaffold_documents() -> tuple[Path, ...]:
|
|
62
|
+
"""Every Markdown file the wheel ships under `agent_scaffold`.
|
|
63
|
+
|
|
64
|
+
`AGENTS.md` ships beside the skills and several skills make it their first
|
|
65
|
+
mandatory read, so it carries the same reference obligations they do.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
return tuple(sorted((REPOSITORY_ROOT / "agent_scaffold").rglob("*.md")))
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _documentation_page_for_url_path(url_path: str) -> Path | None:
|
|
72
|
+
"""Resolve a documentation-site URL path to the `docs/` page that renders it.
|
|
73
|
+
|
|
74
|
+
MkDocs serves directory URLs, so `/knowledge/meta_tables/migrations/` renders
|
|
75
|
+
`docs/knowledge/meta_tables/migrations.md` and `/knowledge/meta_tables/`
|
|
76
|
+
renders that directory's `index.md`. The transform is pure, so a skill's
|
|
77
|
+
documentation links are checkable without reaching the network.
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
relative = url_path.strip("/")
|
|
81
|
+
if not relative:
|
|
82
|
+
return REPOSITORY_ROOT / "docs" / "index.md"
|
|
83
|
+
candidates = (
|
|
84
|
+
REPOSITORY_ROOT / "docs" / f"{relative}.md",
|
|
85
|
+
REPOSITORY_ROOT / "docs" / relative / "index.md",
|
|
86
|
+
)
|
|
87
|
+
return next((candidate for candidate in candidates if candidate.is_file()), None)
|
|
59
88
|
|
|
60
89
|
|
|
61
90
|
def _documentation_files() -> tuple[Path, ...]:
|
|
@@ -134,27 +163,48 @@ def test_current_documentation_does_not_advertise_streamlit_support(path: Path)
|
|
|
134
163
|
|
|
135
164
|
@pytest.mark.parametrize(
|
|
136
165
|
"path",
|
|
137
|
-
|
|
166
|
+
_shipped_scaffold_documents(),
|
|
138
167
|
ids=lambda path: str(path.relative_to(REPOSITORY_ROOT)),
|
|
139
168
|
)
|
|
140
|
-
def
|
|
169
|
+
def test_skills_do_not_cite_repository_relative_documentation_paths(path: Path) -> None:
|
|
141
170
|
relative_path = path.relative_to(REPOSITORY_ROOT)
|
|
142
171
|
text = path.read_text(encoding="utf-8")
|
|
143
172
|
|
|
144
|
-
|
|
173
|
+
repository_paths = sorted(set(SKILL_REPOSITORY_DOCUMENTATION_PATH.findall(text)))
|
|
174
|
+
|
|
175
|
+
assert not repository_paths, (
|
|
176
|
+
f"{relative_path} cites SDK documentation by repository-relative path: "
|
|
177
|
+
f"{repository_paths}. The wheel ships no `docs/`, so cite "
|
|
178
|
+
f"{DOCUMENTATION_SITE_ROOT}/... instead."
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
@pytest.mark.parametrize(
|
|
183
|
+
"path",
|
|
184
|
+
_shipped_scaffold_documents(),
|
|
185
|
+
ids=lambda path: str(path.relative_to(REPOSITORY_ROOT)),
|
|
186
|
+
)
|
|
187
|
+
def test_skill_documentation_urls_render_an_existing_page(path: Path) -> None:
|
|
188
|
+
relative_path = path.relative_to(REPOSITORY_ROOT)
|
|
189
|
+
text = path.read_text(encoding="utf-8")
|
|
190
|
+
|
|
191
|
+
unrendered = sorted(
|
|
145
192
|
{
|
|
146
|
-
|
|
147
|
-
for
|
|
148
|
-
if
|
|
193
|
+
url_path
|
|
194
|
+
for url_path in SKILL_DOCUMENTATION_URL.findall(text)
|
|
195
|
+
if _documentation_page_for_url_path(url_path) is None
|
|
149
196
|
}
|
|
150
197
|
)
|
|
151
198
|
|
|
152
|
-
assert not
|
|
199
|
+
assert not unrendered, (
|
|
200
|
+
f"{relative_path} links documentation-site paths that no `docs/` page "
|
|
201
|
+
f"renders: {unrendered}"
|
|
202
|
+
)
|
|
153
203
|
|
|
154
204
|
|
|
155
205
|
@pytest.mark.parametrize(
|
|
156
206
|
"path",
|
|
157
|
-
|
|
207
|
+
_shipped_scaffold_documents(),
|
|
158
208
|
ids=lambda path: str(path.relative_to(REPOSITORY_ROOT)),
|
|
159
209
|
)
|
|
160
210
|
def test_skill_cross_references_resolve(path: Path) -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/cli/code_repository_status.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/agent_runtime_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/compute_validation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/metatables/__init__.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/metatables/core.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/models_foundry.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/client/models_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/code_repository_context.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/code_repository_skills.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/instrumentation/__init__.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/instrumentation/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/compiled_sql/v1.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/future_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/migrations/env.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/pydantic_metadata.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/meta_tables/schema_names.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence/repository_identity_security.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/mainsequence.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_canonical_api_route_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_code_repository_branch_contract.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_code_repository_runtime_context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_duckdb_interface_dimensions.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_environment_resource_context.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_environment_response_contracts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_meta_tables_client_models.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_models_user_request_bound_auth.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_notification_uid_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_source_table_configuration.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_sqlite_interface_dimensions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_time_index_table_update_flow.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_tolerant_response_reading.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev8 → mainsequence-8.1.20.dev10}/tests/test_update_runner_uid_runtime.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|