build: re-pin to qbit-build-parent 2.0.0 and back-merge main (QRun-IO/qqq#766) #4

Merged
KofTwentyTwo merged 12 commits from feature/GH-766-repin-build-parent-2 into develop 2026-09-26 06:08:42 +00:00
KofTwentyTwo commented 2026-09-26 01:46:31 +00:00 (Migrated from github.com)

Summary

Re-pins qbit-standard-process-trace to com.kingsrook:qbit-build-parent:2.0.0 (qqq 4.0.0 GA, Java 21) and adds an opt-in qqq-snapshot profile that verifies it on qqq 4.1.0-SNAPSHOT, so qqq-all can include it. The first commit back-merges main into develop, since main had 7 commits develop lacked.

Merge this PR with a merge commit, not squash or rebase. That keeps main an ancestor of develop, so the next release from develop to main does not conflict again.

Changes

  • 389e366 chore: merge main into develop (git merge --no-ff origin/main). It brings in main's Java 21 parent bump, the 0.2.0 release, the Apache-2.0 LICENSE and NOTICE, the standardized README, and .github/release.yml. Develop's backend-activity-stats feature, its tests, CODEOWNERS and CLAUDE.md are kept; main had none of them. Against origin/develop, the merge changes only LICENSE, NOTICE, README.md, .github/release.yml and two pom.xml lines (parent, revision). No source file changed.
  • eef914d build: re-pin to qbit-build-parent 2.0.0 (qqq 4.0.0). The parent goes to 2.0.0, and the child qqq-bom-pom:0.40.0-SNAPSHOT import that shadowed the parent is removed, so default builds get qqq only from the parent. Java 21 comes from the parent's java.version. One qqq 4.0 API removal broke the test build: StandardProcessTraceTestApplication now calls withInstanceDefaultAuthentication(...), because QInstance.setAuthentication(...) was removed (BREAK-04-11). Main source compiled unchanged. The README prerequisite now says "QQQ application (v4.0.0+)". It said v0.35.0+.
  • 746a364 build: add opt-in qqq-snapshot profile. It imports qqq-bom-pom:${qqq.snapshot.version} (default 4.1.0-SNAPSHOT) ahead of the parent's BOM and adds the Central snapshots repository. The top-level sonatype-snapshots repository only served the old snapshot BOM, so it moved into this profile. The profile is the same one used in qbit-quick-search and the B3 re-pin.
  • 7084430 ci: keep package installs unattended on CircleCI machines. This copies the configure-package-install command and its pre-steps from qbit-quick-search develop onto all five orb jobs. Without it, install_java stalls on needrestart's interactive dialog and hits the 10-minute no-output limit (QRun-IO/qqq-orb#11). Drop it once the orb fixes that.
  • 5328b07 docs: update CLAUDE.md notes for the parent 2.0.0 re-pin. It replaces the stale "branches diverged" and setAuthentication notes.

Other plan steps:

  • Docker integration tests (step 4): none exist. All 4 tests use the in-memory backend, and none are skipped under CI=true. Nothing to change.
  • Explicit qqq module versions (step 5): none. qqq-backend-core already has no <version>.

Merge conflict resolutions

File develop main Resolution
LICENSE (add/add) AGPL-3.0 with a QRun-IO copyright preamble (33051ae, 2025-12-25) Apache-2.0 (c86512d, 2026-01-05) Took main. It is the later owner change, it matches main's NOTICE (which merged cleanly), and ADR-0003 settles on Apache-2.0. Keeping develop's file would have reverted main's LICENSE at the next release. B2 resolved it the same way (QRun-IO/qbit-user-role-permissions#5). The pom <licenses>, the README License section and the source headers are unchanged.
.circleci/config.yml kingsrook/qqq-orb@0.6 kingsrook/qqq-orb@0.5.0 Kept develop's 0.6. It is the newer orb line.
pom.xml <revision> 0.1.3-SNAPSHOT, in a <properties> block moved to the top 0.2.0, in the old block below <scm> Kept develop's layout with main's 0.2.0, so there is one <properties> block. v0.2.0 is released, and 0.1.3-SNAPSHOT sorts below it. On develop, qqq-orb's calculate_version.sh turns a stable version into the next minor SNAPSHOT (0.3.0-SNAPSHOT), so 0.2.0 is not re-published. B2 did the same.

Merged without conflict: parent 1.1.0 to 1.5.1 from main (moved to 2.0.0 in the next commit). From develop: junit-bom 6.0.2, the removal of qqq-backend-module-rdbms, and the 0.40.0-SNAPSHOT BOM (removed in the next commit).

Related Issues

Closes QRun-IO/qqq#766
Part of QRun-IO/qqq-all#1

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected): consumers now get qqq 4.0.0 and Java 21 transitively
  • Documentation update
  • Refactoring (no functional changes)
  • Dependencies update

