Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/pre-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ jobs:
- name: Gradle build (arch + unit + process + model validation + spec export)
run: ./gradlew build --no-daemon

# generateBpmnModels runs as part of `./gradlew build` and writes the typed process API into
# the committed source tree; fail if the .bpmn models and the checked-in generated code drift.
- name: Verify the generated BPMN process API is in sync
run: git diff --exit-code -- 'service/app/src/main/kotlin/io/miragon/blueprint/adapter/process/*ProcessApi.kt'

# The OpenAPI spec is generated by a test and committed; fail if the code and the checked-in
# contract have drifted. See docs/adr/0004-openapi-as-the-checked-in-contract.md.
- name: Verify the committed OpenAPI contract is in sync
Expand Down
3 changes: 3 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ codebase "process" means the BPMN model, so the step rail is `widgets/leasing-pr

- `bpmn-to-code` generates typed process constants from the models at build time; a custom model
test requires every service task to use a delegate expression (`#{beanName}`).
- The generated `*ProcessApi.kt` is committed and **drift-gated**: `./gradlew build` regenerates it
in place, and CI runs `git diff --exit-code` on it, so a `.bpmn` edit without a regenerate fails
the build — same contract as the OpenAPI spec (ADR-0004).
- `bpmnlint` runs on staged `.bpmn` via `.githooks/pre-commit` (install: `npm run hooks:install`).

## Testing
Expand Down
Loading