Skip to content

PR1/15: monorepo aggregator + pic-sure-bom scaffold#260

Merged
Gcolon021 merged 2 commits into
api_rewrite_stablefrom
psar/01-monorepo-scaffold
Jul 16, 2026
Merged

PR1/15: monorepo aggregator + pic-sure-bom scaffold#260
Gcolon021 merged 2 commits into
api_rewrite_stablefrom
psar/01-monorepo-scaffold

Conversation

@Gcolon021

@Gcolon021 Gcolon021 commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Establishes the multi-module Maven aggregator (pic-sure-api) and the platform/ parent BOM (pic-sure-bom, Java 25). Aggregator lists only platform at this step; modules are added by later PRs. No behavior.


📚 Stacked PR series (1–7) — part of decomposing the pic_sure_api_rewrite monorepo rewrite into sequential, independently-green PRs. Review and merge bottom-up (this PR's base is the PR below it; GitHub auto-retargets to main as each merges). Every PR builds + tests green on its own under JDK 25.

Summary by CodeRabbit

  • New Features

    • Added a centralized dependency and version catalog for the 3.0.0 platform release.
    • Updated the build to use Java 25 and the streamlined platform module layout.
    • Added safeguards for secrets, oversized files, debug statements, invalid migration changes, and unsupported binary artifacts during commits.
  • Documentation

    • Reworked the project README with updated architecture, build, versioning, and migration guidance.
    • Added documentation explaining how to use and maintain the platform dependency catalog.
  • Chores

    • Improved targeted code-formatting checks and expanded ignored development files.

@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 69406bf1-33f1-4eda-8c49-cdc0468eeb3c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR establishes a JDK 25 Maven monorepo foundation with a standalone dependency BOM, a simplified root reactor, strengthened pre-commit checks, updated formatting behavior, and revised repository documentation.

Changes

Monorepo foundation

Layer / File(s) Summary
Standalone dependency BOM
platform/pom.xml, platform/README.md
Adds the pic-sure-bom 3.0.0 BOM with Spring, internal artifact, and WireMock version management, plus usage and maintenance documentation.
Root reactor and build configuration
pom.xml
Changes the root project to revision-based 3.0.0 versioning, aggregates platform, imports the BOM, centralizes plugin settings, enforces Java 25, and adds flattened POM generation.
Pre-commit validation and formatting
code-formatting/pre-commit.sh
Adds staged-change checks for secrets, prohibited artifacts, oversized files, applied migrations, and debug markers; scopes Spotless to owning Maven modules and re-stages formatted files.
Repository structure and toolchain guidance
README.md, .sdkmanrc, .gitignore
Documents the monorepo layout, version strategy, JDK requirements, build commands, and migration tracking; pins SDKMAN to JDK 25 and adds ignore rules.

Estimated code review effort: 4 (Complex) | ~45 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: introducing the monorepo aggregator and pic-sure-bom scaffold.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch psar/01-monorepo-scaffold

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@dmpillion

Copy link
Copy Markdown
Contributor

Logo
Checkmarx One – Scan Summary & Detailsad7624ae-c459-4dd0-ba2d-725e1f04aa05


New Issues (24) Checkmarx found the following issues in this Pull Request
# Severity Issue Source File / Package Checkmarx Insight
1 CRITICAL CVE-2026-42581 Maven-io.netty:netty-codec-http-4.1.86.Final
detailsRecommended version: 4.1.133.Final
Description: Netty is an asynchronous, event-driven network application framework. In versions prior to 4.1.133.Final and 4.2.x prior to 4.2.13.Final, `HttpObje...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
2 CRITICAL CVE-2026-42584 Maven-io.netty:netty-codec-http-4.1.86.Final
detailsRecommended version: 4.1.133.Final
Description: Netty is an asynchronous, event-driven network application framework. Prior to 4.1.133.Final and 4.2.x prior to 4.2.13.Final and 5.0.0.Alpha1 and 5...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
3 CRITICAL CVE-2026-44249 Maven-io.netty:netty-handler-4.1.86.Final
detailsRecommended version: 4.1.135.Final
Description: Netty is a network application framework for development of protocol servers and clients. In netty-handler versions through 4.1.134.Final, 4.2.x th...
Attack Vector: NETWORK
Attack Complexity: HIGH
Vulnerable Package
4 HIGH CVE-2023-44487 Maven-io.netty:netty-codec-http2-4.1.86.Final
detailsRecommended version: 4.1.100.Final
Description: The HTTP/2 protocol allows a denial of service (server resource consumption) because request cancellation can reset many streams quickly, as exploi...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
5 HIGH CVE-2024-7254 Maven-com.google.protobuf:protobuf-java-3.21.9
detailsRecommended version: 3.25.5
Description: Any project that parses untrusted Protocol Buffers data containing an arbitrary number of nested groups/series of SGROUP tags can corrupted by exce...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
6 HIGH CVE-2025-55163 Maven-io.netty:netty-codec-http2-4.1.86.Final
detailsRecommended version: 4.1.121.Final-redhat-00003
Description: Netty is an asynchronous, event-driven network application framework. Netty is vulnerable to the "MadeYouReset" DDoS attack. This is a logical vuln...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
7 HIGH CVE-2026-33870 Maven-io.netty:netty-codec-http-4.1.86.Final
detailsRecommended version: 4.1.132.Final
Description: Netty is an asynchronous, event-driven network application framework. In 'netty-microbench' versions through 4.1.131.Final and 4.2.x through 4.2.10...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
8 HIGH CVE-2026-33871 Maven-io.netty:netty-codec-http2-4.1.86.Final
detailsRecommended version: 4.1.132.Final
Description: A remote user can trigger a Denial of Service (DoS) against a Netty HTTP/2 server by sending a flood of `CONTINUATION` frames. The server's lack of...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
9 HIGH CVE-2026-42583 Maven-io.netty:netty-codec-4.1.86.Final
detailsRecommended version: 4.1.97.Final-redhat-00004
Description: Netty is an asynchronous, event-driven network application framework. Prior to 4.1.133.Final and io.netty:netty-codec-compression versions prior t...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
10 HIGH CVE-2026-42585 Maven-io.netty:netty-codec-http-4.1.86.Final
detailsRecommended version: 4.1.133.Final
Description: Netty is an asynchronous, event-driven network application framework. Prior to 4.1.133.Final, 4.2.x prior to 4.2.13.Final and 5.0.0.Alpha1 and 5.0....
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
11 HIGH CVE-2026-42587 Maven-io.netty:netty-codec-http2-4.1.86.Final
detailsRecommended version: 4.1.133.Final
Description: `HttpContentDecompressor` accepts a `maxAllocation` parameter to limit decompression buffer size and prevent decompression bomb attacks. This limit...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
12 HIGH CVE-2026-42587 Maven-io.netty:netty-codec-http-4.1.86.Final
detailsRecommended version: 4.1.133.Final
Description: `HttpContentDecompressor` accepts a `maxAllocation` parameter to limit decompression buffer size and prevent decompression bomb attacks. This limit...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
13 HIGH CVE-2026-45416 Maven-io.netty:netty-handler-4.1.86.Final
detailsRecommended version: 4.1.135.Final
Description: Netty is a network application framework for development of protocol servers and clients. In netty-handler versions through 4.1.134.Final, 4.2.x th...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
14 HIGH CVE-2026-48043 Maven-io.netty:netty-codec-http2-4.1.86.Final
detailsRecommended version: 4.1.135.Final
Description: Netty is a network application framework for development of protocol servers and clients. In netty-codec-http2 prior to versions 4.1.135.Final and ...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
15 HIGH CVE-2026-50010 Maven-io.netty:netty-handler-4.1.86.Final
detailsRecommended version: 4.1.135.Final
Description: Netty is a network application framework for development of protocol servers and clients. Prior to version 4.1.135.Final and 4.2.x prior to 4.2.15....
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
16 HIGH Cxfa47c4e4-5ef9 Maven-com.fasterxml.jackson.core:jackson-core-2.15.2
detailsRecommended version: 2.18.6
Description: The non-blocking (async) JSON parser in jackson-core bypasses the "maxNumberLength" constraint (default: 1000 characters) defined in "StreamReadCon...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
17 MEDIUM CVE-2023-34462 Maven-io.netty:netty-handler-4.1.86.Final
detailsRecommended version: 4.1.94.Final
Description: Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clien...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
18 MEDIUM CVE-2024-29025 Maven-io.netty:netty-codec-http-4.1.86.Final
detailsRecommended version: 4.1.97.Final-redhat-00004
Description: Netty is an asynchronous event-driven network application framework for the rapid development of maintainable high-performance protocol servers & c...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
19 MEDIUM CVE-2024-47535 Maven-io.netty:netty-common-4.1.86.Final
detailsRecommended version: 4.1.108.Final-redhat-00002
Description: Netty is an asynchronous event-driven network application framework for rapidly developing maintainable high-performance protocol servers & clients...
Attack Vector: LOCAL
Attack Complexity: LOW
Vulnerable Package
20 MEDIUM CVE-2025-58057 Maven-io.netty:netty-codec-http-4.1.86.Final
detailsRecommended version: 4.1.123.Final-redhat-00001
Description: Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clien...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
21 MEDIUM CVE-2025-58057 Maven-io.netty:netty-codec-4.1.86.Final
detailsRecommended version: 4.1.97.Final-redhat-00004
Description: Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clien...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
22 MEDIUM CVE-2025-58057 Maven-io.netty:netty-codec-http2-4.1.86.Final
detailsRecommended version: 4.1.123.Final-redhat-00001
Description: Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clien...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
23 MEDIUM CVE-2025-67735 Maven-io.netty:netty-codec-http-4.1.86.Final
detailsRecommended version: 4.1.129.Final
Description: Netty is an asynchronous, event-driven network application framework. In versions prior to 4.1.129.Final and 4.2.x prior to 4.2.8.Final, the `io.ne...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
24 LOW CVE-2025-58056 Maven-io.netty:netty-codec-http-4.1.86.Final
detailsRecommended version: 4.1.123.Final-redhat-00001
Description: Netty is an asynchronous event-driven network application framework for development of maintainable high performance protocol servers and clients. ...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package

Fixed Issues (5) Great job! The following issues were fixed in this Pull Request
Severity Issue Source File / Package
CRITICAL CVE-2018-9116 Maven-com.github.tomakehurst:wiremock-standalone-2.14.0
MEDIUM CVE-2018-9117 Maven-com.github.tomakehurst:wiremock-standalone-2.14.0
MEDIUM CVE-2023-41329 Maven-com.github.tomakehurst:wiremock-jre8-2.27.2
MEDIUM CVE-2023-41329 Maven-com.github.tomakehurst:wiremock-standalone-2.14.0
MEDIUM CVE-2025-48924 Maven-org.apache.commons:commons-lang3-3.7

Use @Checkmarx to interact with Checkmarx PR Assistant.
Examples:
@Checkmarx how are you able to help me?
@Checkmarx rescan this PR

@Gcolon021 Gcolon021 changed the title PR1/7: monorepo aggregator + pic-sure-bom scaffold PR1/14: monorepo aggregator + pic-sure-bom scaffold Jul 11, 2026
@Gcolon021 Gcolon021 self-assigned this Jul 14, 2026
@Gcolon021 Gcolon021 added the enhancement New feature or request label Jul 14, 2026
@Gcolon021
Gcolon021 marked this pull request as ready for review July 14, 2026 14:50

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@code-formatting/pre-commit.sh`:
- Line 98: Update the restaging flow around the `git add $FILES_TO_RESTAGE`
command so it does not replace partial staging with each file’s full
working-tree contents. Preserve the original index, apply only
formatter-produced changes to the already staged portions, and rescan the
resulting index before completing the commit.
- Around line 27-44: Make staged-path handling pathname-safe in
code-formatting/pre-commit.sh lines 27-44 by consuming STAGED without shell word
splitting or glob expansion, so JAVABIN detection and the large-file loop
validate filenames containing whitespace or glob characters. At
code-formatting/pre-commit.sh line 97, quote the complete -DspotlessFiles
property and escape each filename before constructing the regex. Preserve the
existing validation and formatting behavior for ordinary paths.
- Line 97: Quote the complete -DspotlessFiles argument in the pre-commit Maven
invocation so staged Java paths containing whitespace remain a single argument,
while preserving the existing SPOTLESS_MODULES and STAGED_JAVA_FILES_AS_REGEX
values.
- Line 54: Update the CHANGED_MIGRATIONS git diff command to disable rename
detection and inspect only modified or deleted paths, so migration renames are
evaluated using their original filenames rather than destinations. Preserve the
existing migration-path pattern matching and empty-result handling.

In `@platform/pom.xml`:
- Around line 10-17: Update the standalone BOM project version in
platform/pom.xml from the hardcoded value to ${revision}, and add a local
revision property defaulting to 3.0.0 alongside the existing properties. Keep
the BOM’s standalone behavior and reactor alignment with the root revision.

In `@pom.xml`:
- Around line 94-98: Update the Eclipse formatter version under the Spotless
Java configuration in pom.xml from 4.26 to a Java 25-compatible Eclipse JDT
release, ensuring the existing formatter file reference remains unchanged.

In `@README.md`:
- Around line 41-45: Update the README Maven command examples to reflect the
current reactor, which aggregates only platform: mark the whole-reactor and
gateway commands as future examples, or remove them until the corresponding
libraries/services modules are introduced. Keep the existing commands accurate
for the modules currently available.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: dfdd4ce8-14c2-43d5-9a21-b14bcef741f1

📥 Commits

Reviewing files that changed from the base of the PR and between f081c7d and cbe65b4.

📒 Files selected for processing (7)
  • .gitignore
  • .sdkmanrc
  • README.md
  • code-formatting/pre-commit.sh
  • platform/README.md
  • platform/pom.xml
  • pom.xml

Comment on lines +27 to +44
STAGED=$(git diff --staged --name-only --diff-filter=ACMR)
JAVABIN=$(printf '%s\n' "$STAGED" | grep -i '\.javabin$' || true)
if [ -n "$JAVABIN" ]; then
echo '✖ Refusing to commit .javabin data file(s):' 1>&2
printf ' %s\n' $JAVABIN 1>&2
echo ' HPDS .javabin blobs are build/data artifacts and must not be committed.' 1>&2
echo ' Unstage them: git reset HEAD <file>' 1>&2
cd "$CWD"; exit 1
fi

MAX_BYTES=$((5 * 1024 * 1024)) # 5 MB
LARGE=""
for f in $STAGED; do
sz=$(git cat-file -s ":$f" 2>/dev/null || echo 0)
if [ "$sz" -gt "$MAX_BYTES" ]; then
LARGE="$LARGE $f ($sz bytes)\n"
fi
done

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Handle staged filenames without shell word splitting. Multiple checks assume paths contain no whitespace or glob characters, causing safeguards or formatting to fail for valid filenames.

  • code-formatting/pre-commit.sh#L27-L44: consume staged names using a pathname-safe representation so large files cannot bypass validation.
  • code-formatting/pre-commit.sh#L97-L97: quote the complete -DspotlessFiles property and escape filenames before embedding them in a regex.
🧰 Tools
🪛 Shellcheck (0.11.0)

[info] 31-31: Double quote to prevent globbing and word splitting.

(SC2086)

📍 Affects 1 file
  • code-formatting/pre-commit.sh#L27-L44 (this comment)
  • code-formatting/pre-commit.sh#L97-L97
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@code-formatting/pre-commit.sh` around lines 27 - 44, Make staged-path
handling pathname-safe in code-formatting/pre-commit.sh lines 27-44 by consuming
STAGED without shell word splitting or glob expansion, so JAVABIN detection and
the large-file loop validate filenames containing whitespace or glob characters.
At code-formatting/pre-commit.sh line 97, quote the complete -DspotlessFiles
property and escape each filename before constructing the regex. Preserve the
existing validation and formatting behavior for ordinary paths.

Source: Linters/SAST tools


# --- Flyway migration immutability ----------------------------------------
# Applied migrations are immutable; changing one breaks Flyway checksum validation.
CHANGED_MIGRATIONS=$(git diff --staged --name-only --diff-filter=MRD | grep -E '(^|/)V[0-9][^/]*__[^/]*\.sql$' || true)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Detect migration renames by their original path.

With rename detection enabled, --name-only reports the destination, so renaming V1__init.sql to a nonmatching name can evade this check. Disable rename detection and inspect modifications/deletions:

Proposed fix
-CHANGED_MIGRATIONS=$(git diff --staged --name-only --diff-filter=MRD | grep -E '(^|/)V[0-9][^/]*__[^/]*\.sql$' || true)
+CHANGED_MIGRATIONS=$(git diff --staged --no-renames --name-only --diff-filter=DM | grep -E '(^|/)V[0-9][^/]*__[^/]*\.sql$' || true)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
CHANGED_MIGRATIONS=$(git diff --staged --name-only --diff-filter=MRD | grep -E '(^|/)V[0-9][^/]*__[^/]*\.sql$' || true)
CHANGED_MIGRATIONS=$(git diff --staged --no-renames --name-only --diff-filter=DM | grep -E '(^|/)V[0-9][^/]*__[^/]*\.sql$' || true)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@code-formatting/pre-commit.sh` at line 54, Update the CHANGED_MIGRATIONS git
diff command to disable rename detection and inspect only modified or deleted
paths, so migration renames are evaluated using their original filenames rather
than destinations. Preserve the existing migration-path pattern matching and
empty-result handling.

[ -f "$d/pom.xml" ] && printf '%s\n' "$d"
done | sort -u | paste -sd',' -)
if [ -n "$SPOTLESS_MODULES" ]; then
mvn -pl "$SPOTLESS_MODULES" spotless:apply -DspotlessFiles=^.*$STAGED_JAVA_FILES_AS_REGEX

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Quote the complete Spotless property argument.

A staged Java path containing whitespace splits -DspotlessFiles into multiple Maven arguments.

-       mvn -pl "$SPOTLESS_MODULES" spotless:apply -DspotlessFiles=^.*$STAGED_JAVA_FILES_AS_REGEX
+       mvn -pl "$SPOTLESS_MODULES" spotless:apply "-DspotlessFiles=^.*$STAGED_JAVA_FILES_AS_REGEX"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
mvn -pl "$SPOTLESS_MODULES" spotless:apply -DspotlessFiles=^.*$STAGED_JAVA_FILES_AS_REGEX
mvn -pl "$SPOTLESS_MODULES" spotless:apply "-DspotlessFiles=^.*$STAGED_JAVA_FILES_AS_REGEX"
🧰 Tools
🪛 Shellcheck (0.11.0)

[info] 97-97: Double quote to prevent globbing and word splitting.

(SC2086)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@code-formatting/pre-commit.sh` at line 97, Quote the complete -DspotlessFiles
argument in the pre-commit Maven invocation so staged Java paths containing
whitespace remain a single argument, while preserving the existing
SPOTLESS_MODULES and STAGED_JAVA_FILES_AS_REGEX values.

Source: Linters/SAST tools

done | sort -u | paste -sd',' -)
if [ -n "$SPOTLESS_MODULES" ]; then
mvn -pl "$SPOTLESS_MODULES" spotless:apply -DspotlessFiles=^.*$STAGED_JAVA_FILES_AS_REGEX
git add $FILES_TO_RESTAGE

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🔴 Critical | 🏗️ Heavy lift

