ARCH-6: Adopt single aggregate-per-command mapping contract #65

Merged
jwilger merged 1 commit from issue-6-single-aggregate-command-contract into main 2026-05-07 11:24:45 -07:00
Owner

Closes #6

Summary

  • Defines the mandatory single aggregate-per-command ownership contract in architecture and event-model schema docs.
  • Enforces command ownership metadata, router self-registration, middleware ordering, and external-input idempotency keys in the strict completeness validator.
  • Aligns bootstrap state-change slices with aggregate module/name separation and stable idempotency keys.

Verification

  • npm run test:event-model-contract
  • npm run check:event-model
  • mix format --check-formatted
  • MIX_ENV=test mix compile --warnings-as-errors --force
  • MIX_ENV=prod mix compile --warnings-as-errors --force
  • mix test --warnings-as-errors

Skipped unavailable gates

  • mix dialyzer --halt-exit-status (task not installed)
  • mix credo --strict (task not installed)
  • mix sobelow (task not installed)
Closes #6 ## Summary - Defines the mandatory single aggregate-per-command ownership contract in architecture and event-model schema docs. - Enforces command ownership metadata, router self-registration, middleware ordering, and external-input idempotency keys in the strict completeness validator. - Aligns bootstrap state-change slices with aggregate module/name separation and stable idempotency keys. ## Verification - `npm run test:event-model-contract` - `npm run check:event-model` - `mix format --check-formatted` - `MIX_ENV=test mix compile --warnings-as-errors --force` - `MIX_ENV=prod mix compile --warnings-as-errors --force` - `mix test --warnings-as-errors` ## Skipped unavailable gates - `mix dialyzer --halt-exit-status` (task not installed) - `mix credo --strict` (task not installed) - `mix sobelow` (task not installed)
Sign in to join this conversation.
No description provided.