---
id: SVC-PFM-TNL-committees-tenant-lifecycle
title: Committees Lifecycle Participants
product_area: platform
module: tenant-lifecycle
repository: services-committees
source_module: modules/tenant-lifecycle
revision: 1
status: draft
design_intent: confirmed
origin: services-platform:docs/tenants/tenant-lifecycle-plan.md#§6.1 Registration (approved 2026-10-09); services-platform:docs/data-jobs/tenant-reset.md#§3
  The contract for a macroservice that holds a tenant's records
implementation_evidence: observed
inference: []
source_sha:
  services-committees: 36129c24daeaadcdb339218c38cdeaff9861359d
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
owns: []
does_not_own:
- Platform’s orchestration plan, integration switch and recorded workflow accounting.
- System-owned workspace lifecycle facts.
- Business record ownership, which remains with the application’s domain modules.
operations:
- operation_id: describe
  route: lifecycle function committees_tenant_lifecycle operation describe
  intent: Return participant declarations and the operations the application supports.
  access: internal
  permission: 'none: invoked by Platform''s lifecycle jobs through an IAM invoke grant; no person calls it'
  realises:
  - CAP-PFM-TNL-007
  published_to_submissions: 'not published: internal lifecycle or deployment work is not configurable intake.'
  provenance: observed
  source: services-committees:modules/tenant-lifecycle/services/lifecycle/tenant-lifecycle-operations.ts:TENANT_LIFECYCLE_OPERATIONS
- operation_id: provision
  route: lifecycle function committees_tenant_lifecycle operation provision
  intent: Apply the selected participant’s starter defaults through its construction implementation.
  access: internal
  permission: 'none: invoked by Platform''s lifecycle jobs through an IAM invoke grant; no person calls it'
  realises:
  - CAP-PFM-TNL-002
  - CAP-PFM-TNL-008
  published_to_submissions: 'not published: internal lifecycle or deployment work is not configurable intake.'
  provenance: observed
  source: services-committees:modules/tenant-lifecycle/services/lifecycle/tenant-lifecycle-operations.ts:TENANT_LIFECYCLE_OPERATIONS
- operation_id: verifyProvisioned
  route: lifecycle function committees_tenant_lifecycle operation verifyProvisioned
  intent: Report readiness and the requirements the selected participant finds missing.
  access: internal
  permission: 'none: invoked by Platform''s lifecycle jobs through an IAM invoke grant; no person calls it'
  realises:
  - CAP-PFM-TNL-002
  - CAP-PFM-TNL-008
  published_to_submissions: 'not published: internal lifecycle or deployment work is not configurable intake.'
  provenance: observed
  source: services-committees:modules/tenant-lifecycle/services/lifecycle/tenant-lifecycle-operations.ts:TENANT_LIFECYCLE_OPERATIONS
- operation_id: purge
  route: lifecycle function committees_tenant_lifecycle operation purge
  intent: Remove a bounded batch of declared participant resources and return progress.
  access: internal
  permission: 'none: invoked by Platform''s lifecycle jobs through an IAM invoke grant; no person calls it'
  realises:
  - CAP-PFM-TNL-017
  published_to_submissions: 'not published: internal lifecycle or deployment work is not configurable intake.'
  provenance: observed
  source: services-committees:modules/tenant-lifecycle/services/lifecycle/tenant-lifecycle-operations.ts:TENANT_LIFECYCLE_OPERATIONS
- operation_id: inventory
  route: lifecycle function committees_tenant_lifecycle operation inventory
  intent: Count the selected participant’s remaining declared resources.
  access: internal
  permission: 'none: invoked by Platform''s lifecycle jobs through an IAM invoke grant; no person calls it'
  realises:
  - CAP-PFM-TNL-017
  published_to_submissions: 'not published: internal lifecycle or deployment work is not configurable intake.'
  provenance: observed
  source: services-committees:modules/tenant-lifecycle/services/lifecycle/tenant-lifecycle-operations.ts:TENANT_LIFECYCLE_OPERATIONS