Do not stage previously unstaged content after the secret scan.

git add $FILES_TO_RESTAGE replaces partial staging with each file’s complete working-tree state. Unrelated changes—including secrets not seen by Gitleaks—can enter the commit after validation. Preserve the original index and update only formatter-produced staged content, then rescan the resulting index.

🧰 Tools
🪛 Shellcheck (0.11.0)

[info] 98-98: Double quote to prevent globbing and word splitting.

(SC2086)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@code-formatting/pre-commit.sh` at line 98, Update the restaging flow around
the `git add $FILES_TO_RESTAGE` command so it does not replace partial staging
with each file’s full working-tree contents. Preserve the original index, apply
only formatter-produced changes to the already staged portions, and rescan the
resulting index before completing the commit.

Source: Linters/SAST tools

Comment thread platform/pom.xml
Comment on lines +10 to +17
<version>3.0.0</version>
<packaging>pom</packaging>
<name>PIC-SURE BOM</name>
<description>Bill of Materials for PIC-SURE API dependencies</description>
<properties>
<!-- Duplicated from the root parent by design (standalone BOM cannot inherit).
Bump these in lockstep with the root pom. -->
<spring-boot.version>3.5.9</spring-boot.version>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

git ls-files pom.xml platform/pom.xml
printf '\n--- pom.xml ---\n'
cat -n pom.xml
printf '\n--- platform/pom.xml ---\n'
cat -n platform/pom.xml

Repository: hms-dbmi/pic-sure

Length of output: 14212


🏁 Script executed:

#!/bin/bash
set -euo pipefail
printf 'Files:\n'
git ls-files pom.xml platform/pom.xml
printf '\n--- pom.xml ---\n'
cat -n pom.xml
printf '\n--- platform/pom.xml ---\n'
cat -n platform/pom.xml

Repository: hms-dbmi/pic-sure

Length of output: 14219


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Root POM references to platform BOM:\n'
rg -n 'pic-sure-bom|platform/pom.xml|<revision>|<version>' pom.xml platform/pom.xml

printf '\nModule declarations in root POM:\n'
rg -n '<module>|<parent>|<dependencyManagement>|<relativePath>' pom.xml

Repository: hms-dbmi/pic-sure

Length of output: 2278


🏁 Script executed:

#!/bin/bash
set -euo pipefail
echo "--- root pom version/import lines ---"
rg -n '\${revision}|pic-sure-bom|<module>|<version>' pom.xml platform/pom.xml

Repository: hms-dbmi/pic-sure

Length of output: 323


Align platform/pom.xml with ${revision}.

platform/pom.xml is a standalone BOM, so it needs its own ${revision} default. Hardcoding 3.0.0 breaks reactor resolution whenever the root is built with a different -Drevision, because the root imports pic-sure-bom:${revision} but this module still builds as 3.0.0. Use <version>${revision}</version> here and add a local <revision>3.0.0</revision> default.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@platform/pom.xml` around lines 10 - 17, Update the standalone BOM project
version in platform/pom.xml from the hardcoded value to ${revision}, and add a
local revision property defaulting to 3.0.0 alongside the existing properties.
Keep the BOM’s standalone behavior and reactor alignment with the root revision.

