The qbit-email integration (#11) added com.kingsrook.qbits:qbit-email as an optional dependency. email/QbitEmailTransport and MarketingRuntime import its internals:
EmailRuntime and EmailQBitConfig;
outbox.EmailService, EmailRequest, EmailSendResult and EmailCategory;
metadata.EmailTables;
support.SystemWrites.
This is the same coupling that architecture review QRun-IO/qqq#1150 flagged in F4 (easypost to alerts) and F5 (marketing to assistant). The enforced guardrails (qbit-build-parent 2.1.0, G1) reject it.
Fix:
qbit-email publishes a small API, either a com.kingsrook.qbits.email.api package or a qbit-email-api artifact, holding at least the send request and result, the category, and an "is the outbox available" probe. Alternatively, it registers as a core QQQ messaging provider, so marketing calls core and needs no qbit-email type at all.
Marketing then depends only on that API.
Until then: qbit-marketing#12 allow-lists qbit-email and its packages explicitly in qbit.guardrails.allowedQbitArtifacts/allowedApiPackages, pointing at this issue. The exception is visible and tracked.
The qbit-email integration (#11) added `com.kingsrook.qbits:qbit-email` as an optional dependency. `email/QbitEmailTransport` and `MarketingRuntime` import its internals:
- `EmailRuntime` and `EmailQBitConfig`;
- `outbox.EmailService`, `EmailRequest`, `EmailSendResult` and `EmailCategory`;
- `metadata.EmailTables`;
- `support.SystemWrites`.
This is the same coupling that architecture review QRun-IO/qqq#1150 flagged in F4 (easypost to alerts) and F5 (marketing to assistant). The enforced guardrails (qbit-build-parent 2.1.0, G1) reject it.
**Fix:**
- qbit-email publishes a small API, either a `com.kingsrook.qbits.email.api` package or a `qbit-email-api` artifact, holding at least the send request and result, the category, and an "is the outbox available" probe. Alternatively, it registers as a core QQQ messaging provider, so marketing calls core and needs no qbit-email type at all.
- Marketing then depends only on that API.
**Until then:** qbit-marketing#12 allow-lists `qbit-email` and its packages explicitly in `qbit.guardrails.allowedQbitArtifacts`/`allowedApiPackages`, pointing at this issue. The exception is visible and tracked.
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.
The qbit-email integration (#11) added
com.kingsrook.qbits:qbit-emailas an optional dependency.email/QbitEmailTransportandMarketingRuntimeimport its internals:EmailRuntimeandEmailQBitConfig;outbox.EmailService,EmailRequest,EmailSendResultandEmailCategory;metadata.EmailTables;support.SystemWrites.This is the same coupling that architecture review QRun-IO/qqq#1150 flagged in F4 (easypost to alerts) and F5 (marketing to assistant). The enforced guardrails (qbit-build-parent 2.1.0, G1) reject it.
Fix:
com.kingsrook.qbits.email.apipackage or aqbit-email-apiartifact, holding at least the send request and result, the category, and an "is the outbox available" probe. Alternatively, it registers as a core QQQ messaging provider, so marketing calls core and needs no qbit-email type at all.Until then: qbit-marketing#12 allow-lists
qbit-emailand its packages explicitly inqbit.guardrails.allowedQbitArtifacts/allowedApiPackages, pointing at this issue. The exception is visible and tracked.