build: re-pin to qbit-build-parent 2.0.0 (QRun-IO/qqq#765) #7
Closed
KofTwentyTwo wants to merge 12 commits from
feature/GH-765-repin-build-parent-2 into develop
pull from: feature/GH-765-repin-build-parent-2
merge into: QRun-IO:develop
QRun-IO:develop
QRun-IO:release/0.5
QRun-IO:feature/kof22-ctv-canonical
QRun-IO:main
QRun-IO:feature/orb-0.8-track
QRun-IO:feature/orb-0.7.18
QRun-IO:feature/orb-0.7.17
QRun-IO:release/0.4
QRun-IO:feature/orb-standardize-release-0.4
QRun-IO:feature/restore-release-0.4-bom
QRun-IO:hotfix/0.2.2
QRun-IO:feature/orb-standardize-hotfix-0.2.2
QRun-IO:feature/orb-main-hotfix-standardization
QRun-IO:feature/shared-codeql
QRun-IO:feature/orb-0712-stable-gate
QRun-IO:feature/orb-rc-worker
QRun-IO:fix/tag-only-ga-publication
QRun-IO:feature/orb-0.7.11
QRun-IO:feature/central-ci
QRun-IO:feature/security-findings-2026-10
QRun-IO:ci/release-rc-secrets-inherit
QRun-IO:feature/release-rc-automation
QRun-IO:feature/ga-only-release-tags
QRun-IO:feature/GH-10-public-stack-prep
QRun-IO:feature/GH-765-repin-build-parent-2-clean
QRun-IO:feature/update-bom-and-release-docs
QRun-IO:feature/keep-record-lock-and-meta-data-marked-fields
QRun-IO:dependabot/maven/maven-099704d0fe
No Reviewers
Labels
Clear labels
bug
dependencies
documentation
duplicate
enhancement
good first issue
help wanted
invalid
java
question
release:rc
wontfix
Something isn't working
Pull requests that update a dependency file
Improvements or additions to documentation
This issue or pull request already exists
New feature or request
Good for newcomers
Extra attention is needed
This doesn't seem right
Pull requests that update java code
Further information is requested
Merging this develop PR cuts the next release candidate
This will not be worked on
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: QRun-IO/qbit-customizable-table-views#7
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Re-pins this qbit to
com.kingsrook:qbit-build-parent:2.0.0(qqq 4.0.0 GA) and adds an opt-inqqq-snapshotprofile that verifies it on qqq4.1.0-SNAPSHOT, so qqq-all can include it. The first commit back-mergesmainintodevelop.Closes QRun-IO/qqq#765
Part of QRun-IO/qqq-all#1
Changes
main->develop(debc4fd,git merge --no-ff origin/main). It brings in the 3 main-only commits: the 0.4.0 release merge,Bump version to 0.4.0, andfix ot use revision property.qqq-bom-pom:0.40.0-SNAPSHOTimport that shadowed the parent (ADR-0007), so default builds take the qqq version only from the parent. Java 21 comes from the parent'sjava.version.TableViewFieldCustomizer:RecordCustomizerUtilityInterface.getValueFromRecordOrOldRecord(removed in 4.0) is replaced bygetValueFromRecordElseFromOldRecord, wrapped inValueUtils.getValueAsStringas the 4.0 javadoc recommends. The lookup logic is the same.BaseTest:QInstance.setAuthentication(removed in 4.0) is replaced bywithInstanceDefaultAuthentication.TableViewFieldCustomizerTest.testSparseUpdateUsesOldRecordValuescovers the old-record fallback that the migrated call serves. It had no test before. I checked it catches a regression: with the fallback disabled, the test fails; with the fix restored, it passes.qqq-snapshotprofile. It importsqqq-bom-pom:${qqq.snapshot.version}(default4.1.0-SNAPSHOT), which takes precedence over the parent's BOM, and it adds the Central snapshots repository. The parent has no qqq-version property to override. The top-levelsonatype-snapshotsrepository, which only served the old snapshot BOM, moved into this profile. The default build still resolves fine from Central, and the parent declares the same snapshots URL anyway.qqq-bom-pom:0.40.0-SNAPSHOT" note with how the version is now set and checked.<licenses>to Apache-2.0 before the issue was updated.0a63b1freverts it. The branch history was not rewritten (no force-push). Likewise,df03ac5replaces the firstqqq.versionoverride profile (6afce06) withqqq-snapshot. The net diff contains neither intermediate.Merge conflict resolution
There was one conflict, in
pom.xml<properties><revision>:0.5.0-SNAPSHOTand main had0.4.0. I kept develop's0.5.0-SNAPSHOT.0.4.0is the release stamp CI writes onmain. develop had already moved to the next development line (8f92567), and taking0.4.0would make develop snapshots publish as a released version.523fd34,<version>${revision}</version>) merged cleanly. develop already had the same line.5323d4e) is those two pom lines. The 0.4 release code (virtual fields, record-lock fields) was already on develop. After the merge, the tree matchesorigin/developexactly, so none of develop's features or main's fixes were lost.Type of Change
Testing
I ran all commands from the repo root with Maven 3.9.16 and OpenJDK 21.0.12.1. There is no
mvnw, so I usedmvn. I never ranmvn install.mvn -B verifyon untoucheddevelop(baseline)QTableMetaData.getFieldOrVirtualFieldnot found. The dead0.40.0-SNAPSHOTBOM resolves a stale core.mvn -B verifyafter the parent bump onlygetValueFromRecordOrOldRecordnot found (removed in 4.0)mvn -B test -Dtest=TableViewFieldCustomizerTestwith the old-record fallback disabled (temporary change, reverted)testSparseUpdateUsesOldRecordValuesmvn -B dependency:list -DincludeGroupIds=com.kingsrook.qqqqqq-backend-core:4.0.0-Pqqq-snapshotqqq-backend-core:4.1.0-SNAPSHOT-Pqqq-snapshot -Dqqq.snapshot.version=4.0.0qqq-backend-core:4.0.0(the version override works)CI=true mvn -B clean verify(parent's qqq 4.0.0), on971249bCI=true mvn -B -U clean verify -Pqqq-snapshot(qqq 4.1.0-SNAPSHOT), on971249bI also ran the intermediate re-pin commit (
35aa2da) withmvn -B clean verify: 19 tests, all passing.mvn verifypasses on qqq 4.0.0 and with-Pqqq-snapshotChecklist
Additional Notes
CI=true, 0 tests are skipped.rolepossible-value source by name only, and tests register a local placeholder enum. There is no u-r-p pin to keep or change, and nothing here depends on u-r-p's new version.Failed to build parent project ... com.kingsrook:qbit-build-parent:pom:${revision}.qbit-build-parent:2.0.0was published with an unflattened<version>${revision}</version>; 1.5.1 was flattened. The effective model still resolves correctly, so the warning is harmless, but it should be fixed upstream in a future parent release by publishing a flattened pom.test_onlyfails because of infrastructure, not this change. Jobs 49 and 50 both time out in the orb step "Install Java 21 and build tools", before Maven runs. On the machine image,apttriggersneedrestart's interactive "Daemons using outdated libraries" dialog, and the step then hits the 10-minute no-output limit.qbit-user-role-permissionsbuild 44 (the B2 re-pin) fails the same way, so the problem is fleet-wide inkingsrook/qqq-orb@0.5.0. It needs a non-interactive apt setting in the orb (for exampleNEEDRESTART_MODE=a/DEBIAN_FRONTEND=noninteractive). Once that is fixed, re-run CI here.Review, round 1 (plan task B3): no blocking issues
Routed through
local--review-prat the Deep tier: 92 changed lines across 5 files, a pom parent change, and a red CI check. Aspects covered: code, tests, comments, error handling, and a security pass.Verified locally (PR head
971249b, clean copy, Maven 3.9, JDK 21)CI=true mvn -B clean verifyCI=true mvn -B -U clean verify -Pqqq-snapshotdependency:list, default and with-Pqqq-snapshotqqq-backend-coreandqqq-backend-module-rdbmsresolve to4.0.0and4.1.0-SNAPSHOTrespectivelyrecord.getValue(...)only)testSparseUpdateUsesOldRecordValuesfails, so the test catches the regressioncheckstyle/config.xml(plugin 3.6.0, main and test)CustomizableTableViewsQBitProducer.java:77,CustomizableTableViewsFieldMetaData.java:37). Changed files are clean.git diff origin/develop debc4fd<licenses>B3 requirements
debc4fd, the same way the B2 PR does it. The<revision>conflict was resolved to develop's0.5.0-SNAPSHOT, which is correct.2.0.0, the shadowing childqqq-bom-pomimport is removed, Java 21 comes from the parent'sjava.version, and licensing is untouched.qqq-snapshotprofile importsqqq-bom-pom:${qqq.snapshot.version}(default4.1.0-SNAPSHOT) and adds the Central snapshots repository with releases disabled. It takes precedence over the parent's BOM, asdependency:listconfirms.<version>s.API migration: in qqq
v4.0.0,getValueFromRecordElseFromOldRecordhas the same body as the removedgetValueFromRecordOrOldRecord, minus the unchecked cast.ValueUtils.getValueAsString(null)returns null, so null handling is unchanged.withInstanceDefaultAuthenticationis the 4.0 replacement forsetAuthentication.Blocking
None.
Non-blocking
test_only(job 50, on971249b) timed out in "Install Java 21 and build tools" before Maven ran. It was stuck on theneedrestart"Daemons using outdated libraries" dialog. Job 49 and qbit-user-role-permissions build 44 fail the same way, so this PR didn't cause it. Still, re-run CI after the orb fix and get it green before merging.debc4fd's second parent. main's 3 commits would then still be missing from develop's history, which undoes step 1, and the next develop to main release would hit the same<revision>conflict. The plan asks for a separate back-merge PR first. Doing it inside this PR is fine as long as the merge commit survives.assertThat(mandatoryToReadOnly.getErrors()).hasSizeGreaterThan(0)still passed, because the null-fieldNameNPE becomes aSystemErrorStatusMessage. Only the optional-record assertion caught the regression. Consider asserting that the mandatory record's error is aBadInputStatusMessage, or checking its message. Also consider a case where the update record setsfieldNameitself, so the record's value must win over the old record's; that covers the other branch.decisions/ADR-0007-qqq-fleet-scope-groupid-4.0.md). The other knowledge-base notes in this file give vault paths, so add one here too.qbit-build-parent:pom:${revision}warning comes from how the 2.0.0 parent was published. Track it outside this PR.a181b3band its revert0a63b1f. The net effect is zero, but with a merge commit both will appear in develop's log.Security pass: no secrets, and no dependency changes beyond the parent bump. The child's snapshots repository moved from always-on to opt-in. The parent still declares the same snapshots URL (
central-portal-snapshots), so the repositories a default build uses are effectively unchanged.Verdict: approve (round 1). Merge once CI is green, using a merge commit.
Superseded by https://github.com/QRun-IO/qbit-customizable-table-views/pull/8
Pull request closed