---
id: ADR-CMT-MTG-002
title: Share the Governance Transaction Boundary
product_area: committees
module: meetings
revision: 1
status: proposed
design_intent: proposed
source_sha:
  services-committees: 36129c24daeaadcdb339218c38cdeaff9861359d
decision: >-
  The corpus groups meetings, decisions and recruitment into one module with
  separate owning services and shared database transactions for business steps
  that span their records.
constrains:
  - DOM-CMT-MTG-001
  - DOM-CMT-MTG-002
  - DOM-CMT-MTG-003
  - DOM-CMT-MTG-004
  - DOM-CMT-MTG-005
  - DOM-CMT-MTG-006
  - SVC-CMT-MTG-meetings
  - SVC-CMT-MTG-decisions
  - SVC-CMT-MTG-recruitment
  - WF-CMT-MTG-008
  - WF-CMT-MTG-010
  - WF-CMT-MTG-014
origin: none
alternatives:
  - option: Specify three independent corpus modules.
    why_not: It would spread the same atomic business step across separate designs.
  - option: Send internal consequences asynchronously.
    why_not: >-
      A carried result could temporarily have no applied consequence and require
      a recovery policy.
consequences:
  - >-
    Meetings retains minutes ownership while decision code writes approval and
    correction.
  - Any failed internal step aborts the enclosing business transaction.
  - >-
    The meetings stack hosts the event dispatcher used by all three source
    modules.
supersedes: []
evidence:
  - >-
    services-committees at 36129c24:
    modules/decisions/services/persistence/minutes-approvals.ts,
    decisions.ts:insertDraft, slated-nominations.ts;
    modules/recruitment/services/submissions/handle-submission-decisions.ts
---
# Share the Governance Transaction Boundary

## Context

One carried decision can approve minutes or elect a nomination. Those writes already share the result transaction, even though their tables have different logical owners.

## Decision

The corpus groups meetings, decisions and recruitment into one module with separate owning services and shared database transactions for business steps that span their records.

## Alternatives Considered

Specify three independent corpus modules. It would spread the same atomic business step across separate designs.

Send internal consequences asynchronously. A carried result could temporarily have no applied consequence and require a recovery policy.

## Consequences

Meetings retains minutes ownership while decision code writes approval and correction. Any failed internal step aborts the enclosing business transaction. The meetings stack hosts the event dispatcher used by all three source modules.
