- Java:
25 - Build tool:
Maven 3.8.6+ - Required fast quality gate before merge:
./mvnw -B -ntp verify - Required database gate for persistence changes:
./mvnw -B -ntp -Pintegration-tests verify - Required platform gate for platform, packaging, or public API changes:
./mvnw -B -ntp -Pplatform-acceptance verify - Run the full release-equivalent verification with
./mvnw -B -ntp -Pintegration-tests,platform-acceptance verify. - Docker is required for the integration and platform gates. The platform gate also requires
curl,jq,sha256sum, andjar. - JaCoCo HTML reports are generated during
verifyunder each module'starget/site/jacocodirectory. Failsafe reports for the integration suite are generated undertarget/failsafe-reports.
- Keep platform modules (
dataregistry-platform-paper,dataregistry-platform-velocity) thin. - Put core business behavior in
dataregistry-coreservices. - Keep settings validation in
dataregistry-coreconfig. - Keep ORM entities and repositories in
dataregistry-corepersistence. - New built-in data domains must be feature-toggleable through
DataRegistrySettings.
Data domains can be disabled in config.yml under features:
online-statusconnection-infoactivity-summarysessionssession-visitsplaytimelanguagenicknamesname-historyservice-registry
When a feature is disabled:
- Its entities are not registered in ORM bootstrap.
- Services for that domain must no-op and avoid database writes.
Database profile policy:
- Player-facing domains must use the player profile connection (
database.profiles.players.connection-id). - Service-facing domains must use the service profile connection (
database.profiles.services.connection-id). - Keep domains independent; do not couple optional feature tables into the core identity schema.
- Use the public
DataRegistryApi#featureServices()catalog for cross-feature service discovery instead of duplicating raw queries. Core implementation wiring remains internal.
- Create an entity class in
dataregistry-corepersistence. - Create a repository abstraction in
dataregistry-corepersistence if needed. - Add a focused service in
dataregistry-core. - Add a feature toggle in
DataRegistryFeature,DataRegistrySettings, andDataRegistrySettingsLoader. - Wire feature-aware behavior in runtime startup (
DataRegistryand platform module). - Add unit tests for settings parsing, service behavior, and runtime registration.
- Never log raw unbounded user input without sanitization.
- Keep privacy-sensitive fields opt-in (
persist-ip-address,persist-virtual-host). - Prefer strict input normalization and bounded field lengths.
- Use
SafeConstructor+ constrainedLoaderOptionsfor YAML parsing.
- The applicable Maven verification profile(s) above pass locally.
- New behavior is documented in
README.mdand/or config comments. - New domain changes are feature-toggleable.
- Failure paths are logged with sanitized values only.
- Added/updated tests cover success and failure paths.