diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..a9cb2df --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,16 @@ +name: Bug Report +description: Report a bug or regression +title: "fix: " +labels: [bug] +body: + - type: markdown + attributes: + value: | + Use generic descriptors instead of partner, customer, or brand names in public issue titles, bodies, and screenshots unless a maintainer explicitly approves naming them. + - type: textarea + id: summary + attributes: + label: Summary + description: Describe the bug and its impact on upload flow, storage, or runtime behavior. + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..0086358 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..bf75f64 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,16 @@ +name: Feature Request +description: Propose an enhancement +title: "feat: " +labels: [enhancement] +body: + - type: markdown + attributes: + value: | + Use generic descriptors instead of partner, customer, or brand names in public issue titles, bodies, and screenshots unless a maintainer explicitly approves naming them. + - type: textarea + id: summary + attributes: + label: Summary + description: Describe the requested capability. + validations: + required: true diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..4985c99 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,17 @@ +## Summary +- describe the change + +## Motivation +- explain why this change is needed + +## Related Issue +- link the issue or write `N/A` + +## Testing +- describe local verification + +## Upload / Runtime Notes +- include any upload-flow, storage, or media-hook notes when relevant, or write `None` + +## Sensitive Information Check +- confirm that public titles, descriptions, branch names, and screenshots do not mention partner/customer/brand names or other sensitive external identities unless explicitly approved diff --git a/.github/workflows/semantic_pr.yml b/.github/workflows/semantic_pr.yml new file mode 100644 index 0000000..39950a6 --- /dev/null +++ b/.github/workflows/semantic_pr.yml @@ -0,0 +1,12 @@ +name: Semantic PR + +on: + pull_request_target: + types: [opened, edited, synchronize, reopened] + +permissions: + pull-requests: read + +jobs: + semantic-pull-request: + uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1 diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..50dd632 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,31 @@ +# Repository Guidelines + +## Project Structure & Module Organization +- Core Rust service code lives in `src/`. +- Python operational helpers live at the repo root and test coverage for them lives in `tests/`. +- Supporting docs live in `README.md` and `docs/`. +- Keep service runtime logic, resumable upload handling, and media follow-up hooks separated instead of growing broad shared files. + +## Build, Test, and Development Commands +- `cargo test`: run the Rust test suite. +- `cargo check`: run a fast compile-only validation pass. +- `python3 -m unittest discover -s tests -p 'test_*.py'`: run the Python helper tests. +- `cargo run`: start the service locally. +- If runtime configuration or upload semantics change, update the relevant docs and examples in the same change. + +## Coding Style & Naming Conventions +- Use idiomatic Rust with explicit error handling and focused modules. +- Keep Python operational helpers small and task-specific. +- Keep PRs tightly scoped. Do not mix unrelated cleanup, formatting churn, or speculative refactors into the same change. +- Temporary or transitional code must include `TODO(#issue):` with the tracking issue for removal. + +## Pull Request Guardrails +- PR titles must use Conventional Commit format: `type(scope): summary` or `type: summary`. +- Set the correct PR title when opening the PR. Do not rely on fixing it afterward. +- If a PR title changes after opening, verify that the semantic PR title check reruns successfully. +- PR descriptions must include a short summary, motivation, linked issue, and manual test plan. +- Changes to upload flow, resumable sessions, GCS writes, or media follow-up hooks should include representative requests or rollout notes when helpful. + +## Sensitive Information +- Do not commit secrets, private keys, private media, or sensitive operational details. +- Public issues, PRs, branch names, screenshots, and descriptions must not mention corporate partners, customers, brands, campaign names, or other sensitive external identities unless a maintainer explicitly approves it. Use generic descriptors instead.