diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..91222cb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,84 @@ +name: Bug report +description: Report reproducible behavior that appears incorrect +title: "[Bug]: " +labels: [bug] +body: + - type: markdown + attributes: + value: | + Thanks for helping improve SlurmDeck. Search existing issues first. + For vulnerabilities, use the private security-reporting link instead of this form. + + - type: input + id: version + attributes: + label: SlurmDeck version + description: Run `slurmdeck --version`. + placeholder: slurmdeck 0.1.0 + validations: + required: true + + - type: dropdown + id: interface + attributes: + label: Interface + options: + - CLI + - TUI + - Both + - Automation or JSON output + validations: + required: true + + - type: textarea + id: description + attributes: + label: What happened? + description: Describe the observed behavior and why it appears incorrect. + validations: + required: true + + - type: textarea + id: reproduction + attributes: + label: Reproduction steps + description: Provide the smallest commands or project setup that reproduce the problem. + placeholder: | + 1. Configure ... + 2. Run ... + 3. Observe ... + validations: + required: true + + - type: textarea + id: expected + attributes: + label: Expected behavior + validations: + required: true + + - type: textarea + id: environment + attributes: + label: Environment + description: Include the local OS and Python version, plus relevant Slurm and remote Python versions. + placeholder: | + Local: Ubuntu 24.04, Python 3.12 + Remote: Slurm 24.11, Python 3.11 + + - type: textarea + id: diagnostics + attributes: + label: Diagnostics and logs + description: Include relevant output only. Remove credentials, usernames, hostnames, paths, and personal data. + render: shell + + - type: checkboxes + id: checks + attributes: + label: Checklist + options: + - label: I searched existing issues for this problem. + required: true + - label: I removed credentials, private hostnames, personal data, and other sensitive information. + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..4f223b0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: Security vulnerability + url: https://github.com/dejay-vu/slurmdeck/security/advisories/new + about: Report suspected vulnerabilities privately; do not open a public issue. + - name: Usage and configuration documentation + url: https://github.com/dejay-vu/slurmdeck/tree/main/docs + about: Review the documentation before opening a support request. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..6ebaa2d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,64 @@ +name: Feature request +description: Propose a focused improvement to SlurmDeck +title: "[Feature]: " +labels: [enhancement] +body: + - type: markdown + attributes: + value: | + Thanks for proposing an improvement. For large behavioral or data-format changes, + describe the compatibility and safety implications explicitly. + + - type: textarea + id: problem + attributes: + label: Problem or use case + description: What workflow is difficult or impossible today, and who is affected? + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Proposed behavior + description: Describe the user-visible result rather than only an implementation. + validations: + required: true + + - type: dropdown + id: area + attributes: + label: Area + options: + - CLI + - TUI + - Remote and SSH + - Runs and Slurm submission + - Environments + - Snapshots and results + - Packaging or documentation + - Other + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Include current workarounds or simpler approaches you considered. + + - type: textarea + id: compatibility + attributes: + label: Compatibility and safety + description: Note effects on existing configuration, remote state, destructive operations, or cluster policy. + + - type: checkboxes + id: checks + attributes: + label: Checklist + options: + - label: I searched existing issues for similar requests. + required: true + - label: This request does not include credentials, private cluster details, or personal data. + required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..4085dab --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,25 @@ +## Summary + +Describe what changed and why. + +## User impact + +Describe user-visible behavior, compatibility implications, and any migration +required. Write "None" when the change has no user-visible impact. + +## Safety + +Describe effects on SSH behavior, remote state, snapshots, destructive +operations, credentials, or cluster policy. Write "None" when not applicable. + +## Verification + +List the checks you ran and their results. + +## Checklist + +- [ ] The pull request title follows Conventional Commits. +- [ ] Tests cover observable behavior or the change is documentation/configuration only. +- [ ] User-facing documentation is updated where needed. +- [ ] No credentials, private cluster details, generated outputs, or local instructions are included. +- [ ] Destructive or state-changing behavior remains explicit and reviewable. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ca8fc51..8e717f2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,7 @@ jobs: BASE_SHA: ${{ github.event.pull_request.base.sha }} BEFORE_SHA: ${{ github.event.before }} EVENT_NAME: ${{ github.event_name }} + PR_TITLE: ${{ github.event.pull_request.title }} run: | set -euo pipefail @@ -56,6 +57,11 @@ jobs: cz check --commit-msg-file "$RUNNER_TEMP/commit-message" done + if [[ "$EVENT_NAME" == "pull_request" ]]; then + echo "Checking pull request title" + cz check --message "$PR_TITLE" + fi + checks: runs-on: ubuntu-latest strategy: @@ -110,6 +116,7 @@ jobs: "/LICENSE", "/README.md", "/CHANGELOG.md", + "/CODE_OF_CONDUCT.md", "/CONTRIBUTING.md", "/SECURITY.md", "/docs/configuration.md", diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..f8e9ac0 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,41 @@ +# Code of Conduct + +## Our commitment + +SlurmDeck contributors and maintainers are committed to a welcoming, +professional, and harassment-free community. Participation is open regardless +of background, identity, experience, ability, or viewpoint. + +## Expected behavior + +- Be respectful, patient, and constructive. +- Discuss ideas and evidence rather than attacking people. +- Accept feedback gracefully and acknowledge mistakes. +- Respect privacy and avoid sharing another person's personal or institutional + information without permission. +- Prioritize the safety of users, contributors, and affected communities. + +## Unacceptable behavior + +Harassment, threats, discrimination, sexualized attention, deliberate +intimidation, sustained disruption, doxxing, and other conduct that would be +unreasonable in a professional setting are not acceptable. Retaliation against +someone who reports a concern is also prohibited. + +## Scope + +This policy applies in project repositories, issue trackers, reviews, +discussions, and other spaces where someone is representing SlurmDeck. + +## Reporting and enforcement + +Report conduct concerns privately to the maintainer using a private contact +method listed on their GitHub profile. If none is available, open an issue +requesting a private contact channel without including sensitive details. + +The maintainer will review reports in good faith, protect the reporter's +privacy as far as practical, and respond proportionately. Responses may +include a clarification, warning, content removal, temporary restriction, or +permanent exclusion from project spaces. Anyone directly involved in a report +should not make the final enforcement decision when an uninvolved maintainer +is available. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e3044d0..30cd563 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -93,6 +93,9 @@ installs the wheel and source distribution. ## Pull requests +Use a Conventional Commit-formatted pull request title. SlurmDeck uses squash +merges, so the pull request title becomes the commit subject on `main`. + Describe the user-visible change, safety implications, and checks performed. Keep unrelated refactoring out of the same pull request. Review feedback may request smaller commits or additional failure-path coverage. diff --git a/MANIFEST.in b/MANIFEST.in index ea79467..9d3c21b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,7 @@ include LICENSE include README.md include CHANGELOG.md +include CODE_OF_CONDUCT.md include CONTRIBUTING.md include SECURITY.md include pyproject.toml