Uh oh!
There was an error while loading. Please reload this page.
FINERACT-2757: modular design developer documentation - #6315
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds a reproducible architecture-metrics pipeline (generated from compiled bytecode via Gradle) and accompanying developer documentation/visualisations to analyze and explain cross-feature boundary violations as part of FINERACT-2757.
Changes:
- Introduces Gradle-based architecture metrics reporting (package-level and feature-level), plus tasks to regenerate documentation artifacts.
- Adds a Python transformer to turn the generated metrics JSON into Vega-Lite specs and an AsciiDoc “skeleton” reference.
- Adds extensive architecture documentation and commits the generated Vega-Lite diagram specifications used by the docs.
Reviewed changes
Copilot reviewed 6 out of 8 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/archmetrics_to_vega.py | New CLI tool to transform architecture metrics JSON into Vega-Lite specs and generate AsciiDoc skeleton sections. |
| fineract-doc/src/docs/en/diagrams/main-sequence.vl.json | Adds a generated Vega-Lite spec for abstractness vs instability visualisation. |
| fineract-doc/src/docs/en/diagrams/distance-ranking.vl.json | Adds a generated Vega-Lite spec for distance ranking visualisation. |
| fineract-doc/src/docs/en/diagrams/cross-feature-matrix.vl.json | Adds a generated Vega-Lite spec for the cross-feature dependency matrix. |
| fineract-doc/src/docs/en/chapters/architecture/index.adoc | Wires the new cross-feature boundary violations chapter into the architecture docs index. |
| fineract-doc/src/docs/en/chapters/architecture/cross-feature-boundary-violations.adoc | Adds the new detailed chapter describing CFVs, measurements, case studies, and regeneration guidance. |
| build.gradle | Adds and configures the java-architecture-metrics plugin plus aggregate/reporting/regen tasks to produce reports and docs artifacts. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
7c842d6 to
bfe89cbCompareUh oh!
There was an error while loading. Please reload this page.
meonkeys
commented
Aug 31, 2026
Why do all the text lines in Please take a look at
See FINERACT-2795 |
docs built with `./gradlew asciidoctor` from apache/fineract@ef8ae79 change made with `fineract-site docs` Rebuilt so soon after 8120910 because I noticed that build was missing a couple Vega-Lite diagrams... I built locally and ignored these messages: > Task :fineract-doc:asciidoctor Failed to generate image: Could not find the 'vg2svg' executable in PATH; add it to the PATH or specify its location using the 'vg2svg' document attribute :: ../../../build/generated/diagrams/main-sequence.vl.json :: /home/adamm/git/apache/fineract/fineract-doc/build/generated/diagrams//home/adamm/git/apache/fineract/fineract-doc/build/generated/diagrams/main-sequence.vl.json:0 (uri:classloader:/gems/asciidoctor-2.0.18/lib/asciidoctor/parser.rb:build_block) Failed to generate image: no implicit conversion of nil into String :: ../../../build/generated/diagrams/distance-ranking.vl.json :: /home/adamm/git/apache/fineract/fineract-doc/build/generated/diagrams//home/adamm/git/apache/fineract/fineract-doc/build/generated/diagrams/distance-ranking.vl.json:0 (uri:classloader:/gems/asciidoctor-2.0.18/lib/asciidoctor/parser.rb:build_block) Failed to generate image: no implicit conversion of nil into String :: ../../../build/generated/diagrams/cross-feature-matrix.vl.json :: /home/adamm/git/apache/fineract/fineract-doc/build/generated/diagrams//home/adamm/git/apache/fineract/fineract-doc/build/generated/diagrams/cross-feature-matrix.vl.json:0 (uri:classloader:/gems/asciidoctor-2.0.18/lib/asciidoctor/parser.rb:build_block) And under "Abstractness against instability, with the main sequence" I missed the raw JSON with "Failed to generate image: Could not find the 'vl2vg' executable in PATH; add it to the PATH or specify its location using the 'vl2vg' document attribute". Note: Today I also wrote apache/fineract#6315 (comment) and filed https://issues.apache.org/jira/browse/FINERACT-2795 .
Description
This PR adds developer documentation and supporting architecture analysis for cross-feature boundary violations in Apache Fineract as part of
FINERACT-2757.The documentation provides a measured view of dependencies between Fineract features and packages and explains how those dependencies can be progressively reduced as Fineract moves towards stronger module boundaries and an event-driven architecture.
Instead of relying only on package naming conventions or manual analysis, the architecture metrics are generated from compiled bytecode through the Gradle build. The analysis produces both a package-level view, which acts as the ground truth without making feature-grouping assumptions, and a feature-level view that makes the dependency structure easier to understand and document.
The documentation also distinguishes between different forms of coupling — compile-time, database, infrastructure, and runtime/transactional coupling — so that removing a Java dependency is not incorrectly treated as removing the underlying domain or data relationship.
Changes in this PR:
fineract-doc/src/docs/en/chapters/architecture/cross-feature-boundary-violations.adoccontaining the cross-feature boundary violation analysis and developer guidance.io.github.usekylis.java-architecture-metrics.tools/archmetrics_to_vega.pyfor transforming generated architecture metrics into documentation data and Vega-Lite visualisations.fineract-doc/src/docs/en/chapters/architecture/generated-package-overview.adoc, providing a generated section for each measured package and a consistent location for future architectural analysis.The architecture metrics, generated documentation, and diagram data can be regenerated using:
This PR primarily adds developer documentation and architecture-analysis tooling. There are no REST API, database schema, or externally visible behavioural changes.
Related JIRA: https://issues.apache.org/jira/browse/FINERACT-2757
Checklist
Please make sure these boxes are checked before submitting your pull request - thanks!
fineract-provider/src/main/resources/static/legacy-docs/apiLive.htmwith details of any API changes — N/A: no API changes.Your assigned reviewer(s) will follow our guidelines for code reviews.