Robert Bond
9595ad86df
Merged PR 2374: addeding domain layer extrraction
# Summary
This PR introduces a **Case Lifecycle Domain Boundary** to centralize lifecycle decision logic and reduce coupling within the appeals application.
The work is **behaviour-preserving** and introduces no intentional changes to business rules, CRM integrations, translations, dashboards, API routes, or user-facing functionality.
## What was added
New lifecycle boundary:
```text
lib/domain/case-lifecycle/
```
Key responsibilities extracted:
- Specialist process normalization
- Appeal type mapping
- Specialist process stage override mapping
- Stage case-type resolution
- Stage catalogue lookup
- Closed-case status recognition
- Lifecycle stage index resolution
- Lifecycle stage status assignment
## Behaviour preserved
Characterization tests were added before each extraction to preserve:
- Appeal type mapping and aliases
- Specialist process handling
- Lifecycle stage progression
- Closed-case handling
- Status assignment (`complete`, `in-progress`, `not-started`)
- Existing ROW behaviour
- Existing `statuscode` lifecycle semantics
Closed-case recognition remains unchanged for:
```text
1000
5
6
846040013
846040059
846040060
```
## Documentation
Added:
```text
lib/domain/case-lifecycle/README.md
```
Documenting:
- Boundary ownership
- Non-goals
- Lifecycle invariants
- Known architectural constraints
- Future extraction roadmap
## Testing
Added lifecycle characterization coverage for:
- Stage wrapper behaviour
- Specialist process normalization
- Appeal type mapping
- Specialist process stage mapping
- Stage case-type resolution
- Stage catalogue lookup
- Progress behaviour
- Closed-case status handling
- Stage index resolution
- Stage status assignment
## Validation
- Lifecycle characterization tests passed
- `npm run lint` passed with no errors
## Out of Scope
No changes to:
- Stage catalogue ownership
- Representation eligibility
- Dashboard calculations
- CRM/OData queries
- API routes
- Redux state
- EN/CY translations
- Event visibility logic
## Risk
**Low risk**
The refactor was delivered through small, characterization-first slices with no functional changes intended.
Related work items: #23527
2026-06-08 09:34:30 +00:00
..
2026-03-12 09:34:16 +00:00
2026-05-29 16:35:27 +00:00
2026-05-29 16:35:27 +00:00
2026-05-14 08:55:49 +00:00
2026-06-08 09:34:30 +00:00
2026-05-14 08:55:49 +00:00
2024-06-19 06:32:38 +01:00
2026-06-08 09:34:30 +00:00
2026-03-12 17:41:36 +00:00
2026-05-14 08:55:49 +00:00
2026-03-12 17:34:03 +00:00
2024-09-13 11:03:35 +01:00
2026-04-13 15:54:51 +00:00
2024-10-03 11:04:10 +01:00
2024-06-19 06:32:38 +01:00
2024-06-19 06:32:38 +01:00
2024-08-12 11:09:59 +01:00
2026-03-12 09:49:40 +00:00
2026-05-28 10:41:11 +00:00
2026-03-12 09:49:40 +00:00
2026-05-14 08:55:49 +00:00
2026-03-12 09:51:13 +00:00
2024-06-19 06:32:38 +01:00
2024-06-19 06:32:38 +01:00
2026-03-12 09:49:40 +00:00
2024-08-12 11:09:59 +01:00
2024-10-03 11:04:10 +01:00
2024-08-27 11:44:56 +01:00
2026-05-14 08:55:49 +00:00
2026-04-22 13:28:05 +00:00
2024-06-19 06:32:38 +01:00
2024-06-19 06:32:38 +01:00
2026-03-13 10:58:26 +00:00
2026-02-04 11:19:35 +00:00
2024-06-19 06:32:38 +01:00
2026-03-12 09:49:40 +00:00