FEAT-OBL-003: Satisfy Obligation
| Reference Number | Version | Effective Date | Supersedes | Authority Level |
|---|---|---|---|---|
| FEAT-OBL-003 | 1.2 | 2026-10-10 | 1.1 | Normative |
I. Purpose
This FEAT records lawful satisfaction of an assessed obligation.
The satisfaction may occur through:
- payment, with a Ledger transaction reference; or
- rent waiver, with no Ledger movement.
This FEAT does not create the liability. It closes or partially closes an existing liability through canonical obligation history.
II. Authority
Obligations owns:
assessment_eventsobligation event rows forPAYMENTandWAIVED- satisfaction legality
- rent waiver legality
Ledger owns:
- monetary movement truth for
PAYMENT
Class Configuration owns:
- source terms that make the satisfaction lawful
III. Required Context
Required canonical context:
class_idseat_idassessment_idcorrelation_idmethod=PAYMENTorWAIVEDactor_seat_ididempotency_key
For PAYMENT, the caller SHALL also provide the lawful ledger_transaction_id.
Optional context:
notes— free-text metadata to persist on the resulting event row (seeDOM-OBL-001§VII.1notescolumn contract). NULL and empty string are equivalent. Not used by any legality check; informational only.
IV. Orchestration Logic
1. Verification
- Verify the assessment exists.
- Verify the supplied
correlation_idmatches the assessment lineage. - Verify the requested satisfaction method is lawful for the assessment type.
- For
PAYMENT, verify the Ledger transaction is lawful and belongs to the same class/seat boundary. - For
WAIVED, verify the assessment is rent and the caller has waiver authority.
1.a Shared Payment Funding
For a payment amount lawfully selected by Obligations, the originating FEAT composes the Ledger domain commands incorporated by FEAT-LED-000 §VIII/XI.5 and FEAT-LED-001. It resolves Identity seats and typed Class banking directives, acquires the canonical seat → class serialization before monetary reads, and resolves principal plus any full-shortfall protection legs through the Ledger resolution path. Enabled protection uses savings only if it covers the entire checking shortfall; otherwise savings is untouched. A payment that checking, together with any full-shortfall protection transfer, cannot cover is refused before posting (DOM-OBL-001 3.3 §II.C; SPEC-ECON-003 §4.5.1.1, owner ruling 2026-10-07): the obligation stays owed, accumulates with later assessments, and nothing posts. Insufficient savings alone does not by itself deny a payment — checking plus savings, under the protection rule above, is the full affordability test. Own-account transfers retain their separate sufficient-funds rule.
Obligations still owns the payable slice, partial-payment permission, waiver legality, satisfaction lineage and any separately authorized fee applicability. The shared funding rule creates no waiver, new liability, deferred deduction or additional fee. A lawful payment references its actual principal Ledger effect; protection transfer legs are not satisfaction. Coverage/entitlement consequences remain with their owning domain. Replay returns the original accepted satisfaction/effect identity before repricing or further debit.
2. Mutation
- Create the immutable obligation event row with
event_type = PAYMENTorevent_type = WAIVED. - For
PAYMENT, reference the Ledger transaction. - For
WAIVED, record no Ledger movement.
3. Derived state
The FEAT SHALL NOT persist:
- paid/unpaid
- satisfied/outstanding
- past due
- remaining amount
Those states are projections over immutable assessment and satisfaction history.
4. Coordinated rent-linked entitlement effect
After the obligation satisfaction mutation is lawfully established, the coordinating FEAT MAY evaluate a configured rent-linked Store benefit. This is not part of the monetary satisfaction event and MUST use the lawful Store grant surface rather than the Store purchase path.
The coordinated grant MUST:
- use
acquisition_type = GRANT; - preserve the satisfaction correlation lineage;
- evaluate the product’s source-independent holding limit;
- obtain rent-cycle timing from the Obligations temporal authority; and
- remain idempotent under replay of the same obligation action.
The following checks MUST NOT be reused for the rent-linked grant:
- direct-purchase permission;
- purchase limit;
- overdue direct-purchase policy; or
- purchase funding and price resolution.
If the holding limit prevents the grant, the FEAT MUST preserve the lawful obligation outcome and record the grant result as a separate coordinated outcome. It MUST NOT manufacture a purchase, reverse the satisfaction, or create a Store entitlement exceeding the holding limit.
V. Invariants
- An assessment MAY have multiple
PAYMENTevents. WAIVEDis rent-only.WAIVEDSHALL NOT create a Ledger transaction.- Satisfaction events MUST be immutable.
- Monetary correction after settlement belongs to Ledger, not to obligation history.
VI. Dependencies
docs/DOMAIN/DOM-OBL-001_OBLIGATIONS_DOMAIN.mddocs/FEATURE-EXECUTION/FEAT-LED-001_POST_LEDGER_TRANSACTION.md
VII. Change Notes
1.1 (2026-10-03) explicitly incorporates the universal charge-funding rule and typed FEAT orchestration. Supersedes code-only checking affordability rejection for an otherwise authorized payment; partial-payment, waiver, coverage and fee authority remain unchanged.
Last updated: 2026-10-10