mustflow 2.22.17 → 2.22.46
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.
- package/dist/cli/commands/dashboard.js +51 -4
- package/dist/cli/commands/explain.js +3 -2
- package/dist/cli/commands/help.js +0 -1
- package/dist/cli/commands/run.js +41 -4
- package/dist/cli/i18n/en.js +2 -0
- package/dist/cli/i18n/es.js +2 -0
- package/dist/cli/i18n/fr.js +2 -0
- package/dist/cli/i18n/hi.js +2 -0
- package/dist/cli/i18n/ko.js +2 -0
- package/dist/cli/i18n/zh.js +2 -0
- package/dist/cli/lib/cli-output.js +1 -1
- package/dist/cli/lib/dashboard-html/client-script.js +9 -0
- package/dist/cli/lib/dashboard-html/styles.js +48 -1
- package/dist/cli/lib/doc-review-ledger.js +1 -1
- package/dist/cli/lib/local-index/index.js +324 -298
- package/dist/cli/lib/repo-map.js +19 -5
- package/dist/cli/lib/validation/index.js +6 -2
- package/dist/core/active-run-locks.js +36 -8
- package/dist/core/atomic-state-write.js +5 -20
- package/dist/core/change-verification.js +18 -2
- package/dist/core/contract-lint.js +3 -3
- package/dist/core/repeated-failure.js +1 -1
- package/dist/core/run-write-drift.js +30 -17
- package/dist/core/safe-filesystem.js +54 -5
- package/dist/core/skill-route-explanation.js +2 -1
- package/dist/core/source-anchors.js +7 -3
- package/dist/core/validation-ratchet.js +61 -18
- package/dist/core/verification-decision-graph.js +8 -1
- package/package.json +1 -1
- package/templates/default/i18n.toml +139 -1
- package/templates/default/locales/en/.mustflow/skills/INDEX.md +24 -1
- package/templates/default/locales/en/.mustflow/skills/api-contract-change/SKILL.md +212 -0
- package/templates/default/locales/en/.mustflow/skills/astro-code-change/SKILL.md +184 -0
- package/templates/default/locales/en/.mustflow/skills/auth-permission-change/SKILL.md +194 -0
- package/templates/default/locales/en/.mustflow/skills/config-env-change/SKILL.md +189 -0
- package/templates/default/locales/en/.mustflow/skills/css-code-change/SKILL.md +199 -0
- package/templates/default/locales/en/.mustflow/skills/dart-code-change/SKILL.md +179 -0
- package/templates/default/locales/en/.mustflow/skills/database-migration-change/SKILL.md +178 -0
- package/templates/default/locales/en/.mustflow/skills/dependency-upgrade-review/SKILL.md +151 -0
- package/templates/default/locales/en/.mustflow/skills/elysia-code-change/SKILL.md +115 -0
- package/templates/default/locales/en/.mustflow/skills/file-path-cross-platform-change/SKILL.md +147 -0
- package/templates/default/locales/en/.mustflow/skills/flutter-code-change/SKILL.md +116 -0
- package/templates/default/locales/en/.mustflow/skills/go-code-change/SKILL.md +156 -0
- package/templates/default/locales/en/.mustflow/skills/hono-code-change/SKILL.md +117 -0
- package/templates/default/locales/en/.mustflow/skills/html-code-change/SKILL.md +173 -0
- package/templates/default/locales/en/.mustflow/skills/javascript-code-change/SKILL.md +149 -0
- package/templates/default/locales/en/.mustflow/skills/python-code-change/SKILL.md +154 -0
- package/templates/default/locales/en/.mustflow/skills/release-publish-change/SKILL.md +172 -0
- package/templates/default/locales/en/.mustflow/skills/routes.toml +138 -0
- package/templates/default/locales/en/.mustflow/skills/rust-code-change/SKILL.md +154 -0
- package/templates/default/locales/en/.mustflow/skills/svelte-code-change/SKILL.md +186 -0
- package/templates/default/locales/en/.mustflow/skills/tailwind-code-change/SKILL.md +164 -0
- package/templates/default/locales/en/.mustflow/skills/tauri-code-change/SKILL.md +185 -0
- package/templates/default/locales/en/.mustflow/skills/typescript-code-change/SKILL.md +184 -0
- package/templates/default/locales/en/.mustflow/skills/unocss-code-change/SKILL.md +186 -0
- package/templates/default/manifest.toml +158 -1
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
mustflow_doc: skill.python-code-change
|
|
3
|
+
locale: en
|
|
4
|
+
canonical: true
|
|
5
|
+
revision: 2
|
|
6
|
+
lifecycle: mustflow-owned
|
|
7
|
+
authority: procedure
|
|
8
|
+
name: python-code-change
|
|
9
|
+
description: Apply this skill when Python source, packaging, runtime version, import layout, type checking, linting, tests, or CLI entry points are created or changed.
|
|
10
|
+
metadata:
|
|
11
|
+
mustflow_schema: "1"
|
|
12
|
+
mustflow_kind: procedure
|
|
13
|
+
pack_id: mustflow.core
|
|
14
|
+
skill_id: mustflow.core.python-code-change
|
|
15
|
+
command_intents:
|
|
16
|
+
- changes_status
|
|
17
|
+
- changes_diff_summary
|
|
18
|
+
- lint
|
|
19
|
+
- build
|
|
20
|
+
- test_related
|
|
21
|
+
- test
|
|
22
|
+
- docs_validate_fast
|
|
23
|
+
- mustflow_check
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# Python Code Change
|
|
27
|
+
|
|
28
|
+
<!-- mustflow-section: purpose -->
|
|
29
|
+
## Purpose
|
|
30
|
+
|
|
31
|
+
Preserve Python runtime, packaging, import, async resource, public API, typing, lint, and test boundaries while making a focused change.
|
|
32
|
+
|
|
33
|
+
<!-- mustflow-section: use-when -->
|
|
34
|
+
## Use When
|
|
35
|
+
|
|
36
|
+
- `.py`, `pyproject.toml`, `setup.py`, `setup.cfg`, requirements files, lockfiles, tox, nox, pytest, mypy, pyright, Ruff, or Python CI config changes.
|
|
37
|
+
- The task touches package layout, CLI entry points, imports, type hints, dependency declarations, virtual environment assumptions, or tests.
|
|
38
|
+
|
|
39
|
+
<!-- mustflow-section: do-not-use-when -->
|
|
40
|
+
## Do Not Use When
|
|
41
|
+
|
|
42
|
+
- The task only edits generated Python output that should not be maintained manually.
|
|
43
|
+
- The repository does not contain Python behavior and the file is only documentation.
|
|
44
|
+
|
|
45
|
+
<!-- mustflow-section: required-inputs -->
|
|
46
|
+
## Required Inputs
|
|
47
|
+
|
|
48
|
+
- Python version source: `requires-python`, `.python-version`, tool version files, CI matrix, or container base image.
|
|
49
|
+
- Packaging and dependency files, test config, lint config, and type checker config.
|
|
50
|
+
- Package layout: `src` layout, flat layout, namespace package, distribution name, import package name, package discovery settings, CLI entry points, plugin entry points, and nearby tests.
|
|
51
|
+
- Async ownership and resource cleanup surface when coroutines, tasks, context managers, sessions, clients, pools, files, async generators, subprocesses, or logging change.
|
|
52
|
+
- Public contract surface when imports, signatures, exceptions, return shapes, CLI behavior, config, environment variables, extras, Python version support, or typing stubs change.
|
|
53
|
+
- Configured verification intents.
|
|
54
|
+
|
|
55
|
+
<!-- mustflow-section: preconditions -->
|
|
56
|
+
## Preconditions
|
|
57
|
+
|
|
58
|
+
- Determine the lowest supported Python version before choosing syntax or typing features.
|
|
59
|
+
- Read package layout and import style before editing imports.
|
|
60
|
+
- Treat global machine Python state as irrelevant unless the project explicitly declares it.
|
|
61
|
+
|
|
62
|
+
<!-- mustflow-section: allowed-edits -->
|
|
63
|
+
## Allowed Edits
|
|
64
|
+
|
|
65
|
+
- Keep existing packaging tools and layout unless the user explicitly asks for a packaging migration.
|
|
66
|
+
- Add or adjust type hints at public boundaries, complex return values, and external input boundaries.
|
|
67
|
+
- Follow existing test style, fixtures, parametrization, and lint/type strictness.
|
|
68
|
+
- Do not lower Ruff, mypy, pyright, pytest, or packaging strictness to hide a failure.
|
|
69
|
+
- Keep import fixes in package metadata, package discovery, entry points, or test invocation contracts instead of path hacks.
|
|
70
|
+
- Make resource ownership explicit: code closes only the resources it creates.
|
|
71
|
+
|
|
72
|
+
<!-- mustflow-section: procedure -->
|
|
73
|
+
## Procedure
|
|
74
|
+
|
|
75
|
+
1. Read project metadata, Python version constraints, dependency files, and test/lint/type configs.
|
|
76
|
+
2. Identify the boundary touched: runtime version, package API, import root, packaging metadata, CLI entry, test fixture, async resource ownership, external input, or dependency contract.
|
|
77
|
+
3. For packaging and import changes, separate the distribution name from the import package name. Check package directory mapping, package discovery settings, namespace package behavior, package data, entry points, optional dependencies, and `requires-python` before touching imports.
|
|
78
|
+
4. Treat `src` layout as an installation contract. Importable code under `src/` should be tested through the supported installed-package path, not by making repository files accidentally importable from the working directory.
|
|
79
|
+
5. Match existing package layout and import conventions. Do not add `sys.path`, `site.addsitedir`, `PYTHONPATH`, pytest `pythonpath`, ad hoc import loading, or test `conftest.py` import hacks to make package imports pass.
|
|
80
|
+
6. Do not add `__init__.py` to tests as a blind fix. Add it only when tests are intentionally a package and the import-mode behavior remains explicit.
|
|
81
|
+
7. For packaging changes, distinguish development and release contracts:
|
|
82
|
+
- editable installs prove the local development path;
|
|
83
|
+
- wheel installs or equivalent built artifacts prove the release path;
|
|
84
|
+
- entry point, dependency, optional dependency, metadata, and package data changes require reinstall-oriented verification when a configured intent exists;
|
|
85
|
+
- installed console scripts or plugin entry points should be smoke-tested through the installed entry point contract, not by directly running a source file.
|
|
86
|
+
8. Verify import origin when packaging risk is present. The public package should resolve from the installed environment intended by the project, not from accidental repository-root files.
|
|
87
|
+
9. Validate unknown external data before treating it as typed domain data.
|
|
88
|
+
10. Preserve async and resource ownership:
|
|
89
|
+
- every coroutine is awaited, returned by contract, or scheduled as an owned and tracked task;
|
|
90
|
+
- raw background task creation is allowed only through the project's owner or spawn helper, a task group, or an equivalent lifecycle mechanism;
|
|
91
|
+
- background tasks keep a strong reference, have a shutdown path, and retrieve failures instead of leaving never-retrieved exceptions;
|
|
92
|
+
- cancellation is control flow, so cleanup uses `finally` and cancellation is re-raised after cleanup unless suppression is the documented behavior;
|
|
93
|
+
- async functions do not call blocking I/O, blocking sleeps, long CPU work, or blocking subprocess waits directly unless the project has an explicit executor or isolation pattern;
|
|
94
|
+
- context managers and async context managers do not suppress exceptions unless suppression is the feature;
|
|
95
|
+
- context-manager helpers that catch exceptions for logging re-raise after logging;
|
|
96
|
+
- early-exit async generators have an explicit close path.
|
|
97
|
+
11. Preserve traceback evidence. Logging inside exception handlers should retain exception information instead of logging only the exception message.
|
|
98
|
+
12. Preserve public contracts:
|
|
99
|
+
- treat public imports, public signatures, exceptions, return shapes, CLI behavior, entry points, config keys, environment variables, dependency metadata, extras, Python version support, and typing stubs as compatibility-sensitive;
|
|
100
|
+
- do not change sync functions into async functions, accepted input shapes, nullable behavior, documented exception types, tuple/dict/dataclass return shapes, config precedence, or environment variable semantics without a compatibility review;
|
|
101
|
+
- typed packages should keep runtime and typing surfaces aligned, including `py.typed` and stubs when present.
|
|
102
|
+
13. Avoid mutable default arguments, broad `except Exception: pass`, broad `BaseException` catches outside process boundaries, global state hidden behind module imports, and path handling that ignores existing `pathlib` or OS conventions.
|
|
103
|
+
14. Use `# type: ignore[...]` only when tightly scoped, justified, and consistent with local policy.
|
|
104
|
+
15. If packaging, public API, CLI, config, or typing contracts change, synchronize README examples, entry point tests, build metadata, docs, fixtures, and downstream-style examples that describe installation or usage.
|
|
105
|
+
16. Choose configured verification intents that cover formatting, lint, type checking, tests, package build, installed-package smoke checks, and CLI smoke risk when available.
|
|
106
|
+
|
|
107
|
+
<!-- mustflow-section: postconditions -->
|
|
108
|
+
## Postconditions
|
|
109
|
+
|
|
110
|
+
- The code respects the declared Python version and packaging layout.
|
|
111
|
+
- Imports work from the project-supported execution path.
|
|
112
|
+
- Packaging changes distinguish development imports from release artifact imports.
|
|
113
|
+
- Async tasks, context managers, files, clients, pools, subprocesses, and generators have visible ownership and cleanup.
|
|
114
|
+
- Public API, CLI, config, environment, dependency metadata, and typing contract changes are called out.
|
|
115
|
+
- Type and lint strictness are not weakened.
|
|
116
|
+
- Tests or skipped verification are tied to the changed behavior.
|
|
117
|
+
|
|
118
|
+
<!-- mustflow-section: verification -->
|
|
119
|
+
## Verification
|
|
120
|
+
|
|
121
|
+
Use configured oneshot command intents when available:
|
|
122
|
+
|
|
123
|
+
- `lint`
|
|
124
|
+
- `build`
|
|
125
|
+
- `test_related`
|
|
126
|
+
- `test`
|
|
127
|
+
- `docs_validate_fast`
|
|
128
|
+
- `mustflow_check`
|
|
129
|
+
|
|
130
|
+
Report missing package, type, or test intents rather than inventing raw tool commands.
|
|
131
|
+
|
|
132
|
+
<!-- mustflow-section: failure-handling -->
|
|
133
|
+
## Failure Handling
|
|
134
|
+
|
|
135
|
+
- If import resolution fails, inspect package metadata and test invocation before adding path hacks.
|
|
136
|
+
- If a test only passes because repository root, `src`, or `tests` is injected into import paths, reject the fix and repair packaging or test layout instead.
|
|
137
|
+
- If packaging correctness matters but only repository-root tests can run, report that wheel or installed-artifact verification is missing.
|
|
138
|
+
- If the supported Python version blocks a syntax choice, rewrite to the supported form.
|
|
139
|
+
- If third-party stubs or package metadata are wrong, document the local workaround and keep it narrow.
|
|
140
|
+
- If a background task lacks owner, shutdown, strong reference, or exception retrieval, do not add it.
|
|
141
|
+
- If cancellation or context-manager behavior is swallowed accidentally, restore propagation or document the intentional suppression contract.
|
|
142
|
+
- If resource cleanup cannot be proven, use the project's context manager, exit stack, fixture, or lifecycle pattern before broadening tests.
|
|
143
|
+
- If public contracts change without compatibility evidence, stop and report the breaking-change or deprecation requirement.
|
|
144
|
+
|
|
145
|
+
<!-- mustflow-section: output-format -->
|
|
146
|
+
## Output Format
|
|
147
|
+
|
|
148
|
+
- Boundary checked
|
|
149
|
+
- Runtime and packaging assumptions
|
|
150
|
+
- Files changed
|
|
151
|
+
- Type, lint, and import notes
|
|
152
|
+
- Command intents run
|
|
153
|
+
- Skipped checks and reasons
|
|
154
|
+
- Remaining Python risk
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
---
|
|
2
|
+
mustflow_doc: skill.release-publish-change
|
|
3
|
+
locale: en
|
|
4
|
+
canonical: true
|
|
5
|
+
revision: 1
|
|
6
|
+
lifecycle: mustflow-owned
|
|
7
|
+
authority: procedure
|
|
8
|
+
name: release-publish-change
|
|
9
|
+
description: Apply this skill when release publishing, package registry publication, remote release channels, Git tags, GitHub Releases, release assets, npm, PyPI, crates.io, Go modules, Docker images, Homebrew formulae or casks, app updater metadata, version bump decisions, artifact inspection, post-publish smoke tests, rollback or yanking plans, or user installation paths are created, changed, reviewed, or reported.
|
|
10
|
+
metadata:
|
|
11
|
+
mustflow_schema: "1"
|
|
12
|
+
mustflow_kind: procedure
|
|
13
|
+
pack_id: mustflow.core
|
|
14
|
+
skill_id: mustflow.core.release-publish-change
|
|
15
|
+
command_intents:
|
|
16
|
+
- changes_status
|
|
17
|
+
- changes_diff_summary
|
|
18
|
+
- lint
|
|
19
|
+
- build
|
|
20
|
+
- test_related
|
|
21
|
+
- test
|
|
22
|
+
- docs_validate_fast
|
|
23
|
+
- test_release
|
|
24
|
+
- mustflow_check
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Release Publish Change
|
|
28
|
+
|
|
29
|
+
<!-- mustflow-section: purpose -->
|
|
30
|
+
## Purpose
|
|
31
|
+
|
|
32
|
+
Keep release work honest by treating a release as a remote state transition, not as a local code edit.
|
|
33
|
+
|
|
34
|
+
The release is not done when tests pass locally, a version string changes, or a workflow succeeds. It is done only when the intended remote channel contains the expected artifact and a user-facing installation or update path has been smoke-tested through configured command intents or explicitly reported as unverified.
|
|
35
|
+
|
|
36
|
+
<!-- mustflow-section: use-when -->
|
|
37
|
+
## Use When
|
|
38
|
+
|
|
39
|
+
- A task prepares, changes, reviews, or reports package publication, registry publication, Git tag release, GitHub Release creation, release assets, checksums, signatures, Docker image tags, Homebrew formulae, app updater feeds, appcast files, channel metadata, or installer distribution.
|
|
40
|
+
- A change touches version bump logic, package metadata, release workflows, publish workflows, release assets, package contents, changelog-to-release wiring, post-publish smoke tests, or rollback and yanking guidance.
|
|
41
|
+
- A final report claims that a version was published, released, installable, downloadable, updateable, yanked, deprecated, rolled back, or verified by the user installation path.
|
|
42
|
+
- A release target includes npm, PyPI, crates.io, Go modules, Docker registries, GitHub Releases, Homebrew, Electron auto-update, Sparkle, Tauri updater, mobile stores, desktop installers, or another remote distribution channel.
|
|
43
|
+
|
|
44
|
+
<!-- mustflow-section: do-not-use-when -->
|
|
45
|
+
## Do Not Use When
|
|
46
|
+
|
|
47
|
+
- The task only drafts release notes or changelog wording without publishing, package metadata, release artifact, or install-path claims. Use `release-notes-authoring` instead.
|
|
48
|
+
- The task only changes dependency versions inside a project and does not publish the project. Use `dependency-upgrade-review`.
|
|
49
|
+
- The task only checks local artifact integrity without changing or reporting release publication. Use `artifact-integrity-check` if available.
|
|
50
|
+
- The task asks for a private experiment that must not affect remote tags, registries, release assets, or update channels.
|
|
51
|
+
|
|
52
|
+
<!-- mustflow-section: required-inputs -->
|
|
53
|
+
## Required Inputs
|
|
54
|
+
|
|
55
|
+
- Release target, version, channel, package name, module path, image name, tag, artifact names, expected assets, and intended audience.
|
|
56
|
+
- Public contract source for versioning: package metadata, manifest, lock or generated metadata, changelog, release workflow, tag policy, and SemVer or project-specific compatibility rules.
|
|
57
|
+
- Artifact source and inspection method: package file list, archive contents, generated distributions, checksums, signatures, SBOM, provenance, installer contents, image digest, updater metadata, or release asset manifest.
|
|
58
|
+
- Remote publication surface: registry, Git tag, GitHub Release, Docker registry, tap, updater feed, appcast, CDN, package index, or store.
|
|
59
|
+
- Recovery model: unpublish, yank, deprecate, republish with new version, move channel pointer, revoke asset, restore from backup, or forward fix.
|
|
60
|
+
- Configured command intents for build, package inspection, release verification, docs validation, and user installation or updater smoke test. If no such intent exists, report the missing intent instead of inventing a raw command.
|
|
61
|
+
|
|
62
|
+
<!-- mustflow-section: preconditions -->
|
|
63
|
+
## Preconditions
|
|
64
|
+
|
|
65
|
+
- The task matches the Use When conditions and does not match the Do Not Use When exclusions.
|
|
66
|
+
- Higher-priority instructions, release preferences, and the command contract have been checked for the current scope.
|
|
67
|
+
- The release target and version are known, or the work is explicitly limited to authoring a release procedure skill or checklist.
|
|
68
|
+
- Remote publication, tag creation, push, registry upload, production updater change, and destructive yanking or unpublish actions are not executed unless the repository and host rules explicitly authorize them.
|
|
69
|
+
|
|
70
|
+
<!-- mustflow-section: allowed-edits -->
|
|
71
|
+
## Allowed Edits
|
|
72
|
+
|
|
73
|
+
- Update version metadata, release workflow files, package manifests, artifact manifests, changelog or release-preparation docs, release validation tests, package fixture expectations, and installed-template metadata directly required by the release contract.
|
|
74
|
+
- Update smoke-test expectations and package tests that encode the release or installation contract.
|
|
75
|
+
- Add conservative release procedure text that describes configured command intents and required evidence.
|
|
76
|
+
- Do not publish, tag, push, yank, delete, unpublish, overwrite assets, or alter remote channels unless explicitly requested and authorized by the active command contract and host rules.
|
|
77
|
+
|
|
78
|
+
<!-- mustflow-section: procedure -->
|
|
79
|
+
## Procedure
|
|
80
|
+
|
|
81
|
+
1. Classify the release surface.
|
|
82
|
+
- Package registry: npm, PyPI, crates.io, RubyGems, Maven, NuGet, SwiftPM, or similar.
|
|
83
|
+
- Source tag release: Go module, GitHub Release, generated assets, source archive, or checksum manifest.
|
|
84
|
+
- Container release: image tag, digest, multi-platform manifest, base image, provenance, or registry metadata.
|
|
85
|
+
- Installer or updater release: desktop installer, appcast, update feed, channel metadata, signature, release notes, or updater endpoint.
|
|
86
|
+
- Formula or distribution wrapper: Homebrew formula, cask, tap metadata, checksum, bottle, or livecheck.
|
|
87
|
+
2. Declare the public API before choosing the version bump.
|
|
88
|
+
- Public API includes CLI output, flags, config schema, package exports, templates, generated artifacts, installer behavior, migration contract, deprecation behavior, update channel behavior, and documented examples.
|
|
89
|
+
- Use SemVer only after naming what this project treats as public API.
|
|
90
|
+
- Treat compatibility-affecting behavior, removed assets, changed binary names, moved module paths, changed updater channels, or stricter parsers as release-contract changes even when source APIs look unchanged.
|
|
91
|
+
3. Inspect the artifact, not only the repository tree.
|
|
92
|
+
- Check package file lists, archive contents, generated distributions, binary entrypoints, README, LICENSE, metadata, generated schemas, template files, checksums, signatures, SBOM, provenance, image digest, and platform matrix as applicable.
|
|
93
|
+
- Do not claim artifact inspection from the source tree alone.
|
|
94
|
+
- Stale `dist`, build output, generated clients, package caches, or old release assets must be cleaned or reported before publication evidence is trusted.
|
|
95
|
+
4. Classify channel permanence and recovery.
|
|
96
|
+
- npm name and version pairs, PyPI distribution filenames, crates.io versions, and Go module tags are effectively one-way release identifiers for practical purposes.
|
|
97
|
+
- Docker tags can move in many registries, but digests identify content and should be captured when reporting release evidence.
|
|
98
|
+
- GitHub Releases depend on Git tags, but release assets, checksums, signatures, and release body are separate evidence surfaces.
|
|
99
|
+
- App updater channels depend on metadata and signature state, not only uploaded installers.
|
|
100
|
+
5. For npm-style package publication, verify package metadata, packed file list, entrypoints, bin links, README, LICENSE, access, provenance or trusted publisher setup, registry target, and exact published version behavior through configured intents.
|
|
101
|
+
6. For PyPI-style publication, verify source distribution, wheel contents, metadata, Python version constraints, entrypoints, README rendering, filename uniqueness, and install smoke path through configured intents.
|
|
102
|
+
7. For crates.io-style publication, verify manifest metadata, include and exclude rules, packaged file list, feature combinations, docs expectations, and yank-forward-fix policy.
|
|
103
|
+
8. For Go modules, treat the Git tag as the release. Verify module path, semantic tag, major-version path rules, tag target commit, proxy/cache implications, and module consumer smoke path. Do not move or delete tags as a casual recovery shortcut.
|
|
104
|
+
9. For Docker images, verify image digest, tag, platform manifest, labels, exposed ports, entrypoint, user, vulnerability or base-image expectations, and pull-run smoke behavior through configured intents.
|
|
105
|
+
10. For GitHub Releases, verify tag, release body, generated notes policy, asset list, checksum files, signatures, archives, attached binaries, and download smoke behavior.
|
|
106
|
+
11. For Homebrew, verify formula or cask URL, version, checksum, livecheck, bottle expectations, test block, audit result, and install smoke path through configured intents.
|
|
107
|
+
12. For app updaters, verify installer artifact, update metadata, channel, minimum version, signature, release notes, feed URL, staged rollout rules, and updater smoke path from an older installed version when configured.
|
|
108
|
+
13. Keep release notes and release publication separate.
|
|
109
|
+
- Release notes may say what changed only when evidence supports it.
|
|
110
|
+
- Publication evidence must say what remote artifact exists and how a user reaches it.
|
|
111
|
+
14. Verify remote state after publication when authorized.
|
|
112
|
+
- Check the registry, tag, release page, asset download, digest, updater feed, tap, or package index that users actually consume.
|
|
113
|
+
- Then run the configured user installation, pull, download, or updater smoke intent.
|
|
114
|
+
- If remote publication was not authorized or not performed, report the release as prepared but not published.
|
|
115
|
+
15. Report immutable or hard-to-recover mistakes honestly.
|
|
116
|
+
- Bad package version: usually deprecate, yank, or release a new version.
|
|
117
|
+
- Bad Go module tag: do not assume moving the tag fixes proxy/cache consumers.
|
|
118
|
+
- Bad Docker tag: distinguish moved tag from old digest still being referenced.
|
|
119
|
+
- Bad updater metadata: treat as a live channel incident if clients may already have seen it.
|
|
120
|
+
16. Never call a release complete from local tests alone. The completion evidence must name the remote channel and the user installation or update path, or explicitly say that post-publish verification was skipped.
|
|
121
|
+
|
|
122
|
+
<!-- mustflow-section: postconditions -->
|
|
123
|
+
## Postconditions
|
|
124
|
+
|
|
125
|
+
- Version bump, release notes, package metadata, manifests, artifacts, workflows, tests, and docs agree.
|
|
126
|
+
- The artifact contents have been inspected through configured evidence, not inferred from the source tree.
|
|
127
|
+
- Remote publication status is classified as not started, prepared, published, verified, failed, yanked, deprecated, superseded, or unknown.
|
|
128
|
+
- User installation, pull, download, or updater smoke test status is known or explicitly reported as skipped.
|
|
129
|
+
- Recovery plan matches the channel's actual permanence and rules.
|
|
130
|
+
|
|
131
|
+
<!-- mustflow-section: verification -->
|
|
132
|
+
## Verification
|
|
133
|
+
|
|
134
|
+
Use configured oneshot command intents when available:
|
|
135
|
+
|
|
136
|
+
- `changes_status`
|
|
137
|
+
- `changes_diff_summary`
|
|
138
|
+
- `lint`
|
|
139
|
+
- `build`
|
|
140
|
+
- `test_related`
|
|
141
|
+
- `test`
|
|
142
|
+
- `docs_validate_fast`
|
|
143
|
+
- `test_release`
|
|
144
|
+
- `mustflow_check`
|
|
145
|
+
|
|
146
|
+
Prefer configured release, package-inspection, artifact-inspection, install-smoke, updater-smoke, checksum, signature, provenance, or registry-verification intents when the command contract exposes them.
|
|
147
|
+
|
|
148
|
+
Do not infer package manager, registry, Docker, Git, Homebrew, or updater commands from project files. If the needed intent is missing, report the missing command contract instead of writing a raw command into the skill or final release procedure.
|
|
149
|
+
|
|
150
|
+
<!-- mustflow-section: failure-handling -->
|
|
151
|
+
## Failure Handling
|
|
152
|
+
|
|
153
|
+
- If the artifact contents differ from the intended release, stop release claims and fix the source, generated output, or packaging configuration before publication.
|
|
154
|
+
- If the remote registry already contains the version, do not assume overwrite is possible. Report the channel-specific recovery path.
|
|
155
|
+
- If publication succeeds but install smoke fails, treat the release as published but not verified and recommend channel-appropriate mitigation.
|
|
156
|
+
- If a tag, asset, digest, checksum, signature, updater feed, or release body is missing, do not collapse the issue into "workflow failed"; name the missing remote surface.
|
|
157
|
+
- If release evidence comes only from CI logs, report that no independent user-path smoke test was completed unless the configured CI explicitly performs that path.
|
|
158
|
+
- If unpublish, yank, tag movement, channel rollback, or asset deletion is proposed, check host and repository authorization first and report the permanence risk.
|
|
159
|
+
|
|
160
|
+
<!-- mustflow-section: output-format -->
|
|
161
|
+
## Output Format
|
|
162
|
+
|
|
163
|
+
- Release target, version, and channel
|
|
164
|
+
- Public API and version bump classification
|
|
165
|
+
- Artifact contents inspected
|
|
166
|
+
- Remote publication state
|
|
167
|
+
- User installation, download, pull, or updater smoke path result
|
|
168
|
+
- Synchronized version, docs, manifest, workflow, and test surfaces
|
|
169
|
+
- Recovery or rollback classification
|
|
170
|
+
- Command intents run
|
|
171
|
+
- Skipped remote, publish, or install checks and reasons
|
|
172
|
+
- Remaining release-publish risk
|
|
@@ -108,6 +108,60 @@ route_type = "primary"
|
|
|
108
108
|
priority = 20
|
|
109
109
|
applies_to_reasons = ["unknown_change", "code_change"]
|
|
110
110
|
|
|
111
|
+
[routes."api-contract-change"]
|
|
112
|
+
category = "general_code"
|
|
113
|
+
route_type = "primary"
|
|
114
|
+
priority = 82
|
|
115
|
+
applies_to_reasons = ["code_change", "public_api_change", "docs_change", "test_change"]
|
|
116
|
+
|
|
117
|
+
[routes."typescript-code-change"]
|
|
118
|
+
category = "general_code"
|
|
119
|
+
route_type = "primary"
|
|
120
|
+
priority = 85
|
|
121
|
+
applies_to_reasons = ["code_change", "public_api_change", "test_change"]
|
|
122
|
+
|
|
123
|
+
[routes."javascript-code-change"]
|
|
124
|
+
category = "general_code"
|
|
125
|
+
route_type = "primary"
|
|
126
|
+
priority = 85
|
|
127
|
+
applies_to_reasons = ["code_change", "public_api_change", "test_change"]
|
|
128
|
+
|
|
129
|
+
[routes."python-code-change"]
|
|
130
|
+
category = "general_code"
|
|
131
|
+
route_type = "primary"
|
|
132
|
+
priority = 85
|
|
133
|
+
applies_to_reasons = ["code_change", "public_api_change", "test_change"]
|
|
134
|
+
|
|
135
|
+
[routes."go-code-change"]
|
|
136
|
+
category = "general_code"
|
|
137
|
+
route_type = "primary"
|
|
138
|
+
priority = 85
|
|
139
|
+
applies_to_reasons = ["code_change", "public_api_change", "test_change"]
|
|
140
|
+
|
|
141
|
+
[routes."rust-code-change"]
|
|
142
|
+
category = "general_code"
|
|
143
|
+
route_type = "primary"
|
|
144
|
+
priority = 85
|
|
145
|
+
applies_to_reasons = ["code_change", "public_api_change", "test_change"]
|
|
146
|
+
|
|
147
|
+
[routes."dart-code-change"]
|
|
148
|
+
category = "general_code"
|
|
149
|
+
route_type = "primary"
|
|
150
|
+
priority = 85
|
|
151
|
+
applies_to_reasons = ["code_change", "public_api_change", "test_change"]
|
|
152
|
+
|
|
153
|
+
[routes."hono-code-change"]
|
|
154
|
+
category = "general_code"
|
|
155
|
+
route_type = "primary"
|
|
156
|
+
priority = 85
|
|
157
|
+
applies_to_reasons = ["code_change", "public_api_change", "security_change"]
|
|
158
|
+
|
|
159
|
+
[routes."elysia-code-change"]
|
|
160
|
+
category = "general_code"
|
|
161
|
+
route_type = "primary"
|
|
162
|
+
priority = 85
|
|
163
|
+
applies_to_reasons = ["code_change", "public_api_change", "security_change"]
|
|
164
|
+
|
|
111
165
|
[routes."source-anchor-authoring"]
|
|
112
166
|
category = "general_code"
|
|
113
167
|
route_type = "primary"
|
|
@@ -156,12 +210,30 @@ route_type = "primary"
|
|
|
156
210
|
priority = 55
|
|
157
211
|
applies_to_reasons = ["code_change", "behavior_change"]
|
|
158
212
|
|
|
213
|
+
[routes."database-migration-change"]
|
|
214
|
+
category = "data_external"
|
|
215
|
+
route_type = "primary"
|
|
216
|
+
priority = 82
|
|
217
|
+
applies_to_reasons = ["code_change", "data_change", "migration_change", "public_api_change", "test_change", "docs_change", "security_change"]
|
|
218
|
+
|
|
219
|
+
[routes."dependency-upgrade-review"]
|
|
220
|
+
category = "data_external"
|
|
221
|
+
route_type = "primary"
|
|
222
|
+
priority = 75
|
|
223
|
+
applies_to_reasons = ["code_change", "docs_change", "security_change", "package_metadata_change", "release_risk"]
|
|
224
|
+
|
|
159
225
|
[routes."dependency-reality-check"]
|
|
160
226
|
category = "data_external"
|
|
161
227
|
route_type = "adjunct"
|
|
162
228
|
priority = 45
|
|
163
229
|
applies_to_reasons = ["code_change", "docs_change", "security_change"]
|
|
164
230
|
|
|
231
|
+
[routes."file-path-cross-platform-change"]
|
|
232
|
+
category = "data_external"
|
|
233
|
+
route_type = "primary"
|
|
234
|
+
priority = 78
|
|
235
|
+
applies_to_reasons = ["code_change", "public_api_change", "test_change", "docs_change", "security_change", "package_metadata_change"]
|
|
236
|
+
|
|
165
237
|
[routes."cross-platform-filesystem-safety"]
|
|
166
238
|
category = "data_external"
|
|
167
239
|
route_type = "adjunct"
|
|
@@ -174,6 +246,12 @@ route_type = "primary"
|
|
|
174
246
|
priority = 55
|
|
175
247
|
applies_to_reasons = ["code_change", "behavior_change"]
|
|
176
248
|
|
|
249
|
+
[routes."tauri-code-change"]
|
|
250
|
+
category = "data_external"
|
|
251
|
+
route_type = "primary"
|
|
252
|
+
priority = 90
|
|
253
|
+
applies_to_reasons = ["code_change", "security_change", "public_api_change"]
|
|
254
|
+
|
|
177
255
|
[routes."process-execution-safety"]
|
|
178
256
|
category = "data_external"
|
|
179
257
|
route_type = "primary"
|
|
@@ -222,6 +300,18 @@ route_type = "primary"
|
|
|
222
300
|
priority = 30
|
|
223
301
|
applies_to_reasons = ["security_change", "privacy_change"]
|
|
224
302
|
|
|
303
|
+
[routes."config-env-change"]
|
|
304
|
+
category = "security_privacy"
|
|
305
|
+
route_type = "primary"
|
|
306
|
+
priority = 35
|
|
307
|
+
applies_to_reasons = ["code_change", "docs_change", "security_change", "privacy_change", "package_metadata_change", "mustflow_config_change"]
|
|
308
|
+
|
|
309
|
+
[routes."auth-permission-change"]
|
|
310
|
+
category = "security_privacy"
|
|
311
|
+
route_type = "primary"
|
|
312
|
+
priority = 85
|
|
313
|
+
applies_to_reasons = ["code_change", "security_change", "privacy_change", "public_api_change"]
|
|
314
|
+
|
|
225
315
|
[routes."security-regression-tests"]
|
|
226
316
|
category = "security_privacy"
|
|
227
317
|
route_type = "adjunct"
|
|
@@ -264,6 +354,48 @@ route_type = "primary"
|
|
|
264
354
|
priority = 50
|
|
265
355
|
applies_to_reasons = ["ui_change"]
|
|
266
356
|
|
|
357
|
+
[routes."html-code-change"]
|
|
358
|
+
category = "ui_assets"
|
|
359
|
+
route_type = "primary"
|
|
360
|
+
priority = 85
|
|
361
|
+
applies_to_reasons = ["ui_change", "docs_change", "code_change"]
|
|
362
|
+
|
|
363
|
+
[routes."css-code-change"]
|
|
364
|
+
category = "ui_assets"
|
|
365
|
+
route_type = "primary"
|
|
366
|
+
priority = 85
|
|
367
|
+
applies_to_reasons = ["ui_change", "docs_change", "code_change"]
|
|
368
|
+
|
|
369
|
+
[routes."tailwind-code-change"]
|
|
370
|
+
category = "ui_assets"
|
|
371
|
+
route_type = "primary"
|
|
372
|
+
priority = 85
|
|
373
|
+
applies_to_reasons = ["ui_change", "docs_change", "code_change"]
|
|
374
|
+
|
|
375
|
+
[routes."unocss-code-change"]
|
|
376
|
+
category = "ui_assets"
|
|
377
|
+
route_type = "primary"
|
|
378
|
+
priority = 85
|
|
379
|
+
applies_to_reasons = ["ui_change", "docs_change", "code_change"]
|
|
380
|
+
|
|
381
|
+
[routes."flutter-code-change"]
|
|
382
|
+
category = "ui_assets"
|
|
383
|
+
route_type = "primary"
|
|
384
|
+
priority = 85
|
|
385
|
+
applies_to_reasons = ["ui_change", "code_change", "public_api_change"]
|
|
386
|
+
|
|
387
|
+
[routes."astro-code-change"]
|
|
388
|
+
category = "ui_assets"
|
|
389
|
+
route_type = "primary"
|
|
390
|
+
priority = 85
|
|
391
|
+
applies_to_reasons = ["ui_change", "docs_change", "code_change"]
|
|
392
|
+
|
|
393
|
+
[routes."svelte-code-change"]
|
|
394
|
+
category = "ui_assets"
|
|
395
|
+
route_type = "primary"
|
|
396
|
+
priority = 85
|
|
397
|
+
applies_to_reasons = ["ui_change", "code_change", "public_api_change"]
|
|
398
|
+
|
|
267
399
|
[routes."pattern-scout"]
|
|
268
400
|
category = "architecture_patterns"
|
|
269
401
|
route_type = "adjunct"
|
|
@@ -312,6 +444,12 @@ route_type = "primary"
|
|
|
312
444
|
priority = 55
|
|
313
445
|
applies_to_reasons = ["release_risk", "docs_change"]
|
|
314
446
|
|
|
447
|
+
[routes."release-publish-change"]
|
|
448
|
+
category = "docs_release"
|
|
449
|
+
route_type = "primary"
|
|
450
|
+
priority = 58
|
|
451
|
+
applies_to_reasons = ["release_risk", "package_metadata_change", "docs_change", "public_api_change"]
|
|
452
|
+
|
|
315
453
|
[routes."search-ad-content-authoring"]
|
|
316
454
|
category = "docs_release"
|
|
317
455
|
route_type = "primary"
|