Testing

All commands ran in this checkout with Maven 3.9.16 and OpenJDK 21.0.12.1. The repo has no mvnw, so I used mvn. I never ran mvn install.

Test-first: I bumped the parent before migrating code and watched the build fail, and I checked that the profile did nothing before adding it.

# Command Result
1 mvn -B clean verify on the merge commit 389e366 BUILD SUCCESS, 4 tests, 0 failures
2 Parent 2.0.0 and child BOM removed, then mvn -B clean verify FAIL: testCompile, cannot find symbol setAuthentication(QAuthenticationMetaData) at StandardProcessTraceTestApplication.java:84
3 After the auth migration, mvn -B clean verify BUILD SUCCESS, 4 tests, 0 failures; qqq-backend-core:4.0.0
4 Before the profile, mvn -B -Pqqq-snapshot dependency:list -DincludeGroupIds=com.kingsrook.qqq Red: The requested profile "qqq-snapshot" could not be activated because it does not exist, and it still resolves 4.0.0
5 After the profile, mvn -B -U dependency:list -DincludeGroupIds=com.kingsrook.qqq qqq-backend-core:4.0.0
6 Same command with -Pqqq-snapshot qqq-backend-core:4.1.0-SNAPSHOT
7 Same command with -Pqqq-snapshot -Dqqq.snapshot.version=4.0.0 qqq-backend-core:4.0.0 (the override works)
8 mvn -B -U clean verify -Pqqq-snapshot BUILD SUCCESS, 4 tests, 0 failures

Final gates on HEAD 5328b07. Each ran after mvn -B -q clean.

Gate Command Result
qqq 4.0.0 (parent) mvn -B verify BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
qqq 4.0.0, CI mode CI=true mvn -B verify BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
qqq 4.1.0-SNAPSHOT CI=true mvn -B verify -Pqqq-snapshot BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
qqq 4.1.0-SNAPSHOT, published artifacts only mvn -B -U verify -Pqqq-snapshot -Dmaven.repo.local=/tmp/m2-b4 BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0. Downloaded qqq-backend-core-4.1.0-20260926.013610-8 from https://central.sonatype.com/repository/maven-snapshots/
Java 21 javap -v -cp target/classes ...StandardProcessTraceQBitConfig major version: 65
CircleCI config circleci config validate .circleci/config.yml Not conclusive: without a CircleCI token the CLI cannot resolve the private orb (Cannot find kingsrook/qqq-orb@0.6, and the same for 0.5.0, 0.5.2 and 0.6.5). yq parses the file, and the new command and pre-steps match qbit-quick-search's config. CircleCI then compiled and ran it: qqq-orb/mvn_test_only build 46 passed on 5328b07 in 1m19s, including the new pre-step and install_java.

I ran the isolated-repository gate because the shared ~/.m2 can hold locally installed 4.1.0-SNAPSHOT artifacts. It shows the build passes against the published Central snapshot.

  • Unit tests pass (mvn test)
  • Integration tests pass (mvn verify)
  • Manual testing performed

Checklist

  • My code follows the project's style guidelines
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas (no new logic; the profile and CI step carry comments)
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings (see the parent warning below)
  • I have added tests that prove my fix is effective or that my feature works (no behavior changed; the existing 4 tests cover the tracer and backend-activity-stats paths on both qqq lines)
  • New and existing unit tests pass locally with my changes

Additional Notes

  • Upstream parent warning, not fixed here. Every build logs [WARNING] Failed to build parent project for com.kingsrook.qbits:qbit-standard-process-trace:jar:0.2.0. The published qbit-build-parent-2.0.0.pom was not flattened, so its <version> is the literal ${revision}. The effective model is still correct (qqq 4.0.0, Java 21). The fix belongs in qbit-bom and affects every qbit on 2.0.0, as B2 and B3 also report.
  • Left out of scope on purpose: the pom <licenses> (AGPL), the README License section ("Proprietary - QRun.IO"), and the AGPL source and pom headers. Licensing alignment is a separate owner decision. Also left alone: CHANGELOG text copied from another qbit, README example drift, the Kingsrook URLs in <url> and <scm>, and the open dependabot assertj branch.
  • Not merged; this needs review first.
