diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yml b/.github/ISSUE_TEMPLATE/1-bug-report.yml new file mode 100644 index 00000000..9551ebdd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1-bug-report.yml @@ -0,0 +1,96 @@ +name: Bug report +description: Something in GeneLab is broken or misbehaving. +title: "bug: " +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to report a bug. Please read the + [reporting guidelines](https://github.com/KraHsu/GeneLab/blob/main/CONTRIBUTING.md#reporting-issues) + first — the **Troubleshooting** section of the [README](https://github.com/KraHsu/GeneLab#readme) + already covers several known pitfalls (idle GPU with the default CPU sim backend, + Hopper/SM 90 fatbin errors, Wayland viewer failures). + Issues are welcome in English or 中文. + - type: checkboxes + id: preflight + attributes: + label: Pre-flight checklist + options: + - label: I searched existing issues (open and closed) and found no duplicate. + required: true + - label: I checked the README Troubleshooting section — this is not one of the documented pitfalls. + required: true + - label: The bug does not reproduce in a pure Genesis script without GeneLab. (If unsure, leave unchecked and say so below — simulator bugs belong on the Genesis tracker.) + required: false + - type: textarea + id: what-happened + attributes: + label: What happened + description: What went wrong, and what did you expect instead? + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Steps to reproduce + description: > + Exact commands and, if relevant, a minimal config or extension snippet. + A single `genelab …` invocation against a registered task is ideal. + placeholder: | + uv sync --extra torch-cu128 + genelab train GeneLab-Inverted-Pendulum-v0 --max_iterations 10 + validations: + required: true + - type: textarea + id: environment + attributes: + label: Environment + description: | + Paste the output of + + `python -c "import genelab, genesis, torch; print('genelab', genelab.__version__); print('genesis', genesis.__version__); print('torch', torch.__version__, 'cuda', torch.version.cuda)"` + + plus your OS, GPU model, NVIDIA driver version, and the `torch-*` extra you synced. + render: shell + placeholder: | + genelab 0.4.0 + genesis 1.2.0 + torch 2.8.0 cuda 12.8 + OS: Ubuntu 24.04 · GPU: RTX 4090 · driver 570.xx · extra: torch-cu128 + validations: + required: true + - type: dropdown + id: rl-backend + attributes: + label: RL backend + description: The backend dispatched by the task's agent config, if the bug involves training/eval. + options: + - Not applicable + - rsl_rl + - skrl + - stable_baselines3 + validations: + required: true + - type: dropdown + id: sim-backend + attributes: + label: Simulation backend + description: "`SimulationCfg.gpu` in the task's config (defaults to `False`, the CPU backend)." + options: + - Not applicable / unknown + - CPU (gpu=False, the default) + - GPU (gpu=True) + validations: + required: true + - type: textarea + id: logs + attributes: + label: Logs / traceback + description: Full, untruncated traceback or relevant log output. + render: shell + - type: textarea + id: extra + attributes: + label: Anything else + description: Workarounds tried, regression window (worked on version X), related issues, … diff --git a/.github/ISSUE_TEMPLATE/2-feature-request.yml b/.github/ISSUE_TEMPLATE/2-feature-request.yml new file mode 100644 index 00000000..d8cb0367 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2-feature-request.yml @@ -0,0 +1,55 @@ +name: Feature request +description: Propose a new capability or an improvement to an existing one. +title: "feat: " +labels: ["enhancement"] +body: + - type: checkboxes + id: preflight + attributes: + label: Pre-flight checklist + options: + - label: I searched existing issues (open and closed) and found no duplicate. + required: true + - label: This belongs in GeneLab — it is not a simulator feature that should go to the Genesis tracker. + required: true + - type: dropdown + id: area + attributes: + label: Area + options: + - CLI (train / play / eval / export / benchmark / project) + - Registry, configs & extension API + - Environments & managers (actions / observations / rewards / events / terminations) + - Robots & asset zoo + - RL backends (rsl_rl / skrl / stable_baselines3) + - Scene, terrains & sensors + - Documentation & examples + - Other / unsure + validations: + required: true + - type: textarea + id: motivation + attributes: + label: Problem / motivation + description: What are you trying to do that GeneLab currently makes hard or impossible? Concrete use cases beat abstract wishes. + validations: + required: true + - type: textarea + id: proposal + attributes: + label: Proposed solution + description: What should the API / CLI / behavior look like? A sketch of the config or command line is enough. + validations: + required: true + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Workarounds you use today, or designs you rejected and why. + - type: checkboxes + id: contribution + attributes: + label: Contribution + options: + - label: I am willing to open a PR implementing this (see CONTRIBUTING.md for the workflow). + required: false diff --git a/.github/ISSUE_TEMPLATE/3-documentation.yml b/.github/ISSUE_TEMPLATE/3-documentation.yml new file mode 100644 index 00000000..5585f794 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3-documentation.yml @@ -0,0 +1,41 @@ +name: Documentation +description: Report an error, gap, or unclear passage in the docs. +title: "docs: " +labels: ["documentation"] +body: + - type: markdown + attributes: + value: | + The rendered site lives at (English at `/`, 中文 at `/zh/`). + Every page exists in both languages and they are kept in lockstep — if only one variant is wrong, + say which one. + - type: input + id: page + attributes: + label: Page + description: URL on the docs site, or the source path under `docs/`. + placeholder: https://krahsu.github.io/GeneLab/… or docs/…/page.en.md + validations: + required: true + - type: dropdown + id: language + attributes: + label: Affected language variant + options: + - Both (content problem) + - English page only + - 中文 page only + validations: + required: true + - type: textarea + id: problem + attributes: + label: What is wrong or missing + description: Quote the passage if possible. For commands/config paths that don't work, include the error you got. + validations: + required: true + - type: textarea + id: suggestion + attributes: + label: Suggested fix + description: Optional — proposed wording, or what information the page should add. diff --git a/.github/ISSUE_TEMPLATE/4-question.yml b/.github/ISSUE_TEMPLATE/4-question.yml new file mode 100644 index 00000000..00c6e3f8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/4-question.yml @@ -0,0 +1,27 @@ +name: Question / help +description: A usage question the docs and README don't answer. +title: "question: " +labels: ["question"] +body: + - type: checkboxes + id: preflight + attributes: + label: Pre-flight checklist + options: + - label: I checked the [documentation](https://krahsu.github.io/GeneLab/) and the README (including Troubleshooting) and didn't find an answer. + required: true + - label: I searched existing issues for the same question. + required: true + - type: textarea + id: question + attributes: + label: Question + description: What are you trying to achieve, and where did you get stuck? Include the commands or config you tried. + validations: + required: true + - type: textarea + id: environment + attributes: + label: Environment (if relevant) + description: GeneLab / Genesis / torch versions, OS, GPU — see the bug form for the one-liner. + render: shell diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..bea36be3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: GeneLab documentation + url: https://krahsu.github.io/GeneLab/ + about: Guides, how-tos, and API reference — check here before filing a question. + - name: Genesis upstream issue tracker + url: https://github.com/Genesis-Embodied-AI/Genesis/issues + about: Bugs that reproduce in a pure Genesis script without GeneLab belong upstream. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aadb1351..1ea6479e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,28 @@ # Contributing to GeneLab +## Reporting issues + +Bug reports, feature requests, docs fixes, and questions all go through the +[issue forms](https://github.com/KraHsu/GeneLab/issues/new/choose) — blank issues are disabled. +English is preferred; 中文 is fine too. + +- **Search first.** Check open *and closed* issues for a duplicate before filing. +- **One problem per issue.** Two bugs means two issues, even if they were found together. +- **Check the README Troubleshooting section.** The idle-GPU default (`SimulationCfg.gpu=False`), + the Hopper/SM 90 fatbin error, and the Wayland viewer failure are documented pitfalls, not bugs. +- **Route simulator bugs upstream.** A problem that reproduces in a pure Genesis script without + GeneLab belongs on the [Genesis tracker](https://github.com/Genesis-Embodied-AI/Genesis/issues); + a cross-link here is welcome if GeneLab is affected too. +- **Make bugs reproducible.** Include the exact command (ideally a single `genelab …` invocation + against a registered task), the full untruncated traceback, and the environment block the bug + form asks for — GeneLab / Genesis / torch versions, OS, GPU, driver, and the `torch-*` extra. +- **Reproduce on the latest release or `main`** when possible — fixes only land there. + +The forms apply the primary label (`bug`, `enhancement`, `documentation`, `question`) +automatically; maintainers add the rest (`duplicate`, `wontfix`, `good first issue`, …) during +triage. An issue that goes stale waiting for requested information may be closed and can be +reopened once the information arrives. + ## Development setup GeneLab uses [uv](https://github.com/astral-sh/uv) and requires Python `>=3.12`. Pick exactly one `torch-*` extra — they are mutually exclusive: