mainsequence 4.4.27__tar.gz → 4.4.30__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. {mainsequence-4.4.27 → mainsequence-4.4.30}/PKG-INFO +1 -1
  2. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/AGENTS.md +17 -12
  3. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +3 -3
  4. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/command_center/connections/SKILL.md +1 -1
  5. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/command_center/widgets/app_components/SKILL.md +4 -4
  6. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +4 -4
  7. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +2 -2
  8. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/data_access/exploration/SKILL.md +4 -2
  9. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +4 -4
  10. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +5 -3
  11. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +35 -6
  12. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/project_builder/SKILL.md +18 -25
  13. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/agent_runtime_models.py +44 -4
  14. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence.egg-info/PKG-INFO +1 -1
  15. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence.egg-info/SOURCES.txt +0 -1
  16. {mainsequence-4.4.27 → mainsequence-4.4.30}/pyproject.toml +1 -1
  17. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_filter_normalization.py +22 -3
  18. mainsequence-4.4.27/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -193
  19. {mainsequence-4.4.27 → mainsequence-4.4.30}/LICENSE +0 -0
  20. {mainsequence-4.4.27 → mainsequence-4.4.30}/README.md +0 -0
  21. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/a2a_communication/SKILL.md +0 -0
  22. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
  23. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
  24. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/command_center/widgets/tables/SKILL.md +0 -0
  25. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/command_center/widgets/tabular_transform/SKILL.md +0 -0
  26. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
  27. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  28. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  29. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  30. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/ms-markets/SKILL.md +0 -0
  31. {mainsequence-4.4.27 → mainsequence-4.4.30}/agent_scaffold/skills/project_to_agent/SKILL.md +0 -0
  32. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/__init__.py +0 -0
  33. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/__main__.py +0 -0
  34. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/bootstrap.py +0 -0
  35. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/__init__.py +0 -0
  36. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/api.py +0 -0
  37. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/browser_auth.py +0 -0
  38. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/cli.py +0 -0
  39. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/config.py +0 -0
  40. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/docker_utils.py +0 -0
  41. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/doctor.py +0 -0
  42. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/local_ops.py +0 -0
  43. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/migrations.py +0 -0
  44. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/model_filters.py +0 -0
  45. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/project_status.py +0 -0
  46. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/pydantic_cli.py +0 -0
  47. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/sdk_utils.py +0 -0
  48. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/ssh_utils.py +0 -0
  49. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/cli/ui.py +0 -0
  50. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/__init__.py +0 -0
  51. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/base.py +0 -0
  52. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/client.py +0 -0
  53. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/__init__.py +0 -0
  54. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/app_component.py +0 -0
  55. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/connections.py +0 -0
  56. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/contracts/__init__.py +0 -0
  57. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/contracts/adapter_from_api.py +0 -0
  58. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/contracts/response_mapping.py +0 -0
  59. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/contracts/table_visuals.py +0 -0
  60. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/contracts/tabular.py +0 -0
  61. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/contracts/ui.py +0 -0
  62. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/data_models.py +0 -0
  63. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/providers/__init__.py +0 -0
  64. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/providers/adapter_from_api.py +0 -0
  65. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/widgets/__init__.py +0 -0
  66. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/widgets/bindings.py +0 -0
  67. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/widgets/connection_query.py +0 -0
  68. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/widgets/registry.py +0 -0
  69. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/widgets/table.py +0 -0
  70. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/widgets/tabular_transform.py +0 -0
  71. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/workspace.py +0 -0
  72. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
  73. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/workspaces/__init__.py +0 -0
  74. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/workspaces/documents.py +0 -0
  75. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/command_center/workspaces/mounted_widgets.py +0 -0
  76. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/compute_validation.py +0 -0
  77. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  78. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  79. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  80. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  81. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/dtype_codec.py +0 -0
  82. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/exceptions.py +0 -0
  83. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/fastapi/__init__.py +0 -0
  84. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/fastapi/auth.py +0 -0
  85. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/metatables/__init__.py +0 -0
  86. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/metatables/core.py +0 -0
  87. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/models_foundry.py +0 -0
  88. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/models_helpers.py +0 -0
  89. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/models_user.py +0 -0
  90. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/client/utils.py +0 -0
  91. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/defaults.py +0 -0
  92. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/instrumentation/__init__.py +0 -0
  93. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/instrumentation/utils.py +0 -0
  94. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/logconf.py +0 -0
  95. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/__init__.py +0 -0
  96. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/__main__.py +0 -0
  97. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  98. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  99. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
  100. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
  101. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
  102. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/data_nodes/models.py +0 -0
  103. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
  104. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
  105. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
  106. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
  107. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/future_registry.py +0 -0
  108. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/hashing.py +0 -0
  109. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  110. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  111. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/migrations/env.py +0 -0
  112. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/migrations/provider.py +0 -0
  113. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/migrations/registry.py +0 -0
  114. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  115. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  116. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  117. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  118. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  119. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/schema_names.py +0 -0
  120. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  121. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/runtime_flags.py +0 -0
  122. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence/scaffold_skills.py +0 -0
  123. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence.egg-info/dependency_links.txt +0 -0
  124. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence.egg-info/entry_points.txt +0 -0
  125. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence.egg-info/requires.txt +0 -0
  126. {mainsequence-4.4.27 → mainsequence-4.4.30}/mainsequence.egg-info/top_level.txt +0 -0
  127. {mainsequence-4.4.27 → mainsequence-4.4.30}/setup.cfg +0 -0
  128. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_auth_precedence.py +0 -0
  129. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_build_operations_hashing.py +0 -0
  130. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_cli.py +0 -0
  131. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_cli_browser_auth.py +0 -0
  132. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_cli_migrations.py +0 -0
  133. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_client.py +0 -0
  134. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_command_center_app_component_models.py +0 -0
  135. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_command_center_data_models.py +0 -0
  136. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_command_center_models.py +0 -0
  137. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_command_center_table_contracts.py +0 -0
  138. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_command_center_tabular_transform.py +0 -0
  139. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_data_access_mixin_dimension_audit.py +0 -0
  140. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_data_node_storage_dimension_queries.py +0 -0
  141. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_data_node_update_flow.py +0 -0
  142. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_dependency_extras.py +0 -0
  143. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_duckdb_interface_dimensions.py +0 -0
  144. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_instrumentation.py +0 -0
  145. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_logconf.py +0 -0
  146. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_meta_table_migrations.py +0 -0
  147. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_meta_tables_client_models.py +0 -0
  148. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  149. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_models_user_request_bound_auth.py +0 -0
  150. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_pod_project_resolution.py +0 -0
  151. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_project_batch_jobs_from_file.py +0 -0
  152. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_run_configuration.py +0 -0
  153. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_scaffold_skills.py +0 -0
  154. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_schema_names.py +0 -0
  155. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_secret_client_model.py +0 -0
  156. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_source_table_configuration.py +0 -0
  157. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_sqlite_interface_dimensions.py +0 -0
  158. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_update_runner_uid_runtime.py +0 -0
  159. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_update_statistics.py +0 -0
  160. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_update_uid_guards.py +0 -0
  161. {mainsequence-4.4.27 → mainsequence-4.4.30}/tests/test_workspace_snapshot.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 4.4.27
