This proposal introduces runtime-style area-* labels in dotnet/machinelearning, aligns shared label names, and removes duplicate or ambiguous labels.
Following feedback, this version starts with broad areas. The previous version proposed 38 labels, including subdivisions of Core, DataFrame, Vision, AutoML, and Infrastructure. This version proposes 19 top-level areas. Subareas can be added later if they have separate owners or support a recurring query that cannot be served by other labels.
It does not copy runtime's full label set. Most runtime labels are specific to CLR, JIT, servicing, operating systems, or architectures.
Current state
Snapshot from 4 September 2026:
| Measure |
ML.NET |
Runtime |
| Total labels |
70 |
316 |
area-* labels |
1 |
146 |
area-Infrastructure has already been created and is applied to five open issues.
Runtime's issue guide recommends one area label per issue, and its pull-request guide describes assigning a single area to each pull request.
This is a strong default, not an absolute rule. A live check on 2 September 2026 found multiple areas on 4 of 565 open runtime issues and 3 of 1,000 sampled open pull requests.
For ML.NET, an item should normally have one primary area. Add another area when ownership is genuinely shared, not merely because several technologies are mentioned.
The supplied ml_net-area_labels.md currently contains 1,011 issue assignments. The repository currently has 808 open issues:
- 796 open issues occur in the file.
- 215 issues in the file have since closed.
- 12 newer open issues are absent.
The mapping needs refreshing before it is applied.
Proposed area labels
| Area label |
Scope |
area-Core |
MLContext, public API, prediction, evaluation, data loading, model persistence, IDataView, schema, and other core platform work |
area-Native |
CpuMath SIMD, MKL, oneDAL, SymSGD, native libraries, and hardware or RID plumbing |
area-MAML |
Legacy MAML CLI, entry-point graph, sweeper, and result processor |
area-DataFrame |
Microsoft.Data.Analysis, including columns, operations, and input/output |
area-Transforms |
Normalisation, categorical and text featurisation, LDA, embeddings, mappings, and feature selection |
area-Trainers |
Standard linear and GLM trainers, KMeans, PCA, Naive Bayes, OVA, and ensemble meta-trainers |
area-Trees |
FastTree, FastForest, GAM, LightGBM, and their native engine |
area-Recommender |
Matrix factorisation, field-aware factorisation machines, and libmf |
area-TimeSeries |
SSA forecasting, spike and change-point detection, SR-CNN, and time-series anomaly detection |
area-Vision |
Image loading and transforms, image classification, and object detection |
area-TensorFlow |
TensorFlow scoring, retraining, Keras, SavedModel, and TensorFlow interoperation |
area-ONNX |
OnnxTransformer scoring and ML.NET-to-ONNX export |
area-Tokenizers |
BPE, WordPiece, SentencePiece, Tiktoken, and tokenizer data packages |
area-GenAI |
Causal language-model pipeline and LLaMA, Phi, and Mistral support |
area-TorchSharp |
TorchSharp-based NLP and deep-learning components |
area-AutoML |
AutoML experiments, search and tuning, Model Builder, mlnet CLI, and code generation |
area-Integration |
ASP.NET Core dependency injection, PredictionEnginePool, and Microsoft.Extensions.ML |
area-Infrastructure |
Build, CI, Helix, packaging, dependencies, shared test infrastructure, and benchmark infrastructure |
area-Meta |
Roadmap, repository direction, governance, issue management, and other repository-wide work |
Each area should have maintainers who recognise it as theirs. Otherwise it is only a category, not a routing label.
Treatment of the detailed taxonomy
The finer groups in ml_net-area_labels.md remain useful for understanding the backlog, but are not proposed as GitHub labels initially.
| Detailed group |
Initial GitHub label |
area-core-* |
area-Core |
area-dataframe-* |
area-DataFrame |
area-vision-image |
area-Vision |
area-vision-classification |
area-Vision |
area-vision-objectdetection |
area-Vision |
area-vision-tensorflow |
area-TensorFlow |
area-automl-* |
area-AutoML |
area-infra-* |
area-Infrastructure |
area-docs |
The affected component area, or area-Meta for repository-wide material, together with documentation |
This avoids creating labels for distinctions such as Infrastructure Build, CI, Testing, and Performance when they currently have no separate ownership. Those distinctions can still be expressed through issue-type or qualifier labels.
Existing labels that can be renamed
| Existing label |
New label |
Note |
** NO MERGE ** |
NO-MERGE |
Runtime name |
API breaking change |
breaking-change |
Runtime name |
P0 |
Priority:0 |
Runtime name |
P1 |
Priority:1 |
Runtime name |
P2 |
Priority:2 |
Runtime name |
P3 |
Priority:3 |
Runtime name |
perf |
tenet-performance |
Performance is a qualifier, not ownership |
AutoML.NET |
area-AutoML |
Covers all proposed AutoML subdivisions |
Microsoft.Data.Analysis |
area-DataFrame |
Covers all proposed DataFrame subdivisions |
ModelBuilder |
area-AutoML |
Model Builder remains searchable by text and project |
PredictionEngine |
area-Core |
Prediction is no longer a separate area |
TensorFlow |
area-TensorFlow |
Direct component match |
Time Series |
area-TimeSeries |
Direct component match |
Tokenizers |
area-Tokenizers |
Direct component match |
TorchSharp |
area-TorchSharp |
Direct component match |
onnx can become area-ONNX after moving #7383 to area-Tokenizers.
Existing labels that should be merged
| Existing labels |
Keep |
Awaiting User Input, need info |
needs-author-action |
up-for-grabs |
help wanted |
anomaly, Time Series |
area-TimeSeries |
Existing labels that need individual reclassification
These labels span several areas or describe a scenario rather than an owner.
| Existing label |
Treatment |
API |
Assign the component area and move API proposals to the appropriate api-* state |
Build |
Move infrastructure issues to area-Infrastructure; #5569 belongs to area-AutoML |
Deep Learning |
Split among TorchSharp, ONNX, Tokenizers, Vision, TensorFlow, GenAI, and AutoML |
image |
Split among Vision, TensorFlow, and AutoML |
loadsave |
Split among Core, DataFrame, and AutoML |
command-line |
Split between MAML and AutoML |
test |
Assign the component area and use a specific test issue type where useful |
lightgbm |
Usually Trees, but current outliers need review |
NLP |
Split among Transforms, TorchSharp, Tokenizers, ONNX, and AutoML |
Hardware Support |
Assign the component area and keep a platform qualifier if useful |
Dynamic |
Move current issues to Core |
Evaluation |
Move current issues to Core |
Explainability |
Split between Core and the relevant trainer area |
oneDAL |
Move current issues to Native |
Spark |
Assign the underlying component; keep a separate area only if Spark has an active owner |
UWP |
Assign the underlying component and keep a platform qualifier only if UWP remains supported |
classification |
Split among Trainers, AutoML, TorchSharp, and Vision |
clustering |
Move current issues to Trainers |
ranking |
Move current issues to Trees unless another owner is more appropriate |
regression |
Assign the relevant trainer or Vision area |
Task labels such as task-classification or task-ranking can be added later if maintainers actually use that view of the backlog.
ML.NET-specific labels to keep
| Label |
Use |
F# |
F# language interoperation |
usability |
User-experience and discoverability work, if maintainers still query it |
repo-health |
Identifies the dashboard issue used by repository-health workflows |
Labels to retire or remove
| Label |
Treatment |
Azure AutoML |
Retire; it has no open issues and one closed issue |
code-sanitation |
Replace with enhancement |
nit |
Use good first issue where appropriate |
wontfix |
Use GitHub's not planned close reason |
A rename preserves historical associations. For labels that cannot be renamed directly, remove them only after their open issues have been reclassified.
Shared labels to keep
| Label |
Use or change |
agentic-workflows |
Agentic Workflow changes |
api-approved |
Approved API proposal |
api-needs-work |
API proposal requiring revision |
api-ready-for-review |
API proposal ready for review |
blocking |
Work that blocks something important |
blocking-clean-ci |
CI-blocking failure |
bug |
Product defect |
community-contribution |
Pull request submitted by a community member |
documentation |
Documentation-only bug or improvement |
enhancement |
Product improvement that does not add public API |
Epic |
Groups related work |
good first issue |
Small, well-scoped first contribution |
help wanted |
Actionable work open to external contributors |
in-pr |
An active pull request is expected to close the issue |
Known Build Error |
Known CI or Helix failure |
needs-author-action |
More information or action is required from the author |
needs-further-triage |
Maintainers need to make a deeper decision |
no-recent-activity |
Stale-item automation marker |
question |
Usage or product question; replace the current Further information is requested description |
reduce-unsafe |
Work reducing unsafe code |
Security |
Security-sensitive issue |
untriaged |
Not yet triaged by maintainers |
Where names are shared with runtime, descriptions and colours can be aligned unless ML.NET has a reason to differ.
Labels worth adding now
| Label |
Use |
needs-area-label |
No area could be assigned confidently |
api-suggestion |
Early public API idea or discussion |
feature-request |
New product capability before a specific API proposal exists |
blocked |
Work cannot proceed because it depends on something else |
test-bug |
Defect in test code |
test-enhancement |
Improvement to test code or coverage |
Other runtime labels, including cost, tenet, platform, servicing, and tracking labels, should be added only when ML.NET has a concrete use for them.
Repository references that need updating
| File |
Current references |
.github/workflows/issue-triage.agent.md |
perf, test, Build, need info; areas are mentioned only in comments |
.github/workflows/issue-triage.agent.lock.yml |
Generated allow-list containing the old names |
.github/workflows/repo-health-check.md |
P0 through P3, Awaiting User Input, and a statement that the repository has no area labels |
.github/workflows/repo-health-check.lock.yml |
Generated references to the old names |
.github/health-baseline.md |
Old priority names |
If automated area labelling is wanted, runtime uses dotnet/issue-labeler with LABEL_PREFIX: "area-" and DEFAULT_LABEL: "needs-area-label". It should be trained only after the new area assignments are clean.
This proposal introduces runtime-style
area-*labels indotnet/machinelearning, aligns shared label names, and removes duplicate or ambiguous labels.Following feedback, this version starts with broad areas. The previous version proposed 38 labels, including subdivisions of Core, DataFrame, Vision, AutoML, and Infrastructure. This version proposes 19 top-level areas. Subareas can be added later if they have separate owners or support a recurring query that cannot be served by other labels.
It does not copy runtime's full label set. Most runtime labels are specific to CLR, JIT, servicing, operating systems, or architectures.
Current state
Snapshot from 4 September 2026:
area-*labelsarea-Infrastructurehas already been created and is applied to five open issues.Runtime's issue guide recommends one area label per issue, and its pull-request guide describes assigning a single area to each pull request.
This is a strong default, not an absolute rule. A live check on 2 September 2026 found multiple areas on 4 of 565 open runtime issues and 3 of 1,000 sampled open pull requests.
For ML.NET, an item should normally have one primary area. Add another area when ownership is genuinely shared, not merely because several technologies are mentioned.
The supplied
ml_net-area_labels.mdcurrently contains 1,011 issue assignments. The repository currently has 808 open issues:The mapping needs refreshing before it is applied.
Proposed area labels
area-Corearea-Nativearea-MAMLarea-DataFramearea-Transformsarea-Trainersarea-Treesarea-Recommenderarea-TimeSeriesarea-Visionarea-TensorFlowarea-ONNXarea-Tokenizersarea-GenAIarea-TorchSharparea-AutoMLmlnetCLI, and code generationarea-Integrationarea-Infrastructurearea-MetaEach area should have maintainers who recognise it as theirs. Otherwise it is only a category, not a routing label.
Treatment of the detailed taxonomy
The finer groups in
ml_net-area_labels.mdremain useful for understanding the backlog, but are not proposed as GitHub labels initially.area-core-*area-Corearea-dataframe-*area-DataFramearea-vision-imagearea-Visionarea-vision-classificationarea-Visionarea-vision-objectdetectionarea-Visionarea-vision-tensorflowarea-TensorFlowarea-automl-*area-AutoMLarea-infra-*area-Infrastructurearea-docsarea-Metafor repository-wide material, together withdocumentationThis avoids creating labels for distinctions such as Infrastructure Build, CI, Testing, and Performance when they currently have no separate ownership. Those distinctions can still be expressed through issue-type or qualifier labels.
Existing labels that can be renamed
** NO MERGE **NO-MERGEAPI breaking changebreaking-changeP0Priority:0P1Priority:1P2Priority:2P3Priority:3perftenet-performanceAutoML.NETarea-AutoMLMicrosoft.Data.Analysisarea-DataFrameModelBuilderarea-AutoMLPredictionEnginearea-CoreTensorFlowarea-TensorFlowTime Seriesarea-TimeSeriesTokenizersarea-TokenizersTorchSharparea-TorchSharponnxcan becomearea-ONNXafter moving #7383 toarea-Tokenizers.Existing labels that should be merged
Awaiting User Input,need infoneeds-author-actionup-for-grabshelp wantedanomaly,Time Seriesarea-TimeSeriesExisting labels that need individual reclassification
These labels span several areas or describe a scenario rather than an owner.
APIapi-*stateBuildarea-Infrastructure; #5569 belongs toarea-AutoMLDeep Learningimageloadsavecommand-linetestlightgbmNLPHardware SupportDynamicEvaluationExplainabilityoneDALSparkUWPclassificationclusteringrankingregressionTask labels such as
task-classificationortask-rankingcan be added later if maintainers actually use that view of the backlog.ML.NET-specific labels to keep
F#usabilityrepo-healthLabels to retire or remove
Azure AutoMLcode-sanitationenhancementnitgood first issuewhere appropriatewontfixnot plannedclose reasonA rename preserves historical associations. For labels that cannot be renamed directly, remove them only after their open issues have been reclassified.
Shared labels to keep
agentic-workflowsapi-approvedapi-needs-workapi-ready-for-reviewblockingblocking-clean-cibugcommunity-contributiondocumentationenhancementEpicgood first issuehelp wantedin-prKnown Build Errorneeds-author-actionneeds-further-triageno-recent-activityquestionFurther information is requesteddescriptionreduce-unsafeSecurityuntriagedWhere names are shared with runtime, descriptions and colours can be aligned unless ML.NET has a reason to differ.
Labels worth adding now
needs-area-labelapi-suggestionfeature-requestblockedtest-bugtest-enhancementOther runtime labels, including cost, tenet, platform, servicing, and tracking labels, should be added only when ML.NET has a concrete use for them.
Repository references that need updating
.github/workflows/issue-triage.agent.mdperf,test,Build,need info; areas are mentioned only in comments.github/workflows/issue-triage.agent.lock.yml.github/workflows/repo-health-check.mdP0throughP3,Awaiting User Input, and a statement that the repository has no area labels.github/workflows/repo-health-check.lock.yml.github/health-baseline.mdIf automated area labelling is wanted, runtime uses
dotnet/issue-labelerwithLABEL_PREFIX: "area-"andDEFAULT_LABEL: "needs-area-label". It should be trained only after the new area assignments are clean.