Add these to qbit-build-parent so that every qbit inherits them:
G1: dependency rules.
enforcer bannedDependencies on com.kingsrook.qbits:*, except allow-listed API artifacts (qbit-object-storage, a future qbit-assistant-provider-api);
an ArchUnit rule: com.kingsrook.qbits.<x>.. depends only on itself, com.kingsrook.qqq.. and allow-listed com.kingsrook.qbits.<y>.api..;
no Class.forName("com.kingsrook.qbits.<other>").
G3: committed fragment. A registered MiddlewareSpecExtension must have a committed openapi/qqq-v1/{name}.yaml and pass UiApiContractAssertions.assertExtensionMatchesCommitted.
G4: stand-in expiry. Stand-ins are tagged STAND-IN(core=QRun-IO/qqq#N, removeBy=4.1.0-RC.N). The build fails when qqq.version >= removeBy or when removeBy is missing.
G5: no HTML widgets. No RawHTML / WidgetType.HTML outside an allow-list, once the core typed widgets land (qqq F1).
G7: no SNAPSHOT.requireReleaseDeps for com.kingsrook.qqq (no SNAPSHOT on develop).
Add these to `qbit-build-parent` so that every qbit inherits them:
- [ ] **G1: dependency rules.**
- enforcer `bannedDependencies` on `com.kingsrook.qbits:*`, except allow-listed API artifacts (`qbit-object-storage`, a future `qbit-assistant-provider-api`);
- an ArchUnit rule: `com.kingsrook.qbits.<x>..` depends only on itself, `com.kingsrook.qqq..` and allow-listed `com.kingsrook.qbits.<y>.api..`;
- no `Class.forName("com.kingsrook.qbits.<other>")`.
- [ ] **G3: committed fragment.** A registered `MiddlewareSpecExtension` must have a committed `openapi/qqq-v1/{name}.yaml` and pass `UiApiContractAssertions.assertExtensionMatchesCommitted`.
- [ ] **G4: stand-in expiry.** Stand-ins are tagged `STAND-IN(core=QRun-IO/qqq#N, removeBy=4.1.0-RC.N)`. The build fails when `qqq.version >= removeBy` or when `removeBy` is missing.
- [ ] **G5: no HTML widgets.** No `RawHTML` / `WidgetType.HTML` outside an allow-list, once the core typed widgets land (qqq F1).
- [ ] **G7: no SNAPSHOT.** `requireReleaseDeps` for `com.kingsrook.qqq` (no SNAPSHOT on develop).
Source: Architecture review QRun-IO/qqq#1150 (docs/ARCHITECTURE-REVIEW-2026-10-13.md), finding G1-G7.
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.
Add these to
qbit-build-parentso that every qbit inherits them:bannedDependenciesoncom.kingsrook.qbits:*, except allow-listed API artifacts (qbit-object-storage, a futureqbit-assistant-provider-api);com.kingsrook.qbits.<x>..depends only on itself,com.kingsrook.qqq..and allow-listedcom.kingsrook.qbits.<y>.api..;Class.forName("com.kingsrook.qbits.<other>").MiddlewareSpecExtensionmust have a committedopenapi/qqq-v1/{name}.yamland passUiApiContractAssertions.assertExtensionMatchesCommitted.STAND-IN(core=QRun-IO/qqq#N, removeBy=4.1.0-RC.N). The build fails whenqqq.version >= removeByor whenremoveByis missing.RawHTML/WidgetType.HTMLoutside an allow-list, once the core typed widgets land (qqq F1).requireReleaseDepsforcom.kingsrook.qqq(no SNAPSHOT on develop).Source: Architecture review QRun-IO/qqq#1150 (docs/ARCHITECTURE-REVIEW-2026-10-13.md), finding G1-G7.