3
+ Version: 4.4.30
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License: MainSequence GmbH SDK License Agreement
@@ -53,7 +53,8 @@ Core responsibilities:
53
53
  - for data publishing and data pipelines, use `DataNode`s and `MetaTable`s
54
54
  - for serving application or widget-facing surfaces, use `FastAPI`
55
55
  - for visualization, confirm the delivery target with the user:
56
- - if they want something quick for testing or iteration, use Streamlit
56
+ - if they want a Streamlit app, treat app design and implementation as project-owned code and
57
+ use Main Sequence skills only for platform deployment and release verification
57
58
  - if they want reusable components and a more structured product surface, use Command Center
58
59
  - for scheduled execution, releases, and backend operations, use jobs, images, resources, and
59
60
  other platform objects through the proper platform skills
@@ -63,8 +64,8 @@ Core responsibilities:
63
64
  - translate user business logic into reusable code under `src/` so it can be reused by APIs,
64
65
  dashboards, jobs, and other project components instead of duplicating logic in integration
65
66
  layers
66
- - maintain the repository through the maintenance skills, including project-state reconciliation,
67
- journaling, blocker tracking, and bug auditing
67
+ - maintain the repository through explicit `.agents/` project-state files and the bug auditor skill
68
+ for blocker and SDK/platform issue assessment
68
69
 
69
70
  Typical outcomes include:
70
71
 
@@ -72,11 +73,11 @@ Typical outcomes include:
72
73
  - build a `MetaTable` to record operational or application data
73
74
  - build a `FastAPI` API that reads project data and returns widget-ready or
74
75
  application-ready responses
75
- - confirm whether a visualization should be a quick Streamlit surface or a reusable Command Center
76
- surface before building it
76
+ - confirm whether a visualization should be a project-owned Streamlit app or a reusable Command
77
+ Center surface before building or deploying it
77
78
  - build reusable business logic in `src/` and keep thin integration layers in APIs, jobs, and
78
79
  dashboards
79
- - keep the repository auditable through maintenance, journaling, and bug reporting
80
+ - keep the repository auditable through project-state records, blocker tracking, and bug reporting
80
81
 
81
82
  Working rules for this role:
82
83
 
@@ -204,8 +205,12 @@ Typical routing:
204
205
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
205
206
  - RBAC, sharing, constants, secrets, and access verification:
206
207
  `.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`
