सागाधर्मः। भारत्यागे (५ नव) प्रवेशः। अत्र बहुसेवा दीर्घव्यवहारः। saga, compensate, orchestrate। न आशा-2PC; सागाधर्मः।
English (minimizable)
After load shedding (5 Nov), this post covers sagas: local commits, compensating actions, orchestration versus choreography, idempotent steps, stuck visibility, reservations, failure policy and contrasts with dual write and outbox.
पूर्ण-शीर्षकम् / Full title
सागाधर्मः: A Metrical Codification of the Saga Pattern (with English glosses)
English · overview and topics (minimizable)
What this post is about
Sagas implement long-running business flows across services with local transactions and compensating actions instead of a global lock.
Topics covered
- Why not one global TX
- Local commit plus outcome
- Compensation as business reverse
- Orchestration vs choreography
- Idempotent steps
- Stuck saga visibility
- Reservations and semantic locks
- Failure compensate-or-stop
- When a local TX is enough
- Dual write vs saga vs outbox
Sanskrit title
सागाधर्मः = sāgā-dharmaḥ “dharma of the saga”.
English
Minimizable; Sanskrit-first.
परम्परा-सन्धिः / Series links
| पूर्वं / Prior | अत्र / Adds | न पुनः / Does not repeat |
|---|---|---|
| द्वैधलेखनधर्मः (३० अक्टो) | dual write | anti-pattern contrast |
| बहिर्लेखनपटलः (२८ सितम्बे) | outbox | step event birth |
| घटनास्रोतधर्मः (२५ अक्टो) | events | choreography fuel |
| इदमर्थकुञ्चिका (४ अक्टो) | idempotency | step safety |
| इदम् | saga compensate flow | - |
ग्राह्य-त्याज्य-विवेकः / Keep and avoid
ग्राह्यम् / Keep
१. local TX per step: no global XA fantasy
२. business compensations: not only row undo
३. choose orch or choreography: document map
४. idempotent step ids: duplicate safe
५. age open sagas: ops dashboards
६. reserve scarce goods: TTL holds
७. prefer single-DB TX: when invariant fits
त्याज्यम् / Avoid
- hold distributed locks across SaaS APIs
- compensation that is not actually reversible
- no dashboard for open saga age
अध्याय-योजना / Chapter plan
| प्रकरणम् | विषयः | छन्दः | श्लोकाः |
|---|---|---|---|
| १ | मङ्गलं बीजं च / Opening | अनुष्टुभ् | २ |
| २ | मूलतत्त्वानि / Core | अनुष्टुभ् | २ |
| ३ | मुख्यविधिः / Method | उपजाति | १ |
| ४ | रक्षा · विधिः / Guards | अनुष्टुभ् | २ |
| ५ | विवेक · सीमा / Judgment | अनुष्टुभ् | २ |
| ६ | पूर्वसन्धिः / Series links | उपजाति | १ |
| ७ | उपसंहारः / Close | अनुष्टुभ् | २ |
पारिभाषिक-कोशः / Glossary
| Modern English | संस्कृतम् | Note |
|---|---|---|
| saga | सागा / saga | |
| compensation | क्षतिपूरणम् | |
| orchestration | सूत्रधारणम् | |
| choreography | नृत्यक्रमः / choreography | |
| reservation | आरक्षणम् | |
| semantic lock | अर्थबन्धः | |
| step id | पदचिह्नम् | |
| stuck saga | बद्धसागा | |
| local transaction | स्थानीयव्यवहारः | |
| forward recovery | अग्रसमारोपः |
श्लोकः १ (अनुष्टुभ्)
सागाधर्मस्तस्माद् क्रमक्षतिपूरणम् ॥१॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
दीर्घव्यवहारः बहुसेवासु यदि एकTX न सम्भवति ।
सागाधर्मस्तस्माद् क्रमक्षतिपूरणम् ॥१॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| दीर्घव्यवहारः | long business action |
| बहुसेवासु | across services |
| एकTX | one transaction |
| न सम्भवति | not possible |
| सागाधर्मः | saga dharma |
| क्रमक्षतिपूरणम् | ordered compensation |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| सागाधर्मः | saga dharma |
| क्रमक्षतिपूरणम् | stepwise compensation |
English sense
A saga breaks a cross-service business flow into local transactions plus compensating actions when a later step fails.
Context / topic
Topic: why saga. Distinct from dual write hope and from distributed 2PC.
वृत्तमिति: ८-८-८-८।
श्लोकः २ (अनुष्टुभ्)
global lock मिथ्या ॥२॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
each step local commit + outcome event ।
global lock मिथ्या ॥२॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| each | each |
| step | step |
| local | local |
| commit | commit |
| outcome | outcome |
| event | event |
| global | global |
| lock | lock |
| मिथ्या | false |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| local commit | per service TX |
| global lock | pretend XA |
English sense
Every participant commits locally and emits an outcome. Do not hold global locks across alien systems.
Context / topic
Topic: local transactions.
वृत्तमिति: ८-८-८-८।
श्लोकः ३ (अनुष्टुभ्)
not always DB undo ॥३॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
compensating action inverse business ।
not always DB undo ॥३॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| compensating | compensating |
| action | action |
| inverse | inverse |
| business | business |
| not | not |
| always | always |
| DB | DB |
| undo | undo |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| compensating action | business reverse |
| DB undo | mechanical rollback |
English sense
Compensation is a business reverse such as refund or cancel not always a row delete.
Context / topic
Topic: compensation meaning.
वृत्तमिति: ८-८-८-८।
श्लोकः ४ (अनुष्टुभ्)
एकं न सर्वकर्म ॥४॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
orchestration vs choreography ।
एकं न सर्वकर्म ॥४॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| orchestration | orchestration |
| vs | vs |
| choreography | choreography |
| एकम् | one |
| न सर्वकर्म | not all jobs |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| orchestration | central coordinator |
| choreography | event-driven peers |
English sense
Choose a central orchestrator or peer event choreography on purpose. Mixing both without a map creates ghost steps.
Context / topic
Topic: styles.
वृत्तमिति: ८-८-८-८।
श्लोकः ५ (उपजाति)
द्विः मा दह ।
at-least-once
सामान्यम् ॥५॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
idempotent steps + compensations
द्विः मा दह ।
at-least-once
सामान्यम् ॥५॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| idempotent | idempotent |
| steps | steps |
| compensations | compensations |
| द्विः | twice |
| मा दह | do not burn |
| at-least-once | at-least-once |
| सामान्यम् | normal |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| idempotent steps | safe replay |
| at-least-once | delivery |
English sense
Steps and compensations must tolerate duplicate delivery with saga and step ids.
Context / topic
Topic: idempotency.
वृत्तमिति: एकादशाक्षराः पादाः।
श्लोकः ६ (अनुष्टुभ्)
zombie flow प्रेतः ॥६॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
timeouts and stuck sagas visible ।
zombie flow प्रेतः ॥६॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| timeouts | timeouts |
| stuck | stuck |
| sagas | sagas |
| visible | visible |
| zombie | zombie |
| flow | flow |
| प्रेतः | ghost |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| stuck sagas | ops visibility |
| zombie flow | never finishes |
English sense
Track open sagas by age and state. Invisible stuck flows leak inventory and money.
Context / topic
Topic: observability.
वृत्तमिति: ८-८-८-८।
श्लोकः ७ (अनुष्टुभ्)
oversell without hold ॥७॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
semantic lock / reservation step ।
oversell without hold ॥७॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| semantic | semantic |
| lock | lock |
| reservation | reservation |
| step | step |
| oversell | oversell |
| without | without |
| hold | hold |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| reservation | hold resource |
| oversell | no hold |
English sense
Reserve scarce resources early with TTL holds. Pure hope between steps oversells.
Context / topic
Topic: reservations.
वृत्तमिति: ८-८-८-८।
श्लोकः ८ (अनुष्टुभ्)
policy स्पष्टा ॥८॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
failure: compensate forward or stop ।
policy स्पष्टा ॥८॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| failure | failure |
| compensate | compensate |
| forward | forward |
| stop | stop |
| policy | policy |
| स्पष्टा | clear |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| compensate forward | undo prior |
| stop | manual path |
English sense
Define whether failure auto-compensates prior steps or pages a human with a frozen state.
Context / topic
Topic: failure policy.
वृत्तमिति: ८-८-८-८।
श्लोकः ९ (अनुष्टुभ्)
local TX simpler ॥९॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
not for tight single-DB invariants ।
local TX simpler ॥९॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| not | not |
| tight | tight |
| single-DB | single-DB |
| invariants | invariants |
| local | local |
| TX | TX |
| simpler | simpler |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| tight invariants | need one commit |
| local TX | prefer simple |
English sense
If one database can own the invariant keep a local transaction. Sagas add moving parts for a reason.
Context / topic
Topic: when not.
वृत्तमिति: ८-८-८-८।
श्लोकः १० (उपजाति)
सागा क्रम + क्षतिपूरणम् ।
आउटबॉक्स
जन्म ॥१०॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
द्वैधलेखनं द्वौ स्रोता
सागा क्रम + क्षतिपूरणम् ।
आउटबॉक्स
जन्म ॥१०॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| द्वैधलेखनम् | dual write |
| द्वौ | two |
| स्रोता | sources |
| सागा | saga |
| क्रम | order |
| क्षतिपूरणम् | compensation |
| आउटबॉक्स | outbox |
| जन्म | birth |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| द्वैधलेखनम् | dual write |
| आउटबॉक्स | outbox |
English sense
Dual write invents two primaries at once; sagas sequence local commits with compensations; outbox still births each step event safely.
Context / topic
Topic: series distinctions.
सन्धिः: द्वैध युगपत्; सागा क्रम; पटल घटनाजन्म।
वृत्तमिति: एकादशाक्षराः पादाः।
श्लोकः ११ (अनुष्टुभ्)
एभिः सागाधर्मः क्रमक्षतिपूरणसमन्वितः ॥११॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
local-step compensate idempotent visible reserve पञ्चकम् ।
एभिः सागाधर्मः क्रमक्षतिपूरणसमन्वितः ॥११॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| local-step | local-step |
| compensate | compensate |
| idempotent | idempotent |
| visible | visible |
| reserve | reserve |
| पञ्चकम् | five-set |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| पञ्चकम् | local-step compensate idempotent visible reserve |
English sense
Five limbs: local commits, real compensations, idempotent handlers, visible stuck state and early reservations.
Context / topic
Topic: checklist.
वृत्तमिति: ८-८-८-८।
श्लोकः १२ (अनुष्टुभ्)
मितं दीर्घव्यवहारं क्रियायोग्यं तन्त्रधर्मः स उच्यते ॥१२॥
पदच्छेदः · Word-for-word · English (minimizable)
पदच्छेदः
इति सागाधर्मसारः क्रमक्षतिपूरणसमन्वितः ।
मितं दीर्घव्यवहारं क्रियायोग्यं तन्त्रधर्मः स उच्यते ॥१२॥
Word-for-word
| संस्कृतपदम् | Word-for-word English |
|---|---|
| इति | thus |
| सागाधर्मसारः | saga essence |
| क्रमक्षतिपूरणम् | step compensation |
| मितम् | measured |
| दीर्घव्यवहारम् | long business |
| क्रियायोग्यम् | operable |
| तन्त्रधर्मः | system dharma |
Gloss table
| पदम् | अर्थः / sense |
|---|---|
| मितं दीर्घव्यवहारम् | measured long flow |
| तन्त्रधर्मः | platform dharma |
English sense
Closing: sequence local truth, reverse with business sense and never lose the open saga in the dark.
Context / topic
Topic: close.
उपसंहारन्यायः: पदे पदे प्रतिज्ञां कुरु; दोषे क्षतिं पूरय; प्रेतं मा त्यज।
वृत्तमिति: ८-८-८-८।
श्लोकसूची / Verse index
१. Why saga
२. Local TX
३. Compensate
४. Orch/choreo
५. Idempotent
६. Visibility
७. Reserve
८. Failure policy
९. When not
१०. Series
११. Five limbs
१२. Close
सन्दर्भाः / References
- Prior: dual write 2026-10-30; outbox 2026-09-28; events 2026-10-25.
- Domain: saga pattern.
- English minimizable; Sanskrit-first.
- Style: no em dash; no Oxford comma in English clauses.