## Summary Re-pins `qbit-standard-process-trace` to `com.kingsrook:qbit-build-parent:2.0.0` (qqq 4.0.0 GA, Java 21) and adds an opt-in `qqq-snapshot` profile that verifies it on qqq `4.1.0-SNAPSHOT`, so qqq-all can include it. The first commit back-merges `main` into `develop`, since `main` had 7 commits `develop` lacked. **Merge this PR with a merge commit, not squash or rebase.** That keeps `main` an ancestor of `develop`, so the next release from `develop` to `main` does not conflict again. ## Changes - `389e366` **chore: merge main into develop** (`git merge --no-ff origin/main`). It brings in main's Java 21 parent bump, the 0.2.0 release, the Apache-2.0 `LICENSE` and `NOTICE`, the standardized README, and `.github/release.yml`. Develop's backend-activity-stats feature, its tests, `CODEOWNERS` and `CLAUDE.md` are kept; main had none of them. Against `origin/develop`, the merge changes only `LICENSE`, `NOTICE`, `README.md`, `.github/release.yml` and two `pom.xml` lines (parent, revision). No source file changed. - `eef914d` **build: re-pin to qbit-build-parent 2.0.0 (qqq 4.0.0)**. The parent goes to 2.0.0, and the child `qqq-bom-pom:0.40.0-SNAPSHOT` import that shadowed the parent is removed, so default builds get qqq only from the parent. Java 21 comes from the parent's `java.version`. One qqq 4.0 API removal broke the test build: `StandardProcessTraceTestApplication` now calls `withInstanceDefaultAuthentication(...)`, because `QInstance.setAuthentication(...)` was removed (BREAK-04-11). Main source compiled unchanged. The README prerequisite now says "QQQ application (v4.0.0+)". It said v0.35.0+. - `746a364` **build: add opt-in qqq-snapshot profile**. It imports `qqq-bom-pom:${qqq.snapshot.version}` (default `4.1.0-SNAPSHOT`) ahead of the parent's BOM and adds the Central snapshots repository. The top-level `sonatype-snapshots` repository only served the old snapshot BOM, so it moved into this profile. The profile is the same one used in qbit-quick-search and the B3 re-pin. - `7084430` **ci: keep package installs unattended on CircleCI machines**. This copies the `configure-package-install` command and its `pre-steps` from qbit-quick-search `develop` onto all five orb jobs. Without it, `install_java` stalls on needrestart's interactive dialog and hits the 10-minute no-output limit (QRun-IO/qqq-orb#11). Drop it once the orb fixes that. - `5328b07` **docs: update CLAUDE.md notes for the parent 2.0.0 re-pin**. It replaces the stale "branches diverged" and `setAuthentication` notes. Other plan steps: - Docker integration tests (step 4): none exist. All 4 tests use the in-memory backend, and none are skipped under `CI=true`. Nothing to change. - Explicit qqq module versions (step 5): none. `qqq-backend-core` already has no `<version>`. ### Merge conflict resolutions | File | develop | main | Resolution | |---|---|---|---| | `LICENSE` (add/add) | AGPL-3.0 with a QRun-IO copyright preamble (`33051ae`, 2025-12-25) | Apache-2.0 (`c86512d`, 2026-01-05) | **Took main.** It is the later owner change, it matches main's `NOTICE` (which merged cleanly), and ADR-0003 settles on Apache-2.0. Keeping develop's file would have reverted main's LICENSE at the next release. B2 resolved it the same way (QRun-IO/qbit-user-role-permissions#5). The pom `<licenses>`, the README License section and the source headers are unchanged. | | `.circleci/config.yml` | `kingsrook/qqq-orb@0.6` | `kingsrook/qqq-orb@0.5.0` | **Kept develop's `0.6`.** It is the newer orb line. | | `pom.xml` `<revision>` | `0.1.3-SNAPSHOT`, in a `<properties>` block moved to the top | `0.2.0`, in the old block below `<scm>` | **Kept develop's layout with main's `0.2.0`**, so there is one `<properties>` block. `v0.2.0` is released, and `0.1.3-SNAPSHOT` sorts below it. On `develop`, qqq-orb's `calculate_version.sh` turns a stable version into the next minor SNAPSHOT (`0.3.0-SNAPSHOT`), so 0.2.0 is not re-published. B2 did the same. | Merged without conflict: parent 1.1.0 to 1.5.1 from main (moved to 2.0.0 in the next commit). From develop: `junit-bom` 6.0.2, the removal of `qqq-backend-module-rdbms`, and the 0.40.0-SNAPSHOT BOM (removed in the next commit). ## Related Issues Closes QRun-IO/qqq#766 Part of QRun-IO/qqq-all#1 ## Type of Change - [ ] Bug fix (non-breaking change that fixes an issue) - [ ] New feature (non-breaking change that adds functionality) - [x] Breaking change (fix or feature that would cause existing functionality to not work as expected): consumers now get qqq 4.0.0 and Java 21 transitively - [ ] Documentation update - [ ] Refactoring (no functional changes) - [x] Dependencies update ## Testing All commands ran in this checkout with Maven 3.9.16 and OpenJDK 21.0.12.1. The repo has no `mvnw`, so I used `mvn`. I never ran `mvn install`. Test-first: I bumped the parent before migrating code and watched the build fail, and I checked that the profile did nothing before adding it. | # | Command | Result | |---|---|---| | 1 | `mvn -B clean verify` on the merge commit `389e366` | BUILD SUCCESS, 4 tests, 0 failures | | 2 | Parent 2.0.0 and child BOM removed, then `mvn -B clean verify` | **FAIL**: testCompile, `cannot find symbol setAuthentication(QAuthenticationMetaData)` at `StandardProcessTraceTestApplication.java:84` | | 3 | After the auth migration, `mvn -B clean verify` | BUILD SUCCESS, 4 tests, 0 failures; `qqq-backend-core:4.0.0` | | 4 | Before the profile, `mvn -B -Pqqq-snapshot dependency:list -DincludeGroupIds=com.kingsrook.qqq` | **Red**: `The requested profile "qqq-snapshot" could not be activated because it does not exist`, and it still resolves `4.0.0` | | 5 | After the profile, `mvn -B -U dependency:list -DincludeGroupIds=com.kingsrook.qqq` | `qqq-backend-core:4.0.0` | | 6 | Same command with `-Pqqq-snapshot` | `qqq-backend-core:4.1.0-SNAPSHOT` | | 7 | Same command with `-Pqqq-snapshot -Dqqq.snapshot.version=4.0.0` | `qqq-backend-core:4.0.0` (the override works) | | 8 | `mvn -B -U clean verify -Pqqq-snapshot` | BUILD SUCCESS, 4 tests, 0 failures | Final gates on HEAD `5328b07`. Each ran after `mvn -B -q clean`. | Gate | Command | Result | |---|---|---| | qqq 4.0.0 (parent) | `mvn -B verify` | BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0 | | qqq 4.0.0, CI mode | `CI=true mvn -B verify` | BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0 | | qqq 4.1.0-SNAPSHOT | `CI=true mvn -B verify -Pqqq-snapshot` | BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0 | | qqq 4.1.0-SNAPSHOT, published artifacts only | `mvn -B -U verify -Pqqq-snapshot -Dmaven.repo.local=/tmp/m2-b4` | BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0. Downloaded `qqq-backend-core-4.1.0-20260926.013610-8` from `https://central.sonatype.com/repository/maven-snapshots/` | | Java 21 | `javap -v -cp target/classes ...StandardProcessTraceQBitConfig` | `major version: 65` | | CircleCI config | `circleci config validate .circleci/config.yml` | Not conclusive: without a CircleCI token the CLI cannot resolve the private orb (`Cannot find kingsrook/qqq-orb@0.6`, and the same for 0.5.0, 0.5.2 and 0.6.5). `yq` parses the file, and the new command and `pre-steps` match qbit-quick-search's config. CircleCI then compiled and ran it: `qqq-orb/mvn_test_only` build 46 passed on `5328b07` in 1m19s, including the new pre-step and `install_java`. | I ran the isolated-repository gate because the shared `~/.m2` can hold locally installed `4.1.0-SNAPSHOT` artifacts. It shows the build passes against the published Central snapshot. - [x] Unit tests pass (`mvn test`) - [x] Integration tests pass (`mvn verify`) - [ ] Manual testing performed ## Checklist - [x] My code follows the project's style guidelines - [x] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas (no new logic; the profile and CI step carry comments) - [x] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings (see the parent warning below) - [ ] I have added tests that prove my fix is effective or that my feature works (no behavior changed; the existing 4 tests cover the tracer and backend-activity-stats paths on both qqq lines) - [x] New and existing unit tests pass locally with my changes ## Additional Notes - **Upstream parent warning, not fixed here.** Every build logs `[WARNING] Failed to build parent project for com.kingsrook.qbits:qbit-standard-process-trace:jar:0.2.0`. The published `qbit-build-parent-2.0.0.pom` was not flattened, so its `<version>` is the literal `${revision}`. The effective model is still correct (qqq 4.0.0, Java 21). The fix belongs in `qbit-bom` and affects every qbit on 2.0.0, as B2 and B3 also report. - **Left out of scope on purpose:** the pom `<licenses>` (AGPL), the README License section ("Proprietary - QRun.IO"), and the AGPL source and pom headers. Licensing alignment is a separate owner decision. Also left alone: CHANGELOG text copied from another qbit, README example drift, the `Kingsrook` URLs in `<url>` and `<scm>`, and the open dependabot assertj branch. - Not merged; this needs review first.
KofTwentyTwo commented 2026-09-26 01:53:31 +00:00 (Migrated from github.com)