207
- - dashboards:
208
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
208
+ - Streamlit dashboard deployment and release verification:
209
+ `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
210
+
211
+ Streamlit dashboard design and implementation are app-owned project work, not a separate Main
212
+ Sequence scaffold skill. Route only deployment of an already-authored Streamlit dashboard to
213
+ orchestration and releases.
209
214
 
210
215
  ## Mandatory Startup Sequence
211
216
 
@@ -246,8 +251,8 @@ Default pattern:
246
251
 
247
252
  Before the final response:
248
253
 
249
- - consult the maintenance skill whenever project understanding, verified state, or historical
250
- record changed during the turn
254
+ - update the relevant `.agents/` project-state files whenever project understanding, verified
255
+ state, open tasks, blockers, or historical record changed during the turn
251
256
 
252
257
  Always use `.agents/skills/mainsequence/project_builder/SKILL.md` as the source of truth for project
253
258
  scaffolding, folder structure, and standard repository layout.
@@ -340,6 +345,6 @@ If something may be a Main Sequence SDK, documentation, or platform issue:
340
345
  ## Project-State Files Under `.agents/`
341
346
 
342
347
 
343
- Do not improvise their meaning in domain skills. Use the maintenance skill to reconcile them after
344
- material work.
348
+ Do not improvise their meaning in domain skills. Use the project bootstrap skill rules to reconcile
349
+ them after material work.
345
350
  <!-- mainsequence-agent-scaffold:end -->
@@ -39,7 +39,7 @@ This skill must not claim ownership of:
39
39
  - workspace document creation or mutation
40
40
  - AppComponent custom form design
41
41
  - job creation, scheduling, image pinning, or releases
42
- - Streamlit dashboard implementation
42
+ - Streamlit dashboard design or implementation
43
43
  - non-FastAPI API framework choices for Main Sequence project APIs
44
44
 
45
45
  ## Route Adjacent Work
@@ -62,8 +62,8 @@ This skill must not claim ownership of:
62
62
  `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
63
63
  - Jobs, images, resources, and releases:
64
64
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
65
- - Streamlit dashboards:
66
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
65
+
66
+ Streamlit dashboard implementation is app-owned project code, not a Main Sequence platform skill. Route Streamlit deployment only through orchestration and releases.
67
67
 
68
68
  ## Read First
69
69
 
@@ -45,7 +45,7 @@ This skill must not claim ownership of:
45
45
  - AppComponent custom forms or action contracts
46
46
  - generic FastAPI endpoint design
47
47
  - backend resource and release creation
48
- - Streamlit dashboards
48
+ - Streamlit dashboard design or implementation
49
49
 
50
50
  ## Route Adjacent Work
51
51
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: command-center-app-components
3
- description: Use this skill when the task is about AppComponent widgets in a Main Sequence project. This skill owns AppComponent generated request forms, response-side editable-form and notification UI contracts, dynamic request/response binding contracts, and the boundary between AppComponent responses and widget-facing output contracts, including requiring generic tabular consumers to receive core.tabular_frame@v1 instead of ad hoc AppComponent JSON. Before changing AppComponent payloads or contracts, verify the target widget in the Command Center registry through the CLI. Source order is strict: registry detail first, SDK client models second, local Main Sequence repository docs/models third only if the first two still leave something unresolved. Main Sequence is platform-first: if an AppComponent depends on a project API, that API must already exist as a FastAPI project resource and have a corresponding FastAPI ResourceRelease before the AppComponent is considered usable from Command Center. Resource and release creation belong to the orchestration-and-releases skill. It does not own workspace layout, generic FastAPI design, or Streamlit dashboards.
3
+ description: Use this skill when the task is about AppComponent widgets in a Main Sequence project. This skill owns AppComponent generated request forms, response-side editable-form and notification UI contracts, dynamic request/response binding contracts, and the boundary between AppComponent responses and widget-facing output contracts, including requiring generic tabular consumers to receive core.tabular_frame@v1 instead of ad hoc AppComponent JSON. Before changing AppComponent payloads or contracts, verify the target widget in the Command Center registry through the CLI. Source order is strict: registry detail first, SDK client models second, local Main Sequence repository docs/models third only if the first two still leave something unresolved. Main Sequence is platform-first: if an AppComponent depends on a project API, that API must already exist as a FastAPI project resource and have a corresponding FastAPI ResourceRelease before the AppComponent is considered usable from Command Center. Resource and release creation belong to the orchestration-and-releases skill. It does not own workspace layout, generic FastAPI design, or Streamlit dashboard design or implementation.
4
4
  ---
5
5
 
6
6
  # Command Center AppComponents
@@ -40,7 +40,7 @@ This skill must not claim ownership of:
40
40
  - generic FastAPI route architecture
41
41
  - tabular or operational data producer design
42
42
  - MetaTable schema design
43
- - Streamlit dashboard implementation
43
+ - Streamlit dashboard design or implementation
44
44
  - scheduling, image pinning, resources, or releases
45
45
 
46
46
  ## Route Adjacent Work