Comment thread pom.xml
Comment on lines +94 to +98
<java>
<eclipse>
<version>4.26</version>
<file>${maven.multiModuleProjectDirectory}/code-formatting/eclipse-formatter.xml</file>
</eclipse>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== pom.xml around formatter/toolchain ==\n'
nl -ba pom.xml | sed -n '70,120p'

printf '\n== Spotless / formatter references ==\n'
rg -n "spotless|eclipse-formatter|eclipse>4\.26|maven.compiler|java.version|release>25|source>25|target>25|toolchain" pom.xml

Repository: hms-dbmi/pic-sure

Length of output: 237


🌐 Web query:

Eclipse JDT 4.26 Java 19 support formatter language level Java 25 compatibility

💡 Result:

Eclipse JDT 4.26, which was released in November 2022 as part of the Eclipse 2022-12 simultaneous release, provides official support for Java 19 [1][2][3]. This support includes various Java 19 features such as Record Patterns (Preview), Pattern Matching for Switch (Third Preview), Virtual Threads (Preview), and Structured Concurrency (Incubator) [1]. Regarding Java 25, Eclipse JDT compatibility and feature support are handled in much later versions of the Eclipse IDE (such as Eclipse 2025-09/4.37 and later) [4]. Java 25 features, including Module Import Declarations, Compact Source Files, and Flexible Constructor Bodies, were officially integrated for Eclipse 2025-09 (4.37) [4]. Because Eclipse JDT 4.26 is a legacy version from 2022, it does not support Java 25; trying to use Java 25 as a project runtime in such an outdated environment will result in compatibility errors [5][6]. The formatter and language-level support for modern features like "import module" (Java 25) are specifically introduced in subsequent Eclipse releases, such as the 4.38 development cycle [7].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the formatter file and any documented compatibility notes in-repo.
printf '\n== formatter file header ==\n'
nl -ba code-formatting/eclipse-formatter.xml | sed -n '1,80p'