Review, round 1 (plan task B4): approve

I found no blocking issues. I reviewed HEAD 5328b07 against plan task B4 and the Global Constraints, on a clean clone of the PR head.

Blocking

None.

Non-blocking

  1. James needs to confirm the license files from the back-merge before merge. Taking main's side means develop's LICENSE changes from AGPL-3.0 to Apache-2.0 and NOTICE is added. The merge also changes develop's README License section from AGPL to main's "Proprietary - QRun.IO". The README change merged cleanly, since develop never touched README.md after the merge base. After the merge, develop's license state matches main exactly. Against main, README.md, LICENSE and NOTICE differ only by the prerequisite line. Read literally, the plan says not to change LICENSE files. The alternative is worse: keeping develop's files would put AGPL back on main at the next release. This is the same call as B2, so I'm not blocking on it. One correction to the PR body: the conflict table says "the README License section ... unchanged". That is true against main, but against develop it changed.
  2. Merge method. Step 1 asked for a separate back-merge PR first, and here it is folded into this one. The repo allows squash and rebase merges (allow_squash_merge: true, allow_rebase_merge: true). Either one would drop main as an ancestor of develop, and the next release would conflict again. Use a merge commit, as the PR body says.
  3. The profile's snapshot repository is redundant (harmless). qbit-build-parent 2.0.0 already declares central-portal-snapshots at the same URL in every build. The effective POM without the profile lists it, and with -Pqqq-snapshot the log fetches maven-metadata.xml from both ids. The plan asks the profile to add the repository, and B2 and B3 add it too, so leave it.
  4. CLAUDE.md. The line "Reviewed at commit 0f2ec0339048 (branch develop, 2026-07-04)" sits above bullets that describe this PR's state, so it now reads as stale. The licensing bullet names the pom <licenses> and the source headers, but not the README's "Proprietary" line. Both are minor.
  5. Upstream parent warning. [WARNING] Failed to build parent project for ...:0.2.0 shows up here too. The effective model is correct. The cause is the unflattened qbit-build-parent-2.0.0.pom, so the fix belongs in qbit-bom, not this PR.

