docs: add CONTRIBUTING.md (testing requirements + pragent notes)
Specifies what counts as "tested" for this repo, the local test commands the bot treats as gates, and how pragent reads the repo config (`.pr-review.json` + static architecture.md from Nexus raw-hosted).
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# Contributing — Canalhandia (Canalhandia Minecraft plugin)
|
||||
|
||||
Canalhandia is a Minecraft Paper plugin that adds PT-BR chat games, item
|
||||
protection, and other in-game commands for the Canalhandia server. This repo
|
||||
holds the plugin source. The companion server config lives at
|
||||
`gitea_admin/canalhandia-config`.
|
||||
|
||||
## Before you open a PR
|
||||
|
||||
1. **Fill in the PR template** (`.gitea/pull_request_template.md`). The
|
||||
*Risk* checklist is the part pragent scores you on — check the boxes that
|
||||
apply, delete the ones that don't.
|
||||
2. **Update the static context** if your change introduces new house rules.
|
||||
See `## Adding house rules` below.
|
||||
3. **Run the gates locally** (see *Test commands*). CI is a single
|
||||
`mvn -B test` against JDK 25 — there's no other infra in this repo.
|
||||
|
||||
## Test commands
|
||||
|
||||
```bash
|
||||
# Run the test suite (JDK 25 required). Same command CI uses:
|
||||
mvn -B test
|
||||
|
||||
# Compile only (faster):
|
||||
mvn -B -DskipTests package
|
||||
|
||||
# Integration: copy the resulting jar into a test Paper server's plugins/
|
||||
# directory, start the server, exercise the affected commands. The chat
|
||||
# and stats paths are NOT covered by unit tests — they need a live server.
|
||||
```
|
||||
|
||||
### What counts as "tested"
|
||||
|
||||
For pragent (and reviewers) to consider a change tested, the PR must show:
|
||||
|
||||
- [ ] `mvn -B test` output from your machine pasted in the PR, **OR** a CI
|
||||
run URL.
|
||||
- [ ] A new behaviour has a JUnit test in `src/test/java/...` that exercises
|
||||
the new code path. New `comando:` blocks need at least one test that
|
||||
sends a fake event and asserts the message format.
|
||||
- [ ] If the change touches the chat immutability rule, the singular-form
|
||||
rule, or the Bedrock fallback, a manual test on a Paper server is
|
||||
required **and** a one-line note pasted in the PR.
|
||||
- [ ] If the change touches `<world>/players/stats`, you must show the
|
||||
file path on a running server (`ls <world>/players/stats/*.json`)
|
||||
and confirm the stats file is updated, not the wrong path.
|
||||
|
||||
### Out of scope for tests
|
||||
|
||||
- Performance / load tests (none in this repo).
|
||||
- E2E against the live server (manual; verify in `canalhandia-config` repo).
|
||||
- UI / browser tests (no web surface).
|
||||
|
||||
## Commit messages
|
||||
|
||||
Conventional commits. Examples:
|
||||
|
||||
- `feat: add per-player cobblestone counter command`
|
||||
- `fix(void): keep inventory when dying in lava void`
|
||||
- `docs: update README build instructions`
|
||||
- `chore: bump pom parent to 1.4.2`
|
||||
|
||||
## Branch names
|
||||
|
||||
`<type>/<short-kebab-description>` matching commit type. Example:
|
||||
`fix/void-keep-inventory`.
|
||||
|
||||
## PR review
|
||||
|
||||
- The bot (`pragent`) reviews every PR labelled `AI-REVIEW`. It reads
|
||||
`.pr-review.json` from `main` + the static `architecture.md` from Nexus
|
||||
raw-hosted. Adding a new house rule? Update both.
|
||||
- Add the `AI-USAGE` label if you want the bot to also post a token /
|
||||
cost-equivalent report on the review.
|
||||
|
||||
## Adding house rules
|
||||
|
||||
If your PR changes how translatable components behave, how chat edits work,
|
||||
how stats are read, or how the Bedrock fallback is rendered, you must:
|
||||
|
||||
1. Update the relevant section in the static `architecture.md` (upload a new
|
||||
copy to Nexus raw-hosted at `canalhandia/architecture.md`).
|
||||
2. Bump `.pr-review.json:instructions` with a one-paragraph summary.
|
||||
3. Add a finding-checklist item to `.gitea/pull_request_template.md` *Risk*
|
||||
section so PR authors know to confirm the rule.
|
||||
|
||||
Bot does not detect house-rule drift automatically — these three updates
|
||||
together are the maintainer contract.
|
||||
|
||||
## Rollback
|
||||
|
||||
A single PR that bumps the plugin jar in `canalhandia-config` rolls back.
|
||||
Plugins are jar-swapped, no migrations.
|
||||
Reference in New Issue
Block a user