printf '\n== repo mentions of formatter version ==\n'
rg -n "4\.26|eclipse-formatter.xml|Spotless|formatter" -S .

Repository: hms-dbmi/pic-sure

Length of output: 224


🌐 Web query:

site:eclipse.dev/eclipse/news/4.26/jdt.php Java 19 support formatter

💡 Result:

Eclipse JDT 4.26 adds Java 19 support; the release notes list support for Record Patterns (preview), Pattern Matching for Switch (third preview), Virtual Threads (preview), and Structured Concurrency (incubator). I don’t see any formatter-specific Java 19 changes on that page. [1]

[1] Eclipse Project 4.26 - New and Noteworthy (JDT)


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== pom.xml formatter/toolchain section ==\n'
awk 'NR>=70 && NR<=120 {printf "%4d  %s\n", NR, $0}' pom.xml

printf '\n== exact Spotless / Java references in pom.xml ==\n'
grep -nE 'spotless|eclipse-formatter|maven.compiler|java.version|release>|source>|target>|toolchain' pom.xml || true

printf '\n== formatter file first lines ==\n'
awk 'NR>=1 && NR<=40 {printf "%4d  %s\n", NR, $0}' code-formatting/eclipse-formatter.xml

Repository: hms-dbmi/pic-sure

Length of output: 7772


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== file list hints ==\n'
find . -maxdepth 2 \( -name 'pom.xml' -o -path './code-formatting/*' \) | sed 's#^\./##'