B4 requirements

Step Status Evidence
1. Back-merge main into develop Met 389e366 is a real merge (parents 0ee8782, c86512d). Against origin/develop it touches only LICENSE, NOTICE, README.md, .github/release.yml and two pom lines. It changes no source or test files, so the backend-activity-stats feature and its tests are kept.
2. Parent 2.0.0, child BOM removed, Java 21, headers untouched Met Parent 2.0.0. The qqq-bom-pom:0.40.0-SNAPSHOT import is gone. The effective POM has java.version 21, and javap shows major version: 65. The pom <licenses> and all source headers are unchanged against develop.
3. Green on 4.0.0, plus the qqq-snapshot profile Met See the gates below. Without the profile, the effective POM manages 16 com.kingsrook.qqq entries, all at 4.0.0. With -Pqqq-snapshot, 17 are at 4.1.0-SNAPSHOT, plus qqq-frontend-next 0.2.1, which comes from the snapshot BOM itself. So the child's import replaces the parent's. The profile has no activation, and qqq.snapshot.version defaults to 4.1.0-SNAPSHOT.
4. Docker ITs fail when CI=true N/A No Testcontainers or Docker usage, and no @Disabled or assumptions in src/.
5. No explicit qqq module <version>s Met qqq-backend-core is managed. The only qqq <version> left is the profile's BOM import, ${qqq.snapshot.version}.