@@ -61,8 +61,8 @@ This skill must not claim ownership of:
61
61
  `.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
62
62
  - Jobs, images, resources, and releases:
63
63
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
64
- - Streamlit dashboards:
65
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
64
+
65
+ Streamlit dashboard implementation is app-owned project code, not an AppComponent or Main Sequence platform skill. Route Streamlit dashboard deployment or release verification to orchestration and releases.
66
66
 
67
67
  ## Read First
68
68
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: command-center-workspace-builder
3
- description: Use this skill when the task is about creating, updating, validating, or reviewing Main Sequence Command Center workspaces after the workspace design is known. This skill owns workspace documents, widget instance payload resolution, safe mutation, shared versus user state, widget-scoped mutation, connection-backed source widget mounting, and grounding those decisions against the richer widget-type registry contract plus the SDK command_center client models. Use workspace_design first when the task is still about deciding which widgets, layout, narrative, or visualization strategy should express the user intent; use command-center-connections first when source data or query contracts are unresolved. Source order is strict: registry detail first, SDK client models second, local Main Sequence repository docs/models third only when the first two still leave instance payload questions unresolved. Main Sequence is platform-first: if a mounted widget or AppComponent depends on a project API, that API must already exist as a FastAPI project resource and have a corresponding FastAPI ResourceRelease before the workspace flow is considered usable. Resource and release creation belong to the orchestration-and-releases skill. It does not own AppComponent form contracts, API implementation, workspace design, or Streamlit dashboards.
3
+ description: Use this skill when the task is about creating, updating, validating, or reviewing Main Sequence Command Center workspaces after the workspace design is known. This skill owns workspace documents, widget instance payload resolution, safe mutation, shared versus user state, widget-scoped mutation, connection-backed source widget mounting, and grounding those decisions against the richer widget-type registry contract plus the SDK command_center client models. Use workspace_design first when the task is still about deciding which widgets, layout, narrative, or visualization strategy should express the user intent; use command-center-connections first when source data or query contracts are unresolved. Source order is strict: registry detail first, SDK client models second, local Main Sequence repository docs/models third only when the first two still leave instance payload questions unresolved. Main Sequence is platform-first: if a mounted widget or AppComponent depends on a project API, that API must already exist as a FastAPI project resource and have a corresponding FastAPI ResourceRelease before the workspace flow is considered usable. Resource and release creation belong to the orchestration-and-releases skill. It does not own AppComponent form contracts, API implementation, workspace design, or Streamlit dashboard design or implementation.
4
4
  ---
5
5
 
6
6
  # Command Center Workspace Builder
@@ -42,7 +42,7 @@ This skill must not claim ownership of:
42
42
  - AppComponent custom input forms
43
43
  - widget-facing API response contracts
44
44
  - generic FastAPI or backend API implementation
45
- - Streamlit dashboard implementation
45
+ - Streamlit dashboard design or implementation
46
46
  - tabular or operational data producer design
47
47
  - MetaTable schema design
48
48
 
@@ -66,11 +66,11 @@ This skill must not claim ownership of:
66
66
  `.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
67
67
  - Jobs, images, resources, and releases:
68
68
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
69
- - Streamlit dashboards:
70
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
71
69
  - MetaTables:
72
70
  `.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
73
71
 
72
+ Streamlit dashboard implementation is app-owned project code, not a Main Sequence workspace skill. Route Streamlit dashboard deployment or release verification to orchestration and releases.
73
+
74
74
  ## Read First
75
75
 
76
76
  0. If widget selection, layout narrative, or visualization strategy is not already decided, use:
@@ -48,8 +48,8 @@ This skill must not claim ownership of:
48
48
  `.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
49
49
  - Jobs, images, resources, and releases:
50
50
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
51
- - Streamlit dashboards:
52
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
51
+
52
+ Streamlit dashboard design and implementation are app-owned project work, not a Main Sequence Command Center or platform scaffold skill. Route only Streamlit dashboard deployment or release verification to orchestration and releases.
53
53
 
54
54
  ## Read First
55
55
 
@@ -51,13 +51,15 @@ This skill discovers and identifies data. It does not publish, redesign, or defi
51
51
  `.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
52
52
  - FastAPI or application-facing implementation:
53
53
  `.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
54
- - Streamlit dashboards:
55
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
54
+ - Streamlit dashboard deployment:
55
+ `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
56
56
  - Command Center surfaces:
57
57
  `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
58
58
  - blocker and failure analysis:
59
59
  `.agents/skills/mainsequence/maintenance/bug_auditor/SKILL.md`
60
60
 
61
+ Streamlit dashboard implementation is app-owned project code, not a Main Sequence scaffold skill.
62
+
61
63
  ## Read First
62
64
 
63
65
  1. `AGENTS.md`
@@ -50,8 +50,6 @@ This skill audits. It does not implement by default.
50
50
 
51
51
  - bootstrap, routing, and repo structure:
52
52
  `.agents/skills/mainsequence/project_builder/SKILL.md`
