Skip to content

fix(#591): align COP daily cause list with reference implementation - #875

Merged
alao-daniel merged 7 commits into
masterfrom
feat/591-cop-daily-cause-list
Aug 6, 2026
Merged

fix(#591): align COP daily cause list with reference implementation#875
alao-daniel merged 7 commits into
masterfrom
feat/591-cop-daily-cause-list

Conversation

@junaidiqbalmoj

@junaidiqbalmoj junaidiqbalmoj commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

What this does

Reworks the Court of Protection (COP) daily cause list so the local rendered output matches the reference staging implementation, across both the style-guide HTML page and the generated PDF.

Changes

  • COP-specific header — "In the Court of Protection" (with region), "Regional Lead Judge", and "Sitting at " headings, derived from locationDetails.
  • 7-column hearings table — Start Time, Case Ref, Case Details, Case Type, Hearing Type, Time Estimate, Hearing Channel. Sequence indicator appended to the time estimate; reporting restriction rendered on a full-width spanning row.
  • Title Case table headers and removed the trailing colon after "Before" in the judiciary heading.
  • Back-to-top link added to the style-guide HTML page (matching sibling list types).
  • Open justice contact line now names the court (header.locationName) instead of the region venue.
  • Email summary — wired up the previously-orphaned COP summary builder in the notification service.

Testing

  • @hmcts/cop-daily-cause-list: 58 tests pass
  • @hmcts/web (COP page/template): 33 tests pass
  • @hmcts/notifications: 74 tests pass

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added support for the Court of Protection Daily Cause List.
    • Users can search daily lists and view court, hearing, case, duration and reporting restriction details.
    • Added English and Welsh language support.
    • Added PDF downloads and email summaries.
    • Added Open Justice information and relevant data warnings.
  • Bug Fixes
    • Added validation and access handling for published list data.
  • Documentation
    • Added implementation guidance and delivery checklists for the new list type.

junaidiqbalmoj and others added 4 commits July 23, 2026 09:12
Add the Court of Protection Daily Cause List (COP_DAILY_CAUSE_LIST) as a
new list-type module at libs/list-types/cop-daily-cause-list, mirroring the
civil-and-family-daily-cause-list pattern: schema, validator, thin renderer,
EN/CY locales, email summary, and PDF generator.

Add the web controller at apps/web/src/pages/(list-types)/cop-daily-cause-list
using createListTypeHandler + createCauseListRender with access checks, an
8-column hearings table, accordion, Open Justice section, search and data
source. Register the module (tsconfig alias, app.ts modulePaths, web/publication
deps, PDF_GENERATOR_REGISTRY, list-type-data) and add unit, template and E2E
tests. Routing/guards use the stable listTypeName, never a numeric id.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Rework the Court of Protection daily cause list to match the reference
staging layout for both HTML and PDF:

- Add COP-specific header (region, regional lead judge, sitting-at court)
- Render the 7-column hearings table with sequence indicator and a
  full-width reporting restriction row
- Use Title Case table headers and drop the colon after "Before"
- Add the missing back-to-top link on the style-guide HTML page
- Name the court (not the region venue) in the open justice contact line
- Wire up the previously-orphaned COP email summary builder

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f613d3b7-fa5d-4eaa-9cbf-44d635ad1037

📥 Commits

Reviewing files that changed from the base of the PR and between 55afb76 and a77c447.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (4)
  • libs/list-types/common/src/list-type-data.ts
  • libs/notifications/package.json
  • libs/notifications/src/notification/notification-service.ts
  • libs/publication/src/processing/service.ts
🚧 Files skipped from review as they are similar to previous changes (4)
  • libs/publication/src/processing/service.ts
  • libs/notifications/src/notification/notification-service.ts
  • libs/list-types/common/src/list-type-data.ts
  • libs/notifications/package.json

📝 Walkthrough

Walkthrough

Adds a Court of Protection daily cause list with JSON validation, Welsh and English rendering, web and PDF views, email summaries, publication and notification registration, application wiring, metadata, and supporting tests and documentation.

Changes

COP daily cause list

Layer / File(s) Summary
Schema and module contract
libs/list-types/cop-daily-cause-list/*
Defines the COP JSON schema, validation, shared data types, locales, configuration paths, and public exports.
Shared rendering and HTML view
libs/list-types/cop-daily-cause-list/src/rendering/*, apps/web/src/pages/(list-types)/cop-daily-cause-list/*
Maps COP location and reporting-restriction data into the shared renderer and renders the localised hearings page with controller error handling.
Email summary integration
libs/list-types/cop-daily-cause-list/src/email-summary/*, libs/notifications/*
Extracts ungrouped case summaries and registers COP-specific email formatting.
PDF generation and storage
libs/list-types/cop-daily-cause-list/src/pdf/*, libs/publication/src/processing/service.ts
Renders localised PDF HTML, converts and stores the PDF, handles failures, and registers COP PDF generation.
Catalogue and application wiring
libs/list-types/common/src/list-type-data.ts, apps/web/*, libs/*/package.json, tsconfig.json
Adds list metadata, module discovery, dependencies, TypeScript aliasing, asset verification, and registry wiring.
Implementation documentation
docs/tickets/591/*
Documents the specification, architecture, tasks, acceptance criteria, and verification plan.

Sequence Diagram(s)

sequenceDiagram
  participant Publisher
  participant WebRoute
  participant COPRenderer
  participant HTMLTemplate
  participant PDFService
  participant EmailService
  Publisher->>WebRoute: request COP cause list
  WebRoute->>COPRenderer: validate and transform list data
  COPRenderer->>HTMLTemplate: render localised HTML
  HTMLTemplate-->>WebRoute: return cause list page
  Publisher->>PDFService: generate COP PDF
  PDFService->>COPRenderer: render list data
  PDFService-->>Publisher: store generated PDF
  Publisher->>EmailService: build COP notification
  EmailService-->>Publisher: return case summary content
Loading

Possibly related issues

  • hmcts/cath-service#591 — Directly specifies the COP Daily Cause List implemented by this change.
  • hmcts/cath-service#599 — Defines a similar daily cause-list module with parallel schema, rendering, validation, and registration patterns.
  • hmcts/cath-service#610 — Defines a related daily hearing-list module with analogous bilingual rendering, PDF generation, and web registration.

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 36.36% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarises the main change: aligning the COP daily cause list with the reference implementation.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/591-cop-daily-cause-list

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@junaidiqbalmoj junaidiqbalmoj linked an issue Jul 23, 2026 that may be closed by this pull request
29 tasks
@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

🎭 Playwright E2E Test Results

82 tests   52 ✅  6m 17s ⏱️
31 suites  30 💤
 1 files     0 ❌

Results for commit a77c447.

♻️ This comment has been updated with latest results.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🧹 Nitpick comments (6)
libs/list-types/cop-daily-cause-list/src/schemas/cop-daily-cause-list.json (2)

232-239: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

isPresiding default/pattern look copy-pasted from a string field.

isPresiding is type: "boolean" but carries "default": "" and a regex "pattern", both of which only make sense for string properties. Looks like leftover boilerplate from another field.

🧹 Suggested cleanup
                                 "isPresiding": {
                                   "description": "A flag to indicate whether a judiciary is presiding",
                                   "title": "Is Presiding",
                                   "type": "boolean",
-                                  "examples": [true],
-                                  "default": "",
-                                  "pattern": "^(?!.*<[^>]+>).*$"
+                                  "examples": [true],
+                                  "default": false
                                 }

323-329: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

examples should be an array, matching the pattern used elsewhere.

Every other field in this schema wraps its example value in an array (e.g. "examples": ["45684548"]), but reportingRestrictions uses a bare string. This is inconsistent with the JSON Schema examples keyword contract (which expects an array).

🧹 Suggested fix
                                             "reportingRestrictions": {
                                               "title": "Reporting Restrictions Detail",
                                               "description": "The detail / wording of any reporting restrictions attached to the case",
                                               "type": "string",
-                                              "examples": "This is a reporting restrictions detail",
+                                              "examples": ["This is a reporting restrictions detail"],
                                               "pattern": "^(?!(.|\\r|\\n)*<[^>]+>)(.|\\r|\\n)*$"
                                             }
libs/list-types/cop-daily-cause-list/src/config.ts (1)

7-9: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Rename the top-level config exports to SCREAMING_SNAKE_CASE.

moduleRoot, assets, and schemaPath are top-level constants exported from config.ts; as a local package rename, update the same names in importing files such as apps/web/src/app.ts and libs/list-types/cop-daily-cause-list/src/config.test.ts; __dirname/__filename can remain as Node’s conventional idiom names.

Source: Coding guidelines

libs/list-types/cop-daily-cause-list/src/config.test.ts (1)

19-21: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use camelCase for the locally constructed path variables.

Rename __filename and __dirname to camelCase names in both tests; these are local ESM variables, not Node globals. As per coding guidelines, “TypeScript variables must use camelCase.”

Also applies to: 26-28

Source: Coding guidelines

libs/list-types/cop-daily-cause-list/src/rendering/renderer.ts (1)

15-33: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Avoid mutating the caller’s publication JSON.

Line 24 modifies jsonData in place. Return an updated copy before passing it to the shared renderer so rendering remains side-effect free.

As per coding guidelines, “prefer immutable data with const, minimise side effects”.

Source: Coding guidelines

apps/web/package.json (1)

35-35: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Pin the COP workspace dependency version.

workspace:* permits an unbounded internal version range. Use the module’s explicit workspace version consistently.

  • apps/web/package.json#L35-L35: replace workspace:* with the pinned COP package version.
  • libs/publication/package.json#L30-L30: use the same pinned COP package version.

As per coding guidelines, packages must “use pinned dependency versions except for peer dependencies”.

Source: Coding guidelines


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b9c1e20b-5a3c-42dd-8294-3f073957d0d4

📥 Commits

Reviewing files that changed from the base of the PR and between 9795605 and 7cbccb5.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (35)
  • apps/web/package.json
  • apps/web/src/app.ts
  • apps/web/src/pages/(list-types)/cop-daily-cause-list/cop-daily-cause-list.njk
  • apps/web/src/pages/(list-types)/cop-daily-cause-list/cop-daily-cause-list.njk.test.ts
  • apps/web/src/pages/(list-types)/cop-daily-cause-list/index.test.ts
  • apps/web/src/pages/(list-types)/cop-daily-cause-list/index.ts
  • docs/tickets/591/plan.md
  • docs/tickets/591/tasks.md
  • docs/tickets/591/ticket.md
  • e2e-tests/tests/cop-daily-cause-list.spec.ts
  • libs/list-types/common/src/list-type-data.ts
  • libs/list-types/cop-daily-cause-list/package.json
  • libs/list-types/cop-daily-cause-list/src/config.test.ts
  • libs/list-types/cop-daily-cause-list/src/config.ts
  • libs/list-types/cop-daily-cause-list/src/email-summary/summary-builder.test.ts
  • libs/list-types/cop-daily-cause-list/src/email-summary/summary-builder.ts
  • libs/list-types/cop-daily-cause-list/src/index.test.ts
  • libs/list-types/cop-daily-cause-list/src/index.ts
  • libs/list-types/cop-daily-cause-list/src/locales/cy.ts
  • libs/list-types/cop-daily-cause-list/src/locales/en.ts
  • libs/list-types/cop-daily-cause-list/src/models/types.ts
  • libs/list-types/cop-daily-cause-list/src/pdf/pdf-generator.test.ts
  • libs/list-types/cop-daily-cause-list/src/pdf/pdf-generator.ts
  • libs/list-types/cop-daily-cause-list/src/pdf/pdf-template.njk
  • libs/list-types/cop-daily-cause-list/src/rendering/renderer.test.ts
  • libs/list-types/cop-daily-cause-list/src/rendering/renderer.ts
  • libs/list-types/cop-daily-cause-list/src/schemas/cop-daily-cause-list.json
  • libs/list-types/cop-daily-cause-list/src/validation/json-validator.test.ts
  • libs/list-types/cop-daily-cause-list/src/validation/json-validator.ts
  • libs/list-types/cop-daily-cause-list/tsconfig.json
  • libs/notifications/package.json
  • libs/notifications/src/notification/notification-service.ts
  • libs/publication/package.json
  • libs/publication/src/processing/service.ts
  • tsconfig.json

Comment thread docs/tickets/591/plan.md

### Architecture decisions

1. **Reuse `renderCauseListData`** from `@hmcts/daily-cause-list-common` via a one-line re-export in `rendering/renderer.ts`. The COP schema matches the common `CauseListData` shape (judiciary at session level with `johKnownAs`/`isPresiding`, cases with `caseNumber`/`caseName`/`caseType`/`reportingRestrictions`), so no bespoke transform is required. **Verify at implementation time** that no COP-specific fields are dropped; if divergence exists, add a thin wrapper.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Make locationDetails part of the renderer contract.

The plan says the common renderer can be reused unchanged, but the stated objective requires the COP header to render region, Regional Lead Judge, and sitting court from locationDetails. Require a COP-specific transform/wrapper and explicit tests for these fields rather than leaving this as an implementation-time check.

Also applies to: 174-174

Comment thread docs/tickets/591/plan.md

### Template `cop-daily-cause-list.njk`

Copy civil-and-family's `.njk` as the base and adapt: page heading (`{{ t.title }} {{ header.locationName }}`), FaCT link, venue address, `List for` / `Last updated`, Important information `<details>` accordion carrying the **full Open Justice statement** (section 7 of the spec), conditional Special Category Data warning, search input (`#case-search-input`), `govuk-accordion` per court room showing `Court Room, Before: <judiciary>`, then the **8-column hearings table** (Start time, Case ref, Case name, Case type, Hearing type, Time estimate, Mode of hearing, Reporting restriction), and `Data source` footer.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Define one authoritative hearings-table contract.

The documentation disagrees on seven versus eight columns and omits or contradicts the final sequence-indicator, restriction-row, Title Case, and “Before” requirements.

  • docs/tickets/591/plan.md#L124-L124: update the technical approach and linked acceptance tests.
  • docs/tickets/591/tasks.md#L37-L37: update the implementation checklist.
  • docs/tickets/591/ticket.md#L43-L43: reconcile the acceptance criteria with the final table structure.
🧰 Tools
🪛 LanguageTool

[grammar] ~124-~124: The noun “courtroom” is spelled as one word.
Context: ...e-search-input), govuk-accordionper court room showingCourt Room, Before: <judiciary...

(ROOM_COMPOUNDS)

📍 Affects 3 files
  • docs/tickets/591/plan.md#L124-L124 (this comment)
  • docs/tickets/591/tasks.md#L37-L37
  • docs/tickets/591/ticket.md#L43-L43

Comment thread docs/tickets/591/plan.md
## CLARIFICATIONS NEEDED

1. **Column set / labels.** The ticket lists 7 data fields in the AC ("Start Time, Case Ref, Case Details, Case Type, Hearing Type, Time Estimate and Hearing Channel") but 8 columns in the Hearings-table section (adds "Reporting restriction", uses "Case name"). `hearingChannel` label is "Mode of hearing" (issue content) vs "Hearing Channel" (pip-frontend). **Plan assumes the 8-column set and "Mode of hearing".** Confirm definitive set + label.
2. **Open Justice contact details.** "Belfast Laganside Court", `a@b.com`, `+44 1234 1234 1234` look like placeholders — and Belfast (NI) contradicts the England & Wales jurisdiction in the metadata. Are these static, or dynamically sourced from `venue`/`venueContact` (as civil-and-family does via `openJusticeContact(venueName, email, phone)`)? **Plan assumes dynamic population from the artefact venue, falling back to the static statement.**

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Specify approved Open Justice contact behaviour.

Both documents preserve placeholder contact details while the objective requires the actual court name. Define the authoritative source and missing-data handling, and prohibit placeholder values in rendered HTML, PDF, and email output.

  • docs/tickets/591/plan.md#L205-L205: remove the placeholder fallback assumption.
  • docs/tickets/591/ticket.md#L48-L48: replace placeholder acceptance text with approved contact requirements.
📍 Affects 2 files
  • docs/tickets/591/plan.md#L205-L205 (this comment)
  • docs/tickets/591/ticket.md#L48-L48

Comment on lines +95 to +107
- `src/pages/index.ts` — page controller (GET handler)
- `src/pages/index.test.ts` — unit tests for controller
- `src/pages/en.ts` — English translations
- `src/pages/cy.ts` — Welsh translations
- `src/pages/cop-daily-cause-list.njk` — Nunjucks HTML template
- `src/pdf/pdf-generator.ts` — PDF generation
- `src/pdf/pdf-template.njk` — PDF Nunjucks template
- `src/pdf/pdf-generator.test.ts` — unit tests for PDF generator
- `src/email-summary/summary-builder.ts` — email summary builder
- `src/email-summary/summary-builder.test.ts` — unit tests for email summary
- `src/index.ts` — exports renderer, PDF generator, validator and email summary builder
- `src/config.ts` — exports `pageRoutes` and `moduleRoot`
- `package.json` — with build scripts including `build:nunjucks` and `build:pdf-templates`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Bring the ticket in line with the implemented architecture.

The plan and current stack place the controller/template under the auto-discovered apps/web/src/pages/ path and require no pageRoutes or Vite route-prefix change. This ticket still specifies src/pages inside the library, pageRoutes, and a Vite route prefix; remove the stale instructions to prevent future work following the wrong integration path.

Also applies to: 219-220

Comment on lines +20 to +25
summaries.push([
{ label: "Case reference", value: caseItem.caseNumber || "" },
{ label: "Case details", value: caseItem.caseName || "" },
{ label: "Case type", value: caseItem.caseType || "" },
{ label: "Hearing type", value: hearing.hearingType || "" }
]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Localise the email-summary field labels.

These user-facing labels are hard-coded in English, so Welsh COP summaries cannot use Welsh content. Source the labels from the COP English/Welsh locale content and pass the selected locale through the summary-building path. As per coding guidelines, “List-type-specific display strings must come from both English and Welsh locale files, not hardcoded controller strings.”

Source: Coding guidelines

@@ -0,0 +1 @@
export type { CauseListCase, CauseListData, CourtHouse, CourtRoom, Hearing, Party, RenderOptions, Session, Sitting } from "@hmcts/daily-cause-list-common";

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Replace the generic types.ts filename.

Rename this module to a purpose-specific name (for example, cause-list-types.ts) and update its imports. As per coding guidelines, “Do not create generic types.ts or utils.ts files; colocate types and use specific-purpose filenames.”

Source: Coding guidelines

Comment on lines +1 to +11
import { type ValidationResult, validateJson } from "@hmcts/publication";
import schema from "../schemas/cop-daily-cause-list.json" with { type: "json" };

/**
* Validates Court of Protection Daily Cause List JSON data
* @param jsonData - The JSON data to validate
* @returns ValidationResult
*/
export function validateCopDailyCauseList(jsonData: unknown): ValidationResult {
return validateJson(jsonData, schema, "1.0");
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check whether `@hmcts/publication` exports createJsonValidator and whether
# other list-type packages already use it.
rg -n "createJsonValidator" libs/publication/src -A3
rg -n "createJsonValidator" libs/list-types -g '*.ts'

Repository: hmcts/cath-service

Length of output: 7852


🏁 Script executed:

#!/bin/bash
# Inspect the target wrapper and package declaration/dependency declarations to determine
# whether `@hmcts/publication.createJsonValidator` is available and whether the existing common helper can be used.
sed -n '1,40p' libs/list-types/cop-daily-cause-list/src/validation/json-validator.ts
printf '\n--- package references ---\n'
python3 - <<'PY'
import json, pathlib
for p in pathlib.Path('.').rglob('package.json'):
    if any(s in p.parts for s in ('node_modules','.git')):
        continue
    try:
        data=json.loads(p.read_text())
    except Exception:
        continue
    name=data.get('name')
    if name in ('`@hmcts/list-types-common`','`@hmcts/publication`') or 'cop-daily-cause-list' in str(p) or '`@hmcts/list-types-common`' in str(p):
        print(p)
        for k in ('name','version','dependencies','devDependencies','exports','main'):
            if k in data:
                print(f'  {k}: {data[k]}')
PY

Repository: hmcts/cath-service

Length of output: 4661


Use createJsonValidator for the list-type validator wrapper.

This wrapper is required to use the common JSON validator factory, not validateJson from @hmcts/publication directly.

Source: Path instructions

"@hmcts/cic-weekly-hearing-list": "workspace:*",
"@hmcts/civil-and-family-daily-cause-list": "workspace:*",
"@hmcts/civil-daily-cause-list": "workspace:*",
"@hmcts/cop-daily-cause-list": "workspace:*",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Pin the COP package dependency version.

Replace workspace:* with the explicit compatible release version required by this package’s dependency policy. As per coding guidelines, “Packages must use the @hmcts/* scope, set "type": "module", and use pinned dependency versions except for peer dependencies.”

Source: Coding guidelines

@github-actions

Copy link
Copy Markdown
Contributor

Preview Deployment Successful 🚀

Your preview environment is ready:

The environment will be automatically cleaned up when this PR is closed.

Resolved two registry conflicts, both "keep both sides" — master and
this branch each appended entries at the same insertion point with no
semantic overlap:

- libs/list-types/common/src/list-type-data.ts: kept COP_DAILY_CAUSE_LIST
  (this branch) alongside PCOL_DAILY_CAUSE_LIST, ET_DAILY_LIST and
  ET_FORTNIGHTLY_PRESS_LIST (master). The conflict straddled a shared
  object brace, so the entries were reconstructed rather than
  concatenated.
- tsconfig.json: kept the @hmcts/cop-daily-cause-list path alias
  alongside master's @hmcts/et-daily-list and @hmcts/et-fortnightly-list
  aliases.

Verified: no duplicate list type names (71 unique, name is @unique);
tsconfig parses and all four aliases resolve; both sides' registrations
in apps/web/src/app.ts and libs/publication/src/processing/service.ts
survived the auto-merge; generate-seed-sql.ts emits SQL for all four
list types; 2287 tests pass across list-types, publication and the
list-type pages.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f39f8c48-43ef-4463-b602-d4fd6a345464

📥 Commits

Reviewing files that changed from the base of the PR and between 7cbccb5 and 55afb76.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (8)
  • apps/web/package.json
  • apps/web/src/app.ts
  • libs/list-types/common/src/list-type-data.ts
  • libs/notifications/package.json
  • libs/notifications/src/notification/notification-service.ts
  • libs/publication/package.json
  • libs/publication/src/processing/service.ts
  • tsconfig.json

Comment thread apps/web/package.json
Comment on lines 38 to 39
"@hmcts/et-daily-list": "workspace:*",
"@hmcts/et-fortnightly-list": "workspace:*",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Pin the new workspace dependencies consistently.

Both manifests use workspace:*, leaving the newly added dependency versions unpinned under the repository rule.

  • apps/web/package.json#L38-L39: pin the ET daily and fortnightly list dependencies.
  • libs/publication/package.json#L35-L36: pin the corresponding publication dependencies.

As per coding guidelines, **/package.json: pin dependency versions.

📍 Affects 2 files
  • apps/web/package.json#L38-L39 (this comment)
  • libs/publication/package.json#L35-L36

Source: Coding guidelines

@github-actions

Copy link
Copy Markdown
Contributor

Preview Deployment Successful 🚀

Your preview environment is ready:

The environment will be automatically cleaned up when this PR is closed.

@sonarqubecloud

sonarqubecloud Bot commented Aug 6, 2026

Copy link
Copy Markdown

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Preview Deployment Successful 🚀

Your preview environment is ready:

The environment will be automatically cleaned up when this PR is closed.

@alao-daniel
alao-daniel merged commit 64a344d into master Aug 6, 2026
25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Style Guide: Implement COP Daily Cause List

2 participants