- operation_id: reset
  route: lifecycle function committees_tenant_lifecycle operation reset
  intent: Run the selected participant’s initial-load removal behavior.
  access: internal
  permission: 'none: invoked by Platform''s lifecycle jobs through an IAM invoke grant; no person calls it'
  realises:
  - CAP-PFM-TNL-012
  published_to_submissions: 'not published: internal lifecycle or deployment work is not configurable intake.'
  provenance: observed
  source: services-committees:modules/tenant-lifecycle/services/lifecycle/tenant-lifecycle-operations.ts:TENANT_LIFECYCLE_OPERATIONS
events: []
jobs:
- name: committees_tenant_lifecycle
  kind: Lambda function, five-minute timeout
  trigger: Invoked by the declared lifecycle caller or deployment hook; enablement and recovery limits are stated
    below.
  notes: This interface has no export operation.
integrations:
- system: Platform workspace lifecycle jobs
  direction: inbound
  contract: A synchronous invocation selects the operation and participant and supplies workspace, run and batching
    context as required by that operation.
consistency:
- rule: A removal batch commits within its workspace before the invocation returns.
  kind: transactional
  compensation: Retry continues removal; completed batches are retained.
- rule: Repeated removal works toward empty declared resources; provisioning repeats follow participant-specific
    behavior.
  kind: eventual
  compensation: Recovery retries forward without undoing earlier batches.
- rule: Reference clearing can change surviving rows before all removal batches finish.
  kind: eventual
  compensation: Recovery continues removal without restoring cleared references.
- rule: Protected governance rows are removed through guarded functions in dependency order.
  kind: transactional
  compensation: No rollback is provided.
evidence:
- 'services-committees at 36129c24: modules/tenant-lifecycle/participants.ts; services/lifecycle/tenant-lifecycle-operations.ts;
  services/persistence/tenant-purges.ts; services/seeding/starter-seeds.ts; db/tenant-seed-applications.table.ts;
  aws/logic/tenant-lifecycle.lambda.ts.'
controls: [TC-AVL-001, TC-AVL-004, TC-AVL-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-AZ-006, TC-CHG-001, TC-CHG-002, TC-CHG-003, TC-CHG-004, TC-CHG-005, TC-CHG-006, TC-CHG-007, TC-CRY-001, TC-CRY-002, TC-CRY-003, TC-CRY-004, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-DAT-004, TC-DAT-005, TC-DAT-006, TC-IAM-001, TC-IAM-002, TC-IAM-003, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-MON-003, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-004, TC-PI-005, TC-PRV-001, TC-PRV-002, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-VEN-001, TC-VEN-002, TC-VEN-003]
---

# Committees Lifecycle Participants

## What This Service Is For

Committees contributes five participants for committee records, authority, meetings, minutes and decisions. Construction applies starter committee types and positions; deletion and initial-load reset remove the declared records.

## Boundary

Committees owns participant behavior, its starter ledger and governance records. Platform owns the execution plan. The interface has no export operation. Request-gate wiring is outside this module’s registered source scope.

## Operations in Words

The manifest supplies dependencies that determine construction and reverse removal order. Only the committees participant applies starter defaults, with ledger entries; the remaining participants need no construction work. Purge removes children before parents, using a guarded database function for protected governance history. Reset calls the same purge implementation and does not restore starter configuration. Missing run identity becomes an empty value, and the dispatcher forwards batch sizes without bounding them.

## Events and Jobs

The interface declares no business events. Platform invokes the lifecycle function for construction, reset and deletion, with a five-minute timeout.

## Consistency Guarantees

Each removal batch commits within its workspace. Seed application records the default and ledger together. Removal also clears references on rows that can survive a partial batch; isolation and repeated execution need explicit proof.
