# <Project name> — instructions for AI coding agents

Keep this file short (target: under 200 lines). Put rules that matter for one area in a
path-scoped rule file or a skill instead of growing this one.

## What this is
<One paragraph: what the service does, who calls it, what it must never get wrong.>
Stack: Java 25, Spring Boot 4.x, Maven, JUnit 6, Jackson 3 (`tools.jackson.*`).

## Commands (run these; do not guess)
- Build and test everything: `./mvnw -B verify`
- One test class: `./mvnw -B test -Dtest=PricingSpecTest`
- Run locally: `./mvnw spring-boot:run`

## How to work on a task
1. Restate the task in two sentences and list every ambiguity (thresholds, rounding, who is
   affected, error cases). Ask me before coding if any answer would change behaviour.
2. Write acceptance tests from the requirement and my answers FIRST. Run them and show me
   that they fail for the right reason.
3. Implement the smallest change that makes them pass.
4. Run the full build. Report the command and the result line, not "tests pass".

## Tests
- Never edit or delete an existing test to make a build green. If a test seems wrong, stop and
  tell me which test, what it asserts, and why you think it is wrong.
- Tests you write for your own change do not count as evidence that the requirement is met;
  acceptance tests written from my answers do.
- Prefer plain unit tests; use `@SpringBootTest` only when wiring is what is being tested.

## Code conventions
- Constructor injection only. No field `@Autowired`.
- Money is `BigDecimal` with an explicit scale and `RoundingMode`.
- New configuration properties go in a `@ConfigurationProperties` record.
- No new dependency without asking.

## Ask first (do not do these on your own)
- Changing a public API, a database schema or a message format.
- Adding or upgrading a dependency, a Maven plugin or the Java version.
- Touching security configuration, authentication, or anything under `config/security`.
- Deleting code you did not add.

## Never
- Commit secrets, tokens or real customer data. Do not print environment variables.
- Run destructive commands (`rm -rf`, `git reset --hard`, `git push --force`, DROP/TRUNCATE).
- Mark work done without running the build.

## When you finish, report
- The files you changed and why, in one line each.
- The exact build command you ran and its summary line.
- Anything you assumed, anything you skipped, and anything you are not sure about.
