Robert Bond
90e8cacf67
Merged PR 2537: adjusted back button on first page of reopend rep
...
adjusted back button on first page of reopend rep
Related work items: #24488
2026-08-04 10:42:07 +00:00
Robert Bond
d190fa8ff7
Merged PR 2534: adjusted breadcrumb for viewall return from a case
...
adjusted breadcrumb for viewall return from a case
Related work items: #24389
2026-08-04 08:09:04 +00:00
Robert Bond
9a461dee5e
Merged PR 2512: adjsuted breadcrumb for dashboard links to cases to return to my portal not s...
...
adjsuted breadcrumb for dashboard links to cases to return to my portal not search results
Related work items: #24389
2026-07-24 11:38:48 +00:00
Robert Bond
e864049bec
Merged PR 2449: language helper
...
Related work items: #23754
2026-07-01 11:29:15 +00:00
Robert Bond
e195e09429
Merged PR 2407: Extract representation entry specialist rules to domain policy
...
Extract representation entry specialist rules to domain policy
Related work items: #23754
2026-06-19 11:21:17 +00:00
Robert Bond
a6941a8a06
Merged PR 2398: amends to appeal policy
...
Related work items: #23754
2026-06-18 05:17:10 +00:00
Robert Bond
475aa965b4
Merged PR 2395: helpers for dashboard domain layer
...
Related work items: #23754
2026-06-17 16:06:09 +00:00
Robert Bond
0b66a0e1d4
Merged PR 2394: adjusting reps domain logic
...
Related work items: #23754
2026-06-17 10:55:32 +00:00
Robert Bond
7e47340326
Merged PR 2377: added enlarge map view on dnsapplication list
...
added enlarge map view on dnsapplication list
Related work items: #23774
2026-06-09 10:04:32 +00:00
Robert Bond
c39e4bcc9a
Merged PR 2375: update representation policy
...
## Summary
Introduces a new `representation-policy` domain boundary and incrementally extracts low-risk representation entry policy logic while preserving existing behaviour.
This PR intentionally stops before extracting ROW and Advert entry rules because characterization uncovered behavioural differences between consumers that require a separate business decision.
## What Changed
Added:
```text
lib/domain/representation-policy/
```
Including:
- `resolveRepresentationWindow(...)`
- `isRepresentationWindowOpen(...)`
- `isRepresentationWindowClosed(...)`
- `canShowRepresentationButtonForAppealType(...)`
- `canStartHouseholderRepresentation(...)`
- `canStartCpoRepresentation(...)`
Updated consumers:
```text
components/case/summary/utils/representationEntry.js
components/search/repsonresults.js
```
## Extracted Behaviour
### Representation Window Calculation
Centralised shared representation window logic and adopted it in both consumers.
### Appeal Type Entry Gating
Centralised excluded appeal-type logic while preserving existing behaviour.
### Householder Rule
Centralised Householder (`846040004`) entry rule.
Preserved behaviour:
```text
Householder representations can only be started by LPAs.
```
### CPO Rule
Centralised CPO (`846040019`) entry rule.
Preserved behaviour using:
```text
pinswg_startdate
pinswg_statementduedate
```
No fallback date broadening introduced.
## Characterization Added
### ROW (`846040015`)
Documented:
- hearing vs non-hearing behaviour
- specialist-process field behaviour
- date gating
- appeal-type coercion behaviour
### Advert (`846040018`)
Documented:
- LPA/non-LPA behaviour
- specialist-process behaviour
- appeal-type coercion behaviour
## Important Findings
### ROW Divergence
Summary and Search consumers currently behave differently when only:
```text
pinswg_speacialistcaseprocess
```
exists.
### Advert Divergence
Summary and Search consumers currently use different specialist-process resolution paths.
### CRM Compatibility
Both fields remain in production use and must be preserved:
```text
pinswg_specialistcaseprocess
pinswg_speacialistcaseprocess
```
## Documentation
Added:
```text
lib/domain/representation-policy/README.md
```
Documenting:
- ownership
- non-goals
- CRM compatibility requirements
- ROW divergence
- Advert divergence
- future extraction constraints
## Validation
Executed during the slice series:
```bash
node tests/phase22/representation-window.test.cjs
node tests/phase22/representation-appeal-type-entry-gating.test.cjs
node tests/phase22/representation-householder-entry-rule.test.cjs
node tests/phase22/representation-cpo-entry-rule.test.cjs
node tests/phase22/representation-row-entry-rule.test.cjs
node tests/phase22/representation-advert-entry-rule.test.cjs
npm run lint
```
All passing.
## Out of Scope
No changes to:
- submission/finalisation
- uploads
- dashboards
- CRM/OData queries
- API routes
- Redux state
- translations
- blocked-message rendering
- CTA l...
2026-06-08 10:51:02 +00:00
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
Robert Bond
c2ae6964f9
Merged PR 2318: auth stabilisation: extract shared myportal auth guard helper
...
auth stabilisation: extract shared myportal auth guard helper
ntroduces a small shared SSR helper (resolveMyPortalAuthContext) to standardize common myportal auth/session guards (session presence, session user identity, and pinsUser cookie) with preserved reason-coded diagnostics and signin redirect behavior. Migrates exactly two loaders (pages/myportal/searchresults.js, pages/myportal/addresssearchresults.js) to use the helper while keeping loader-specific UPSTREAM_FAILURE and CONTACT_LOOKUP_FAILED logic unchanged.
Related work items: #23020
2026-05-14 10:38:45 +00:00
Robert Bond
4fb62a6773
Merged PR 2317: Auth stabilisation: add reason-coded guards to MyPortal loaders
...
Adds incremental auth/session hardening across myportal loader paths (loadMyPortalAppealPage, searchresults, addresssearchresults) with explicit guard ordering and reason-coded diagnostics for missing session, missing session identity, missing cookie identity, contact/account lookup failures, and upstream dependency failures. Includes targeted Phase22 loader guard tests and keeps redirect behaviour policy unchanged.
Related work items: #23020
2026-05-14 10:27:12 +00:00
Robert Bond
d0b2fd077a
Merged PR 2315: Auth stabilistatiion and hardening
...
Related work items: #23020
2026-05-14 08:55:49 +00:00
Robert Bond
1a2c3ede3b
Merged PR 2295: resolved lint warnings
...
resolved lint warnings
Related work items: #22873
2026-05-05 17:13:53 +00:00
Robert Bond
baf5b1838d
Merged PR 2283: Data driven status pages from CRM
...
Related work items: #22805
2026-04-29 15:29:54 +00:00
Robert Bond
37a81522d5
Merged PR 2260: refactor(representations): complete slice-based refactor of representations flow
...
## Representations Refactor — Behaviour-Preserving Structural Improvements
This PR delivers a full refactor of the representations flow, improving structure, readability, and maintainability while preserving all existing behaviour.
The work was completed using a controlled, slice-based approach with strict guardrails and regression validation at each step. No changes have been made to user journeys, payloads, routing, or EN/CY behaviour.
The result is a cleaner, more maintainable codebase with reduced coupling and clearer separation of concerns, ready for future enhancements without increased risk.
---
## What Was Done
The refactor was delivered incrementally across the following slices:
- **R1** — Representation entry logic extraction
- **R2** — Page loader separation (SSR/data orchestration)
- **R3** — Journey step resolution extraction
- **R4** — Flow shell decomposition
- **R5** — Representation elements normalisation
- **R6** — Data/service layer cleanup
- **R7** — Summary rendering proof slice
- **R8** — Submission/finalisation boundary isolation
- **R9** — Summary rollout (Batch 1)
Each slice:
- was isolated to a single concern
- followed strict guardrails
- was validated before merge
Full detail is available in:
`context/representations-refactor-tracker.md`
---
## Key Improvements
- Reduced coupling across the representations journey
- Separated data loading, orchestration, and rendering concerns
- Simplified complex conditional logic into testable helpers
- Standardised summary rendering using shared primitives (`SummaryCard`, `SummaryRow`)
- Isolated submission/finalisation sequencing into explicit boundaries
- Improved overall readability and maintainability
---
## Behaviour Preservation
This refactor does **not** change:
- User journeys (APP / IP / Agent / LPA)
- Route and query behaviour
- Payload contracts and API interactions
- Redux state shape and usage
- Validation rules and messaging
- EN/CY behaviour
- File upload / PDF / email sequencing
- Linked-case logic
All changes are structural only.
---
## Validation
### Automated
- `npm run lint` — passed (warnings only, no new errors)
- `npm run test:reps` — passed (7/7)
### Manual
Validated end-to-end across:
- APP
- IP
- Agent
- LPA
Including:
- representation creation
- editing/resuming representations
- submission flow
- confirmation/completion behaviour
- summary rendering across case types
- EN/CY parity
---
## Risk Management
The refactor targeted several high-risk areas:
- Case summary entry logic
- Representation submission/finalisation sequencing
- Dual-mode entry (new vs existing representation)
Risk was controlled through:
- small, incremental slices
- one branch per slice
- regression validation per slice
- strict behaviour-preservation guardrails
- controlled rollout for summary rendering changes
---
## Reviewer Guidance
Suggested areas to focus on:
- End-to-end representation journey (create → submit → complete)
- S...
2026-04-20 13:09:07 +00:00
Robert Bond
0de9268255
Merged PR 2242: Refactor: New Appeal flow structural cleanup (Slices 1–8, no behaviour change)
...
## Summary
This PR merges the completed new-appeal refactor stream (Slices 1–8) into SIPS-Development.
This refactor was executed in controlled slices with regression validation at each step.
## Scope
Structural and readability improvements only:
- XML/form derivation extraction
- payload and file helper extraction
- side-effect facade introduction
- BuildSection and BuildCheckSection decomposition
- BuildCheckRow formatter map refactor
- nested prop boundary cleanup
- start-flow cleanup (CreateCase / AboutYou)
## Behaviour
No intended behavioural changes.
The following were explicitly preserved:
- S78 journey behaviour
- payload shapes and field names/ids
- HASCAS mapping logic
- appellant/agent branching
- validation rules and messages
- redirect/query parameters (`lpa`, `apt`, `id`)
- navigation and side-effect sequencing
- EN/CY output parity
## Validation
Full regression has been performed on:
- start flow (CreateCase / AboutYou)
- save and resume flows
- file upload handling
- check answers rendering
- submit/finalisation sequence
- confirmation flow
- CRM insertion path
- EN/CY parity
Additional checks:
- docsOffline branch behaviour
- completion and partial-save email paths
- negative-path validation scenarios
- lint (warnings baseline unchanged)
## Risk
Low:
- changes are structural only
- no business logic changes
- no contract changes
## Rollback
Safe rollback via reverting this merge commit.
## Notes
This refactor reduces coupling and prepares the new-appeal flow for future appeal-type expansion.
Related work items: #22570 , #22576 , #22577 , #22583 , #22586 , #22587 , #22588 , #22590
2026-04-13 13:09:12 +00:00
robbond
d3f4dda8af
refactor(breadcrumbs): extract representation route-state renderer group
2026-04-09 15:16:01 +01:00
robbond
cebd47bf1c
refactor(breadcrumbs): map step-back route branches into renderer group
2026-04-09 15:03:19 +01:00
robbond
0b905f9374
refactor(breadcrumbs): extract callback route renderers into mapped groups
2026-04-09 14:57:47 +01:00
robbond
0cd78e6f46
22541 harden breadcrumb mapped route resolver against invalid entries
2026-04-09 14:45:12 +01:00
robbond
2a84056a76
22541 extract new appeal breadcrumb branch into mapped renderer group
2026-04-09 14:39:30 +01:00
robbond
17795f20c7
22541 extract deterministic case breadcrumb branches into factory maps
2026-04-09 14:33:54 +01:00
robbond
8edd23d621
22541 compose mapped breadcrumb groups in factory and add null fallback guard
2026-04-09 14:30:03 +01:00
robbond
96946ed205
Extract additional routes in to shared renderer factory
2026-04-09 13:56:17 +01:00
robbond
c264830934
Extract case detail breadcrumb routes into shared renderer factory
2026-04-09 13:16:56 +01:00
robbond
062cd23463
Refactor breadcrumbs to use factory-based route renderers
2026-04-09 12:08:36 +01:00
robbond
5f6dde782a
22541 extract breadcrumb route-map helpers and add precedence guard tests
2026-04-09 10:25:47 +01:00
robbond
f447aa19ea
22541 add bundled case breadcrumb state resolver
2026-04-09 09:28:54 +01:00
robbond
59d3ed287c
22541 expand breadcrumb route-state helpers for label and dns path reuse
2026-04-09 09:26:19 +01:00
robbond
1c06ef1639
22541 extract breadcrumb route-state helper and align phase22 auth locale test
2026-04-09 09:23:22 +01:00
robbond
c4ad9ab7a2
refactor(actions): complete priority-1 consumer import migration pass
2026-03-12 13:26:48 +00:00
robbond
83dc4e12e3
refactor appeal for new and resume
2026-01-15 13:21:11 +00:00