mainsequence 9.0.6.dev36__tar.gz → 9.0.6.dev38__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 (101) hide show
  1. {mainsequence-9.0.6.dev36/mainsequence.egg-info → mainsequence-9.0.6.dev38}/PKG-INFO +1 -1
  2. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/agent_scaffold/skills/maintenance/code_repository_maintenance/SKILL.md +98 -0
  3. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38/mainsequence.egg-info}/PKG-INFO +1 -1
  4. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/pyproject.toml +1 -1
  5. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/LICENSE +0 -0
  6. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/README.md +0 -0
  7. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/agent_scaffold/AGENTS.md +0 -0
  8. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
  9. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  10. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/agent_scaffold/skills/mainsequence-inference/SKILL.md +0 -0
  11. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  12. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/agent_scaffold/skills/maintenance/metatables_transition/SKILL.md +0 -0
  13. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  14. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  15. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/agent_scaffold/skills/sdk_code_repository_execution/SKILL.md +0 -0
  16. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/__init__.py +0 -0
  17. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/__main__.py +0 -0
  18. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/_request_identity.py +0 -0
  19. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/bootstrap.py +0 -0
  20. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/__init__.py +0 -0
  21. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/api.py +0 -0
  22. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/browser_auth.py +0 -0
  23. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/cli.py +0 -0
  24. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/code_repository_status.py +0 -0
  25. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/config.py +0 -0
  26. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/docker_utils.py +0 -0
  27. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/doctor.py +0 -0
  28. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/local_ops.py +0 -0
  29. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/model_filters.py +0 -0
  30. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/pydantic_cli.py +0 -0
  31. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/sdk_utils.py +0 -0
  32. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/ssh_utils.py +0 -0
  33. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/cli/ui.py +0 -0
  34. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/__init__.py +0 -0
  35. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/agent_runtime_models.py +0 -0
  36. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/base.py +0 -0
  37. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/client.py +0 -0
  38. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/compute_validation.py +0 -0
  39. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/exceptions.py +0 -0
  40. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/github_issues.py +0 -0
  41. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/inference.py +0 -0
  42. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/models_foundry.py +0 -0
  43. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/models_helpers.py +0 -0
  44. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/models_user.py +0 -0
  45. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/observability.py +0 -0
  46. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/utils.py +0 -0
  47. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/client/value_sets.py +0 -0
  48. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/code_repository_context.py +0 -0
  49. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/code_repository_skills.py +0 -0
  50. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/defaults.py +0 -0
  51. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/instrumentation/__init__.py +0 -0
  52. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/instrumentation/utils.py +0 -0
  53. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/logconf.py +0 -0
  54. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/repository_identity_security.py +0 -0
  55. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/runtime_flags.py +0 -0
  56. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/scaffold_skills.py +0 -0
  57. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/server/__init__.py +0 -0
  58. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/server/caller_assertions.py +0 -0
  59. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence/server/fastapi.py +0 -0
  60. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence.egg-info/SOURCES.txt +0 -0
  61. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence.egg-info/dependency_links.txt +0 -0
  62. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence.egg-info/entry_points.txt +0 -0
  63. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence.egg-info/requires.txt +0 -0
  64. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/mainsequence.egg-info/top_level.txt +0 -0
  65. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/setup.cfg +0 -0
  66. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_auth_bootstrap.py +0 -0
  67. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_auth_precedence.py +0 -0
  68. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_caller_assertions.py +0 -0
  69. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_canonical_api_route_contract.py +0 -0
  70. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_cli.py +0 -0
  71. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_cli_auth_contract.py +0 -0
  72. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_cli_browser_auth.py +0 -0
  73. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_cli_secure_storage.py +0 -0
  74. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_client.py +0 -0
  75. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_code_repository_branch_contract.py +0 -0
  76. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_code_repository_documentation_contract.py +0 -0
  77. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_code_repository_runtime_context.py +0 -0
  78. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_code_repository_skills.py +0 -0
  79. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_dependency_extras.py +0 -0
  80. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_dev_release_version.py +0 -0
  81. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_environment_resource_context.py +0 -0
  82. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_environment_response_contracts.py +0 -0
  83. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_fastapi_request_identity.py +0 -0
  84. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_filter_normalization.py +0 -0
  85. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_github_issues_client.py +0 -0
  86. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_independent_context.py +0 -0
  87. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_inference_client.py +0 -0
  88. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_instrumentation.py +0 -0
  89. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_job_client.py +0 -0
  90. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_local_ops.py +0 -0
  91. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_logconf.py +0 -0
  92. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_models_user_request_bound_auth.py +0 -0
  93. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_notification_uid_contract.py +0 -0
  94. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_observability_client.py +0 -0
  95. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_scaffold_skills.py +0 -0
  96. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_secret_client_model.py +0 -0
  97. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_source_ownership.py +0 -0
  98. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_ssh_utils.py +0 -0
  99. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_tolerant_response_reading.py +0 -0
  100. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_tolerant_value_sets.py +0 -0
  101. {mainsequence-9.0.6.dev36 → mainsequence-9.0.6.dev38}/tests/test_user_application_facts.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 9.0.6.dev36
