Skip to content

feat: add collect-env environment report tool + issue templates (bug, feature request) - #4007

Merged
YangXu1990uiuc merged 5 commits into
flashinfer-ai:mainfrom
YangXu1990uiuc:yanxu/collect-env
Jul 22, 2026
Merged

feat: add collect-env environment report tool + issue templates (bug, feature request)#4007
YangXu1990uiuc merged 5 commits into
flashinfer-ai:mainfrom
YangXu1990uiuc:yanxu/collect-env

Conversation

@YangXu1990uiuc

@YangXu1990uiuc YangXu1990uiuc commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

📌 Description

Issue reporters often can't state their environment precisely, and the most common unreproducible-issue root cause is version confusion — multiple copies of cuDNN/cuBLAS/CUDA runtime installed where the loaded one is not the one the user assumes.

This PR adds an environment-forensics tool and wires it into a new (first) GitHub issue template:

python -m flashinfer.collect_env        # or: flashinfer collect-env [--json]

What the report covers

  • flashinfer / flashinfer-cubin / flashinfer-jit-cache versions (with explicit mismatch flag), JIT cache + local cubin store stats, resolved target CUDA archs
  • GPU/driver properties in CUDA enumeration order (nvidia-smi order as no-torch fallback), CUDA toolkit as resolved by flashinfer's JIT vs CUDA_HOME
  • Loaded vs installed GPU libraries: force-loads the libs torch actually uses, parses /proc/self/maps for what is truly mapped, scans LD_LIBRARY_PATH / site-packages / CUDA_HOME / ldconfig for other on-disk installs; aggregated per directory with pip provenance, ⚠ on real conflicts
  • torch build info, cuDNN frontend + loaded backend version, relevant packages (incl. vLLM/SGLang and their declared flashinfer pins, stated factually), FLASHINFER_*/CUDA*/… env vars, GPU topology

