[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-pytorch-pytorch-.claude-skills-triaging-issues":3},{"error":4,"detail":5,"metadata":52,"markdownContent":53,"rawMarkdown":49},false,{"repo_full_name":6,"owner":7,"repo_name":7,"repo_forks":8,"skill_path":9,"repo_stars":10,"name":11,"category_id":12,"description":13,"file_tree":14,"skill_md_content":49,"skill_id":50,"skill_key":51},"pytorch/pytorch","pytorch",27249,".claude/skills/triaging-issues",98374,"triaging-issues",1,"Triages GitHub issues by routing to oncall teams, applying labels, and closing questions. Use when processing new PyTorch issues or when asked to triage an issue.",[15,20,24,28,32,45],{"name":16,"path":17,"size":18,"type":19},"README.md",".claude/skills/triaging-issues/README.md",2677,"file",{"name":21,"path":22,"size":23,"type":19},"SKILL.md",".claude/skills/triaging-issues/SKILL.md",13047,{"name":25,"path":26,"size":27,"type":19},"labels.json",".claude/skills/triaging-issues/labels.json",34880,{"name":29,"path":30,"size":31,"type":19},"pt2-triage-rubric.md",".claude/skills/triaging-issues/pt2-triage-rubric.md",7946,{"name":33,"path":34,"type":35,"children":36},"scripts",".claude/skills/triaging-issues/scripts","folder",[37,41],{"name":38,"path":39,"size":40,"type":19},"add_bot_triaged.py",".claude/skills/triaging-issues/scripts/add_bot_triaged.py",2154,{"name":42,"path":43,"size":44,"type":19},"validate_labels.py",".claude/skills/triaging-issues/scripts/validate_labels.py",7165,{"name":46,"path":47,"size":48,"type":19},"templates.json",".claude/skills/triaging-issues/templates.json",2877,"---\nname: triaging-issues\ndescription: Triages GitHub issues by routing to oncall teams, applying labels, and closing questions. Use when processing new PyTorch issues or when asked to triage an issue.\nhooks:\n  PreToolUse:\n    - matcher: \"mcp__github__issue_write|mcp__github__update_issue\"\n      hooks:\n        - type: command\n          command: \"python3 \\\"$CLAUDE_PROJECT_DIR\\\"/.claude/skills/triaging-issues/scripts/validate_labels.py\"\n  PostToolUse:\n    - matcher: \"mcp__github__issue_write|mcp__github__update_issue|mcp__github__add_issue_comment|mcp__github__transfer_issue\"\n      hooks:\n        - type: command\n          command: \"python3 \\\"$CLAUDE_PROJECT_DIR\\\"/.claude/skills/triaging-issues/scripts/add_bot_triaged.py\"\n---\n\n# PyTorch Issue Triage Skill\n\nThis skill helps triage GitHub issues by routing issues, applying labels, and leaving first-line responses.\n\n## Contents\n- [MCP Tools Available](#mcp-tools-available)\n- [Labels You Must NEVER Add](#labels-you-must-never-add)\n- [Issue Triage Steps](#issue-triage-for-each-issue)\n  - Step 0: Already Routed — SKIP\n  - Step 1: Question vs Bug/Feature\n  - Step 1.5: Needs Reproduction — External Files\n  - Step 2: Transfer\n  - Step 2.5: PT2 Issues — Special Handling\n  - Step 3: Redirect to Secondary Oncall\n  - Step 4: Label the Issue\n  - Step 5: High Priority — REQUIRES HUMAN REVIEW\n  - Step 6: bot-triaged (automatic)\n  - Step 7: Mark Triaged\n- [V1 Constraints](#v1-constraints)\n\n**Labels reference:** See [labels.json](labels.json) for the full catalog of 305 labels suitable for triage. **ONLY apply labels that exist in this file.** Do not invent or guess label names. This file excludes CI triggers, test configs, release notes, and deprecated labels.\n\n**PT2 triage guide:** See [pt2-triage-rubric.md](pt2-triage-rubric.md) for detailed labeling guidance when triaging PT2/torch.compile issues.\n\n**Response templates:** See [templates.json](templates.json) for standard response messages.\n\n---\n\n## MCP Tools Available\n\nUse these GitHub MCP tools for triage:\n\n| Tool | Purpose |\n|------|---------|\n| `mcp__github__issue_read` | Get issue details, comments, and existing labels |\n| `mcp__github__issue_write` | Apply labels or close issues |\n| `mcp__github__add_issue_comment` | Add comment (only for redirecting questions) |\n| `mcp__github__search_issues` | Find similar issues for context |\n\n---\n\n## Labels You Must NEVER Add\n\n| Prefix/Category | Reason |\n|-----------------|--------|\n| Labels not in `labels.json` | Only apply labels that exist in the allowlist |\n| `ciflow/*` | CI job triggers for PRs only |\n| `test-config/*` | Test suite selectors for PRs only |\n| `release notes: *` | Auto-assigned for release notes |\n| `ci-*`, `ci:*` | CI infrastructure controls |\n| `sev*` | Severity labels require human decision |\n| `merge blocking` | Requires human decision |\n| Any label containing \"deprecated\" | Obsolete |\n| `oncall: releng` | Not a triage redirect target. Use `module: ci` instead |\n\n**If blocked:** When a label is blocked by the hook, add ONLY `triage review` and stop. A human will handle it.\n\nThese rules are enforced by a PreToolUse hook that validates all labels against `labels.json`.\n\n### Never Override Human Labels\n\nIf a human has already applied labels (especially `ci: sev`, severity labels, or priority labels), do NOT remove or replace them. Your job is to supplement, not override.\n\n---\n\n## Issue Triage (for each issue)\n\n### 0) Already Routed — SKIP\n\n**If an issue already has ANY `oncall:` label, SKIP IT entirely.** Do not:\n- Add any labels\n- Add `triaged`\n- Leave comments\n- Do any triage work\n\nThat issue belongs to the sub-oncall team. They own their queue.\n\n### 1) Question vs Bug/Feature\n\n- If it is a question (not a bug report or feature request): close and use the `redirect_to_forum` template from `templates.json`.\n- If unclear whether it is a bug/feature vs a question: request additional information using the `request_more_info` template and stop.\n\n### 1.5) Needs Reproduction — External Files\n\nCheck if the issue body contains links to external files that users would need to download to reproduce.\n\n**Patterns to detect:**\n- File attachments: `.zip`, `.pt`, `.pth`, `.pkl`, `.safetensors`, `.onnx`, `.bin` files\n- External storage: Google Drive, Dropbox, OneDrive, Mega, WeTransfer links\n- Model hubs: Hugging Face Hub links to model files\n\n**Action:**\n1. **Edit the issue body** to remove/redact the download links\n   - Replace with: `[Link removed - external file downloads are not permitted for security reasons]`\n2. Add `needs reproduction` label\n3. Use the `needs_reproduction` template from `templates.json` to request a self-contained reproduction\n4. Do NOT add `triaged` — wait for the user to provide a reproducible example\n\n### 1.55) Needs Reproduction — Other Cases\n\nAlso add `needs reproduction` when:\n- The user reports a hardware-specific issue (e.g., specific GPU model) without a self-contained repro script\n- The user references a specific model/checkpoint/dataset that is not publicly runnable in a few lines\n- The issue describes version-upgrade breakage but only provides a high-level description without a minimal script\n- The repro depends on a specific training setup, distributed environment, or non-trivial infrastructure\n\n### 1.6) Edge Cases & Numerical Accuracy\n\nIf the issue involves extremal values or numerical precision differences:\n\n**Patterns to detect:**\n- Values near `torch.finfo(dtype).max` or `torch.finfo(dtype).min`\n- NaN/Inf appearing in outputs from valid (but extreme) inputs\n- Differences between CPU and GPU results\n- Precision differences between dtypes (e.g., fp32 vs fp16)\n- Fuzzer-generated edge cases\n\n**IMPORTANT — avoid keyword-triggered mislabeling:**\n\nLabel based on the **root cause**, not keywords that appear in the error or title. A keyword tells you what failed, not why.\n\n- An `undefined symbol: ncclAlltoAll` error at `import torch` is a **packaging** issue (`module: binaries`), not a distributed training bug — the user never ran distributed code.\n- A `nan` in a parameter name or tolerance check is not `module: NaNs and Infs` unless the bug is actually about NaN propagation.\n- A stack trace mentioning `autograd` does not mean `module: autograd` — check whether the bug is in autograd itself or just on the call path.\n- A test failure with tolerance thresholds is `module: tests`, not `module: numerical-stability`.\n\nAsk: \"Where would the fix need to be made?\" That determines the label.\n\n**Action:**\n1. Add `module: edge cases` label\n2. If from a fuzzer, also add `topic: fuzzer`\n3. Use the `numerical_accuracy` template from `templates.json` to link to the docs\n4. If the issue is clearly expected behavior per the docs, close it with the template comment\n\n### 2) Transfer (domain library or ExecuTorch)\n\nIf the issue belongs in another repo (vision/text/audio/RL/ExecuTorch/etc.), transfer the issue and **STOP**.\n\n### 2.5) PT2 Issues — Special Handling\n\n**PT2 is NOT a redirect.** `oncall: pt2` is not like the other oncall labels in Step 3. PT2 issues continue through Steps 4–7 for full triage — add `oncall: pt2`, then proceed to label with `module:` labels, mark `triaged`, etc.\n\nSee [pt2-triage-rubric.md](pt2-triage-rubric.md) for detailed labeling decisions on which `module:` labels to apply.\n\n### 3) Redirect to Secondary Oncall\n\n**CRITICAL:** When redirecting issues to a **non-PT2** oncall queue, apply exactly one `oncall: ...` label and **STOP**. Do NOT:\n- Add any `module:` labels\n- Mark it `triaged`\n- Do any further triage work\n\nThe sub-oncall team will handle their own triage. Your job is only to route it to them.\n\n#### Oncall Redirect Labels\n\n| Label | When to use |\n|-------|-------------|\n| `oncall: jit` | TorchScript issues |\n| `oncall: distributed` | Distributed training (DDP, FSDP, RPC, c10d, DTensor, DeviceMesh, symmetric memory, context parallel, pipelining) |\n| `oncall: export` | torch.export issues |\n| `oncall: quantization` | Quantization issues |\n| `oncall: mobile` | Mobile (iOS/Android), excludes ExecuTorch |\n| `oncall: profiler` | Profiler issues (CPU, GPU, Kineto) |\n| `oncall: visualization` | TensorBoard integration |\n\n**Common routing mistakes to avoid:**\n- **MPS ≠ Mobile.** MPS (Metal Performance Shaders) is the macOS/Apple Silicon GPU backend. Do NOT route MPS issues to `oncall: mobile`. MPS issues stay in the general queue with `module: mps`.\n- **DTensor → `oncall: distributed`.** DTensor issues should always be routed to `oncall: distributed`, even if they don't mention DDP/FSDP.\n- **ONNX → `module: onnx`.** There is no `oncall: onnx`. Use `module: onnx` and keep in the general queue.\n- **CI/releng → `module: ci`.** Do not use `oncall: releng`. Use `module: ci` for CI infrastructure issues.\n- **torch.compile + distributed.** When `torch.compile` mishandles a distributed op (e.g., `dist.all_reduce`), the issue typically needs BOTH `oncall: pt2` and `oncall: distributed` since the fix may span both codebases.\n\n**Note:** `oncall: cpu inductor` is a sub-queue of PT2. For general triage, just use `oncall: pt2`.\n\n### 4) Label the issue (if NOT transferred/redirected)\n\nOnly if the issue stays in the general queue:\n- Add 1+ `module: ...` labels based on the affected area\n- Prefer specific labels over general ones when both exist. Check `labels.json` descriptions for guidance on when a specific label supersedes a general one (e.g., `module: sdpa` instead of `module: nn` for SDPA issues, `module: flex attention` instead of `module: nn` for flex attention).\n- `feature` — wholly new functionality that does not exist today in any form\n- `enhancement` — improvement to something that already works (e.g., adding a native backend kernel for an op that already runs via fallback/composite, performance optimization, better error messages). If the enhancement is about performance, also add `module: performance`.\n- `function request` — a new function or new arguments/modes for an existing function\n- If the issue says the operation \"currently works\" or \"falls back to\" a slower path, that is `enhancement`, not `feature`\n\n**Commonly missed labels — always check for these:**\n\n| Condition | Label |\n|-----------|-------|\n| Segfault, illegal memory access, SIGSEGV | `module: crash` |\n| Performance issue: regression, slowdown, or optimization request | `module: performance` |\n| Issue on Windows | `module: windows` |\n| Previously working feature now broken | `module: regression` |\n| Broken docs/links that previously worked | `module: docs` + `module: regression` (NOT `enhancement`) |\n| Issue about a test failing (not the underlying functionality) | `module: tests` |\n| Backward pass / gradient computation bug | `module: autograd` (in addition to the op's module label) |\n| `torch.linalg` ops or linear algebra ops (solve, svd, eig, inv, etc.) | `module: linear algebra` |\n| `has workaround` | Only add when the workaround is **non-trivial and non-obvious**. If the issue is \"X doesn't work for non-contiguous tensors,\" calling `.contiguous()` is the tautological inverse of the bug, not a workaround. A real workaround is something like installing a specific package version, adding a synchronization point, inserting `gc.collect()`, or using a different API that isn't obviously implied by the bug description. |\n\n**Label based on the actual bug, not keywords.** Read the issue to understand what is actually broken. A bug about broadcasting that happens to mention \"nan\" in a parameter name is a frontend bug, not a NaN/Inf bug.\n\n### 5) High Priority — REQUIRES HUMAN REVIEW\n\n**CRITICAL:** If you believe an issue is high priority, you MUST:\n1. Add `triage review` label and do not add `triaged`\n\nDo NOT directly add `high priority` without human confirmation.\n\nHigh priority criteria:\n- Crash / segfault / illegal memory access\n- Silent correctness issue (wrong results without error)\n- Regression from a prior version\n- Internal assert failure\n- Many users affected\n- Core component or popular model impact\n\n### 6) bot-triaged (automatic)\n\nThe `bot-triaged` label is automatically applied by a post-hook after any issue mutation. You do not need to add it manually.\n\n### 7) Mark triaged\n\nIf not transferred/redirected and not flagged for review, add `triaged`.\n\n---\n\n## V1 Constraints\n\n**DO NOT:**\n- Close bug reports or feature requests automatically\n- Close issues unless they are clear usage questions per Step 1\n- Assign issues to users\n- Add `high priority` directly without human confirmation\n- Add module labels when redirecting to oncall\n- Add comments to bug reports or feature requests, except a single info request when classification is unclear\n\n**DO:**\n- Close clear usage questions and point to discuss.pytorch.org (per step 1)\n- Be conservative - when in doubt, add `triage review` for human attention\n- Apply type labels (`feature`, `enhancement`, `function request`) when confident\n- Add `triaged` label when classification is complete\n\n**Note:** `bot-triaged` is automatically applied by a post-hook after any issue mutation.\n","e5d3b585-ccb5-5edb-903d-eededc3994bd","pytorch-pytorch-.claude-skills-triaging-issues",{"name":11,"description":13},"\u003Ch1>PyTorch Issue Triage Skill\u003C/h1>\n\u003Cp>This skill helps triage GitHub issues by routing issues, applying labels, and leaving first-line responses.\u003C/p>\n\u003Ch2>Contents\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"#mcp-tools-available\">MCP Tools Available\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"#labels-you-must-never-add\">Labels You Must NEVER Add\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"#issue-triage-for-each-issue\">Issue Triage Steps\u003C/a>\u003Cul>\n\u003Cli>Step 0: Already Routed — SKIP\u003C/li>\n\u003Cli>Step 1: Question vs Bug/Feature\u003C/li>\n\u003Cli>Step 1.5: Needs Reproduction — External Files\u003C/li>\n\u003Cli>Step 2: Transfer\u003C/li>\n\u003Cli>Step 2.5: PT2 Issues — Special Handling\u003C/li>\n\u003Cli>Step 3: Redirect to Secondary Oncall\u003C/li>\n\u003Cli>Step 4: Label the Issue\u003C/li>\n\u003Cli>Step 5: High Priority — REQUIRES HUMAN REVIEW\u003C/li>\n\u003Cli>Step 6: bot-triaged (automatic)\u003C/li>\n\u003Cli>Step 7: Mark Triaged\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\u003Ca href=\"#v1-constraints\">V1 Constraints\u003C/a>\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Labels reference:\u003C/strong> See \u003Ca href=\"labels.json\">labels.json\u003C/a> for the full catalog of 305 labels suitable for triage. \u003Cstrong>ONLY apply labels that exist in this file.\u003C/strong> Do not invent or guess label names. This file excludes CI triggers, test configs, release notes, and deprecated labels.\u003C/p>\n\u003Cp>\u003Cstrong>PT2 triage guide:\u003C/strong> See \u003Ca href=\"pt2-triage-rubric.md\">pt2-triage-rubric.md\u003C/a> for detailed labeling guidance when triaging PT2/torch.compile issues.\u003C/p>\n\u003Cp>\u003Cstrong>Response templates:\u003C/strong> See \u003Ca href=\"templates.json\">templates.json\u003C/a> for standard response messages.\u003C/p>\n\u003Chr>\n\u003Ch2>MCP Tools Available\u003C/h2>\n\u003Cp>Use these GitHub MCP tools for triage:\u003C/p>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Tool\u003C/th>\n\u003Cth>Purpose\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode>mcp__github__issue_read\u003C/code>\u003C/td>\n\u003Ctd>Get issue details, comments, and existing labels\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mcp__github__issue_write\u003C/code>\u003C/td>\n\u003Ctd>Apply labels or close issues\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mcp__github__add_issue_comment\u003C/code>\u003C/td>\n\u003Ctd>Add comment (only for redirecting questions)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mcp__github__search_issues\u003C/code>\u003C/td>\n\u003Ctd>Find similar issues for context\u003C/td>\n\u003C/tr>\n\u003C/tbody>\u003C/table>\n\u003Chr>\n\u003Ch2>Labels You Must NEVER Add\u003C/h2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Prefix/Category\u003C/th>\n\u003Cth>Reason\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Labels not in \u003Ccode>labels.json\u003C/code>\u003C/td>\n\u003Ctd>Only apply labels that exist in the allowlist\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ciflow/*\u003C/code>\u003C/td>\n\u003Ctd>CI job triggers for PRs only\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>test-config/*\u003C/code>\u003C/td>\n\u003Ctd>Test suite selectors for PRs only\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>release notes: *\u003C/code>\u003C/td>\n\u003Ctd>Auto-assigned for release notes\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ci-*\u003C/code>, \u003Ccode>ci:*\u003C/code>\u003C/td>\n\u003Ctd>CI infrastructure controls\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>sev*\u003C/code>\u003C/td>\n\u003Ctd>Severity labels require human decision\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>merge blocking\u003C/code>\u003C/td>\n\u003Ctd>Requires human decision\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Any label containing &quot;deprecated&quot;\u003C/td>\n\u003Ctd>Obsolete\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>oncall: releng\u003C/code>\u003C/td>\n\u003Ctd>Not a triage redirect target. Use \u003Ccode>module: ci\u003C/code> instead\u003C/td>\n\u003C/tr>\n\u003C/tbody>\u003C/table>\n\u003Cp>\u003Cstrong>If blocked:\u003C/strong> When a label is blocked by the hook, add ONLY \u003Ccode>triage review\u003C/code> and stop. A human will handle it.\u003C/p>\n\u003Cp>These rules are enforced by a PreToolUse hook that validates all labels against \u003Ccode>labels.json\u003C/code>.\u003C/p>\n\u003Ch3>Never Override Human Labels\u003C/h3>\n\u003Cp>If a human has already applied labels (especially \u003Ccode>ci: sev\u003C/code>, severity labels, or priority labels), do NOT remove or replace them. Your job is to supplement, not override.\u003C/p>\n\u003Chr>\n\u003Ch2>Issue Triage (for each issue)\u003C/h2>\n\u003Ch3>0) Already Routed — SKIP\u003C/h3>\n\u003Cp>\u003Cstrong>If an issue already has ANY \u003Ccode>oncall:\u003C/code> label, SKIP IT entirely.\u003C/strong> Do not:\u003C/p>\n\u003Cul>\n\u003Cli>Add any labels\u003C/li>\n\u003Cli>Add \u003Ccode>triaged\u003C/code>\u003C/li>\n\u003Cli>Leave comments\u003C/li>\n\u003Cli>Do any triage work\u003C/li>\n\u003C/ul>\n\u003Cp>That issue belongs to the sub-oncall team. They own their queue.\u003C/p>\n\u003Ch3>1) Question vs Bug/Feature\u003C/h3>\n\u003Cul>\n\u003Cli>If it is a question (not a bug report or feature request): close and use the \u003Ccode>redirect_to_forum\u003C/code> template from \u003Ccode>templates.json\u003C/code>.\u003C/li>\n\u003Cli>If unclear whether it is a bug/feature vs a question: request additional information using the \u003Ccode>request_more_info\u003C/code> template and stop.\u003C/li>\n\u003C/ul>\n\u003Ch3>1.5) Needs Reproduction — External Files\u003C/h3>\n\u003Cp>Check if the issue body contains links to external files that users would need to download to reproduce.\u003C/p>\n\u003Cp>\u003Cstrong>Patterns to detect:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>File attachments: \u003Ccode>.zip\u003C/code>, \u003Ccode>.pt\u003C/code>, \u003Ccode>.pth\u003C/code>, \u003Ccode>.pkl\u003C/code>, \u003Ccode>.safetensors\u003C/code>, \u003Ccode>.onnx\u003C/code>, \u003Ccode>.bin\u003C/code> files\u003C/li>\n\u003Cli>External storage: Google Drive, Dropbox, OneDrive, Mega, WeTransfer links\u003C/li>\n\u003Cli>Model hubs: Hugging Face Hub links to model files\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Action:\u003C/strong>\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Edit the issue body\u003C/strong> to remove/redact the download links\u003Cul>\n\u003Cli>Replace with: \u003Ccode>[Link removed - external file downloads are not permitted for security reasons]\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Add \u003Ccode>needs reproduction\u003C/code> label\u003C/li>\n\u003Cli>Use the \u003Ccode>needs_reproduction\u003C/code> template from \u003Ccode>templates.json\u003C/code> to request a self-contained reproduction\u003C/li>\n\u003Cli>Do NOT add \u003Ccode>triaged\u003C/code> — wait for the user to provide a reproducible example\u003C/li>\n\u003C/ol>\n\u003Ch3>1.55) Needs Reproduction — Other Cases\u003C/h3>\n\u003Cp>Also add \u003Ccode>needs reproduction\u003C/code> when:\u003C/p>\n\u003Cul>\n\u003Cli>The user reports a hardware-specific issue (e.g., specific GPU model) without a self-contained repro script\u003C/li>\n\u003Cli>The user references a specific model/checkpoint/dataset that is not publicly runnable in a few lines\u003C/li>\n\u003Cli>The issue describes version-upgrade breakage but only provides a high-level description without a minimal script\u003C/li>\n\u003Cli>The repro depends on a specific training setup, distributed environment, or non-trivial infrastructure\u003C/li>\n\u003C/ul>\n\u003Ch3>1.6) Edge Cases &amp; Numerical Accuracy\u003C/h3>\n\u003Cp>If the issue involves extremal values or numerical precision differences:\u003C/p>\n\u003Cp>\u003Cstrong>Patterns to detect:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Values near \u003Ccode>torch.finfo(dtype).max\u003C/code> or \u003Ccode>torch.finfo(dtype).min\u003C/code>\u003C/li>\n\u003Cli>NaN/Inf appearing in outputs from valid (but extreme) inputs\u003C/li>\n\u003Cli>Differences between CPU and GPU results\u003C/li>\n\u003Cli>Precision differences between dtypes (e.g., fp32 vs fp16)\u003C/li>\n\u003Cli>Fuzzer-generated edge cases\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>IMPORTANT — avoid keyword-triggered mislabeling:\u003C/strong>\u003C/p>\n\u003Cp>Label based on the \u003Cstrong>root cause\u003C/strong>, not keywords that appear in the error or title. A keyword tells you what failed, not why.\u003C/p>\n\u003Cul>\n\u003Cli>An \u003Ccode>undefined symbol: ncclAlltoAll\u003C/code> error at \u003Ccode>import torch\u003C/code> is a \u003Cstrong>packaging\u003C/strong> issue (\u003Ccode>module: binaries\u003C/code>), not a distributed training bug — the user never ran distributed code.\u003C/li>\n\u003Cli>A \u003Ccode>nan\u003C/code> in a parameter name or tolerance check is not \u003Ccode>module: NaNs and Infs\u003C/code> unless the bug is actually about NaN propagation.\u003C/li>\n\u003Cli>A stack trace mentioning \u003Ccode>autograd\u003C/code> does not mean \u003Ccode>module: autograd\u003C/code> — check whether the bug is in autograd itself or just on the call path.\u003C/li>\n\u003Cli>A test failure with tolerance thresholds is \u003Ccode>module: tests\u003C/code>, not \u003Ccode>module: numerical-stability\u003C/code>.\u003C/li>\n\u003C/ul>\n\u003Cp>Ask: &quot;Where would the fix need to be made?&quot; That determines the label.\u003C/p>\n\u003Cp>\u003Cstrong>Action:\u003C/strong>\u003C/p>\n\u003Col>\n\u003Cli>Add \u003Ccode>module: edge cases\u003C/code> label\u003C/li>\n\u003Cli>If from a fuzzer, also add \u003Ccode>topic: fuzzer\u003C/code>\u003C/li>\n\u003Cli>Use the \u003Ccode>numerical_accuracy\u003C/code> template from \u003Ccode>templates.json\u003C/code> to link to the docs\u003C/li>\n\u003Cli>If the issue is clearly expected behavior per the docs, close it with the template comment\u003C/li>\n\u003C/ol>\n\u003Ch3>2) Transfer (domain library or ExecuTorch)\u003C/h3>\n\u003Cp>If the issue belongs in another repo (vision/text/audio/RL/ExecuTorch/etc.), transfer the issue and \u003Cstrong>STOP\u003C/strong>.\u003C/p>\n\u003Ch3>2.5) PT2 Issues — Special Handling\u003C/h3>\n\u003Cp>\u003Cstrong>PT2 is NOT a redirect.\u003C/strong> \u003Ccode>oncall: pt2\u003C/code> is not like the other oncall labels in Step 3. PT2 issues continue through Steps 4–7 for full triage — add \u003Ccode>oncall: pt2\u003C/code>, then proceed to label with \u003Ccode>module:\u003C/code> labels, mark \u003Ccode>triaged\u003C/code>, etc.\u003C/p>\n\u003Cp>See \u003Ca href=\"pt2-triage-rubric.md\">pt2-triage-rubric.md\u003C/a> for detailed labeling decisions on which \u003Ccode>module:\u003C/code> labels to apply.\u003C/p>\n\u003Ch3>3) Redirect to Secondary Oncall\u003C/h3>\n\u003Cp>\u003Cstrong>CRITICAL:\u003C/strong> When redirecting issues to a \u003Cstrong>non-PT2\u003C/strong> oncall queue, apply exactly one \u003Ccode>oncall: ...\u003C/code> label and \u003Cstrong>STOP\u003C/strong>. Do NOT:\u003C/p>\n\u003Cul>\n\u003Cli>Add any \u003Ccode>module:\u003C/code> labels\u003C/li>\n\u003Cli>Mark it \u003Ccode>triaged\u003C/code>\u003C/li>\n\u003Cli>Do any further triage work\u003C/li>\n\u003C/ul>\n\u003Cp>The sub-oncall team will handle their own triage. Your job is only to route it to them.\u003C/p>\n\u003Ch4>Oncall Redirect Labels\u003C/h4>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Label\u003C/th>\n\u003Cth>When to use\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode>oncall: jit\u003C/code>\u003C/td>\n\u003Ctd>TorchScript issues\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>oncall: distributed\u003C/code>\u003C/td>\n\u003Ctd>Distributed training (DDP, FSDP, RPC, c10d, DTensor, DeviceMesh, symmetric memory, context parallel, pipelining)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>oncall: export\u003C/code>\u003C/td>\n\u003Ctd>torch.export issues\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>oncall: quantization\u003C/code>\u003C/td>\n\u003Ctd>Quantization issues\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>oncall: mobile\u003C/code>\u003C/td>\n\u003Ctd>Mobile (iOS/Android), excludes ExecuTorch\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>oncall: profiler\u003C/code>\u003C/td>\n\u003Ctd>Profiler issues (CPU, GPU, Kineto)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>oncall: visualization\u003C/code>\u003C/td>\n\u003Ctd>TensorBoard integration\u003C/td>\n\u003C/tr>\n\u003C/tbody>\u003C/table>\n\u003Cp>\u003Cstrong>Common routing mistakes to avoid:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>MPS ≠ Mobile.\u003C/strong> MPS (Metal Performance Shaders) is the macOS/Apple Silicon GPU backend. Do NOT route MPS issues to \u003Ccode>oncall: mobile\u003C/code>. MPS issues stay in the general queue with \u003Ccode>module: mps\u003C/code>.\u003C/li>\n\u003Cli>\u003Cstrong>DTensor → \u003Ccode>oncall: distributed\u003C/code>.\u003C/strong> DTensor issues should always be routed to \u003Ccode>oncall: distributed\u003C/code>, even if they don&#39;t mention DDP/FSDP.\u003C/li>\n\u003Cli>\u003Cstrong>ONNX → \u003Ccode>module: onnx\u003C/code>.\u003C/strong> There is no \u003Ccode>oncall: onnx\u003C/code>. Use \u003Ccode>module: onnx\u003C/code> and keep in the general queue.\u003C/li>\n\u003Cli>\u003Cstrong>CI/releng → \u003Ccode>module: ci\u003C/code>.\u003C/strong> Do not use \u003Ccode>oncall: releng\u003C/code>. Use \u003Ccode>module: ci\u003C/code> for CI infrastructure issues.\u003C/li>\n\u003Cli>\u003Cstrong>torch.compile + distributed.\u003C/strong> When \u003Ccode>torch.compile\u003C/code> mishandles a distributed op (e.g., \u003Ccode>dist.all_reduce\u003C/code>), the issue typically needs BOTH \u003Ccode>oncall: pt2\u003C/code> and \u003Ccode>oncall: distributed\u003C/code> since the fix may span both codebases.\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Note:\u003C/strong> \u003Ccode>oncall: cpu inductor\u003C/code> is a sub-queue of PT2. For general triage, just use \u003Ccode>oncall: pt2\u003C/code>.\u003C/p>\n\u003Ch3>4) Label the issue (if NOT transferred/redirected)\u003C/h3>\n\u003Cp>Only if the issue stays in the general queue:\u003C/p>\n\u003Cul>\n\u003Cli>Add 1+ \u003Ccode>module: ...\u003C/code> labels based on the affected area\u003C/li>\n\u003Cli>Prefer specific labels over general ones when both exist. Check \u003Ccode>labels.json\u003C/code> descriptions for guidance on when a specific label supersedes a general one (e.g., \u003Ccode>module: sdpa\u003C/code> instead of \u003Ccode>module: nn\u003C/code> for SDPA issues, \u003Ccode>module: flex attention\u003C/code> instead of \u003Ccode>module: nn\u003C/code> for flex attention).\u003C/li>\n\u003Cli>\u003Ccode>feature\u003C/code> — wholly new functionality that does not exist today in any form\u003C/li>\n\u003Cli>\u003Ccode>enhancement\u003C/code> — improvement to something that already works (e.g., adding a native backend kernel for an op that already runs via fallback/composite, performance optimization, better error messages). If the enhancement is about performance, also add \u003Ccode>module: performance\u003C/code>.\u003C/li>\n\u003Cli>\u003Ccode>function request\u003C/code> — a new function or new arguments/modes for an existing function\u003C/li>\n\u003Cli>If the issue says the operation &quot;currently works&quot; or &quot;falls back to&quot; a slower path, that is \u003Ccode>enhancement\u003C/code>, not \u003Ccode>feature\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Commonly missed labels — always check for these:\u003C/strong>\u003C/p>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Condition\u003C/th>\n\u003Cth>Label\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Segfault, illegal memory access, SIGSEGV\u003C/td>\n\u003Ctd>\u003Ccode>module: crash\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Performance issue: regression, slowdown, or optimization request\u003C/td>\n\u003Ctd>\u003Ccode>module: performance\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Issue on Windows\u003C/td>\n\u003Ctd>\u003Ccode>module: windows\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Previously working feature now broken\u003C/td>\n\u003Ctd>\u003Ccode>module: regression\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Broken docs/links that previously worked\u003C/td>\n\u003Ctd>\u003Ccode>module: docs\u003C/code> + \u003Ccode>module: regression\u003C/code> (NOT \u003Ccode>enhancement\u003C/code>)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Issue about a test failing (not the underlying functionality)\u003C/td>\n\u003Ctd>\u003Ccode>module: tests\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Backward pass / gradient computation bug\u003C/td>\n\u003Ctd>\u003Ccode>module: autograd\u003C/code> (in addition to the op&#39;s module label)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>torch.linalg\u003C/code> ops or linear algebra ops (solve, svd, eig, inv, etc.)\u003C/td>\n\u003Ctd>\u003Ccode>module: linear algebra\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>has workaround\u003C/code>\u003C/td>\n\u003Ctd>Only add when the workaround is \u003Cstrong>non-trivial and non-obvious\u003C/strong>. If the issue is &quot;X doesn&#39;t work for non-contiguous tensors,&quot; calling \u003Ccode>.contiguous()\u003C/code> is the tautological inverse of the bug, not a workaround. A real workaround is something like installing a specific package version, adding a synchronization point, inserting \u003Ccode>gc.collect()\u003C/code>, or using a different API that isn&#39;t obviously implied by the bug description.\u003C/td>\n\u003C/tr>\n\u003C/tbody>\u003C/table>\n\u003Cp>\u003Cstrong>Label based on the actual bug, not keywords.\u003C/strong> Read the issue to understand what is actually broken. A bug about broadcasting that happens to mention &quot;nan&quot; in a parameter name is a frontend bug, not a NaN/Inf bug.\u003C/p>\n\u003Ch3>5) High Priority — REQUIRES HUMAN REVIEW\u003C/h3>\n\u003Cp>\u003Cstrong>CRITICAL:\u003C/strong> If you believe an issue is high priority, you MUST:\u003C/p>\n\u003Col>\n\u003Cli>Add \u003Ccode>triage review\u003C/code> label and do not add \u003Ccode>triaged\u003C/code>\u003C/li>\n\u003C/ol>\n\u003Cp>Do NOT directly add \u003Ccode>high priority\u003C/code> without human confirmation.\u003C/p>\n\u003Cp>High priority criteria:\u003C/p>\n\u003Cul>\n\u003Cli>Crash / segfault / illegal memory access\u003C/li>\n\u003Cli>Silent correctness issue (wrong results without error)\u003C/li>\n\u003Cli>Regression from a prior version\u003C/li>\n\u003Cli>Internal assert failure\u003C/li>\n\u003Cli>Many users affected\u003C/li>\n\u003Cli>Core component or popular model impact\u003C/li>\n\u003C/ul>\n\u003Ch3>6) bot-triaged (automatic)\u003C/h3>\n\u003Cp>The \u003Ccode>bot-triaged\u003C/code> label is automatically applied by a post-hook after any issue mutation. You do not need to add it manually.\u003C/p>\n\u003Ch3>7) Mark triaged\u003C/h3>\n\u003Cp>If not transferred/redirected and not flagged for review, add \u003Ccode>triaged\u003C/code>.\u003C/p>\n\u003Chr>\n\u003Ch2>V1 Constraints\u003C/h2>\n\u003Cp>\u003Cstrong>DO NOT:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Close bug reports or feature requests automatically\u003C/li>\n\u003Cli>Close issues unless they are clear usage questions per Step 1\u003C/li>\n\u003Cli>Assign issues to users\u003C/li>\n\u003Cli>Add \u003Ccode>high priority\u003C/code> directly without human confirmation\u003C/li>\n\u003Cli>Add module labels when redirecting to oncall\u003C/li>\n\u003Cli>Add comments to bug reports or feature requests, except a single info request when classification is unclear\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>DO:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Close clear usage questions and point to discuss.pytorch.org (per step 1)\u003C/li>\n\u003Cli>Be conservative - when in doubt, add \u003Ccode>triage review\u003C/code> for human attention\u003C/li>\n\u003Cli>Apply type labels (\u003Ccode>feature\u003C/code>, \u003Ccode>enhancement\u003C/code>, \u003Ccode>function request\u003C/code>) when confident\u003C/li>\n\u003Cli>Add \u003Ccode>triaged\u003C/code> label when classification is complete\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Note:\u003C/strong> \u003Ccode>bot-triaged\u003C/code> is automatically applied by a post-hook after any issue mutation.\u003C/p>\n"]