Gates I ran

Gate Result
mvn -B clean verify (qqq 4.0.0 from the parent) BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
CI=true mvn -B -U clean verify -Pqqq-snapshot -Dmaven.repo.local=<empty dir> BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0. It downloaded qqq-backend-core-4.1.0-20260926.013614-9.jar from sonatype-snapshots
Java 21 javap -v on StandardProcessTraceQBitConfig shows major version: 65
Checkstyle and coverage Nothing to run: the repo has no checkstyle config, and the effective POM has no checkstyle or jacoco plugin. The one changed Java line follows QQQ style.
CI qqq-orb/mvn_test_only passed on 5328b07, build 46
Secrets None in the diff. The only match is the text "no special password or key" in the old AGPL LICENSE. The CircleCI change references the existing context by name.

Other checks

  • Auth migration. In qqq v4.0.0, QInstance.withInstanceDefaultAuthentication(auth) calls registerAuthenticationProvider(AuthScope.instanceDefault(), auth). That is the documented replacement for the removed setAuthentication, and develop still has it. The existing 4 tests exercise it on both qqq lines. There is no new behavior, so no new tests are needed.
  • <revision>0.2.0 on develop. I checked this against qqq-orb v0.6.5: handle_develop_branch in calculate_version.sh turns a stable X.Y.Z into X.(Y+1).0-SNAPSHOT. So publish_snapshot publishes 0.3.0-SNAPSHOT and won't re-publish 0.2.0.
  • CircleCI pre-step. mvn_test_only and mvn_publish both use the orb's java executor, a machine ubuntu-2204 image with sudo. So the configure-package-install pre-step is also safe on the four publish workflows, which only run after merge. $nrconf{restart} sits inside single quotes, so the shell does not expand it.
  • README. Taking main's README drops none of develop's documentation, because develop's README had not changed since the merge base. The only line the PR edits is the prerequisite, which now reads "v4.0.0+".
