Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions requirements/migrations/009_sync_github_2026_07_22.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
-- 009: sync github 2026-07-22
--
-- Reconciles the requirements baseline with the live state of GitHub Project #43
-- (CaTH Kanban) as of 2026-07-22. Generated by the nightly requirements-sync job.
--
-- NOTE: The GitHub App token used by this job does not have read:project permission,
-- so board column status cannot be read directly from ProjectV2. Instead, closure
-- of the GitHub issue + presence of a merged closing PR is used as a proxy for
-- Done=verified. A human reviewer should confirm the board position before merging.
--
-- Delta captured (gate = "Refined Tickets" and beyond):
-- * 5 NEW requirements (REQ-0152..REQ-0156):
-- #570, #571, #572, #573, #596
-- * 0 status changes
-- * 0 impl changes
--
-- HUMAN REVIEW REQUIRED: Board access unavailable; verify the 5 new issues are
-- actually in "Done" on the CaTH Kanban before merging.

BEGIN TRANSACTION;

-- ============================================================================
-- NEW REQUIREMENTS (5 issues, all closed with merged closing PRs)
-- ============================================================================

INSERT INTO requirement
(id, ref, title, statement, kind, status, priority, granularity,
issue_number, issue_url, impl_commit_sha, impl_paths,
created_at, updated_at, created_by, updated_by)
VALUES
(152, 'REQ-0152', 'Provision temporary Azure Blob Storage for PR builds using Azure Service Operator', 'As a developer, I want PR builds to have a temporary Azure Blob Storage account provisioned automatically so that E2E and smoke tests can write and read files (publication JSON, PDFs, media application images) without depending on a shared persistent environment.', 'functional', 'verified', NULL, 'story', 570, 'https://github.com/hmcts/cath-service/issues/570', 'b4a9d2a19fc34debfccb7d90f8df7db920437f18', '["apps/postgres/prisma/migrations/20260623000000_add_file_extension_to_artefact/migration.sql","apps/web/package.json","apps/web/src/pages/(admin)/manual-upload-summary/index.test.ts","apps/web/src/pages/(admin)/manual-upload-summary/index.ts","apps/web/src/pages/(admin)/non-strategic-upload-summary/index.test.ts","apps/web/src/pages/(admin)/non-strategic-upload-summary/index.ts","apps/web/src/pages/(list-types)/administrative-court-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/administrative-court-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/care-standards-tribunal-weekly-hearing-list/index.test.ts","apps/web/src/pages/(list-types)/care-standards-tribunal-weekly-hearing-list/index.ts","apps/web/src/pages/(list-types)/civil-and-family-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/civil-and-family-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/civil-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/civil-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/court-of-appeal-civil-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/court-of-appeal-civil-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/family-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/family-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/list-type-handler.ts","apps/web/src/pages/(list-types)/london-administrative-court-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/london-administrative-court-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/rcj-standard-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/rcj-standard-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/sjp-press-list/index.test.ts","apps/web/src/pages/(list-types)/sjp-press-list/index.ts","apps/web/src/pages/(system-admin)/files/[filename].test.ts","apps/web/src/pages/(system-admin)/files/[filename].ts","e2e-tests/tests/flat-file-viewing.spec.ts","e2e-tests/utils/test-support-api.ts","libs/admin-pages/package.json","libs/admin-pages/src/manual-upload/file-storage.test.ts","libs/admin-pages/src/manual-upload/file-storage.ts","libs/api/package.json","libs/api/src/blob-ingestion/file-storage.test.ts","libs/api/src/blob-ingestion/file-storage.ts","libs/api/src/blob-ingestion/repository/service.test.ts","libs/api/src/blob-ingestion/repository/service.ts","libs/azure-blob/package.json","libs/azure-blob/src/blob-client.test.ts","libs/azure-blob/src/blob-client.ts","libs/azure-blob/src/index.ts","libs/azure-blob/tsconfig.json","libs/list-types/administrative-court-daily-cause-list/src/pdf/pdf-generator.test.ts","libs/list-types/care-standards-tribunal-weekly-hearing-list/src/pdf/pdf-generator.test.ts","libs/list-types/common/package.json","libs/list-types/common/src/index.ts","libs/list-types/common/src/pdf/pdf-utilities.test.ts","libs/list-types/common/src/pdf/pdf-utilities.ts","libs/list-types/court-of-appeal-civil-daily-cause-list/src/pdf/pdf-generator.test.ts","libs/list-types/london-administrative-court-daily-cause-list/src/pdf/pdf-generator.test.ts","libs/notifications/package.json","libs/notifications/src/notification/notification-service.test.ts","libs/notifications/src/notification/notification-service.ts","libs/postgres-prisma/prisma/schema/base.prisma","libs/publication/package.json","libs/publication/src/file-storage/file-retrieval.test.ts","libs/publication/src/file-storage/file-retrieval.ts","libs/publication/src/index.ts","libs/publication/src/repository/queries.ts","libs/simple-router/.gitignore","libs/simple-router/package.json","libs/test-support/package.json","libs/test-support/src/routes/test-support/flat-files.ts","package.json","tsconfig.json"]', '2026-05-12T11:00:43Z', '2026-05-12T11:00:43Z', 'junaidiqbalmoj', 'junaidiqbalmoj'),
(153, 'REQ-0153', 'Store media application ID proof files in Azure Blob Storage', 'As a platform engineer, I want media application ID proof files to be stored in Azure Blob Storage so that identity documents uploaded by journalists are durably persisted and not lost when a Kubernetes pod restarts or redeploys.', 'functional', 'verified', NULL, NULL, 571, 'https://github.com/hmcts/cath-service/issues/571', '8f4abf1cb715447598a678bc500bb8e2dfe28b59', '["apps/web/src/pages/(admin)/media-applications/[id]/proof-of-id.test.ts","apps/web/src/pages/(admin)/media-applications/[id]/proof-of-id.ts","libs/account/src/repository/query.test.ts","libs/account/src/repository/service.test.ts","libs/account/src/repository/service.ts","libs/admin-pages/src/media-application/service.test.ts","libs/admin-pages/src/media-application/service.ts","libs/azure-blob/src/blob-client.ts","libs/azure-blob/src/content-type.test.ts","libs/azure-blob/src/content-type.ts","libs/azure-blob/src/index.ts","libs/public-pages/package.json","libs/public-pages/src/media-application/storage.test.ts","libs/public-pages/src/media-application/storage.ts"]', '2026-05-12T11:06:48Z', '2026-05-12T11:06:48Z', 'junaidiqbalmoj', 'junaidiqbalmoj'),
(154, 'REQ-0154', 'Store publication JSON and flat file uploads in Azure Blob Storage', 'As a platform engineer, I want publication JSON payloads and flat file uploads (PDFs, CSVs, Excel) to be stored in Azure Blob Storage so that published court list data is durably persisted and not lost when a Kubernetes pod restarts or redeploys.', 'functional', 'verified', NULL, NULL, 572, 'https://github.com/hmcts/cath-service/issues/572', 'b4a9d2a19fc34debfccb7d90f8df7db920437f18', '["apps/postgres/prisma/migrations/20260623000000_add_file_extension_to_artefact/migration.sql","apps/web/package.json","apps/web/src/pages/(admin)/manual-upload-summary/index.test.ts","apps/web/src/pages/(admin)/manual-upload-summary/index.ts","apps/web/src/pages/(admin)/non-strategic-upload-summary/index.test.ts","apps/web/src/pages/(admin)/non-strategic-upload-summary/index.ts","apps/web/src/pages/(list-types)/administrative-court-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/administrative-court-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/care-standards-tribunal-weekly-hearing-list/index.test.ts","apps/web/src/pages/(list-types)/care-standards-tribunal-weekly-hearing-list/index.ts","apps/web/src/pages/(list-types)/civil-and-family-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/civil-and-family-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/civil-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/civil-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/court-of-appeal-civil-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/court-of-appeal-civil-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/family-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/family-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/list-type-handler.ts","apps/web/src/pages/(list-types)/london-administrative-court-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/london-administrative-court-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/rcj-standard-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/rcj-standard-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/sjp-press-list/index.test.ts","apps/web/src/pages/(list-types)/sjp-press-list/index.ts","apps/web/src/pages/(system-admin)/files/[filename].test.ts","apps/web/src/pages/(system-admin)/files/[filename].ts","e2e-tests/tests/flat-file-viewing.spec.ts","e2e-tests/utils/test-support-api.ts","libs/admin-pages/package.json","libs/admin-pages/src/manual-upload/file-storage.test.ts","libs/admin-pages/src/manual-upload/file-storage.ts","libs/api/package.json","libs/api/src/blob-ingestion/file-storage.test.ts","libs/api/src/blob-ingestion/file-storage.ts","libs/api/src/blob-ingestion/repository/service.test.ts","libs/api/src/blob-ingestion/repository/service.ts","libs/azure-blob/package.json","libs/azure-blob/src/blob-client.test.ts","libs/azure-blob/src/blob-client.ts","libs/azure-blob/src/index.ts","libs/azure-blob/tsconfig.json","libs/list-types/administrative-court-daily-cause-list/src/pdf/pdf-generator.test.ts","libs/list-types/care-standards-tribunal-weekly-hearing-list/src/pdf/pdf-generator.test.ts","libs/list-types/common/package.json","libs/list-types/common/src/index.ts","libs/list-types/common/src/pdf/pdf-utilities.test.ts","libs/list-types/common/src/pdf/pdf-utilities.ts","libs/list-types/court-of-appeal-civil-daily-cause-list/src/pdf/pdf-generator.test.ts","libs/list-types/london-administrative-court-daily-cause-list/src/pdf/pdf-generator.test.ts","libs/notifications/package.json","libs/notifications/src/notification/notification-service.test.ts","libs/notifications/src/notification/notification-service.ts","libs/postgres-prisma/prisma/schema/base.prisma","libs/publication/package.json","libs/publication/src/file-storage/file-retrieval.test.ts","libs/publication/src/file-storage/file-retrieval.ts","libs/publication/src/index.ts","libs/publication/src/repository/queries.ts","libs/simple-router/.gitignore","libs/simple-router/package.json","libs/test-support/package.json","libs/test-support/src/routes/test-support/flat-files.ts","package.json","tsconfig.json"]', '2026-05-12T11:07:15Z', '2026-05-12T11:07:15Z', 'junaidiqbalmoj', 'junaidiqbalmoj'),
(155, 'REQ-0155', 'Store generated PDFs and Excel files in Azure Blob Storage', 'As a platform engineer, I want generated PDFs and Excel files to be stored in Azure Blob Storage so that rendered court list documents are durably persisted and not lost when a Kubernetes pod restarts or redeploys.', 'functional', 'verified', NULL, NULL, 573, 'https://github.com/hmcts/cath-service/issues/573', 'b4a9d2a19fc34debfccb7d90f8df7db920437f18', '["apps/postgres/prisma/migrations/20260623000000_add_file_extension_to_artefact/migration.sql","apps/web/package.json","apps/web/src/pages/(admin)/manual-upload-summary/index.test.ts","apps/web/src/pages/(admin)/manual-upload-summary/index.ts","apps/web/src/pages/(admin)/non-strategic-upload-summary/index.test.ts","apps/web/src/pages/(admin)/non-strategic-upload-summary/index.ts","apps/web/src/pages/(list-types)/administrative-court-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/administrative-court-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/care-standards-tribunal-weekly-hearing-list/index.test.ts","apps/web/src/pages/(list-types)/care-standards-tribunal-weekly-hearing-list/index.ts","apps/web/src/pages/(list-types)/civil-and-family-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/civil-and-family-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/civil-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/civil-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/court-of-appeal-civil-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/court-of-appeal-civil-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/family-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/family-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/list-type-handler.ts","apps/web/src/pages/(list-types)/london-administrative-court-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/london-administrative-court-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/rcj-standard-daily-cause-list/index.test.ts","apps/web/src/pages/(list-types)/rcj-standard-daily-cause-list/index.ts","apps/web/src/pages/(list-types)/sjp-press-list/index.test.ts","apps/web/src/pages/(list-types)/sjp-press-list/index.ts","apps/web/src/pages/(system-admin)/files/[filename].test.ts","apps/web/src/pages/(system-admin)/files/[filename].ts","e2e-tests/tests/flat-file-viewing.spec.ts","e2e-tests/utils/test-support-api.ts","libs/admin-pages/package.json","libs/admin-pages/src/manual-upload/file-storage.test.ts","libs/admin-pages/src/manual-upload/file-storage.ts","libs/api/package.json","libs/api/src/blob-ingestion/file-storage.test.ts","libs/api/src/blob-ingestion/file-storage.ts","libs/api/src/blob-ingestion/repository/service.test.ts","libs/api/src/blob-ingestion/repository/service.ts","libs/azure-blob/package.json","libs/azure-blob/src/blob-client.test.ts","libs/azure-blob/src/blob-client.ts","libs/azure-blob/src/index.ts","libs/azure-blob/tsconfig.json","libs/list-types/administrative-court-daily-cause-list/src/pdf/pdf-generator.test.ts","libs/list-types/care-standards-tribunal-weekly-hearing-list/src/pdf/pdf-generator.test.ts","libs/list-types/common/package.json","libs/list-types/common/src/index.ts","libs/list-types/common/src/pdf/pdf-utilities.test.ts","libs/list-types/common/src/pdf/pdf-utilities.ts","libs/list-types/court-of-appeal-civil-daily-cause-list/src/pdf/pdf-generator.test.ts","libs/list-types/london-administrative-court-daily-cause-list/src/pdf/pdf-generator.test.ts","libs/notifications/package.json","libs/notifications/src/notification/notification-service.test.ts","libs/notifications/src/notification/notification-service.ts","libs/postgres-prisma/prisma/schema/base.prisma","libs/publication/package.json","libs/publication/src/file-storage/file-retrieval.test.ts","libs/publication/src/file-storage/file-retrieval.ts","libs/publication/src/index.ts","libs/publication/src/repository/queries.ts","libs/simple-router/.gitignore","libs/simple-router/package.json","libs/test-support/package.json","libs/test-support/src/routes/test-support/flat-files.ts","package.json","tsconfig.json"]', '2026-05-12T11:07:48Z', '2026-05-12T11:07:48Z', 'junaidiqbalmoj', 'junaidiqbalmoj'),
(156, 'REQ-0156', 'Style Guide: Implement Magistrates Public List', 'As a user, I want to view the Magistrates Public List in an accessible and well-formatted style, so that I can see scheduled hearings with all relevant case details including reporting restrictions.', 'functional', 'verified', NULL, NULL, 596, 'https://github.com/hmcts/cath-service/issues/596', 'ab45d7702d248ac29289e5fd76c49cf649b16fd1', '["apps/web/package.json","apps/web/src/app.ts","apps/web/src/assets/css/list-types/magistrates-public-list.scss","apps/web/src/assets/css/web.scss","apps/web/src/assets/js/list-type-sensitivity.test.ts","apps/web/src/assets/js/list-type-sensitivity.ts","apps/web/src/pages/(list-types)/magistrates-public-list/index.ts","apps/web/src/pages/(list-types)/magistrates-public-list/magistrates-public-list.njk","e2e-tests/tests/api/subscription-notifications.spec.ts","libs/list-types/magistrates-public-list/package.json","libs/list-types/magistrates-public-list/src/config.ts","libs/list-types/magistrates-public-list/src/email-summary/summary-builder.test.ts","libs/list-types/magistrates-public-list/src/email-summary/summary-builder.ts","libs/list-types/magistrates-public-list/src/index.ts","libs/list-types/magistrates-public-list/src/locales/cy.ts","libs/list-types/magistrates-public-list/src/locales/en.ts","libs/list-types/magistrates-public-list/src/pdf/pdf-generator.test.ts","libs/list-types/magistrates-public-list/src/pdf/pdf-generator.ts","libs/list-types/magistrates-public-list/src/pdf/pdf-template.njk","libs/list-types/magistrates-public-list/src/rendering/party-name.test.ts","libs/list-types/magistrates-public-list/src/rendering/party-name.ts","libs/list-types/magistrates-public-list/src/rendering/renderer.test.ts","libs/list-types/magistrates-public-list/src/rendering/renderer.ts","libs/list-types/magistrates-public-list/src/schemas/magistrates-public-list.json","libs/list-types/magistrates-public-list/src/validation/json-validator.test.ts","libs/list-types/magistrates-public-list/src/validation/json-validator.ts","libs/list-types/magistrates-public-list/tsconfig.json","libs/location/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"]', '2026-05-13T09:37:01Z', '2026-05-13T09:37:01Z', 'junaidiqbalmoj', 'junaidiqbalmoj');

-- One 'created' change row per new requirement (version 1).
INSERT INTO requirement_change
(requirement_id, version, change_type, change_summary, changed_by, changed_at)
VALUES
(152, 1, 'created', 'imported from GitHub issue', 'junaidiqbalmoj', '2026-05-12T11:00:43Z'),
(153, 1, 'created', 'imported from GitHub issue', 'junaidiqbalmoj', '2026-05-12T11:06:48Z'),
(154, 1, 'created', 'imported from GitHub issue', 'junaidiqbalmoj', '2026-05-12T11:07:15Z'),
(155, 1, 'created', 'imported from GitHub issue', 'junaidiqbalmoj', '2026-05-12T11:07:48Z'),
(156, 1, 'created', 'imported from GitHub issue', 'junaidiqbalmoj', '2026-05-13T09:37:01Z');

COMMIT;
Loading