53
- - `.agents/` state reconciliation after the audit:
54
- `.agents/skills/mainsequence/maintenance/local_journal/SKILL.md`
55
53
  - DataNode implementation issues:
56
54
  `.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
57
55
  - MetaTable implementation issues:
@@ -62,8 +60,10 @@ This skill audits. It does not implement by default.
62
60
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
63
61
  - RBAC and access issues:
64
62
  `.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`
65
- - dashboard domain issues:
66
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
63
+ - Streamlit dashboard deployment or release issues:
64
+ `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
65
+
66
+ Streamlit dashboard design and implementation failures are target-project application code issues unless the evidence points to Main Sequence deployment, resource discovery, image selection, release creation, or platform runtime behavior.
67
67
 
68
68
  ## Read First
69
69
 
@@ -45,7 +45,7 @@ This skill must not claim ownership of:
45
45
  - DataNode producer implementation
46
46
  - MetaTable schema design
47
47
  - FastAPI route design
48
- - Streamlit dashboard implementation
48
+ - Streamlit dashboard design or implementation
49
49
  - workspace document structure
50
50
 
51
51
  ## Route Adjacent Work
@@ -58,11 +58,13 @@ This skill must not claim ownership of:
58
58
  `.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
59
59
  - APIs and FastAPI:
60
60
  `.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
61
- - Streamlit dashboards:
62
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
61
+ - Streamlit dashboard deployment:
62
+ `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
63
63
  - Command Center workspaces:
64
64
  `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
65
65
 
66
+ Streamlit dashboard implementation is app-owned project code. This skill only reasons about access to deployed resources such as `ResourceRelease`.
67
+
66
68
  ## Read First
67
69
 
68
70
  1. `docs/tutorial/role_based_access_control.md`
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mainsequence-orchestration-and-releases
3
- description: Use this skill when the task is about operational execution in a Main Sequence project. This skill owns jobs, schedules, batch scheduling files, project images, run inspection, project resources, releases, and Artifacts as operational inputs. It does not own DataNode producer design, MetaTable schema design, API route contracts, or RBAC policy.
3
+ description: Use this skill when the task is about operational execution in a Main Sequence project. This skill owns jobs, schedules, batch scheduling files, project images, run inspection, project resources, releases, Streamlit dashboard deployment, and Artifacts as operational inputs. It does not own DataNode producer design, MetaTable schema design, API route contracts, Streamlit dashboard design, or RBAC policy.
4
4
  ---
5
5
 
6
6
  # Main Sequence Orchestration And Releases
@@ -16,6 +16,7 @@ This skill is for:
16
16
  - images
17
17
  - project resources
18
18
  - releases
19
+ - Streamlit dashboard deployment as `streamlit_dashboard` releases
19
20
  - operational logs and run inspection
20
21
  - Artifacts as job inputs or outputs
21
22
 
@@ -30,6 +31,7 @@ This skill is for:
30
31
  - freeze jobs to a project image
31
32
  - inspect job runs and logs
32
33
  - reason about project resources and resource releases
34
+ - create or review Streamlit dashboard deployment through project resources and `streamlit_dashboard` releases
33
35
  - review Artifact-based workflows in operational pipelines
34
36
 
35
37
  ## This Skill Must Not Claim
@@ -41,6 +43,7 @@ This skill must not claim ownership of:
41
43
  - FastAPI route contracts
42
44
  - RBAC or sharing policy
43
45
  - Streamlit dashboard implementation details
46
+ - Streamlit layout, styling, sidebar/session behavior, page structure, or UI helper design
44
47
 
45
48
  ## Route Adjacent Work
46
49
 