printf '\n== pom.xml version snippets ==\n'
python3 - <<'PY'
from pathlib import Path
text = Path('pom.xml').read_text()
for key in ['25', '4.26', 'spotless', 'eclipse-formatter', 'maven.compiler', 'toolchain']:
    print(f'-- {key} --')
    for i, line in enumerate(text.splitlines(), 1):
        if key in line:
            print(f'{i}: {line}')
PY

Repository: hms-dbmi/pic-sure

Length of output: 1252


Use a Java 25-compatible Eclipse formatter Spotless pins Eclipse JDT 4.26 here, which only supports Java 19. Bump the formatter version to one that parses Java 25 syntax so formatting doesn’t fail on valid source.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pom.xml` around lines 94 - 98, Update the Eclipse formatter version under the
Spotless Java configuration in pom.xml from 4.26 to a Java 25-compatible Eclipse
JDT release, ensuring the existing formatter file reference remains unchanged.

Comment thread README.md Outdated
Comment on lines +41 to +45
# whole new reactor (platform + libs + services); legacy is NOT included
mvn verify

To run the app for development, go into the pic-sure-api-wildfly folder and use this:
# just the gateway (and what it needs)
mvn -pl services/pic-sure-gateway -am verify

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Document the reactor that exists in this PR.

The root currently aggregates only platform, so mvn verify does not build libraries/services and the gateway -pl command cannot select a reactor module yet. Mark these as future commands or add them when those modules are introduced.

Proposed adjustment
-# whole new reactor (platform + libs + services); legacy is NOT included
+# current reactor (platform only); legacy is NOT included
 mvn verify
 
-# just the gateway (and what it needs)
-mvn -pl services/pic-sure-gateway -am verify
+# Gateway build command will be added when that module joins the reactor.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# whole new reactor (platform + libs + services); legacy is NOT included
mvn verify
To run the app for development, go into the pic-sure-api-wildfly folder and use this:
# just the gateway (and what it needs)
mvn -pl services/pic-sure-gateway -am verify
# current reactor (platform only); legacy is NOT included
mvn verify
# Gateway build command will be added when that module joins the reactor.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 41 - 45, Update the README Maven command examples to
reflect the current reactor, which aggregates only platform: mark the
whole-reactor and gateway commands as future examples, or remove them until the
corresponding libraries/services modules are introduced. Keep the existing
commands accurate for the modules currently available.

Comment thread README.md Outdated
## Gateway migration

Both of these will pause the build allowing you to connect your debuggers.
Design docs live in `docs/superpowers/` (local-only, gitignored). The migration is tracked under Jira epic ALS-10463; work happens on the long-lived `pic_sure_api_rewrite` branch, merged when complete.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems inaccurate: you're merging to main~

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll fix that. My long lived branch is named pic_sure_api_rewrite. I don't intend to merge this to main any time soon. I'll create a clean branch off of main I can merge it to.

@Gcolon021
Gcolon021 changed the base branch from main to api_rewrite_stable July 14, 2026 17:40
@Gcolon021
Gcolon021 force-pushed the psar/01-monorepo-scaffold branch from cbe65b4 to b072328 Compare July 14, 2026 18:08
@Gcolon021 Gcolon021 changed the title PR1/14: monorepo aggregator + pic-sure-bom scaffold PR1/15: monorepo aggregator + pic-sure-bom scaffold Jul 14, 2026
* Initial Commit

* Refactor LoggingClient to use Sender interface (#1)

* Refactor LoggingClient to use Sender interface

* Refactor LoggingClient to use config in JdkHttpSender

* Add Sender interface for logging functionality

* Implement JdkHttpSender for asynchronous HTTP requests

* Add NoOpSender class for logging

* Refactor LoggingClientTest for clarity and safety

* Refactor test method signatures for consistency

* Setup CI (#2)

* add package wf

* Format

* Add wf files

Update README.md

* Add @AuditEvent annotation for declarative endpoint categorization

* Update LoggingClientFactory.java

* Handle session ids as first class

* format

* Initial commit

* ALS-11850: Initial commit. Move common HPDS and PIC-SURE code to common repo (#1)

* build: vendor pic-sure-commons + pic-sure-logging-client (subtree import, pre-v1v3 state)

---------

Co-authored-by: James <Jamestp19@gmail.com>
Co-authored-by: ramari16 <ramari16@gmail.com>
@Gcolon021
Gcolon021 merged commit 4711c0d into api_rewrite_stable Jul 16, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants