docs: qqq-all design and implementation plan (#1) #11

Merged
KofTwentyTwo merged 3 commits from feature/GH-1-plan-and-design into develop 2026-09-26 00:48:15 +00:00
KofTwentyTwo commented 2026-09-26 00:15:12 +00:00 (Migrated from github.com)

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

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
KofTwentyTwo commented 2026-09-26 00:29:58 +00:00 (Migrated from github.com)

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.
**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.
KofTwentyTwo commented 2026-09-26 00:45:15 +00:00 (Migrated from github.com)

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.
Sign in to join this conversation.