mustflow 2.115.9 → 2.115.13
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/README.md +1 -1
- package/dist/cli/i18n/en.js +3 -3
- package/dist/cli/i18n/es.js +3 -3
- package/dist/cli/i18n/fr.js +3 -3
- package/dist/cli/i18n/hi.js +3 -3
- package/dist/cli/i18n/ko.js +3 -3
- package/dist/cli/i18n/zh.js +3 -3
- package/package.json +1 -1
- package/templates/default/common/.mustflow/config/mustflow.toml +0 -2
- package/templates/default/i18n.toml +9 -3
- package/templates/default/locales/en/.mustflow/skills/INDEX.md +2 -1
- package/templates/default/locales/en/.mustflow/skills/performance-measurement-integrity-review/SKILL.md +324 -0
- package/templates/default/locales/en/.mustflow/skills/routes.toml +6 -0
- package/templates/default/locales/en/.mustflow/skills/state-machine-pattern/SKILL.md +5 -1
- package/templates/default/locales/en/.mustflow/skills/svelte-code-change/SKILL.md +6 -1
- package/templates/default/manifest.toml +8 -1
package/README.md
CHANGED
|
@@ -302,7 +302,7 @@ mf run mustflow_update_apply
|
|
|
302
302
|
| `mf script-pack list` | List bundled script packs, script refs, routing hints, side-effect flags, input/output labels, and JSON schema files. |
|
|
303
303
|
| `mf script-pack suggest --changed --json` | Rank optional read-only helpers for current changed files without running those helpers or granting command authority. |
|
|
304
304
|
| `mf script-pack suggest --path <path> --phase before_change` | Rank helpers for an explicit path and workflow phase before deciding which script to run. |
|
|
305
|
-
| `mf script-pack run code/outline scan <path...> --json` | Scan
|
|
305
|
+
| `mf script-pack run code/outline scan <path...> --json` | Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers, line ranges, source anchors, return metadata, and content hashes. |
|
|
306
306
|
| `mf script-pack run code/dependency-graph scan <path...> --json` | Trace bounded relative import, export, require, and dynamic import edges for TypeScript and JavaScript source files. |
|
|
307
307
|
| `mf script-pack run code/module-boundary check <path...> --json` | Check configured module-boundary import rules, import cycles, public entrypoints, feature imports, and shared budgets. |
|
|
308
308
|
| `mf script-pack run code/change-impact analyze --base HEAD --json` | Analyze changed files and return bounded impact candidates, script-pack hints, and verification intent hints. |
|
package/dist/cli/i18n/en.js
CHANGED
|
@@ -797,7 +797,7 @@ Read these files before working:
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "Scan TypeScript and
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers and line ranges",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ Read these files before working:
|
|
|
825
825
|
"scriptPack.error.unknownScript": "Unknown script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "Provide at least one suggestion input: --path <path>, --changed, --phase <phase>, or --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "Unknown script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "Scan TypeScript and
|
|
828
|
+
"codeOutline.help.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python source files for declaration headers, line ranges, export flags, and content hashes.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "Maximum number of source files to scan. Default: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "Maximum bytes to read from each source file. Default: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "The code outline was scanned without findings",
|
|
@@ -842,7 +842,7 @@ Read these files before working:
|
|
|
842
842
|
"codeOutline.error.missingPath": "Provide at least one source file or directory to scan",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option} must be a positive safe integer: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option} must be a non-negative safe integer: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "Read a bounded
|
|
845
|
+
"codeSymbolRead.help.summary": "Read a bounded supported-source snippet from a source anchor, symbol line, or explicit line range.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "Source anchor id to resolve to its target symbol",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "1-based source line to resolve to a symbol or range",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "Optional explicit 1-based end line; when omitted, the containing outline symbol is read",
|
package/dist/cli/i18n/es.js
CHANGED
|
@@ -797,7 +797,7 @@ Lee estos archivos antes de trabajar:
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "Scan TypeScript and
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers and line ranges",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ Lee estos archivos antes de trabajar:
|
|
|
825
825
|
"scriptPack.error.unknownScript": "Unknown script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "Provide at least one suggestion input: --path <path>, --changed, --phase <phase>, or --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "Unknown script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "Scan TypeScript and
|
|
828
|
+
"codeOutline.help.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python source files for declaration headers, line ranges, export flags, and content hashes.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "Maximum number of source files to scan. Default: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "Maximum bytes to read from each source file. Default: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "The code outline was scanned without findings",
|
|
@@ -842,7 +842,7 @@ Lee estos archivos antes de trabajar:
|
|
|
842
842
|
"codeOutline.error.missingPath": "Provide at least one source file or directory to scan",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option} must be a positive safe integer: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option} must be a non-negative safe integer: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "Read a bounded
|
|
845
|
+
"codeSymbolRead.help.summary": "Read a bounded supported-source snippet from a source anchor, symbol line, or explicit line range.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "Source anchor id to resolve to its target symbol",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "1-based source line to resolve to a symbol or range",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "Optional explicit 1-based end line; when omitted, the containing outline symbol is read",
|
package/dist/cli/i18n/fr.js
CHANGED
|
@@ -797,7 +797,7 @@ Lisez ces fichiers avant de travailler :
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "Scan TypeScript and
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers and line ranges",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ Lisez ces fichiers avant de travailler :
|
|
|
825
825
|
"scriptPack.error.unknownScript": "Unknown script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "Provide at least one suggestion input: --path <path>, --changed, --phase <phase>, or --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "Unknown script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "Scan TypeScript and
|
|
828
|
+
"codeOutline.help.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python source files for declaration headers, line ranges, export flags, and content hashes.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "Maximum number of source files to scan. Default: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "Maximum bytes to read from each source file. Default: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "The code outline was scanned without findings",
|
|
@@ -842,7 +842,7 @@ Lisez ces fichiers avant de travailler :
|
|
|
842
842
|
"codeOutline.error.missingPath": "Provide at least one source file or directory to scan",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option} must be a positive safe integer: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option} must be a non-negative safe integer: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "Read a bounded
|
|
845
|
+
"codeSymbolRead.help.summary": "Read a bounded supported-source snippet from a source anchor, symbol line, or explicit line range.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "Source anchor id to resolve to its target symbol",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "1-based source line to resolve to a symbol or range",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "Optional explicit 1-based end line; when omitted, the containing outline symbol is read",
|
package/dist/cli/i18n/hi.js
CHANGED
|
@@ -797,7 +797,7 @@ export const hiMessages = {
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "Scan TypeScript and
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers and line ranges",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ export const hiMessages = {
|
|
|
825
825
|
"scriptPack.error.unknownScript": "Unknown script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "Provide at least one suggestion input: --path <path>, --changed, --phase <phase>, or --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "Unknown script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "Scan TypeScript and
|
|
828
|
+
"codeOutline.help.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python source files for declaration headers, line ranges, export flags, and content hashes.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "Maximum number of source files to scan. Default: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "Maximum bytes to read from each source file. Default: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "The code outline was scanned without findings",
|
|
@@ -842,7 +842,7 @@ export const hiMessages = {
|
|
|
842
842
|
"codeOutline.error.missingPath": "Provide at least one source file or directory to scan",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option} must be a positive safe integer: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option} must be a non-negative safe integer: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "Read a bounded
|
|
845
|
+
"codeSymbolRead.help.summary": "Read a bounded supported-source snippet from a source anchor, symbol line, or explicit line range.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "Source anchor id to resolve to its target symbol",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "1-based source line to resolve to a symbol or range",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "Optional explicit 1-based end line; when omitted, the containing outline symbol is read",
|
package/dist/cli/i18n/ko.js
CHANGED
|
@@ -797,7 +797,7 @@ export const koMessages = {
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "TypeScript
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "TypeScript, JavaScript, Astro, Svelte, Go, Rust, Python 파일에서 symbol header와 라인 범위를 스캔합니다",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ export const koMessages = {
|
|
|
825
825
|
"scriptPack.error.unknownScript": "알 수 없는 script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "추천 입력을 하나 이상 제공하세요: --path <path>, --changed, --phase <phase>, 또는 --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "알 수 없는 script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "TypeScript
|
|
828
|
+
"codeOutline.help.summary": "TypeScript, JavaScript, Astro, Svelte, Go, Rust, Python 소스 파일에서 declaration header, 라인 범위, export flag, content hash를 스캔합니다.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "스캔할 최대 소스 파일 수입니다. 기본값: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "각 소스 파일에서 읽을 최대 바이트입니다. 기본값: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "code outline을 finding 없이 스캔했습니다",
|
|
@@ -842,7 +842,7 @@ export const koMessages = {
|
|
|
842
842
|
"codeOutline.error.missingPath": "스캔할 소스 파일이나 디렉터리를 하나 이상 제공하세요",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option}은 양의 safe integer여야 합니다: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option}은 0 이상의 safe integer여야 합니다: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "source anchor, symbol 라인, 또는 명시 라인 범위에서
|
|
845
|
+
"codeSymbolRead.help.summary": "source anchor, symbol 라인, 또는 명시 라인 범위에서 지원되는 소스의 제한된 snippet을 읽습니다.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "target symbol로 해석할 source anchor id입니다",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "symbol 또는 범위로 해석할 1-based source line입니다",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "선택적 1-based end line입니다. 생략하면 포함하는 outline symbol을 읽습니다",
|
package/dist/cli/i18n/zh.js
CHANGED
|
@@ -797,7 +797,7 @@ export const zhMessages = {
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "Scan TypeScript and
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers and line ranges",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ export const zhMessages = {
|
|
|
825
825
|
"scriptPack.error.unknownScript": "Unknown script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "Provide at least one suggestion input: --path <path>, --changed, --phase <phase>, or --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "Unknown script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "Scan TypeScript and
|
|
828
|
+
"codeOutline.help.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python source files for declaration headers, line ranges, export flags, and content hashes.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "Maximum number of source files to scan. Default: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "Maximum bytes to read from each source file. Default: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "The code outline was scanned without findings",
|
|
@@ -842,7 +842,7 @@ export const zhMessages = {
|
|
|
842
842
|
"codeOutline.error.missingPath": "Provide at least one source file or directory to scan",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option} must be a positive safe integer: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option} must be a non-negative safe integer: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "Read a bounded
|
|
845
|
+
"codeSymbolRead.help.summary": "Read a bounded supported-source snippet from a source anchor, symbol line, or explicit line range.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "Source anchor id to resolve to its target symbol",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "1-based source line to resolve to a symbol or range",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "Optional explicit 1-based end line; when omitted, the containing outline symbol is read",
|
package/package.json
CHANGED
|
@@ -62,7 +62,7 @@ translations = {}
|
|
|
62
62
|
[documents."skills.index"]
|
|
63
63
|
source = "locales/en/.mustflow/skills/INDEX.md"
|
|
64
64
|
source_locale = "en"
|
|
65
|
-
revision =
|
|
65
|
+
revision = 239
|
|
66
66
|
translations = {}
|
|
67
67
|
|
|
68
68
|
[documents."skill.ada-code-change"]
|
|
@@ -889,7 +889,7 @@ translations = {}
|
|
|
889
889
|
[documents."skill.svelte-code-change"]
|
|
890
890
|
source = "locales/en/.mustflow/skills/svelte-code-change/SKILL.md"
|
|
891
891
|
source_locale = "en"
|
|
892
|
-
revision =
|
|
892
|
+
revision = 5
|
|
893
893
|
translations = {}
|
|
894
894
|
|
|
895
895
|
[documents."skill.tailwind-code-change"]
|
|
@@ -1095,6 +1095,12 @@ source_locale = "en"
|
|
|
1095
1095
|
revision = 24
|
|
1096
1096
|
translations = {}
|
|
1097
1097
|
|
|
1098
|
+
[documents."skill.performance-measurement-integrity-review"]
|
|
1099
|
+
source = "locales/en/.mustflow/skills/performance-measurement-integrity-review/SKILL.md"
|
|
1100
|
+
source_locale = "en"
|
|
1101
|
+
revision = 2
|
|
1102
|
+
translations = {}
|
|
1103
|
+
|
|
1098
1104
|
[documents."skill.pattern-scout"]
|
|
1099
1105
|
source = "locales/en/.mustflow/skills/pattern-scout/SKILL.md"
|
|
1100
1106
|
source_locale = "en"
|
|
@@ -1140,7 +1146,7 @@ translations = {}
|
|
|
1140
1146
|
[documents."skill.state-machine-pattern"]
|
|
1141
1147
|
source = "locales/en/.mustflow/skills/state-machine-pattern/SKILL.md"
|
|
1142
1148
|
source_locale = "en"
|
|
1143
|
-
revision =
|
|
1149
|
+
revision = 5
|
|
1144
1150
|
translations = {}
|
|
1145
1151
|
|
|
1146
1152
|
[documents."skill.strategy-pattern"]
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
mustflow_doc: skills.index
|
|
3
3
|
locale: en
|
|
4
4
|
canonical: true
|
|
5
|
-
revision:
|
|
5
|
+
revision: 239
|
|
6
6
|
authority: router
|
|
7
7
|
lifecycle: mustflow-owned
|
|
8
8
|
---
|
|
@@ -614,6 +614,7 @@ routes. Event routes stay inactive until their event occurs.
|
|
|
614
614
|
| Source anchors are added, revised, reviewed, or used to mark a module boundary | `.mustflow/skills/source-anchor-authoring/SKILL.md` | Target files, anchor reason, nearby anchors, source-anchor policy, and validation surface | Source anchors and directly related workflow docs or comments | comment bloat, authority drift, false verification claims, or hidden module pressure | `mustflow_check`, `docs_validate_fast` | Anchor placement decision, field choices, module-boundary handoff, and verification |
|
|
615
615
|
| Changed files need risk classification and verification selection | `.mustflow/skills/diff-risk-review/SKILL.md` | Changed-file list, diff summary, and task goal | Changed surfaces and verification report | under- or over-verification | `changes_status`, `changes_diff_summary`, `test`, `test_related`, `test_audit`, `lint`, `build`, `docs_validate`, `mustflow_check` | Risk level, verification choice, rollback notes |
|
|
616
616
|
| Runtime performance, hot paths, user-perceived latency, p95/p99 tail latency, throughput, infrastructure cost, memory, GC pressure, CPU cache locality, allocation churn, bundle size, payload size, HTTP delivery, compression, streaming latency, media loading, build time, filesystem scanning, process spawning, IPC/RPC/DB/API fan-out, N+1 work, repeated filtering/sorting/parsing/serialization, caching, pagination, queues, virtualization, backpressure, or performance claims are planned, edited, reviewed, or reported | `.mustflow/skills/performance-budget-check/SKILL.md` | Performance surface, hot-path shape, input scale, measurement method, baseline and result when available, correctness boundaries, isolation surface, and command contract entries | Data access, lookup indexes, grouping, projection, batching, scheduling, rendering, cache boundaries, queues, concurrency limits, cancellation, measurements, docs, tests, and directly synchronized templates | invented budgets, stale measurements, hidden O(n²), misleading Big-O or data-structure claims, N+1 queries or RPC, unbounded materialization, repeated serialization, object churn, GC pressure, broad rerender, false compression win, buffered stream latency, cache stampede, key explosion, queue backlog, pool exhaustion, stale async result, or speed-over-correctness tradeoff | `changes_status`, `changes_diff_summary`, `build`, `test_related`, `docs_validate_fast`, `test_release`, `mustflow_check` | Hot path, ROI priority, cost multiplier, measurement or complexity evidence, semantic preservation, optimization applied, verification, and remaining performance risk |
|
|
617
|
+
| Performance counters, timers, histograms, cache ratios, CPU PMU evidence, batch or queue throughput, communication IPC outcomes, cross-process latency, cancellation cost, benchmark results, profiler artifacts, regression gates, or performance logs need review for semantic correctness, concurrency safety, comparable evidence, coordinated-omission resistance, and sensitive-data containment | `.mustflow/skills/performance-measurement-integrity-review/SKILL.md` | Measurement question and decision, event lifecycle, unit and denominator ledger, time and clock-domain model, concurrency and snapshot model, workload and comparison evidence, CPU event and scheduling evidence, cross-layer phase evidence, artifact and telemetry boundary, tests or schemas, and configured command intents | Event definitions, lifecycle counters, units, histograms, operation context, snapshot and reset logic, batch and queue stage metrics, cancellation resource ledgers, CPU counter normalization, PMU grouping checks, communication outcome conservation, cross-layer phase closure, benchmark schemas, comparison rules, budgets, artifact sanitization, canary scans, focused tests, and directly synchronized templates | logical command and attempt collapse, submit counted as start, inconsistent atomic snapshot, thread-local async timer, cross-process monotonic subtraction, wall/CPU/wait collapse, coordinated omission, instrumentation contention, exporter-biased tail, ratio averaging, CPU IPC and communication IPC ambiguity, multiplexed PMU ratio, cache-hit-rate theater, hybrid-core or NUMA drift, request/key/byte cache-rate collapse, batch/item weighting drift, useful/attempted throughput collapse, start/finish cohort mismatch, partial-success collapse, duplicate terminal metric, client/server outcome overwrite, layer-p99 addition, invented presentation boundary, cancellation boolean theater, rerun-until-pass, incomparable benchmark, raw path or remote leakage, unsafe profile artifact, or unverified regression gate | `changes_status`, `changes_diff_summary`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Performance measurement boundary reviewed, event/lifecycle/unit/clock/snapshot/CPU-counter/cache/communication-IPC/cross-layer/batch/queue/cancellation/benchmark/privacy findings, evidence level, verification, and remaining measurement-integrity risk |
|
|
617
618
|
| Installed app startup needs launch-path review for Android, iOS, React Native, Flutter, Tauri mobile, Electron, desktop app shells, cold start, warm start, hot start, splash, first frame, fully usable state, TTID, TTFD, `reportFullyDrawn()`, Android Vitals, Xcode Organizer, Instruments, Application or AppDelegate work, ContentProvider auto-init, AndroidX App Startup, dependency injection graph creation, SDK initialization, static initializers, main-thread disk or network work, cached startup snapshots, auth or config gates, launch migrations, first-screen layout or assets, custom fonts, Baseline Profile, Startup Profile, Macrobenchmark, Perfetto, Hermes, import graphs, deferred components, shader warmup, on-demand modules, and post-first-frame work queues | `.mustflow/skills/app-startup-performance-review/SKILL.md` | Startup scope ledger, measurement ledger, launch critical-path ledger, main-thread blocking ledger, first usable state ledger, first-screen render ledger, deferred work ledger, platform optimization ledger, existing tests, package surfaces, synchronized docs or templates, and configured command intents | Application or AppDelegate cleanup, auto-init control, lazy or scoped DI and SDK setup, static initializer cleanup, main-thread I/O removal, cache snapshot startup, auth or config gate deferral, maintenance-work scheduling, first-screen simplification, asset and font reductions, Android startup profiles, iOS launch tooling, hybrid import or preload cleanup, deferred queue ownership, startup tests, and directly synchronized docs or templates | splash masking, early `reportFullyDrawn()` metric gaming, debug-only measurement, simulator-only or flagship-only startup claims, app delegate warehouse, ContentProvider surprise init, eager DI graph construction, SDK auto-init, static initializer cost, main-thread disk or network, network-first startup dependency, launch migration or cleanup stall, heavy first screen, oversized launch asset, custom font bloat, React Native top-level import bloat, Flutter shader surprise, unowned deferred work, or missing release/device/profiler evidence | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | App startup boundary reviewed, first frame and fully usable state, measurement evidence, critical path findings, lazy-init and defer decisions, platform tooling, verification, and remaining app-startup performance risk |
|
|
618
619
|
| Desktop background process stability needs recovery review for Windows services, SCM failure actions, preshutdown handlers, service SIDs, Session 0 boundaries, scheduled tasks, macOS LaunchDaemons or LaunchAgents, launchd daemon or agent placement, launchd-managed helpers, Linux systemd user or system units, restart policy, start-rate limits, Electron main or utility processes, WebView helpers, tray apps, sync workers, local daemons, auto-start helpers, updaters, crash recovery, durable checkpoints, single-instance locks, data-directory locks, stale locks, OS supervisor configuration, restart backoff, PID-only health checks, progress heartbeats, job leases, idempotent jobs, atomic file writes, shutdown-only persistence, exit-code semantics, UI and worker lifecycle separation, sleep or resume, monotonic time, local IPC authorization, environment and working-directory determinism, least privilege, early logs, crash reporting, update drain, lifecycle tests, or safe mode | `.mustflow/skills/desktop-background-process-stability-review/SKILL.md` | Process ledger, recovery ledger, instance ledger, supervisor ledger, health ledger, lifecycle ledger, security ledger, existing tests, telemetry or crash evidence, package surfaces, synchronized docs or templates, and configured command intents | Durable checkpoints, startup recovery, stale-lock cleanup, data-directory locks, early single-instance lock acquisition, lease states, idempotency keys, atomic write-temp/flush/fsync/rename paths, progress health checks, heartbeats with job and offset fields, supervisor restart backoff and start-rate limits, user-stop versus crash-restart state, UI/worker process split, launchd daemon/agent placement, Session 0 IPC separation, sleep/resume revalidation, monotonic timers, IPC ACLs and schema versions, explicit environment, least-privilege service configuration, early crash/log setup, update drain, safe mode, lifecycle tests, and directly synchronized docs or templates | immortal-process fantasy, memory-only progress, restart that re-enters corruption, late single-instance lock, process lock mistaken for resource lock, one processing boolean, duplicate side effect after lease recovery, half-written local JSON, shutdown-hook-only persistence, hand-rolled mini supervisor, unbounded crash loop, user stop ignored by scheduled restart, PID-as-health, `last_seen_at` heartbeat theater, UI and worker lifecycle tangle, service UI from Session 0, daemon/agent mismatch, daemonizing under launchd, boot-order network assumption, wall-clock lease timer, trusted localhost IPC, inherited PATH or working directory, overprivileged helper, missing early startup logs, crash reporter started too late, one-shot migration, update deletes rollback path too early, untested sleep/resume, or no safe mode | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Desktop background process stability boundary reviewed, process/recovery/instance/supervisor/health/heartbeat/lease/atomic-write/shutdown/platform/power/time/IPC/environment/privilege/logging/crash/update/lifecycle/safe-mode findings, verification, and remaining desktop background stability risk |
|
|
619
620
|
| Desktop automatic update safety needs review for Electron autoUpdater, electron-builder feeds, Squirrel.Windows first-run locks, Sparkle appcasts, Tauri updater, macOS signed or notarized updates, Windows installers, Linux desktop packages, update endpoints, immutable artifacts, `.sig`, `.blockmap`, `latest.yml`, `latest.json`, `appcast.xml`, metadata pointer order, CDN cache policy, staged rollout, deterministic canary buckets, alpha/beta/stable channels, update kill switches, remote disable policy, signatures, hash verification, signing-key custody, key rotation, certificate expiry, notarization gates, single-flight update checks, quit-and-install timing, skipped-version upgrade paths, same-version republish recovery, updater telemetry, crash gates, or installed-app update smoke tests | `.mustflow/skills/desktop-auto-update-safety-review/SKILL.md` | Updater stack ledger, state-machine ledger, artifact ledger, trust ledger, rollout ledger, installed-client ledger, observability ledger, current updater code or release metadata, package surfaces, synchronized docs or templates, and configured command intents | Check/download/verify/stage/apply/relaunch state machines, immutable artifact names, artifact-before-metadata publishing order, latest pointer cache rules, signature and hash verification, signing-key custody, key rotation practice, certificate and notarization gates, physical channel separation, deterministic staged rollout, jitter and backoff, server-side no-update kill switch, single-flight update checks, Squirrel first-run delay, quit-and-install safety, installed old-version upgrade matrix, idempotent local migrations, old artifact retention, update telemetry, crash-free rollout gates, and directly synchronized docs or templates | remote code execution treated as convenience, mutable published artifact, metadata-before-artifact 404 wave, stale CDN latest pointer, hash or signature mismatch, release-server private key, unpracticed key rotation, certificate expiry surprise, stable client reading beta feed, random per-request canary, no kill switch, broken updater requires updater update, duplicate `checkForUpdates()` downloads, first-run installer lock, forced restart data loss, dev-mode updater test, skipped-version migration break, same-version hotfix fantasy, deleted old delta, download-complete-as-success, or missing installed-app smoke evidence | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Desktop auto-update boundary reviewed, updater stack/state/artifact/trust/rollout/installed-client/migration/telemetry/kill-switch findings, verification, skipped updater diagnostics, and remaining desktop auto-update risk |
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
---
|
|
2
|
+
mustflow_doc: skill.performance-measurement-integrity-review
|
|
3
|
+
locale: en
|
|
4
|
+
canonical: true
|
|
5
|
+
revision: 2
|
|
6
|
+
lifecycle: mustflow-owned
|
|
7
|
+
authority: procedure
|
|
8
|
+
name: performance-measurement-integrity-review
|
|
9
|
+
description: Apply this skill when performance counters, timers, histograms, cache ratios, batch or queue throughput, cancellation cost, benchmark results, profiler artifacts, regression gates, or performance logs need review for semantic correctness, concurrency safety, comparable evidence, and sensitive-data containment.
|
|
10
|
+
metadata:
|
|
11
|
+
mustflow_schema: "1"
|
|
12
|
+
mustflow_kind: procedure
|
|
13
|
+
pack_id: mustflow.core
|
|
14
|
+
skill_id: mustflow.core.performance-measurement-integrity-review
|
|
15
|
+
command_intents:
|
|
16
|
+
- changes_status
|
|
17
|
+
- changes_diff_summary
|
|
18
|
+
- build
|
|
19
|
+
- test_related
|
|
20
|
+
- test
|
|
21
|
+
- docs_validate_fast
|
|
22
|
+
- test_release
|
|
23
|
+
- mustflow_check
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# Performance Measurement Integrity Review
|
|
27
|
+
|
|
28
|
+
<!-- mustflow-section: purpose -->
|
|
29
|
+
## Purpose
|
|
30
|
+
|
|
31
|
+
Make performance evidence mean what its name claims. Separate event semantics, units, clocks,
|
|
32
|
+
concurrency guarantees, workload conditions, and privacy boundaries before using a number for an
|
|
33
|
+
optimization claim, alert, budget, or release gate.
|
|
34
|
+
|
|
35
|
+
<!-- mustflow-section: use-when -->
|
|
36
|
+
## Use When
|
|
37
|
+
|
|
38
|
+
- Code adds or changes counters, gauges, timers, histograms, cache statistics, queue or batch
|
|
39
|
+
measurements, cancellation measurements, benchmark result files, performance budgets, profiler
|
|
40
|
+
artifacts, regression comparison, or automated performance gates.
|
|
41
|
+
- A review must decide whether multithreaded, asynchronous, retried, deduplicated, hedged, batched,
|
|
42
|
+
queued, cancelled, or partially committed work is counted and timed correctly.
|
|
43
|
+
- Performance logs or artifacts can expose paths, repository remotes, URLs, process arguments,
|
|
44
|
+
environment values, source text, heap contents, credentials, personal data, or internal topology.
|
|
45
|
+
- A report claims a benchmark or telemetry series proves a regression, improvement, capacity,
|
|
46
|
+
cache efficiency, throughput, latency, or cancellation cost.
|
|
47
|
+
|
|
48
|
+
<!-- mustflow-section: do-not-use-when -->
|
|
49
|
+
## Do Not Use When
|
|
50
|
+
|
|
51
|
+
- The task only chooses or implements an optimization and the measurement contract is unchanged;
|
|
52
|
+
use `performance-budget-check`.
|
|
53
|
+
- The task primarily asks whether operators can narrow an incident from general logs, metrics,
|
|
54
|
+
traces, dashboards, or alerts; use `observability-debuggability-review`.
|
|
55
|
+
- The task primarily designs a load generator or test-suite runtime; use the matching load,
|
|
56
|
+
benchmark, or test-performance skill first and this skill only for measurement integrity.
|
|
57
|
+
- A number is a local fixture with no performance meaning, comparison, or public contract.
|
|
58
|
+
|
|
59
|
+
<!-- mustflow-section: required-inputs -->
|
|
60
|
+
## Required Inputs
|
|
61
|
+
|
|
62
|
+
- Measurement question and decision: what event, duration, resource, ratio, or regression is being
|
|
63
|
+
measured and what action the result may trigger.
|
|
64
|
+
- Event lifecycle: logical command, attempt, accepted, started, completed, committed, acknowledged,
|
|
65
|
+
deduplicated, retried, rejected, dropped, cancelled, rolled back, and terminal boundaries.
|
|
66
|
+
- Unit ledger: request, lookup, key, item, batch, chunk, byte, operation, worker-second, CPU-second,
|
|
67
|
+
wall-second, and any weighting or denominator.
|
|
68
|
+
- Time model: monotonic versus wall clock, process boundary, scheduled arrival, queue wait, service
|
|
69
|
+
time, commit time, end-to-end time, CPU time, nested work, and unfinished work.
|
|
70
|
+
- Concurrency model: update primitive, snapshot guarantee, context propagation, aggregation window,
|
|
71
|
+
reset behavior, sampling, contention, and instrumentation overhead.
|
|
72
|
+
- Workload and comparison evidence: baseline, candidate, environment identity, scenario, input size,
|
|
73
|
+
concurrency, cache state, warmup, repetitions, raw samples, and statistical decision rule.
|
|
74
|
+
- Hardware-counter evidence when used: CPU model and core type, event definitions, counter grouping,
|
|
75
|
+
multiplexing or running percentage, affinity, NUMA placement, working-set size, and normalization
|
|
76
|
+
by attempted or completed logical operation.
|
|
77
|
+
- Cross-layer latency evidence when used: trace identity, phase sequence, clock domain, payload size,
|
|
78
|
+
ingress and handoff boundaries, executor or event-loop queueing, presentation boundary, sampling
|
|
79
|
+
decision, and dropped-event count.
|
|
80
|
+
- Artifact and telemetry boundary: schema version, retention, exporter or collector path, redaction,
|
|
81
|
+
artifact formats, access policy, and recursive secret or path scanning.
|
|
82
|
+
- Relevant tests, benchmark fixtures, profiler outputs, schemas, budgets, and configured command intents.
|
|
83
|
+
|
|
84
|
+
<!-- mustflow-section: preconditions -->
|
|
85
|
+
## Preconditions
|
|
86
|
+
|
|
87
|
+
- The task matches the Use When conditions and does not match the exclusions.
|
|
88
|
+
- Existing metric, benchmark, profiler, telemetry, redaction, and result-schema conventions have
|
|
89
|
+
been searched before introducing a new shape.
|
|
90
|
+
- Missing workload, snapshot, privacy, or comparison evidence can be reported without inventing it.
|
|
91
|
+
- Apply `security-privacy-review` when sensitive data or trust-boundary policy changes, and apply
|
|
92
|
+
`performance-budget-check` when the task also changes the optimized implementation or budget.
|
|
93
|
+
|
|
94
|
+
<!-- mustflow-section: allowed-edits -->
|
|
95
|
+
## Allowed Edits
|
|
96
|
+
|
|
97
|
+
- Add or tighten event definitions, metric names, units, lifecycle counters, histograms, context
|
|
98
|
+
propagation, snapshot logic, reset handling, benchmark schemas, comparison rules, budgets,
|
|
99
|
+
artifact sanitization, canary scans, and focused tests tied to the measurement contract.
|
|
100
|
+
- Replace ambiguous averages or ratios with source counters and mergeable distributions whose
|
|
101
|
+
denominator and weighting are explicit.
|
|
102
|
+
- Replace raw paths, remotes, URLs, arguments, environment values, and identifiers with bounded
|
|
103
|
+
logical names, route templates, classifications, or keyed pseudonyms where policy permits.
|
|
104
|
+
- Do not add a telemetry vendor, profiler service, load generator, background process, network call,
|
|
105
|
+
or raw command outside the configured command contract.
|
|
106
|
+
- Do not weaken correctness, privacy, or reproducibility merely to reduce instrumentation overhead.
|
|
107
|
+
|
|
108
|
+
<!-- mustflow-section: procedure -->
|
|
109
|
+
## Procedure
|
|
110
|
+
|
|
111
|
+
1. Define each measured event before naming a counter.
|
|
112
|
+
- Separate one logical command from attempts, accepted work, started work, terminal outcomes,
|
|
113
|
+
durable commits, deduplication, retries, hedges, drops, and rollbacks.
|
|
114
|
+
- Place increments at the transition they claim to count. Pool size, queue size, or submit calls
|
|
115
|
+
are not substitutes for started or committed work.
|
|
116
|
+
2. Define the unit and denominator.
|
|
117
|
+
- Keep request, lookup, key, item, batch, chunk, byte, and resource-time units separate.
|
|
118
|
+
- For cache evidence, distinguish request, key, and byte hit rates plus lookup outcome, load
|
|
119
|
+
outcome, coalesced wait, refresh, negative or stale hit, and served source where relevant.
|
|
120
|
+
- Aggregate source counts before deriving a ratio; do not average per-worker or per-instance ratios.
|
|
121
|
+
3. Review counter concurrency and snapshot semantics.
|
|
122
|
+
- An atomic increment prevents lost updates; it does not make several independently read totals
|
|
123
|
+
one consistent snapshot.
|
|
124
|
+
- If numerator, denominator, count, and duration must describe one observation window, use a
|
|
125
|
+
joint observation, mergeable histogram, epoch handoff, or explicit synchronization whose cost
|
|
126
|
+
and guarantee are documented.
|
|
127
|
+
- Check overflow, process restart, counter reset, scrape gaps, aggregation-window length, and
|
|
128
|
+
sawtooth batch completion before deriving rates.
|
|
129
|
+
4. Review timer ownership and clocks.
|
|
130
|
+
- Attach timing state to the operation or trace context, not an assumed worker thread.
|
|
131
|
+
- Use a monotonic clock for elapsed time within one clock domain. Do not subtract monotonic values
|
|
132
|
+
from different processes. Use event timestamps and trace context for distributed timelines and
|
|
133
|
+
state the clock-error boundary.
|
|
134
|
+
- Split wall, CPU, lock wait, I/O wait, queue wait, batch-fill wait, service, commit, ack, and
|
|
135
|
+
end-to-end time when those phases can drive different decisions.
|
|
136
|
+
5. Preserve parallel and unfinished work semantics.
|
|
137
|
+
- Distinguish elapsed time from cumulative worker time and exclusive time; parent and child timers
|
|
138
|
+
may intentionally overlap and must not be summed as one elapsed duration.
|
|
139
|
+
- Record terminal outcome and duration for failures, timeouts, and observed cancellations. Track
|
|
140
|
+
in-flight age, oldest queued age, and abandoned age so non-completing work is not deleted from
|
|
141
|
+
latency evidence.
|
|
142
|
+
- For offered-load tests, preserve scheduled arrival or another open-loop reference when a
|
|
143
|
+
closed-loop client would hide coordinated omission.
|
|
144
|
+
6. Bound instrumentation distortion.
|
|
145
|
+
- Check shared-counter contention, false sharing, allocation, label cardinality, clock-read cost,
|
|
146
|
+
event volume, profiler overhead, and sampling bias.
|
|
147
|
+
- Per-thread or striped accumulation trades short-window snapshot precision for lower contention;
|
|
148
|
+
document that trade instead of calling both properties exact.
|
|
149
|
+
- Measure disabled, minimally recorded, and fully recorded modes under the same workload when
|
|
150
|
+
instrumentation can change code layout, inlining, vectorization, allocation, lock hold time,
|
|
151
|
+
exporter backpressure, or tail latency. A no-op sink does not remove event construction cost.
|
|
152
|
+
- Apply sampling before expensive field construction where possible. Tail sampling can reduce
|
|
153
|
+
retained or exported data after recording; it does not refund span creation and attribute work.
|
|
154
|
+
- Observe exporter capacity, queue age or utilization, enqueue failure, and dropped signals. A
|
|
155
|
+
pipeline that drops more telemetry during slow periods can make the measured tail look better.
|
|
156
|
+
- Measure the empty timing or recording path to establish resolution and overhead. For work near
|
|
157
|
+
that floor, batch repeated operations and report the resulting precision limit.
|
|
158
|
+
7. Model batch, queue, and throughput stages.
|
|
159
|
+
- Record batch, chunk, item, input-byte, and output-byte counts plus batch-size distribution.
|
|
160
|
+
- Separate offered, admitted, started, computed, committed, rejected, expired, dropped, duplicate,
|
|
161
|
+
retried, discarded, and rolled-back work. Report useful throughput and attempted throughput.
|
|
162
|
+
- Split batch-fill wait, admission wait, queue wait, time to first result, processing span, commit,
|
|
163
|
+
acknowledgement, and end-to-end latency. Keep item-weighted and batch-weighted distributions distinct.
|
|
164
|
+
- Condition latency on bounded batch-size or cost classes and inspect stragglers, shard skew,
|
|
165
|
+
head-of-line blocking, busy worker time, CPU time, and active concurrency.
|
|
166
|
+
8. Treat cancellation as a lifecycle and a resource ledger.
|
|
167
|
+
- Separate requested, accepted, observed by worker, side effects stopped, and terminal cancelled.
|
|
168
|
+
- Measure reaction time, drain time, work completed before observation, work attempted after
|
|
169
|
+
observation, post-cancel CPU or worker time, cleanup, rollback, orphaned side effects, restart
|
|
170
|
+
rework, and backlog recovery when applicable.
|
|
171
|
+
- A cancellation API returning success does not prove execution or side effects stopped.
|
|
172
|
+
9. Make benchmark evidence comparable.
|
|
173
|
+
- Use a versioned result schema containing scenario and environment identity, commit or build
|
|
174
|
+
identity, raw samples, units, warmup, repetitions, input size, concurrency, cache state, and
|
|
175
|
+
measurement-tool version.
|
|
176
|
+
- Compare base and candidate under the same controlled environment, preferably interleaved on
|
|
177
|
+
the same machine. Gate on a predeclared practical effect threshold and uncertainty rule, not
|
|
178
|
+
one noisy average or a favorable rerun.
|
|
179
|
+
- Combine relative and absolute budgets and cover representative size, concurrency, cache, and
|
|
180
|
+
scaling scenarios. Keep bounded retry policy; never rerun until a desired result appears.
|
|
181
|
+
- Use a fast representative pull-request subset and broader scheduled or merge-queue evidence
|
|
182
|
+
when cost requires tiers. Profile or bisect after a regression is confirmed, not as a substitute
|
|
183
|
+
for a reproducible comparator.
|
|
184
|
+
10. Validate hardware-counter and cache claims.
|
|
185
|
+
- Disambiguate CPU IPC, meaning retired instructions per CPU cycle, from inter-process
|
|
186
|
+
communication. Spell out the term when both concepts appear in the same scope.
|
|
187
|
+
- Normalize instructions, cycles, misses, and transferred bytes by the same attempted or
|
|
188
|
+
successfully completed logical operation used by the outcome model. Preserve both denominators
|
|
189
|
+
when failures differ between candidates.
|
|
190
|
+
- Treat hit rate as explanatory evidence, not the final optimization result. Review references
|
|
191
|
+
per operation, misses per operation, misses per instruction, cycles per operation, latency,
|
|
192
|
+
throughput, errors, and tail latency together.
|
|
193
|
+
- Confirm each performance-monitoring event's meaning for the actual CPU. Generic cache events,
|
|
194
|
+
speculative accesses, prefetches, and cache levels are not portable semantic contracts.
|
|
195
|
+
- Check whether ratio inputs ran simultaneously. If limited hardware counters were multiplexed,
|
|
196
|
+
preserve running percentages and group dependent events or reject ratios whose overlap is too
|
|
197
|
+
weak for the workload phase length.
|
|
198
|
+
- Keep different hybrid core types separate. Control CPU affinity and memory or NUMA placement
|
|
199
|
+
for the comparison, then repeat under representative scheduler interference.
|
|
200
|
+
- Sweep working sets across relevant cache boundaries and concurrency across one to saturation.
|
|
201
|
+
Compare cold, warmup, steady-state, single-thread, contended, and near-saturation scenarios
|
|
202
|
+
separately. Inspect memory-bound classification, miss latency or source, cache-line ownership,
|
|
203
|
+
and false sharing before attributing an improvement to cache behavior.
|
|
204
|
+
- Do not infer cause from CPU IPC alone. A branch, vectorization, compiler, overlap, or algorithm
|
|
205
|
+
change can alter it; require end-result improvement plus a consistent causal evidence chain.
|
|
206
|
+
11. Preserve communication outcome and conservation semantics.
|
|
207
|
+
- Keep a logical operation distinct from transport attempts, child work, retries, hedges, and
|
|
208
|
+
units within a partial result. Report logical success, attempt success, attempt amplification,
|
|
209
|
+
full or partial operation outcome, and unit outcome with explicit denominators.
|
|
210
|
+
- Make terminal outcomes mutually exclusive and finalize one logical operation once. Timeout,
|
|
211
|
+
cancellation, transport failure, application failure, rejection, process loss, partial success,
|
|
212
|
+
and full success must not double-decrement in-flight work or double-record duration.
|
|
213
|
+
- Do not divide starts and finishes from the same wall-time window as if they were one cohort.
|
|
214
|
+
For closed reports, group by start cohort through terminal or deadline. For live views, show
|
|
215
|
+
terminal ratios beside in-flight count, oldest age, and the started-versus-finished gap.
|
|
216
|
+
- Separate client outcome, server execution outcome, and delivery outcome. A caller deadline can
|
|
217
|
+
coexist with a later durable server commit; expose late completion and post-cancel work rather
|
|
218
|
+
than overwriting one fact with another.
|
|
219
|
+
- Record all terminal outcomes in one bounded-label duration family, then view outcome-specific
|
|
220
|
+
distributions. Treat cancelled observations as cancellation timing or censored completion
|
|
221
|
+
evidence, not successful completion latency.
|
|
222
|
+
- Define conservation checks such as admitted equals terminal plus in-flight, and requested units
|
|
223
|
+
equal terminal unit outcomes plus remaining units within the stated snapshot tolerance. Use a
|
|
224
|
+
monotonic terminal transition and idempotent unit identity to detect missing or duplicate events.
|
|
225
|
+
12. Decompose cross-process and user-visible latency.
|
|
226
|
+
- Build one trace-scoped phase sequence from actual input occurrence through frontend queueing,
|
|
227
|
+
preparation, encoding, bridge ingress, decode, executor queue, active execution and waits,
|
|
228
|
+
response encoding and handoff, native receipt, event-loop continuation, framework commit, and
|
|
229
|
+
presentation when those boundaries are observable.
|
|
230
|
+
- Mark every timestamp with its clock domain. Do not directly subtract browser, process, or host
|
|
231
|
+
monotonic clocks. Use bounded ping-pong offset and drift estimation or retain per-domain spans
|
|
232
|
+
with an explicit uncertainty interval.
|
|
233
|
+
- Distinguish async object or future creation, spawn, first poll, active poll time, wait time, and
|
|
234
|
+
completion. Do not hold thread-affine span state across suspension points.
|
|
235
|
+
- Use empty or no-op round trips plus payload-size sweeps to separate bridge fixed cost from
|
|
236
|
+
serialization, copying, and queue noise. Do not halve round-trip time and call it one-way delay
|
|
237
|
+
when the two directions are asymmetric.
|
|
238
|
+
- Treat handler entry as post-routing or post-decode unless an earlier ingress boundary is
|
|
239
|
+
actually instrumented. Likewise, a promise continuation is not native receipt and a state
|
|
240
|
+
assignment or animation-frame callback is not proof of pixels presented.
|
|
241
|
+
- Keep an inseparable interval composite instead of inventing internal timestamps. For each trace,
|
|
242
|
+
compare end-to-end latency with the union of non-overlapping critical-path phases and residual;
|
|
243
|
+
frequent negative or large residuals indicate clock, overlap, or missing-boundary errors.
|
|
244
|
+
- Calculate end-to-end percentiles from complete per-trace paths. Never add layer p99 values,
|
|
245
|
+
because each layer's slowest sample can belong to a different operation.
|
|
246
|
+
13. Protect performance telemetry and artifacts.
|
|
247
|
+
- Normalize paths before classification and replace them with logical roots; partial substring
|
|
248
|
+
masking is not a path policy. Separate repository identity from remote URL.
|
|
249
|
+
- Parse URLs structurally. Remove user info and fragments, strip or allowlist query values, and
|
|
250
|
+
prefer route templates or endpoint classes over full URLs.
|
|
251
|
+
- Do not dump argument vectors, environments, configs, headers, baggage, or trace state. Emit a
|
|
252
|
+
versioned allowlisted schema and redact at the source plus collector boundary where one exists.
|
|
253
|
+
- Treat raw CPU, heap, allocation, JFR, pprof, trace, benchmark, and compressed artifacts as
|
|
254
|
+
sensitive. Scan final binaries and recursively inspect supported archives and profile formats
|
|
255
|
+
for canary secrets, source paths, remotes, URLs, and credentials before distribution.
|
|
256
|
+
- Use keyed pseudonyms rather than raw hashes for low-entropy sensitive identifiers when stable
|
|
257
|
+
correlation is permitted, and rotate or scope keys according to policy.
|
|
258
|
+
14. Connect evidence to the decision.
|
|
259
|
+
- State which source counters and distributions produce every ratio, percentile, budget, or alert.
|
|
260
|
+
- Classify the conclusion as configured-test evidence, controlled benchmark evidence, profiler
|
|
261
|
+
evidence, telemetry evidence, static review, manual-only, missing, or not applicable.
|
|
262
|
+
- Reject a gate or claim when its semantics, comparator, privacy boundary, or reproducibility is
|
|
263
|
+
materially unknown.
|
|
264
|
+
|
|
265
|
+
<!-- mustflow-section: postconditions -->
|
|
266
|
+
## Postconditions
|
|
267
|
+
|
|
268
|
+
- Measured events, lifecycle stages, units, denominators, clocks, snapshot guarantees, reset behavior,
|
|
269
|
+
workload conditions, comparison rules, and privacy boundaries are explicit or reported missing.
|
|
270
|
+
- Retry, dedupe, hedge, batch, queue, cache, cancellation, unfinished-work, and parallel-work semantics
|
|
271
|
+
are not collapsed into misleading totals when they affect the decision.
|
|
272
|
+
- Hardware-counter ratios have defined events, compatible clock and scheduling windows, normalized
|
|
273
|
+
operation denominators, and sufficient simultaneous-running evidence, or are rejected.
|
|
274
|
+
- Communication outcomes obey a stated terminal and unit conservation model, and cross-process
|
|
275
|
+
latency phases preserve clock-domain uncertainty and critical-path semantics.
|
|
276
|
+
- Performance claims and gates are backed by evidence whose scope is no broader than the actual
|
|
277
|
+
scenario, environment, samples, and verification performed.
|
|
278
|
+
|
|
279
|
+
<!-- mustflow-section: verification -->
|
|
280
|
+
## Verification
|
|
281
|
+
|
|
282
|
+
Use configured oneshot command intents when available:
|
|
283
|
+
|
|
284
|
+
- `changes_status`
|
|
285
|
+
- `changes_diff_summary`
|
|
286
|
+
- `build`
|
|
287
|
+
- `test_related`
|
|
288
|
+
- `test`
|
|
289
|
+
- `docs_validate_fast`
|
|
290
|
+
- `test_release`
|
|
291
|
+
- `mustflow_check`
|
|
292
|
+
|
|
293
|
+
Prefer focused metric-schema, concurrency, reset, histogram, redaction, artifact-scan, benchmark-parser,
|
|
294
|
+
and regression-gate tests. Treat live production telemetry, dedicated benchmark hardware, and external
|
|
295
|
+
profilers as manual-only unless a configured intent explicitly owns them.
|
|
296
|
+
|
|
297
|
+
<!-- mustflow-section: failure-handling -->
|
|
298
|
+
## Failure Handling
|
|
299
|
+
|
|
300
|
+
- If event meaning or denominator is ambiguous, preserve the raw source counts and stop the derived
|
|
301
|
+
ratio or gate until the contract is named.
|
|
302
|
+
- If a low-contention accumulator cannot provide the required snapshot guarantee, either weaken the
|
|
303
|
+
claim explicitly or choose a bounded synchronization or epoch design and measure its overhead.
|
|
304
|
+
- If base and candidate conditions differ materially, report two observations instead of a regression.
|
|
305
|
+
- If an artifact cannot be inspected or redacted safely, keep it undistributed and report the missing
|
|
306
|
+
verification rather than claiming it is sanitized.
|
|
307
|
+
- If instrumentation changes the hot path materially, reduce or relocate it with a documented loss of
|
|
308
|
+
precision; do not silently keep a distorted benchmark.
|
|
309
|
+
|
|
310
|
+
<!-- mustflow-section: output-format -->
|
|
311
|
+
## Output Format
|
|
312
|
+
|
|
313
|
+
- Performance measurement boundary reviewed
|
|
314
|
+
- Event, lifecycle, unit, denominator, clock, snapshot, reset, and instrumentation-overhead findings
|
|
315
|
+
- Batch, queue, cache, cancellation, unfinished-work, and parallel-work findings
|
|
316
|
+
- CPU counter, cache hierarchy, PMU scheduling, affinity, NUMA, working-set, and saturation findings
|
|
317
|
+
- Communication outcome, cohort, partial-success, finalize-once, conservation, and late-completion findings
|
|
318
|
+
- Cross-process clock alignment, phase closure, critical-path, residual, and presentation findings
|
|
319
|
+
- Benchmark schema, comparator, scenario, budget, statistical rule, profiling, and bisect findings
|
|
320
|
+
- Telemetry and artifact privacy findings
|
|
321
|
+
- Fixes made or recommended
|
|
322
|
+
- Evidence level and command intents run
|
|
323
|
+
- Skipped verification and reasons
|
|
324
|
+
- Remaining performance-measurement integrity risk
|
|
@@ -942,6 +942,12 @@ route_type = "adjunct"
|
|
|
942
942
|
priority = 70
|
|
943
943
|
applies_to_reasons = ["performance_change", "code_change", "data_change", "ui_change", "behavior_change"]
|
|
944
944
|
|
|
945
|
+
[routes."performance-measurement-integrity-review"]
|
|
946
|
+
category = "general_code"
|
|
947
|
+
route_type = "adjunct"
|
|
948
|
+
priority = 79
|
|
949
|
+
applies_to_reasons = ["unknown_change", "code_change", "behavior_change", "test_change", "performance_change", "security_change", "privacy_change", "data_change", "docs_change", "package_metadata_change", "release_risk"]
|
|
950
|
+
|
|
945
951
|
[routes."vertical-slice-tdd"]
|
|
946
952
|
category = "tests"
|
|
947
953
|
route_type = "primary"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
mustflow_doc: skill.state-machine-pattern
|
|
3
3
|
locale: en
|
|
4
4
|
canonical: true
|
|
5
|
-
revision:
|
|
5
|
+
revision: 5
|
|
6
6
|
lifecycle: mustflow-owned
|
|
7
7
|
authority: procedure
|
|
8
8
|
name: state-machine-pattern
|
|
@@ -66,6 +66,7 @@ Two states can still require this skill when the lifecycle is meaningful, such a
|
|
|
66
66
|
## Required Inputs
|
|
67
67
|
|
|
68
68
|
- The entity and state field under change.
|
|
69
|
+
- The intended initial state, the user-visible entry state, and the first event or command that should leave it.
|
|
69
70
|
- Complete state list and which states are terminal.
|
|
70
71
|
- Complete event list and the facts each event carries.
|
|
71
72
|
- Current places that change state, validate actions, check state, or render available actions.
|
|
@@ -118,6 +119,8 @@ Two states can still require this skill when the lifecycle is meaningful, such a
|
|
|
118
119
|
5. Write the transition table first.
|
|
119
120
|
- Include every source state, allowed event, guard name, target state, and effect description.
|
|
120
121
|
- Include terminal states explicitly with no outgoing transitions when they are truly terminal.
|
|
122
|
+
- Declare the initial state explicitly and verify it matches the real entry experience. Do not initialize directly into an active state such as `PLAYING`, `RUNNING`, or `PROCESSING` when the user must first see a menu, confirmation, setup, or start action.
|
|
123
|
+
- Model the first user or system action as a real transition. Test that the expected entry action leaves the initial state and that missing runtime prerequisites produce a visible failure or unavailable action instead of a silent no-op.
|
|
121
124
|
- Do not hide transition rules inside handler branches, repository filters, database queries, adapter code, or UI code.
|
|
122
125
|
- Do not let direct `deleted_at` assignment bypass allowed archive, soft-delete, restore, purge, anonymize, or redirect transitions when deletion is a meaningful lifecycle.
|
|
123
126
|
6. Keep guards pure.
|
|
@@ -167,6 +170,7 @@ Two states can still require this skill when the lifecycle is meaningful, such a
|
|
|
167
170
|
- For important domains, document state list, event list, transition table, terminal states, guards, effects, concurrency method, duplicate-event handling, and any cross-machine invariants.
|
|
168
171
|
- Diagrams are secondary. The code transition table is the source of truth.
|
|
169
172
|
17. Test from the transition table.
|
|
173
|
+
- Test the declared initial state and the first permitted transition before testing later lifecycle branches.
|
|
170
174
|
- Test every valid transition.
|
|
171
175
|
- Test representative invalid transitions, especially terminal states and dangerous skipped states.
|
|
172
176
|
- Test guard success and guard failure separately.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
mustflow_doc: skill.svelte-code-change
|
|
3
3
|
locale: en
|
|
4
4
|
canonical: true
|
|
5
|
-
revision:
|
|
5
|
+
revision: 5
|
|
6
6
|
lifecycle: mustflow-owned
|
|
7
7
|
authority: procedure
|
|
8
8
|
name: svelte-code-change
|
|
@@ -98,6 +98,10 @@ Preserve Svelte component reactivity, SvelteKit SSR/server/client execution mode
|
|
|
98
98
|
20. Keep `$effect` dependencies narrow and synchronous. Read dependencies before `await`, `setTimeout`, or callbacks; use `untrack` for incidental logging, snapshots, or non-dependency reads.
|
|
99
99
|
21. Return cleanup from effects that create subscriptions, intervals, observers, sockets, editors, charts, canvas loops, or external library instances.
|
|
100
100
|
22. Treat props as parent-owned. Use callback props for changes and `$bindable` only for narrow form-control-like two-way APIs. Preserve wrapper binding chains or convert them to explicit callbacks.
|
|
101
|
+
- In Svelte 5 runes mode, do not expose local `$state` through an `export { local as prop }` alias and expect a parent `bind:` directive to update. Declare a bindable prop through `$props()` and `$bindable()` when two-way binding is the intended public contract.
|
|
102
|
+
- Do not remove a child component merely to hide a broken DOM-reference handoff. Prefer keeping canvas, editor, chart, media, or other imperative resource creation and cleanup in the component that owns the DOM node. When a parent must coordinate initialization, expose an explicit ready callback carrying the node or initialized handle after the child has mounted.
|
|
103
|
+
- Treat `bind:this` values as unavailable before mount and possibly unavailable again after conditional unmount. Do not assume a parent `onMount` runs after a child-provided reference has propagated through an invalid or indirect binding chain.
|
|
104
|
+
- Do not silently return from required imperative initialization when the DOM node is unexpectedly absent. Distinguish an expected conditional absence from a broken ownership or binding contract, expose the failure during development, and provide a bounded reinitialization path when the node can appear later.
|
|
101
105
|
23. In Svelte 5, treat DOM event handlers as props. When spreading rest props through wrappers, intentionally compose external handlers with internal policy instead of relying on spread order.
|
|
102
106
|
24. Treat snippets as typed render callbacks. Require optional snippet guards, pass row or slot-like data as parameters, and avoid hidden parent-state capture in reusable library components.
|
|
103
107
|
25. In the official-source snapshot checked on 2026-07-11, SvelteKit remote functions were
|
|
@@ -141,6 +145,7 @@ Preserve Svelte component reactivity, SvelteKit SSR/server/client execution mode
|
|
|
141
145
|
- Use `$state.snapshot` before sending proxy state to serializers, workers, chart libraries, equality tools, or external APIs that should see plain data.
|
|
142
146
|
- Use `$derived` for calculations from props, route data, page state, URL state, or local state.
|
|
143
147
|
- Use `$effect` only for browser-side effects, subscriptions, DOM, canvas, analytics, timers, third-party browser libraries, and cleanup.
|
|
148
|
+
- Keep imperative DOM resources in the component that owns the bound node when practical. If ownership must cross a component boundary, use an explicit `$bindable` prop or ready callback and test the handoff instead of exporting local rune state by alias.
|
|
144
149
|
- Use stores for external streams or manual subscribe/unsubscribe interop, not ordinary component state.
|
|
145
150
|
- Use context for parent-owned values shared down the component tree, especially request-scoped layout data.
|
|
146
151
|
- Do not reassign reactive context objects after placing them in context; update their properties or pass getter functions when needed.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
id = "default"
|
|
2
2
|
name = "default"
|
|
3
|
-
version = "2.115.
|
|
3
|
+
version = "2.115.13"
|
|
4
4
|
description = "Minimal workflow for LLM agents to read, edit, and verify their work in a repository."
|
|
5
5
|
common_root = "common"
|
|
6
6
|
locales_root = "locales"
|
|
@@ -195,6 +195,7 @@ creates = [
|
|
|
195
195
|
".mustflow/skills/multi-agent-work-coordination/SKILL.md",
|
|
196
196
|
".mustflow/skills/null-object-pattern/SKILL.md",
|
|
197
197
|
".mustflow/skills/performance-budget-check/SKILL.md",
|
|
198
|
+
".mustflow/skills/performance-measurement-integrity-review/SKILL.md",
|
|
198
199
|
".mustflow/skills/pattern-scout/SKILL.md",
|
|
199
200
|
".mustflow/skills/process-execution-safety/SKILL.md",
|
|
200
201
|
".mustflow/skills/public-json-contract-change/SKILL.md",
|
|
@@ -319,6 +320,7 @@ minimal = [
|
|
|
319
320
|
"failure-integrity-review",
|
|
320
321
|
"backend-log-evidence-review",
|
|
321
322
|
"observability-debuggability-review",
|
|
323
|
+
"performance-measurement-integrity-review",
|
|
322
324
|
"incident-triage-review",
|
|
323
325
|
"deployment-rollout-safety-review",
|
|
324
326
|
"cloud-cost-guardrail-review",
|
|
@@ -495,6 +497,7 @@ patterns = [
|
|
|
495
497
|
"failure-integrity-review",
|
|
496
498
|
"backend-log-evidence-review",
|
|
497
499
|
"observability-debuggability-review",
|
|
500
|
+
"performance-measurement-integrity-review",
|
|
498
501
|
"incident-triage-review",
|
|
499
502
|
"deployment-rollout-safety-review",
|
|
500
503
|
"cloud-cost-guardrail-review",
|
|
@@ -682,6 +685,7 @@ oss = [
|
|
|
682
685
|
"failure-integrity-review",
|
|
683
686
|
"backend-log-evidence-review",
|
|
684
687
|
"observability-debuggability-review",
|
|
688
|
+
"performance-measurement-integrity-review",
|
|
685
689
|
"incident-triage-review",
|
|
686
690
|
"deployment-rollout-safety-review",
|
|
687
691
|
"cloud-cost-guardrail-review",
|
|
@@ -888,6 +892,7 @@ team = [
|
|
|
888
892
|
"failure-integrity-review",
|
|
889
893
|
"backend-log-evidence-review",
|
|
890
894
|
"observability-debuggability-review",
|
|
895
|
+
"performance-measurement-integrity-review",
|
|
891
896
|
"incident-triage-review",
|
|
892
897
|
"deployment-rollout-safety-review",
|
|
893
898
|
"cloud-cost-guardrail-review",
|
|
@@ -1078,6 +1083,7 @@ product = [
|
|
|
1078
1083
|
"failure-integrity-review",
|
|
1079
1084
|
"backend-log-evidence-review",
|
|
1080
1085
|
"observability-debuggability-review",
|
|
1086
|
+
"performance-measurement-integrity-review",
|
|
1081
1087
|
"incident-triage-review",
|
|
1082
1088
|
"deployment-rollout-safety-review",
|
|
1083
1089
|
"cloud-cost-guardrail-review",
|
|
@@ -1274,6 +1280,7 @@ library = [
|
|
|
1274
1280
|
"failure-integrity-review",
|
|
1275
1281
|
"backend-log-evidence-review",
|
|
1276
1282
|
"observability-debuggability-review",
|
|
1283
|
+
"performance-measurement-integrity-review",
|
|
1277
1284
|
"incident-triage-review",
|
|
1278
1285
|
"deployment-rollout-safety-review",
|
|
1279
1286
|
"cloud-cost-guardrail-review",
|