@@ -54,20 +57,22 @@ This skill must not claim ownership of:
54
57
  `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
55
58
  - RBAC and sharing:
56
59
  `.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`
57
- - Streamlit dashboards:
58
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
59
60
 
60
61
  ## Read First
61
62
 
62
63
  1. `docs/tutorial/scheduling_jobs.md`
63
64
  2. `docs/knowledge/infrastructure/scheduling_jobs.md`
64
65
  3. `docs/knowledge/infrastructure/artifacts.md`
66
+ 4. `docs/tutorial/dashboards/streamlit/streamlit_integration_2.md` when deploying or verifying a Streamlit dashboard
67
+ 5. `docs/knowledge/dashboards/streamlit/index.md` when deployment metadata or SDK/dashboard boundary questions matter
65
68
 
66
- If the task touches deployed dashboards or APIs, also read the relevant domain skill/docs before changing the operational workflow.
69
+ If the task touches deployed FastAPI APIs, also read the relevant API skill/docs before changing the operational workflow.
70
+
71
+ If the task asks to design, build, style, or restructure a Streamlit app, do not treat that as Main Sequence platform skill work. Streamlit implementation is app-owned project code. This skill only owns deployment and verification of an already-authored dashboard.
67
72
 
68
73
  If the task is about publishing a Command Center-facing API mainly to test AppComponent UX, bindings, or request/response contracts, read:
69
74
 
70
- 4. `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
75
+ 6. `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
71
76
 
72
77
  Do that before building an image or creating a FastAPI `ResourceRelease`.
73
78
 
@@ -78,6 +83,7 @@ Before changing orchestration or release behavior, collect or infer:
78
83
  - the execution target:
79
84
  - `execution_path`
80
85
  - app entrypoint
86
+ - Streamlit `app.py` resource path when deploying a dashboard
81
87
  - whether the job is:
82
88
  - manual
83
89
  - interval
@@ -89,8 +95,10 @@ Before changing orchestration or release behavior, collect or infer:
89
95
  - whether the workflow is:
90
96
  - direct CLI/client job creation
91
97
  - repository-managed batch scheduling
98
+ - Streamlit dashboard release creation
92
99
  - whether Artifact inputs or outputs are part of the run
93
100
  - whether the job should be reproducible against a pinned image
101
+ - for Streamlit dashboard deployment, the `README.md` resource next to `app.py`
94
102
 
95
103
  If the execution target or image strategy is unclear, stop before scheduling anything.
96
104
 
@@ -104,6 +112,7 @@ For every non-trivial orchestration task, decide:
104
112
  4. Is strict batch sync appropriate or dangerous?
105
113
  5. Does the workflow depend on Artifacts?
106
114
  6. Is the task actually a release/resource problem instead of only a job problem?
115
+ 7. For Streamlit dashboard deployment, do the selected app resource, README resource, and project image all refer to the intended pushed commit?
107
116
 
108
117
  ## Build Rules
109
118
 
@@ -175,7 +184,25 @@ For deployed dashboards, APIs, or agents:
175
184
  - the release must exist
176
185
  - the release must point at the intended image or resource version
177
186
 
178
- ### 6.1 Do not publish an API just to test AppComponent contracts
187
+ ### 6.1 Streamlit dashboard deployment is a release workflow
188
+
189
+ Main Sequence owns the deployment boundary for Streamlit dashboards, not the dashboard UI design.
190
+
191
+ For Streamlit dashboard deployment:
192
+
193
+ - the dashboard `app.py` must already exist in the repository
194
+ - the dashboard `README.md` must exist next to `app.py`
195
+ - both files must be committed and pushed
196
+ - the project image must be built from the intended pushed commit
197
+ - `mainsequence project project_resource list` must discover the dashboard app and README resources
198
+ - create the release with `mainsequence project project_resource create_dashboard`
199
+ - the dashboard release kind is `streamlit_dashboard`
200
+
201
+ Do not prescribe Streamlit page layout, styling, sidebar/session patterns, or helper/component architecture. Those are application-owned implementation details.
202
+
203
+ Validate the deployment path, not the Streamlit design.
204
+
205
+ ### 6.2 Do not publish an API just to test AppComponent contracts
179
206
 
180
207
  If the goal is to validate Command Center AppComponent UX, request rendering, response rendering, published outputs, or downstream bindings, do not jump straight to:
181
208
 
@@ -203,6 +230,7 @@ When reviewing an orchestration task, look for:
203
230
  - unsafe use of `--strict`
204
231
  - workflows depending on laptop-specific file paths instead of Artifacts
205
232
  - image or release work being used as a substitute for predeployment AppComponent/API contract validation
233
+ - Streamlit dashboard deployment work drifting into app design or UI implementation ownership
206
234
  - tasks that are really resource/release problems rather than simple job problems
207
235
 
208
236
  ## Validation Checklist
@@ -219,6 +247,7 @@ Do not claim success until you have checked:
219
247
  - the job exists after creation or sync
220
248
  - runs and logs were inspected when execution success matters
221
249
  - resources and releases were verified when deployment success matters
250
+ - Streamlit dashboard releases use the intended app resource, README resource, image, and `streamlit_dashboard` release kind
222
251
  - Command Center-facing API publishing is not being used just to test AppComponent UX that should have been validated first in `mock-json` mode
223
252
 
224
253
  If the workflow uses `scheduled_jobs.yaml`, also check:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mainsequence-project
3
- description: Use this skill to bootstrap work in a Main Sequence repository. This skill owns project context verification, docs-first behavior, success-definition discipline, and routing between specialized domain skills and the maintenance skill. It does not own domain implementation semantics or direct reconciliation of the project-state files under `.agents/`.
3
+ description: Use this skill to bootstrap work in a Main Sequence repository. This skill owns project context verification, docs-first behavior, success-definition discipline, routing between specialized domain skills, and project-state file discipline. It does not own domain implementation semantics.
4
4
  ---
5
5
 
6
6
  # Main Sequence Project Bootstrap
@@ -24,7 +24,7 @@ This skill is for:
24
24
  - define a concrete success condition before implementation starts
25
25
  - verify current project and platform context
26
26
  - decide which specialized skill owns the actual domain work
27
- - decide when to hand off to `.agents/skills/mainsequence/maintenance/local_journal/SKILL.md`
27
+ - decide when project-state files under `.agents/` need to be read or updated
28
28
  - enforce standard Main Sequence repository structure expectations
29
29
  - separate verified facts from assumptions
30
30
  - record documentation mismatches and route follow-up work
@@ -42,7 +42,7 @@ This skill must not claim ownership of:
42
42
  - jobs, schedules, images, resources, or releases
43
43
  - RBAC or sharing semantics
44
44
  - domain assets, translation tables, or construction logic
45
- - Streamlit dashboard implementation
45
+ - Streamlit dashboard design or implementation
46
46
  - pricing-runtime semantics
47
47
 
48
48
  Do not let this skill become a domain manual.
@@ -61,27 +61,24 @@ Do not let this skill become a domain manual.
61
61
  `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
