You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .github/CONTRIBUTING.md
+2-8Lines changed: 2 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,13 +31,7 @@ make format # Format Kotlin code
31
31
32
32
## Adding a New S3 Operation
33
33
34
-
1. Add DTO(s) in `server/dto/` — XML names must match the [AWS S3 API spec](https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html) exactly
35
-
2. Add store method(s) in `server/store/` — acquire the per-object or per-bucket lock
36
-
3. Add service method(s) in `server/service/` — business logic only, throw `S3Exception` constants
37
-
4. Add controller method(s) in `server/controller/` — HTTP mapping only, no logic, no exception catching
38
-
5. Add integration test(s) in `integration-tests/` — use real AWS SDK v2 against Docker container
39
-
6. Run `make integration-tests` to verify XML serialization
40
-
7. Update `CHANGELOG.md` and `AGENTS.md` configuration tables if new properties are added
34
+
See the full implementation checklist in **[server/AGENTS.md § Implementation Flow](../server/AGENTS.md)** — it is the authoritative step-by-step guide (DTO → Store → Service → Controller → IT → docs).
41
35
42
36
## Code Review Focus
43
37
@@ -110,7 +104,7 @@ Before flagging a blocker, verify:
110
104
-[ ]`make test` passes (unit tests)
111
105
-[ ] The change you're making is within the scope requested
112
106
113
-
If an integration test fails and you cannot determine why without running the full Docker stack, say so explicitly — do not claim success based on compilation alone.
107
+
If `make integration-tests`fails, first verify Docker is available: run `docker info`. If that command fails, Docker is not running — escalate to the human rather than debugging the test failure. Do not claim success based on compilation alone.
Copy file name to clipboardExpand all lines: INVARIANTS.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -65,3 +65,18 @@ No performance SLAs are defined for S3Mock. It is a local testing tool, not a th
65
65
✅ Never use JUnit 4 — it was removed in 5.x — *Enforced by: human review*
66
66
67
67
✅ Never mock AWS SDK clients in integration tests (`*IT.kt`) — use actual SDK v2 clients against a live S3Mock Docker container — *Enforced by: human review*
68
+
69
+
✅ Every code change must include unit tests (`*Test.kt` in `server/`) covering the new or modified logic — *Enforced by: human review*
70
+
71
+
✅ Every behavior observable via the S3 HTTP API must be covered by an integration test (`*IT.kt` in `integration-tests/`) — *Enforced by: human review*
72
+
73
+
---
74
+
75
+
## Definition of Done
76
+
77
+
A task is not complete until all of the following are true:
78
+
79
+
- Unit tests cover the new or modified logic (`*Test.kt` in the module the change was made)
80
+
- Integration tests cover the observable HTTP/S3 behavior (`*IT.kt` in `integration-tests/`)
81
+
-`CHANGELOG.md` has an entry under the current version for any user-facing bug fix or feature
0 commit comments