core; never on loyalty, crm or identity.
Spanish mirror:
../../es/modules/messaging/. English is authoritative.
Feature roadmap
Nine deliveries. Six make F1a, because every other module needs to notify somebody.The cut, explained
- The cascade comes first (
0001).resolveChannels()is what every other module calls to ask “may I notify this person, on what”. Nothing else in the module means anything without it. - Sends and dispatch are separate (
0003,0005). Recording that a message exists and getting it out under a shared provider rate limit are different problems: one is a state machine, the other is fairness between tenants. - Adapters are one delivery (
0006), not one per channel. They implement the same port with the same contract; splitting them would repeat the same spec four times. - Campaigns are F1b (
0007). F1a needs transactional notifications to work — points earned, coupon issued, OTP. Marketing blasts are a product surface that can follow. - SMS is last and separate (
0009) because it is the only one that needs a new vendor, which needs its own ADR (DEC-E1).