62
62
  - AppComponents, custom forms, and widget-facing API contracts:
63
63
  `.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
64
- - project-state reconciliation and local history under `.agents/`:
65
- `.agents/skills/mainsequence/maintenance/local_journal/SKILL.md`
66
64
  - project status audits, blocker analysis, and upstream SDK assessment:
67
65
  `.agents/skills/mainsequence/maintenance/bug_auditor/SKILL.md`
68
- - jobs, schedules, artifacts, images, resources, and releases:
66
+ - jobs, schedules, artifacts, images, resources, releases, and Streamlit dashboard deployment:
69
67
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
70
68
  - RBAC and sharing:
71
69
  `.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`
72
- - Streamlit dashboards:
73
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
70
+
71
+ Streamlit dashboard design and implementation are app-owned project work, not a separate Main Sequence scaffold skill. Route only platform deployment of an already-authored Streamlit dashboard to orchestration and releases.
74
72
 
75
73
  ## Read First
76
74
 
77
75
  1. `AGENTS.md`
78
- 2. `.agents/skills/mainsequence/maintenance/local_journal/SKILL.md`
79
- 3. the latest relevant Main Sequence docs for the task
80
- 4. `.agents/brief.md`
81
- 5. `.agents/status.md`
82
- 6. `.agents/tasks.md`
83
- 7. `.agents/record.md`
84
- 8. `.agents/journal.md` when resuming, debugging, or investigating a repeated issue
76
+ 2. the latest relevant Main Sequence docs for the task
77
+ 3. `.agents/brief.md`
78
+ 4. `.agents/status.md`
79
+ 5. `.agents/tasks.md`
80
+ 6. `.agents/record.md`
81
+ 7. `.agents/journal.md` when resuming, debugging, or investigating a repeated issue
85
82
 
86
83
  Canonical documentation root:
87
84
  `https://mainsequence-sdk.github.io/mainsequence-sdk/`
@@ -95,7 +92,7 @@ Before starting non-trivial work, collect or infer:
95
92
  - the repository path and current project context
96
93
  - whether live platform verification is required
97
94
  - which specialized skill should own the domain behavior
98
- - whether the maintenance skill will need to run after the domain step
95
+ - whether project-state files under `.agents/` will need updates after the domain step
99
96
 
100
97
  If the user goal or project context is unclear, stop before routing domain work.
101
98
 
@@ -106,7 +103,7 @@ For every non-trivial task, decide:
106
103
  1. What does success look like in observable terms?
107
104
  2. Which specialized skill owns the domain behavior?
108
105
  3. Does platform state need live verification?
109
- 4. Will the maintenance skill need to run after this step?
106
+ 4. Will project-state files under `.agents/` need to be updated after this step?
110
107
  5. Are the docs and local implementation aligned, or is there a discrepancy to record?
111
108
 
112
109
  ## Build Rules
@@ -170,13 +167,9 @@ Once the task boundary is clear, move into the correct specialized skill.
170
167
 
171
168
  Do not teach domain semantics here.
172
169
 
173
- ### 6. Hand off to maintenance after material work
174
-
175
- After material domain work, route to:
176
-
177
- - `.agents/skills/mainsequence/maintenance/local_journal/SKILL.md`
170
+ ### 6. Update project-state files after material work
178
171
 
179
- Use that handoff when the turn changed:
172
+ After material domain work, update the relevant project-state files under `.agents/` when the turn changed:
180
173
 
181
174
  - verified state
182
175
  - blockers
@@ -198,7 +191,7 @@ Before first-running or validating a new or changed DataNode, use an explicit na
198
191
  When reviewing bootstrap behavior, look for:
199
192
 
200
193
  - domain work happening without a clear owner skill
201
- - material domain work finishing without a maintenance handoff
194
+ - material domain work finishing without required project-state updates
202
195
  - implementation starting without a concrete success condition
203
196
  - platform claims made without verification
204
197
  - docs mismatches that were noticed but not recorded
@@ -212,7 +205,7 @@ Do not claim bootstrap success until you have checked:
212
205
  - the relevant docs were checked
213
206
  - the success condition is explicit
214
207
  - the correct specialized skill was chosen
