---
id: TST-CRM-ACT-032
title: Task lifecycle decisions
kind: unit
product_area: crm
module: activities-tasks
revision: 1
status: draft
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
repository: services-crm
files:
- modules/tasks/tests/unit/services/tasks/lifecycle.spec.js
implements:
- ATS-CRM-ACT-011-01
- ATS-CRM-ACT-011-02
- ATS-CRM-ACT-011-04
- ATS-CRM-ACT-011-06
- ATS-CRM-ACT-011-07
environment: mock
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: Per-test process or page fixtures with reset doubles.
evidence:
- services-crm:modules/tasks/tests/unit/services/tasks/lifecycle.spec.js
- Static inspection only; no runtime result is imported.
- Dependencies and doubles are inspected in the pinned suite setup and imports.
assertion_evidence:
  provenance: test
  source: services-crm:modules/tasks/tests/unit/services/tasks/lifecycle.spec.js
---

# Task lifecycle decisions

## Verification Boundary

This suite checks deterministic module behavior with direct assertions.

## What This Suite Proves

The decision table checks each unfinished-status move, dedicated closure and reopening, invalid closed-work moves and refusal codes.

The registered scenario bindings identify the assertion contributions this executable supplies. A compound scenario can require several suites.

## What It Does Not Prove

It does not establish deployed Lambda transport, live Platform policy or end-user browser behavior.

## Real Dependencies and Test Doubles

The actual helper, schema, mapper or declaration under test runs with fixed inputs. These cases use no database or deployed service.

## Must Not Be Doubled

The decision, mapper, declaration or error response being asserted remains the real implementation.
