Skip to content

Commit 10c392d

Browse files
docs(contrib): add CONTRIBUTING.md with baseline burndown policy (#139)
* docs(contrib): add CONTRIBUTING.md with baseline burndown policy * fix: clarify wire-shape gate path-filter (not every PR)
1 parent 65cd8aa commit 10c392d

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

CONTRIBUTING.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Contributing to AxonFlow Java SDK
2+
3+
Thank you for your interest in contributing! Please open an issue or pull request via the [GitHub repository](https://github.com/getaxonflow/axonflow-sdk-java).
4+
5+
## Development setup
6+
7+
```bash
8+
./mvnw verify
9+
```
10+
11+
Tests run under JUnit 5. The wire-shape contract gate (under `scripts/wire_shape/`) runs in CI when a PR touches Java sources, the wire-shape baseline, or the gate scripts themselves — see `.github/workflows/wire-shape-contract.yml` for the exact path filter.
12+
13+
## Pull request guidelines
14+
15+
1. Keep PRs focused — one feature or fix per PR.
16+
2. Update `CHANGELOG.md` under `[Unreleased]` for user-visible changes.
17+
3. Ensure `./mvnw verify` is green and the wire-shape contract gate passes.
18+
4. Prefer Jackson `@JsonProperty` on a `@JsonCreator` constructor for any new wire-bound POJO field — that propagates serialization both ways without hand-rolled transformer code.
19+
20+
## Baseline burndown policy
21+
22+
The wire-shape contract gate uses a baseline file (`tests/fixtures/wire-shape-baseline.json`) to grandfather pre-existing drift findings — the gate fails on any *new* drift but tolerates the listed entries. The baseline exists to land the gate without a giant cleanup PR; it is not intended to be permanent.
23+
24+
When your PR touches a type listed in the baseline, do one of:
25+
26+
- **Burn it down.** Realign the POJO with the OpenAPI spec in this PR, regenerate the baseline via `scripts/wire_shape/refresh.py`, and note "burndown: `<entry>`" in the PR description.
27+
- **Justify it.** If the drift can't be resolved in this PR (different scope, blocked on a platform spec change, etc.), say so in the PR description in one line.
28+
29+
CI does not block PRs that touch a baselined type without addressing it, but reviewers will ask the burndown-or-justify question.
30+
31+
## Questions
32+
33+
- Open a GitHub issue
34+
- Email: hello@getaxonflow.com

0 commit comments

Comments
 (0)