215
- - the maintenance handoff was made when project state materially changed
208
+ - required project-state updates were made when project state materially changed
216
209
  - any platform-state claims were verified with CLI or platform tooling
217
210
 
218
211
  ## This Skill Must Stop And Escalate When
@@ -10,7 +10,7 @@ from enum import Enum
10
10
  from typing import Any, ClassVar
11
11
 
12
12
  import requests
13
- from pydantic import ConfigDict, Field
13
+ from pydantic import ConfigDict, Field, model_validator
14
14
 
15
15
  from .base import BaseObjectOrm, BasePydanticModel, ShareableObjectMixin
16
16
  from .exceptions import ApiError, raise_for_response
@@ -118,6 +118,10 @@ class AgentRuntimeImageDrift(BasePydanticModel):
118
118
  None,
119
119
  description="Additional backend detail when drift information is unavailable or degraded.",
120
120
  )
121
+ catalog_state: dict[str, Any] | None = Field(
122
+ None,
123
+ description="Platform catalog freshness state returned by the backend, when available.",
124
+ )
121
125
 
122
126
 
123
127
  class AgentRuntimePaths(BasePydanticModel):
@@ -165,9 +169,13 @@ class AgentSessionRuntimeAccess(BasePydanticModel):
165
169
  default_factory=AgentRuntimePaths,
166
170
  description="Runtime-relative paths returned by the control plane.",
167
171
  )
172
+ service_runtime_uid: str | None = Field(
173
+ None,
174
+ description="Public UID of the linked service runtime, when the backend has one.",
175
+ )
168
176
  knative_service_runtime_uid: str | None = Field(
169
177
  None,
170
- description="Public UID of the linked Knative service runtime, when the backend has one.",
178
+ description="Deprecated alias for service_runtime_uid kept for older SDK callers.",
171
179
  )
172
180
  image_drift: AgentRuntimeImageDrift | None = Field(
173
181
  None,
@@ -180,6 +188,20 @@ class AgentSessionRuntimeAccess(BasePydanticModel):
180
188
  return None
181
189
  return self.image_drift.model_dump()
182
190
 
191
+ @model_validator(mode="after")
192
+ def _mirror_service_runtime_uid(self) -> AgentSessionRuntimeAccess:
193
+ if (
194
+ self.service_runtime_uid is None
195
+ and self.knative_service_runtime_uid is not None
196
+ ):
197
+ self.service_runtime_uid = self.knative_service_runtime_uid
198
+ elif (
199
+ self.knative_service_runtime_uid is None
200
+ and self.service_runtime_uid is not None
201
+ ):
202
+ self.knative_service_runtime_uid = self.service_runtime_uid
203
+ return self
204
+
183
205
 
184
206
  def _join_runtime_url(rpc_url: str, runtime_path: str) -> str:
185
207
  if not isinstance(rpc_url, str) or not rpc_url.strip():
@@ -423,9 +445,27 @@ class CodingAgentService(BaseObjectOrm, BasePydanticModel):
423
445
  related_job_uid: str | None = Field(
424
446
  None, description="Public UID of the backing job, if attached."
425
447
  )
426
- knative_service_runtime_uid: str | None = Field(
427
- None, description="Public UID of the backing Knative service runtime, if attached."
448
+ service_runtime_uid: str | None = Field(
449
+ None, description="Public UID of the backing service runtime, if attached."
428
450
  )
451
+ knative_service_runtime_uid: str | None = Field(
452
+ None,
453
+ description="Deprecated alias for service_runtime_uid kept for older SDK callers.",
454
+ )
455
+
456
+ @model_validator(mode="after")
457
+ def _mirror_service_runtime_uid(self) -> CodingAgentService:
458
+ if (
459
+ self.service_runtime_uid is None
460
+ and self.knative_service_runtime_uid is not None
461
+ ):
462
+ self.service_runtime_uid = self.knative_service_runtime_uid
463
+ elif (
464
+ self.knative_service_runtime_uid is None
465
+ and self.service_runtime_uid is not None
466
+ ):
467
+ self.knative_service_runtime_uid = self.service_runtime_uid
468
+ return self
429
469
 
430
470
  @classmethod
431
471
  def _post_collection_action(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 4.4.27
3
+ Version: 4.4.30
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License: MainSequence GmbH SDK License Agreement
@@ -13,7 +13,6 @@ agent_scaffold/skills/command_center/widgets/tabular_transform/SKILL.md
13
13
  agent_scaffold/skills/command_center/workspace_analysis/SKILL.md
14
14
  agent_scaffold/skills/command_center/workspace_builder/SKILL.md
15
15
  agent_scaffold/skills/command_center/workspace_design/SKILL.md
16
- agent_scaffold/skills/dashboards/streamlit/SKILL.md
17
16
  agent_scaffold/skills/data_access/exploration/SKILL.md
18
17
  agent_scaffold/skills/data_publishing/data_nodes/SKILL.md
19
18
  agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence"
7
- version = "4.4.27"
7
+ version = "4.4.30"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"