## Review, round 1 (plan task B4): approve I found no blocking issues. I reviewed HEAD `5328b07` against plan task B4 and the Global Constraints, on a clean clone of the PR head. ### Blocking None. ### Non-blocking 1. **James needs to confirm the license files from the back-merge before merge.** Taking main's side means develop's `LICENSE` changes from AGPL-3.0 to Apache-2.0 and `NOTICE` is added. The merge also changes develop's README License section from AGPL to main's "Proprietary - QRun.IO". The README change merged cleanly, since develop never touched `README.md` after the merge base. After the merge, develop's license state matches `main` exactly. Against `main`, `README.md`, `LICENSE` and `NOTICE` differ only by the prerequisite line. Read literally, the plan says not to change LICENSE files. The alternative is worse: keeping develop's files would put AGPL back on `main` at the next release. This is the same call as B2, so I'm not blocking on it. One correction to the PR body: the conflict table says "the README License section ... unchanged". That is true against `main`, but against `develop` it changed. 2. **Merge method.** Step 1 asked for a separate back-merge PR first, and here it is folded into this one. The repo allows squash and rebase merges (`allow_squash_merge: true`, `allow_rebase_merge: true`). Either one would drop `main` as an ancestor of `develop`, and the next release would conflict again. Use a merge commit, as the PR body says. 3. **The profile's snapshot repository is redundant (harmless).** `qbit-build-parent` 2.0.0 already declares `central-portal-snapshots` at the same URL in every build. The effective POM without the profile lists it, and with `-Pqqq-snapshot` the log fetches `maven-metadata.xml` from both ids. The plan asks the profile to add the repository, and B2 and B3 add it too, so leave it. 4. **CLAUDE.md.** The line "Reviewed at commit `0f2ec0339048` (branch `develop`, 2026-07-04)" sits above bullets that describe this PR's state, so it now reads as stale. The licensing bullet names the pom `<licenses>` and the source headers, but not the README's "Proprietary" line. Both are minor. 5. **Upstream parent warning.** `[WARNING] Failed to build parent project for ...:0.2.0` shows up here too. The effective model is correct. The cause is the unflattened `qbit-build-parent-2.0.0.pom`, so the fix belongs in `qbit-bom`, not this PR. ### B4 requirements | Step | Status | Evidence | |---|---|---| | 1. Back-merge `main` into `develop` | Met | `389e366` is a real merge (parents `0ee8782`, `c86512d`). Against `origin/develop` it touches only `LICENSE`, `NOTICE`, `README.md`, `.github/release.yml` and two pom lines. It changes no source or test files, so the backend-activity-stats feature and its tests are kept. | | 2. Parent 2.0.0, child BOM removed, Java 21, headers untouched | Met | Parent `2.0.0`. The `qqq-bom-pom:0.40.0-SNAPSHOT` import is gone. The effective POM has `java.version` 21, and `javap` shows `major version: 65`. The pom `<licenses>` and all source headers are unchanged against `develop`. | | 3. Green on 4.0.0, plus the `qqq-snapshot` profile | Met | See the gates below. Without the profile, the effective POM manages 16 `com.kingsrook.qqq` entries, all at `4.0.0`. With `-Pqqq-snapshot`, 17 are at `4.1.0-SNAPSHOT`, plus `qqq-frontend-next 0.2.1`, which comes from the snapshot BOM itself. So the child's import replaces the parent's. The profile has no activation, and `qqq.snapshot.version` defaults to `4.1.0-SNAPSHOT`. | | 4. Docker ITs fail when `CI=true` | N/A | No Testcontainers or Docker usage, and no `@Disabled` or assumptions in `src/`. | | 5. No explicit qqq module `<version>`s | Met | `qqq-backend-core` is managed. The only qqq `<version>` left is the profile's BOM import, `${qqq.snapshot.version}`. | ### Gates I ran | Gate | Result | |---|---| | `mvn -B clean verify` (qqq 4.0.0 from the parent) | BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0 | | `CI=true mvn -B -U clean verify -Pqqq-snapshot -Dmaven.repo.local=<empty dir>` | BUILD SUCCESS. Tests run: 4, Failures: 0, Errors: 0, Skipped: 0. It downloaded `qqq-backend-core-4.1.0-20260926.013614-9.jar` from `sonatype-snapshots` | | Java 21 | `javap -v` on `StandardProcessTraceQBitConfig` shows `major version: 65` | | Checkstyle and coverage | Nothing to run: the repo has no checkstyle config, and the effective POM has no checkstyle or jacoco plugin. The one changed Java line follows QQQ style. | | CI | `qqq-orb/mvn_test_only` passed on `5328b07`, build 46 | | Secrets | None in the diff. The only match is the text "no special password or key" in the old AGPL `LICENSE`. The CircleCI change references the existing context by name. | ### Other checks - **Auth migration.** In qqq `v4.0.0`, `QInstance.withInstanceDefaultAuthentication(auth)` calls `registerAuthenticationProvider(AuthScope.instanceDefault(), auth)`. That is the documented replacement for the removed `setAuthentication`, and `develop` still has it. The existing 4 tests exercise it on both qqq lines. There is no new behavior, so no new tests are needed. - **`<revision>0.2.0` on develop.** I checked this against qqq-orb `v0.6.5`: `handle_develop_branch` in `calculate_version.sh` turns a stable `X.Y.Z` into `X.(Y+1).0-SNAPSHOT`. So `publish_snapshot` publishes `0.3.0-SNAPSHOT` and won't re-publish `0.2.0`. - **CircleCI pre-step.** `mvn_test_only` and `mvn_publish` both use the orb's `java` executor, a `machine` `ubuntu-2204` image with sudo. So the `configure-package-install` pre-step is also safe on the four publish workflows, which only run after merge. `$nrconf{restart}` sits inside single quotes, so the shell does not expand it. - **README.** Taking main's README drops none of develop's documentation, because develop's README had not changed since the merge base. The only line the PR edits is the prerequisite, which now reads "v4.0.0+".
Sign in to join this conversation.