---
id: STATE-CMT-MTG-007
title: Disclosure Review Status
object: DOM-CMT-MTG-004
product_area: committees
module: meetings
revision: 2
status: draft
design_intent: proposed
implementation_evidence: partially-observed
source_sha:
  services-committees: 36129c24daeaadcdb339218c38cdeaff9861359d
states:
  - name: requested
    meaning: >-
      The appointment owes a declaration for the period; its form may already
      have been started.
  - name: submitted
    meaning: A declared intermediate state that no production write currently reaches.
  - name: reviewed
    meaning: A declared review state that no production write currently reaches.
  - name: accepted
    meaning: An accepted reviewed declaration used for standing interest checks.
  - name: flagged
    meaning: >-
      A reviewed declaration marked for conflict attention and used for standing
      interest checks.
transitions:
  - from: requested
    to: accepted
    trigger: Submissions delivers an accepting review.
    guard: The decision has not already been recorded in the owner ledger.
    side_effects:
      - Save available interests and the reviewer and review time.
    who: The owner review-delivery handler
    provenance: observed
    source: >-
      services-committees:modules/recruitment/services/submissions/handle-submission-decisions.ts
      (accept_disclosure)
  - from: requested
    to: flagged
    trigger: Submissions delivers a flagging review.
    guard: The decision has not already been recorded in the owner ledger.
    side_effects:
      - Save available interests and the reviewer and review time.
    who: The owner review-delivery handler
    provenance: observed
    source: >-
      services-committees:modules/recruitment/services/submissions/handle-submission-decisions.ts
      (flag_disclosure)
  - from: accepted
    to: flagged
    trigger: A superseding review changes acceptance to flagging.
    guard: The delivery names its prior decision and passes supersession handling.
    side_effects:
      - >-
        Mark the prior ledger effect reversed and apply the new review summary
        when available.
    who: The owner review-delivery handler
    provenance: observed
    source: >-
      services-committees:modules/recruitment/services/rules/submission-consequences.ts
      (replace_disclosure_status)
  - from: flagged
    to: accepted
    trigger: A superseding review changes flagging to acceptance.
    guard: The delivery names its prior decision and passes supersession handling.
    side_effects:
      - >-
        Mark the prior ledger effect reversed and apply the new review summary
        when available.
    who: The owner review-delivery handler
    provenance: observed
    source: >-
      services-committees:modules/recruitment/services/rules/submission-consequences.ts
      (replace_disclosure_status)
invalid:
  - from: accepted
    to: requested
    why: >-
      The initial form-request read rejects a disclosure already accepted; a
      concurrent review after that read is not rechecked.
  - from: flagged
    to: requested
    why: >-
      The initial form-request read also rejects a flagged disclosure; the final
      write has the same race.
concurrency: >-
  Appointment-period uniqueness deduplicates daily obligation creation. External
  form creation precedes the row lock; a racing write keeps the first stored
  submission, but a review can complete before that final write.
invariants:
  - INV-DOM-CMT-MTG-004-01
  - INV-DOM-CMT-MTG-004-03
evidence:
  - >-
    services-committees at 36129c24:
    modules/decisions/db/conflict-disclosures.table.ts;
    services/disclosures/disclosures.ts;
    services/persistence/conflict-disclosures.ts;
    modules/recruitment/services/submissions/handle-submission-decisions.ts;
    services/rules/submission-consequences.ts
---
# Disclosure Review Status

## The Lifecycle

```mermaid
stateDiagram-v2
  [*] --> requested
  requested --> accepted
  requested --> flagged
  accepted --> flagged
  flagged --> accepted
```

requested: The appointment owes a declaration for the period; its form may already have been started.

submitted: A declared intermediate state that no production write currently reaches.

reviewed: A declared review state that no production write currently reaches.

accepted: An accepted reviewed declaration used for standing interest checks.

flagged: A reviewed declaration marked for conflict attention and used for standing interest checks.

## Transitions Explained

Submissions delivers an accepting review. The decision has not already been recorded in the owner ledger. Save available interests and the reviewer and review time.

Submissions delivers a flagging review. The decision has not already been recorded in the owner ledger. Save available interests and the reviewer and review time.

A superseding review changes acceptance to flagging. The delivery names its prior decision and passes supersession handling. Mark the prior ledger effect reversed and apply the new review summary when available.

A superseding review changes flagging to acceptance. The delivery names its prior decision and passes supersession handling. Mark the prior ledger effect reversed and apply the new review summary when available.

## What Cannot Happen

The initial form-request read rejects a disclosure already accepted; a concurrent review after that read is not rechecked. The initial form-request read also rejects a flagged disclosure; the final write has the same race. Starting a form does not advance the local status. The reviewed answers may be unavailable, and no deterministic recusal is written merely because a disclosure suggests a conflict.

## Concurrency and Timing

Appointment-period uniqueness deduplicates daily obligation creation. External form creation precedes the row lock; a racing write keeps the first stored submission, but a review can complete before that final write.