Design constraints (documented in the module docstring)

  • stdlib-only at module level and every probe individually guarded → still produces a report when import flashinfer or torch is broken; the file can be curl-ed and run standalone with bare Python
  • strictly offline/read-only (no downloads, unlike show-config's artifact status), ~7 s wall clock

Example of the headline section on a box with a pip-wheel CUDA stack plus a local toolkit:

==== GPU Libraries: loaded vs on disk ====
libcublas  ⚠ other installs on disk (check which one you expect):
    LOADED   .../.venv/lib/python3.12/site-packages/nvidia/cu13/lib/  [pip nvidia-cublas==13.0.0.19]
    on disk  /usr/local/cuda-13.2/targets/x86_64-linux/lib/  [v13.3.0.5]

🔍 Related Issues

Improves triage for env-dependent reports in general (e.g. the recurring "works on my machine" class).

🚀 Pull Request Checklist

✅ Pre-commit Checks

  • I have installed pre-commit by running pip install pre-commit (or used your preferred method).
  • I have installed the hooks with pre-commit install.
  • I have run the hooks manually with pre-commit run --all-files and fixed any reported issues.

🧪 Tests

  • Tests have been added or updated as needed.
  • All tests are passing (unittest, etc.).

tests/utils/test_collect_env.py asserts the core contract (collection never raises, sections present, JSON-serializable) and runs GPU-less. Manually verified on a multi-arch box (A100/L40S/H100/B200-class, driver 595.71.05): full run in a venv, standalone run with bare /usr/bin/python3 (no torch/flashinfer — degrades gracefully), --json parses.

Reviewer Notes

  • /proc/self/maps is Linux-only; on other platforms that section degrades to the on-disk scan.
  • AI-assisted (Claude Code).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a collect-env CLI command to generate detailed environment reports (runtime, CUDA/GPU details, loaded libraries, and version info).
    • Supports formatted text or pretty-printed JSON output.
    • Added GitHub issue forms for bug reports and feature requests with prompts for reproducible steps and environment output.
  • Documentation

    • Updated quick-reference materials with environment-report commands, including an optional --json mode.
  • Tests

    • Added tests covering report section presence/structure, FlashInfer↔flashinfer version consistency, text formatting, and JSON-serializability.

Update (2026-07-17): also adds 🚀 Kernel / Feature Request (feature_request.yml), a slimmed revision of the template draft circulated on Slack, incorporating the thread feedback (thanks @kaustubh, Brian, Jingfan):

  • Two clean templates with an explicit routing rule in each description: broken / wrong / slower than before → Bug Report; new capability / speedup → Feature Request
  • Required fields: 4 (+ a "searched existing issues" checkbox on both templates); the remaining fields are grouped under a visible "everything below is optional" divider
  • Hardware dropdown gains Ampere/Ada; inference engine is multi-select; Evidence dropdown folded into the Problem field; Impact label/multi-select contradiction fixed
  • Both templates reference the same environment tool: python -m flashinfer.collect_env; bug-template reproducer guidance now asks for a short standalone script rather than a full vllm serve run

Issue reporters often cannot state their environment precisely, and the
most common unreproducible-issue root cause is version confusion: multiple
copies of cuDNN/cuBLAS/CUDA runtime installed where the loaded one is not
the one the user assumes.

Add flashinfer/collect_env.py (python -m flashinfer.collect_env /
flashinfer collect-env [--json]) that dumps a paste-ready report:

- flashinfer / flashinfer-cubin / flashinfer-jit-cache versions with an
  explicit mismatch flag, JIT cache and local cubin store stats, resolved
  target CUDA archs
- GPU/driver properties in CUDA enumeration order (nvidia-smi order as
  no-torch fallback), CUDA toolkit as resolved by flashinfer's JIT vs env
- loaded-vs-installed GPU library disambiguation: force-load, then parse
  /proc/self/maps for what is actually mapped and scan LD_LIBRARY_PATH /
  site-packages / CUDA_HOME / ldconfig for other on-disk installs,
  aggregated per directory with pip provenance and conflict flags
- torch build info, cuDNN frontend + loaded backend version, relevant
  package versions incl. serving frameworks' declared flashinfer pins,
  FLASHINFER_*/CUDA*/... environment variables, GPU topology

The module is standalone-runnable (stdlib-only at import; every probe
individually guarded) so it still produces a report when import flashinfer
or torch is broken, and is strictly offline/read-only.

Also add the repo's first GitHub issue template, wiring the command in as
a required Environment field.

AI-assisted (Claude Code).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: adcce5f7-b0e1-4796-8751-567013f6e56d

📥 Commits

Reviewing files that changed from the base of the PR and between 33ebdfd and edd2607.

📒 Files selected for processing (1)
  • .github/ISSUE_TEMPLATE/feature_request.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/ISSUE_TEMPLATE/feature_request.yml

📝 Walkthrough

Walkthrough

Adds a standalone environment collector covering Python, CUDA, GPU, package, library, and topology details; exposes text and JSON CLI commands; adds tests, documentation, and structured bug and feature request forms.

Changes

Environment Reporting

Layer / File(s) Summary
Runtime and framework probes
flashinfer/collect_env.py
Collects platform, GPU, CUDA, torch, FlashInfer, cuDNN, package, and framework pin information while converting probe failures into report values.
GPU library provenance analysis
flashinfer/collect_env.py
Inspects loaded and on-disk GPU libraries, maps package provenance, and reports library conflicts.
Report assembly and output modes
flashinfer/collect_env.py
Builds ordered reports, captures environment variables and topology, formats markdown, and supports JSON output.
CLI, issue intake, and validation
flashinfer/__main__.py, .github/ISSUE_TEMPLATE/*, CLAUDE.md, tests/utils/test_collect_env.py
Registers collect-env, documents invocation commands, adds bug and feature request forms, and tests report structure, formatting, version matching, and JSON serialization.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Reporter
  participant collect-env CLI
  participant collect_env_info
  participant GPU probes
  participant format_report
  Reporter->>collect-env CLI: Run collect-env
  collect-env CLI->>collect_env_info: Gather environment report
  collect_env_info->>GPU probes: Inspect CUDA, GPUs, and libraries
  GPU probes-->>collect_env_info: Return guarded probe results
  collect_env_info-->>collect-env CLI: Return ordered report
  collect-env CLI->>format_report: Format text output
  format_report-->>Reporter: Display report
  Reporter->>Reporter: Paste report into bug form
Loading

Suggested reviewers: sricketts, dhiraj113, yongwww

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 38.24% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: a collect-env tool plus new bug and feature request templates.
Description check ✅ Passed The description follows the template and includes the required sections, checklist items, tests, and reviewer notes.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new environment diagnostic tool, flashinfer.collect_env, to assist in debugging by gathering system, GPU, and library information. It includes a new CLI command, an updated issue template, and comprehensive unit tests. The reviewer provided a suggestion to improve the robustness of the version-parsing regular expression in flashinfer/collect_env.py to better handle various versioning schemes.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread flashinfer/collect_env.py Outdated
tags = []
versions = set()
for p in paths:
m = re.search(r"\.so\.(\d+(?:\.\d+)+)$", p)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The regular expression to find the library version from the filename might not handle all versioning schemes. Specifically, it requires at least one dot in the version number (e.g., 1.2), and won't match single-number versions like libfoo.so.8.

To make it more robust, I suggest changing the regex to handle versions with zero or more dots.

Suggested change
m = re.search(r"\.so\.(\d+(?:\.\d+)+)$", p)
m = re.search(r"\.so\.(\d+(\.\d+)*)$", p)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 33ebdfd — the regex now accepts single-number suffixes ((\d+(?:\.\d+)*)).

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/ISSUE_TEMPLATE/bug_report.yml:
- Around line 18-26: Update the environment-output textarea in the bug report
template to remove the prefilled “PASTE OUTPUT HERE” value and configure it as
placeholder text instead, while preserving the existing required validation so
contributors must provide actual output.

In `@flashinfer/collect_env.py`:
- Around line 129-138: Update _installed_distributions to canonicalize each
distribution name with the same hyphen-normalization used by _check_pin(),
converting underscores and dots as well as casing before storing the mapping.
Preserve the existing behavior of skipping distributions without a metadata name
and returning their versions.
- Around line 541-545: Update _get_env_vars to sanitize collected environment
data before returning it: redact values for credential-like variable names,
including secrets matched by broad prefixes such as NVIDIA_, VLLM_, and SGLANG_,
and replace the user home-directory prefix in path values with a non-sensitive
placeholder. Preserve the existing sorted collection and exact/prefix matching
behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 29abd899-4fc3-4df2-a09f-e5585b23e51c

📥 Commits

Reviewing files that changed from the base of the PR and between 7fe81cf and b51e622.

📒 Files selected for processing (5)
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • CLAUDE.md
  • flashinfer/__main__.py
  • flashinfer/collect_env.py
  • tests/utils/test_collect_env.py

Comment thread .github/ISSUE_TEMPLATE/bug_report.yml Outdated
Comment thread flashinfer/collect_env.py
Comment thread flashinfer/collect_env.py Outdated
Companion to the bug-report template in this PR, so the two forms split
cleanly (Jingfan): broken/wrong/slower-than-before goes to Bug Report,
new capability/speedup goes here — each template's description states the
routing rule to avoid categorization confusion (Kaustubh).

Changes vs the circulated draft, per Slack feedback:
- Required fields cut from 10 to 4 (problem, requested outcome, target
  hardware, inference engine) + a searched-existing-issues checkbox on
  both templates (Jingfan); everything else demoted to clearly-marked
  optional with a note that filling more helps the team act (Brian, Yang)
- Hardware dropdown gains Ampere (SM80/86) and Ada (SM89) entries
- Inference engine becomes multi-select with a Not-applicable option
- Evidence dropdown removed; trace/repro invited in the Problem field
- Impact label/description contradiction fixed (multi-select 'Impact')
- Workload skeleton's version bullets replaced by collect_env reference
  so both templates share one environment tool (Brian, Yang)
- Bug template: explicit perf-regression wording, and reproducer guidance
  asks for a short standalone script rather than a vllm serve run (Brian)

AI-assisted (Claude Code).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@YangXu1990uiuc YangXu1990uiuc changed the title feat: add collect-env environment report tool + bug-report issue template feat: add collect-env environment report tool + issue templates (bug, feature request) Jul 17, 2026
@aleozlx aleozlx mentioned this pull request Jul 17, 2026
5 tasks
- SM80 / SM86 - Ampere (A100, A30, RTX 30)
- SM89 - Ada (L4, L40S, RTX 40)
- SM90 - Hopper (H100, H200, or H20)
- SM100 - Blackwell datacenter (B200 or GB200)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this does not align with product nomenclature

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment is anchored on the previous revision — 4e77e03 (pushed after Brian raised the same point on Slack) dropped the architecture marketing names and segment qualifiers entirely. The dropdown now uses the SM number as the key with product examples only: SM100 (B200, GB200), SM103 (B300, GB300), SM120 (RTX PRO 6000, RTX 50-series), SM121 (GB10 — DGX Spark, RTX Spark). Please take a look at the current revision — if a specific product name is still off, happy to fix.

attributes:
label: Before submitting
options:
- label: I have searched existing issues and did not find a solution or an existing report.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for future, i believe it's common practice that a bot flags dup issues and "threatens" to close if not justifying against the duplication. e.g. claude code repo

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed — a dedup bot that flags likely duplicates and auto-closes unless the reporter justifies (like anthropics/claude-code) is a good follow-up. Out of scope here; this checkbox is the manual placeholder until then.

id: description
attributes:
label: Bug description
description: What happened, and what did you expect to happen instead?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 33ebdfd — split a dedicated optional "Error messages / logs" textarea (render: text) out of the reproduction field, following the claude-code structure. The repro field now asks only for the script.

description: Select every engine or integration path this applies to.
multiple: true
options:
- vLLM

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for future, this info can be used to auto-label stuff with a git action

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed — that's part of why these are dropdowns rather than free text: the selections render machine-parseably in the issue body, so a labeler action can map hardware/engine choices to labels. Good follow-up once the templates land.

@aleozlx aleozlx left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reviewed. one blocking comment on product names

'Blackwell' spans SM100/103/120/121 and market-segment qualifiers like
'datacenter' are already stale (GB300 DGX Station, RTX PRO 6000 Server
Edition), so architecture marketing names and segment labels are dropped;
every row is now 'SMxxx (product examples)'. Per Brian Ryu's feedback.

AI-assisted (Claude Code).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@@ -0,0 +1,64 @@
name: 🐛 Bug Report

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are the emojis in the "name" necessary? i don't get it

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ecosystem convention — vLLM (bug, feature) and PyTorch (bug, feature) use this exact 🐛/🚀 pair in their template names (SGLang too, with 🐞). They help visual scanning in the template chooser, so keeping them.

- bug template: Environment field switches from prefilled value to
  placeholder + render:text — prefilled content satisfied required:true,
  letting reports through without any environment output (CodeRabbit)
- bug template: split error messages/logs out of the reproduction field
  into a dedicated optional textarea, following the claude-code template
  structure (aleozlx)
- collect_env: canonicalize installed-distribution names ([-_.]+ -> -)
  to match _check_pin, so underscore metadata names like flashinfer_python
  resolve in pin diagnostics (CodeRabbit)
- collect_env: redact env values whose name contains KEY/TOKEN/SECRET/
  PASSWORD/CREDENTIAL — the broad prefixes can match e.g. NVIDIA_API_KEY
  and reports are pasted publicly (CodeRabbit). Home-dir paths are kept
  as-is: path identity is the report's forensic payload.
- collect_env: version-from-filename regex accepts single-number suffixes
  like libfoo.so.8 (Gemini)

AI-assisted (Claude Code).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@aleozlx aleozlx left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

@aleozlx aleozlx added the run-ci label Jul 22, 2026
@aleozlx
aleozlx enabled auto-merge (squash) July 22, 2026 06:29
description: Select every confirmed target.
multiple: true
options:
- SM80 / SM86 (A100, A30, RTX 30-series)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SM87 Orin? (avoid getting filed into unknown)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added in edd2607 — folded into the Ampere row: SM80 / SM86 / SM87 (A100, A30, RTX 30-series, Jetson Orin).

- SM90 (H100, H200, H20)
- SM100 (B200, GB200)
- SM103 (B300, GB300)
- SM120 (RTX PRO 6000, RTX 50-series)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SM110 Thor? (avoid getting filed into unknown)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added in edd2607 as SM110 (Jetson AGX Thor, DRIVE AGX Thor). Double-checked the number since Thor was renumbered: CC 10.1 (sm_101) in the CUDA 12.x era → CC 11.0 (sm_110) since CUDA 13.0 — consistent with our is_sm110a_supported (major == 11 and CUDA ≥ 13.0) and nvcc 13.x's arch list (compute_110 present, compute_101 gone).

@aleozlx
aleozlx disabled auto-merge July 22, 2026 06:35
Per review: embedded targets should not have to file under 'Other or
unknown'. Thor is SM110 on CUDA 13+ (renumbered from CC 10.1 in the
CUDA 12.x era) — matches is_sm110a_supported (major == 11, CUDA >= 13.0)
and nvcc 13.x's arch list (compute_110 present, compute_101 gone).

AI-assisted (Claude Code).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@YangXu1990uiuc
YangXu1990uiuc enabled auto-merge (squash) July 22, 2026 07:51
@YangXu1990uiuc
YangXu1990uiuc merged commit 9dd5f75 into flashinfer-ai:main Jul 22, 2026
34 checks passed
YangXu1990uiuc added a commit that referenced this pull request Jul 23, 2026
…on over length limit) (#4100)

## 📌 Description

Follow-up to #4007: the 🐛 Bug Report template was silently missing from
the issue template chooser (only 🚀 Kernel / Feature Request appeared),
even though the file is valid YAML and passes the published issue-forms
JSON schema.

**Root cause:** GitHub enforces an *undocumented* length limit on an
issue form's top-level `description` and silently drops templates that
exceed it. Ours was **218 characters**; the feature template's was 180.

**Evidence (bisected on a fork, one variable per variant):**

| description | length | renders in chooser |
|---|---|---|
| T7 (with `—` and `/`) | 137 | ✅ |
| feature template | 180 | ✅ |
| bug template (byte-exact copy) | 218 | ❌ |
| T6 (all non-ASCII punctuation removed) | 241 | ❌ |

Removing `render:` / `placeholder:` did not help; special characters and
emoji are innocent (feature template has both). The limit sits in (180,
218] — presumably 200, matching the legacy markdown templates' `about`
field.

**Fix:** tighten both templates' descriptions to a single sentence (bug:
61 chars, feature: 94) — the chooser shows the two templates side by
side, so the cross-referencing routing sentences were redundant anyway.
Verified rendering on a fork.

## 🔍 Related Issues

Follow-up to #4007.

## 🚀 Pull Request Checklist

### ✅ Pre-commit Checks

- [x] I have installed `pre-commit` by running `pip install pre-commit`
(or used your preferred method).
- [x] I have installed the hooks with `pre-commit install`.
- [x] I have run the hooks manually with `pre-commit run --all-files`
and fixed any reported issues.

## 🧪 Tests

- [x] Tests have been added or updated as needed.
- [x] All tests are passing (`unittest`, etc.).

(Template-only change; YAML validated, rendering verified on a fork with
identical content.)

## Reviewer Notes

Neither GitHub's issue-forms docs nor the SchemaStore JSON schema encode
this limit — worth remembering when editing template descriptions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
* Updated the bug report template to use shorter, clearer guidance for
reporting items that are broken, wrong, or slower than before (including
correctness issues, crashes, and performance regressions).
* Updated the feature request template description to use a single,
streamlined prompt covering capability improvements and related
requests.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Yang Xu <yanxu@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants