Skip to content

docs(decisions): correct §22 Dapr outbox claim + add Dapr Workflow decision#145

Merged
emeraldleaf merged 1 commit into
mainfrom
docs/dapr-workflow-section-22
Jun 13, 2026
Merged

docs(decisions): correct §22 Dapr outbox claim + add Dapr Workflow decision#145
emeraldleaf merged 1 commit into
mainfrom
docs/dapr-workflow-section-22

Conversation

@emeraldleaf

@emeraldleaf emeraldleaf commented Jun 13, 2026

Copy link
Copy Markdown
Owner

What

Two corrections to docs/project-decisions.md §22 ("Dapr — considered, not adopted"), surfaced by an /article-audit of Milan Jovanović's Building Dapr Workflows in .NET With Aspire.

  1. Outdated outbox claim, corrected. §22 and the "Why not Dapr?" Q&A asserted Dapr has no transactional outbox. Dapr added a state-store outbox in v1.12. Reworded to the accurate distinction: Dapr's outbox is coupled to its state-store model (atomic unit = Dapr state write + Dapr publish); Wolverine's commits in the same EF SaveChanges as the aggregate write. The decision survives — as "better-integrated for an EF-sourced stack," not "they don't have one."
  2. Dapr Workflow now addressed. The classic-5 building-block table didn't cover Workflow (durable orchestration) — the block newer Dapr content leads with. Added a table row + a subsection framing it honestly as an orchestration-vs-choreography decision (we chose choreography, deliberately), with a concrete flip-trigger: if [epic] Saga compensation — failed-payment + failed-shipment rollback #101's compensation logic grows stateful/complex (timeouts, human-approval gates, multi-day waits, "where is order X stuck?"), re-evaluate durable orchestration as a three-way bake-off — Temporal vs Azure Durable Functions vs Dapr Workflow — not an automatic Dapr adoption.

Why

The audit verdict was "considered + rejected, with depth" — but flagged that §22's tone was more absolute than the facts warrant, and that the Workflow building block wasn't named. This keeps the rejection intentional and accurate rather than a stale strawman. Relates to #86 (expand §22 with reconsideration triggers).

Notes

  • Per-article audit file is gitignored; the INDEX row ships here.
  • Docs-only; no code, no rule paraphrase in CLAUDE.md to sync.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Updated project decision documentation clarifying architectural rationale for Dapr technology choices regarding workflow orchestration and transactional patterns.
    • Added audit log entry documenting the evaluation of Dapr Workflows.

…orchestration-vs-choreography decision

Two corrections to project-decisions.md §22, surfaced by an /article-audit
of Milan Jovanović's 'Building Dapr Workflows in .NET With Aspire':

1. Outbox claim was outdated. §22 (and the 'Why not Dapr?' Q&A) said Dapr
   has no transactional outbox. Dapr added a state-store outbox in v1.12.
   Reworded to the accurate distinction: Dapr's outbox is coupled to its
   state-store model; Wolverine's commits in the same EF SaveChanges as the
   aggregate write. The argument survives as 'better-integrated for an
   EF-sourced stack', not 'they don't have one'.

2. Dapr Workflow wasn't addressed. The classic-5 building-block table didn't
   cover Workflow (durable orchestration) — the block newer Dapr content
   leads with. Added a table row + a subsection framing it as an
   orchestration-vs-choreography decision (we chose choreography), with a
   concrete flip-trigger: if #101 compensation logic grows stateful/complex,
   re-evaluate durable orchestration as a three-way bake-off (Temporal vs
   Azure Durable Functions vs Dapr Workflow), not an automatic Dapr adoption.

Also logs the audit INDEX row (per-article file is gitignored).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: d2400bf0-1483-4923-898e-b03cae5b9d53

📥 Commits

Reviewing files that changed from the base of the PR and between 8f93d3e and 9fce0e0.

📒 Files selected for processing (2)
  • .claude/audits/INDEX.md
  • docs/project-decisions.md

Walkthrough

Updated architectural decision documentation to reflect Dapr v1.12's transactional outbox feature and reframe Dapr Workflows evaluation as an orchestration-vs-choreography trade-off rather than a durability gap. Added corresponding audit trail entry for the considered-and-rejected verdict.

Changes

Dapr Workflows architectural decision documentation

Layer / File(s) Summary
Updated Dapr analysis in project decisions
docs/project-decisions.md
The "Why not Dapr?" section now acknowledges Dapr's v1.12 transactional outbox while maintaining Wolverine's EF Core coupling advantage. The Dapr building-block mapping adds Workflow as an explicit building block and corrects the outbox analysis. The Workflow subsection is reframed from a durability-gap problem into an orchestration-vs-choreography architectural trade with re-evaluation criteria tied to compensation complexity (issue #101) and future feature-adoption scenarios.
Audit log entry for Dapr Workflows decision
.claude/audits/INDEX.md
Added a new audit row documenting the "Building Dapr Workflows in .NET With Aspire" decision as considered and rejected with depth, referencing the updated project decision documentation and linking to a follow-up to update issue #86 with the Workflow/orchestration-vs-choreography framing.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

  • emeraldleaf/NextAurora#104: Established the audit-index logging format and persistence structure that this PR leverages when adding the new "Building Dapr Workflows in .NET With Aspire" audit entry.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically summarizes the main changes: correcting a Dapr outbox claim in section 22 and adding a Dapr Workflow decision to the project-decisions.md file.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/dapr-workflow-section-22

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov

codecov Bot commented Jun 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@emeraldleaf emeraldleaf merged commit d1bcc4c into main Jun 13, 2026
8 checks passed
@emeraldleaf emeraldleaf deleted the docs/dapr-workflow-section-22 branch June 13, 2026 13:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant