Adds the approved one-page design (docs/design.md) and the implementation plan (docs/plan.md: tasks A1–A2 in qqq, B1–B8 qbit re-pins, C1–C9 here, in waves Q1–Q6), mapped to sub-issues of #1.
Adds the approved one-page design (`docs/design.md`) and the implementation plan (`docs/plan.md`: tasks A1–A2 in qqq, B1–B8 qbit re-pins, C1–C9 here, in waves Q1–Q6), mapped to sub-issues of #1.
Part of #1
plan.md:43 relies on a qqq version property that doesn't exist.
qbit-build-parent 2.0.0 imports qqq-bom-pom at a literal 4.0.0 and has no qqq.version property (qbit-bom v2.0.0 pom.xml:39-58).
Once step 2 drops the child imports, Maven ignores -Dqqq.version=4.1.0-SNAPSHOT. The "4.1" build really runs on 4.0.0 and passes.
Fix it one of two ways: add the property in a new parent release ahead of B1–B8, or write out the one child profile allowed to re-import the BOM.
design.md:19 disagrees with the plan on the qqq pin.
design.md:19 says each qbit is re-pinned to "qqq 4.1".
plan.md:42-43 and qbit-quick-search#6 pin the parent's qqq 4.0.0 and only verify on 4.1.0-SNAPSHOT.
Parent 2.0.0 can't pin 4.1, which isn't released yet. Suggested wording: "re-pinned to qbit-build-parent 2.0.0 (qqq 4.0.0), verified on qqq 4.1.0-SNAPSHOT".
Non-blocking
plan.md:127-128 wave order:
C7 needs C6's compose.yaml and Dockerfile, but both are in Q5.
C4 and C5 wire into C3's app, but all three run in parallel in Q4.
C3's ESB round trip also needs ESB task 8 (qqq#746), and no wave lists it.
plan.md:42: the license step only changes <licenses> metadata. Parent 2.0.0 declares AGPL, and several qbits ship AGPL LICENSE files. Add the LICENSE file, source headers and checkstyle template to the step.
plan.md:26: QApplicationJavalinServer already calls defineValidatedQInstance() itself, on start and on hot-swap. If the launcher builds an instance first, there are two instances, and the scheduler and runtime services won't share the server's.
plan.md:34: the catch at line 141 already throws a QException. Only the later catches warn and continue. Lines 309/336/349/505 also drop producers with just a warning. Name the methods instead of line numbers.
plan.md:31, 42, 126: ADR-0007 isn't in any repo, and "ESB task 10" is qqq#748. Inline the rule and cite the issue so implementers can open both.
Checked and fine
All 19 sub-issues of #1 exist and match their tasks.
Each task ID appears once in the wave table.
The qqq and qbit coordinates and the CI orb references are correct.
No secrets. The docs/design.md reference resolves.
**Review: changes requested** (2 blocking).
**Blocking**
1. **plan.md:43 relies on a qqq version property that doesn't exist.**
- `qbit-build-parent` 2.0.0 imports `qqq-bom-pom` at a literal `4.0.0` and has no `qqq.version` property (qbit-bom `v2.0.0` pom.xml:39-58).
- Once step 2 drops the child imports, Maven ignores `-Dqqq.version=4.1.0-SNAPSHOT`. The "4.1" build really runs on 4.0.0 and passes.
- Fix it one of two ways: add the property in a new parent release ahead of B1–B8, or write out the one child profile allowed to re-import the BOM.
2. **design.md:19 disagrees with the plan on the qqq pin.**
- design.md:19 says each qbit is re-pinned to "qqq 4.1".
- plan.md:42-43 and qbit-quick-search#6 pin the parent's qqq 4.0.0 and only verify on 4.1.0-SNAPSHOT.
- Parent 2.0.0 can't pin 4.1, which isn't released yet. Suggested wording: "re-pinned to qbit-build-parent 2.0.0 (qqq 4.0.0), verified on qqq 4.1.0-SNAPSHOT".
**Non-blocking**
- plan.md:127-128 wave order:
- C7 needs C6's `compose.yaml` and Dockerfile, but both are in Q5.
- C4 and C5 wire into C3's app, but all three run in parallel in Q4.
- C3's ESB round trip also needs ESB task 8 (qqq#746), and no wave lists it.
- plan.md:42: the license step only changes `<licenses>` metadata. Parent 2.0.0 declares AGPL, and several qbits ship AGPL LICENSE files. Add the LICENSE file, source headers and checkstyle template to the step.
- plan.md:26: `QApplicationJavalinServer` already calls `defineValidatedQInstance()` itself, on start and on hot-swap. If the launcher builds an instance first, there are two instances, and the scheduler and runtime services won't share the server's.
- plan.md:34: the catch at line 141 already throws a `QException`. Only the later catches warn and continue. Lines 309/336/349/505 also drop producers with just a warning. Name the methods instead of line numbers.
- plan.md:31, 42, 126: ADR-0007 isn't in any repo, and "ESB task 10" is qqq#748. Inline the rule and cite the issue so implementers can open both.
**Checked and fine**
- All 19 sub-issues of #1 exist and match their tasks.
- Each task ID appears once in the wave table.
- The qqq and qbit coordinates and the CI orb references are correct.
- No secrets. The `docs/design.md` reference resolves.
Round 2: approve (0 blocking). All round-1 items are fixed. The notes below can go in a follow-up.
Round-1 items
qqq.version: gone from both docs. The qqq-snapshot profile (plan.md:44-45) works. Parent v2.0.0 imports only qqq-bom-pom 4.0.0 and junit-bom, with no direct qqq entries. The child's import has the same management key, so it replaces the parent's. 4.1.0-SNAPSHOT resolves on the Central snapshots repo.
Pin wording: design.md:19 now matches plan.md:44-45 and C9.
Waves: every stated dependency sits in an earlier wave (plan.md:127-134), including ESB 8 and 10 (qqq#746, #748) before C3.
Launcher: A1 reuses the server's instance. On develop, QApplicationJavalinServer.start() calls defineValidatedQInstance() (:124-126).
A2 wording is accurate. The catch at :141 already throws, and only the warn-and-drop sites change.
Citations: ADR-0007 is gone and the rule is inline. "ESB task 10" cites qqq#748.
Licensing: unchanged, and the two docs agree.
Non-blocking
qbit-workflows pins qqq modules directly (develop pom.xml:76, 81, 87, 0.40.0-join-enhancements-…). Direct versions beat the parent BOM and -Pqqq-snapshot, so step 3 would pass without testing 4.0.0 or 4.1.0-SNAPSHOT. Add "drop explicit qqq versions" to step 2.
C7 (plan.md:91) runs the ESB conformance suite "against the compose brokers". ESB Task 16 builds it as Testcontainers ITs that start their own brokers. It needs a hook in ESB 16, or the line needs rewording.
A1 needs a getter. The server keeps the instance local in start() (:126), and the scheduler and runtime services will keep the pre-hot-swap instance (:541).
A2 still names no methods. Name findProducers and processAllMetaDataProducersInPackage. findProducers(String) takes no QInstance, so the flag has to be passed in.
plan.md:18 says to copy the license header from a neighboring file. The new repo has none, and qqq's headers are AGPL. Name the Apache-2.0 header for C1 and C3.
C4 and C5 both touch user-role-permissions and the full profile in Q5 (plan.md:71-80). Say who wires it, or run C5 after C4.
design.md:27 promises the ESB app for admins, but no wave lists ESB task 14 (qqq#751).
Sync the issue bodies before agents start. qqq#762 (A1) and qqq#763 (A2) still carry the round-1 text, and qqq-all#10 (C9) lacks the new parent-release bullet.
Checked and fine
All 19 sub-issues of #1 exist and match their tasks.
Parent 2.0.0 and both BOM versions resolve. No secrets. docs/design.md resolves.
**Round 2: approve** (0 blocking). All round-1 items are fixed. The notes below can go in a follow-up.
**Round-1 items**
- `qqq.version`: gone from both docs. The `qqq-snapshot` profile (plan.md:44-45) works. Parent v2.0.0 imports only `qqq-bom-pom` 4.0.0 and `junit-bom`, with no direct qqq entries. The child's import has the same management key, so it replaces the parent's. 4.1.0-SNAPSHOT resolves on the Central snapshots repo.
- Pin wording: design.md:19 now matches plan.md:44-45 and C9.
- Waves: every stated dependency sits in an earlier wave (plan.md:127-134), including ESB 8 and 10 (qqq#746, #748) before C3.
- Launcher: A1 reuses the server's instance. On develop, `QApplicationJavalinServer.start()` calls `defineValidatedQInstance()` (:124-126).
- A2 wording is accurate. The catch at :141 already throws, and only the warn-and-drop sites change.
- Citations: ADR-0007 is gone and the rule is inline. "ESB task 10" cites qqq#748.
- Licensing: unchanged, and the two docs agree.
**Non-blocking**
- qbit-workflows pins qqq modules directly (develop pom.xml:76, 81, 87, `0.40.0-join-enhancements-…`). Direct versions beat the parent BOM and `-Pqqq-snapshot`, so step 3 would pass without testing 4.0.0 or 4.1.0-SNAPSHOT. Add "drop explicit qqq versions" to step 2.
- C7 (plan.md:91) runs the ESB conformance suite "against the compose brokers". ESB Task 16 builds it as Testcontainers ITs that start their own brokers. It needs a hook in ESB 16, or the line needs rewording.
- A1 needs a getter. The server keeps the instance local in `start()` (:126), and the scheduler and runtime services will keep the pre-hot-swap instance (:541).
- A2 still names no methods. Name `findProducers` and `processAllMetaDataProducersInPackage`. `findProducers(String)` takes no `QInstance`, so the flag has to be passed in.
- plan.md:18 says to copy the license header from a neighboring file. The new repo has none, and qqq's headers are AGPL. Name the Apache-2.0 header for C1 and C3.
- C4 and C5 both touch user-role-permissions and the `full` profile in Q5 (plan.md:71-80). Say who wires it, or run C5 after C4.
- design.md:27 promises the ESB app for admins, but no wave lists ESB task 14 (qqq#751).
- Sync the issue bodies before agents start. qqq#762 (A1) and qqq#763 (A2) still carry the round-1 text, and qqq-all#10 (C9) lacks the new parent-release bullet.
**Checked and fine**
- All 19 sub-issues of #1 exist and match their tasks.
- Parent 2.0.0 and both BOM versions resolve. No secrets. `docs/design.md` resolves.
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.
Adds the approved one-page design (
docs/design.md) and the implementation plan (docs/plan.md: tasks A1–A2 in qqq, B1–B8 qbit re-pins, C1–C9 here, in waves Q1–Q6), mapped to sub-issues of #1.Part of #1
Review: changes requested (2 blocking).
Blocking
qbit-build-parent2.0.0 importsqqq-bom-pomat a literal4.0.0and has noqqq.versionproperty (qbit-bomv2.0.0pom.xml:39-58).-Dqqq.version=4.1.0-SNAPSHOT. The "4.1" build really runs on 4.0.0 and passes.Non-blocking
compose.yamland Dockerfile, but both are in Q5.<licenses>metadata. Parent 2.0.0 declares AGPL, and several qbits ship AGPL LICENSE files. Add the LICENSE file, source headers and checkstyle template to the step.QApplicationJavalinServeralready callsdefineValidatedQInstance()itself, on start and on hot-swap. If the launcher builds an instance first, there are two instances, and the scheduler and runtime services won't share the server's.QException. Only the later catches warn and continue. Lines 309/336/349/505 also drop producers with just a warning. Name the methods instead of line numbers.Checked and fine
docs/design.mdreference resolves.Round 2: approve (0 blocking). All round-1 items are fixed. The notes below can go in a follow-up.
Round-1 items
qqq.version: gone from both docs. Theqqq-snapshotprofile (plan.md:44-45) works. Parent v2.0.0 imports onlyqqq-bom-pom4.0.0 andjunit-bom, with no direct qqq entries. The child's import has the same management key, so it replaces the parent's. 4.1.0-SNAPSHOT resolves on the Central snapshots repo.QApplicationJavalinServer.start()callsdefineValidatedQInstance()(:124-126).Non-blocking
0.40.0-join-enhancements-…). Direct versions beat the parent BOM and-Pqqq-snapshot, so step 3 would pass without testing 4.0.0 or 4.1.0-SNAPSHOT. Add "drop explicit qqq versions" to step 2.start()(:126), and the scheduler and runtime services will keep the pre-hot-swap instance (:541).findProducersandprocessAllMetaDataProducersInPackage.findProducers(String)takes noQInstance, so the flag has to be passed in.fullprofile in Q5 (plan.md:71-80). Say who wires it, or run C5 after C4.Checked and fine
docs/design.mdresolves.