# Submit, approve, or reject work

**Flow key:** `approval-and-review`

## Outcome

A requester submits the correct immutable/versioned work to authorized reviewers, and one justified decision advances the workflow with complete evidence.

## Actors

- Requester
- Reviewer/approver
- Workflow service
- Observers/notifications

## Preconditions and entry points

- Synthetic work exists in draft and eligible states.
- Reviewer roles, quorum, order, delegation, timeout, and resubmission policy are known.

## Required test data

Use synthetic, isolated, resettable data. Never use real credentials, payment instruments, private customer records, or production notifications.

| Data | Canonical valid seed | Critical variations |
|---|---|---|
| Work item | `CARBON-REQ-001` version 3 | missing fields, changed after submission, archived, other tenant |
| Reviewers | authorized reviewer A | requester self, removed reviewer, delegated reviewer, multi-stage quorum |
| Decision | approve | reject with reason, request changes, abstain, cancel |
| Reason | `Validated against policy` | empty required, long, emoji/emoticon, markup canary |
| Concurrency | single reviewer | two conflicting decisions, update during review |

## Canonical steps

Treat this as the ordinary successful path inferred from common product behavior. Adapt it to observed labels, business rules, APIs, and implementation evidence; do not invent a requirement.

| Step | User or system action | Expected evidence |
|---:|---|---|
| 1 | Requester reviews and submits the exact version. | Validation freezes or versions review inputs and names reviewers/consequences. |
| 2 | Reviewer receives and opens the task. | Authorization, version, history, attachments, due date, and conflicts are visible. |
| 3 | Reviewer inspects evidence and chooses a decision. | Required reason/checklist and conflict-of-interest rules are enforced. |
| 4 | Confirm once. | Exactly one authorized decision is recorded against the intended version. |
| 5 | Advance or return workflow. | Status, locks, ownership, downstream actions, and notifications agree. |
| 6 | Resubmit, revoke, or race decisions. | Version/quorum/order policy prevents stale or duplicate approval. |

## Alternate paths

- Single approver
- Sequential/multi-stage
- Quorum
- Reject/request changes/resubmit
- Delegation/escalation

## Failure and recovery paths

- Item changes after submission
- Reviewer loses permission
- Conflicting simultaneous decisions
- Notification/action fails after decision
- Deadline escalation duplicates action

## Completion oracle

- The stated outcome is true in visible UI and authoritative persisted state.
- Exactly one intended business result and no unintended side effect occurred.
- Identity, tenant, authorization, money/data, lifecycle, notifications, integrations, analytics, and audit agree where applicable.
- Refresh, retry, back/forward, and a second authorized read do not reveal a contradictory result.
- Any partial, delayed, canceled, failed, or unknown outcome is labeled truthfully and has a safe recovery path.

## Evidence to capture

- Entry context, actor, tenant, role, feature flags, locale, time zone, and initial identifiers/state.
- Step-level screenshots or DOM state plus request/response, correlation, job, event, and stable business IDs where available.
- Before/after authoritative records, versions, totals, permissions, lifecycle states, and downstream side effects.
- Notifications, audit events, integration deliveries, retries, deduplication, latency, and recovery evidence.
- Untested branches, unsafe-to-run cases, product decisions, and evidence tier.

## Product decisions to resolve

- Exact eligibility, required data, authorization, and validation rules.
- Which steps are synchronous, asynchronous, optional, skippable, reversible, or irreversible.
- Idempotency, concurrency, timeout, retry, cancellation, and compensation semantics.
- Retention, privacy, notification, audit, performance, accessibility, and localization commitments.

## Related CARBON items

- [approve reject](../../items/actions/approve-reject.md)
- [workflow graph](../../items/automation/workflow-graph.md)
- [team membership role owner assignment](../../items/identity/team-membership-role-owner-assignment.md)
- [audit](../../items/automation/audit.md)

[Back to Productivity and collaboration flows](index.md)
