ACHOriginationDailySweep::ConcentrationToFRBSweep
- Parent
- ACHOriginationDailySweep
- Children
- Description
- Required: every daily ACH origination sweep should be followed
by a Concentration→FRB sweep that rolls the consolidated balance
out to the Fed. A missing child means SNB swept ACH activity
internally but never settled it externally — surfaces as an
orphan exception.
CustomerInboundACH::CustomerInboundACHReturnNSF,CustomerInboundACHReturnStopPay
- Parent
- CustomerInboundACH
- Children
- CustomerInboundACHReturnNSF
- CustomerInboundACHReturnStopPay
- Description
- Return-reason XOR group on inbound ACH (NACHA codes). At most
one of these returns fires per inbound original — most inbound
ACHs aren't returned at all. NSF (R01) covers insufficient
funds; StopPay (R08) covers the customer's stop-payment
instruction. If both fire on the same original that's a runtime
anomaly (post-time check, not catchable at validation).
MerchantSettlementCycle::MerchantPayoutACH,MerchantPayoutCheck,MerchantPayoutWire,MerchantWeeklyPayoutBatch
- Parent
- MerchantSettlementCycle
- Children
- MerchantPayoutACH
- MerchantPayoutWire
- MerchantPayoutCheck
- MerchantWeeklyPayoutBatch [fan-in epc=5]
- Description
- AB.6.6.sasq (2026-05-19) — mixed-cardinality demonstration.
Each settled MerchantSettlementCycle fires both:
- exactly ONE of three 1:1 payout vehicles (ACH preferred
default, Wire for merchants banking elsewhere, Check for
legacy paper); AND
- contributes to the week's MerchantWeeklyPayoutBatch
(5 daily settlements share one weekly batch Transfer —
AB.6 per-child fan_in shape).
The L1 invariants split the work: `multi_xor_violation`
enforces the XOR alternation on [ACH, Wire, Check];
`fan_in_disagreement` enforces parent_count=5 on the batch.
CustomerFeeAccrual::InternalTransferCycle
- Parent
- CustomerFeeAccrual
- Children
- Description
- Template-as-chain-child shape (AB.2, gap doc §3). Every customer
fee accrual SHOULD trigger an `InternalTransferCycle` to move
the accrued amount from the customer's DDA to the fee revenue
GL. All three leg_rails of the child template
(`InternalTransferDebit`, `InternalTransferCredit`,
`InternalTransferSuspenseClose`) share one child Transfer and
one `parent_transfer_id` (first-firing-wins per gap doc §3).
The L1 `chain_parent_disagreement` matview catches any leg
that claims a different parent — surfaces as an ETL bug on
Today's Exceptions.
MerchantDailySettleAggregator::MerchantWeeklyPayoutBatch
- Parent
- MerchantDailySettleAggregator
- Children
- MerchantWeeklyPayoutBatch [fan-in epc=5]
- Description
- AB.4 fan-in chain (gap doc §2 MerchantPayoutBatch; AB.6
per-child shape). 5 daily MerchantDailySettleAggregator firings
(one per business day of the week) share ONE
MerchantWeeklyPayoutBatch Transfer. The AB.4.3
`_transfer_parents` matview derives the multi-parent set per
child; AB.4.7's `_fan_in_disagreement` matview reads
parent_count vs expected_parent_count=5 to flag batches
missing a daily contribution (parent_count<5) or carrying an
extra one (parent_count>5).