3
+ Version: 9.0.6.dev38
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: MIT
@@ -300,6 +300,104 @@ only the commits CI tagged. Details:
300
300
  Do not call `sync-after-commit` or any backend repair endpoint. The GitHub
301
301
  branch-push webhook owns backend repository reconciliation.
302
302
 
303
+ ### Development Deploys Every Push, Production Deploys Tags
304
+
305
+ A common setup uses two workflow files scoped to Environments. On the
306
+ production branch only the first applies; on the development branch only the
307
+ second:
308
+
309
+ ```yaml
310
+ # .mainsequence/workflows/api-production.yaml
311
+ api_version: "2.3.0"
312
+ name: api-production
313
+ scope:
314
+ environments: [production]
315
+ resources:
316
+ - key: api
317
+ kind: fastapi
318
+ spec:
319
+ source_path: api/main.py
320
+ automatic_deployment: true
321
+ automatic_redeployment:
322
+ enabled: true
323
+ tag_regex: "^v[0-9]+\\.[0-9]+\\.[0-9]+$"
324
+ ```
325
+
326
+ ```yaml
327
+ # .mainsequence/workflows/api-development.yaml
328
+ api_version: "2.3.0"
329
+ name: api-development
330
+ scope:
331
+ environments: [development] # the development Environment's exact name
332
+ resources:
333
+ - key: api
334
+ kind: fastapi
335
+ spec:
336
+ source_path: api/main.py
337
+ automatic_deployment: true
338
+ automatic_redeployment:
339
+ enabled: true
340
+ ```
341
+
342
+ A push to the development branch deploys at once. A merge to `main` deploys
343
+ nothing until a matching tag points at a commit on `main`; with the release job
344
+ above, CI creates that tag after the tests pass. Take the exact fields from the
345
+ branch's workflow template and validate each file through the branch's
346
+ `validate-workflow` action before committing it, as the
347
+ `platform_operations/orchestration_and_releases` skill describes.
348
+
349
+ ### Creating A Release Tag
350
+
351
+ The platform reacts to the tag push, however the tag was made. The short tag
352
+ name must fully match `tag_regex`, and the tagged commit must be on the
353
+ target's branch (its latest commit or an older one).
354
+
355
+ - CI, as in the release job above. This is the recommended path.
356
+ - By hand, only when the user asks for it:
357
+
358
+ ```bash
359
+ git tag v1.3.0 <commit>
360
+ git push origin v1.3.0
361
+ ```
362
+
363
+ Lightweight and annotated tags both work. Push one tag at a time: GitHub
364
+ sends no event when more than three tags are pushed at once, so
365
+ `git push --tags` can deploy nothing.
366
+ - A GitHub Release: publishing a release with a new tag, in the web UI or with
367
+ `gh release create v1.3.0 --target main`, creates the tag, and that tag
368
+ deploys like a pushed one.
369
+
370
+ A tag created with the Actions `GITHUB_TOKEN` starts no other GitHub Actions
371
+ workflow, but it still reaches Main Sequence. Deleting a tag deploys nothing
372
+ and removes nothing. A tag that does not match, or whose commit is only on
373
+ another branch, deploys nothing for that target.
374
+
375
+ ### Going Back To An Older Version
376
+
377
+ Two ways work. Use either only when the user asks for it.
378
+
379
+ - Revert and release a new version: `git revert <commit>`, raise the patch
380
+ version with `uv version --bump patch`, commit, push, and let CI tag the
381
+ result. This works for every target, including every-push targets, and keeps
382
+ the version moving forward.
383
+ - For a target with a `tag_regex`, push the older version's tag again. GitHub
384
+ sends an event only when a tag is created, so delete the tag on GitHub and
385
+ push it again; it still points at the same commit:
386
+
387
+ ```bash
388
+ git fetch --tags origin
389
+ git push origin :refs/tags/v1.2.0
390
+ git push origin v1.2.0
391
+ ```
392
+
393
+ The target redeploys that commit exactly as it was released: its code, its
394
+ image and its workflow file, whose settings replace the current ones. The
395
+ commit must still be on the branch and the tag must match the target's
396
+ current `tag_regex`. Every-push targets ignore the tag. Re-pushing a tag
397
+ also re-runs any GitHub Actions workflow that the tag triggers, and a tag
398
+ ruleset may forbid deleting it; use the revert route then. The next release
399
+ tag deploys a newer version again.
400
+
303
401
  ## Diagnose Partial Completion Before Retrying
304
402
 
305
403
  Never rerun an entire mutating workflow blindly.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 9.0.6.dev36
3
+ Version: 9.0.6.dev38
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence"
7
- version = "9.0.6.dev36"
7
+ version = "9.0.6.dev38"
8
8
  description = "Main Sequence SDK"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"