feat(incidents): add incident workspace #482

Merged
simon merged 1 commit from feat/incident-workspace into main 2026-06-06 00:06:53 +00:00
Owner

Summary\n- add incident tables, linked evidence, and timeline events\n- add Incidents list/detail workspace with manual creation and response-state updates\n- add alert-row action to create or reuse an open incident for a firing alert\n- document the incident workspace and update progress tracking\n\n## Validation\n- node --experimental-strip-types --test lib/incidents/core.test.mjs\n- DATABASE_URL=postgres://ct_ops:ct_ops@localhost:5432/ct_ops pnpm db:validate\n- pnpm lint -- 'app/(dashboard)/incidents/page.tsx' 'app/(dashboard)/incidents/incidents-client.tsx' 'app/(dashboard)/incidents/[id]/page.tsx' 'app/(dashboard)/incidents/[id]/incident-detail-client.tsx' 'app/(dashboard)/alerts/alerts-client.tsx' components/shared/sidebar.tsx lib/actions/incidents.ts lib/db/schema/incidents.ts lib/incidents/core.ts lib/incidents/core.test.mjs\n- pnpm type-check\n- DATABASE_URL=postgres://ct_ops:ct_ops@localhost:5432/ct_ops BETTER_AUTH_URL=http://localhost:3000 pnpm --filter web build\n\n## Notes\n- Browser smoke reached the protected /incidents route and redirected to login; login rendering was blocked by the local PostgreSQL database not running (ECONNREFUSED querying ldap_configurations).\n- Filed issue #481 for pre-existing Drizzle snapshot parent collisions that block normal drizzle-kit migration generation.

## Summary\n- add incident tables, linked evidence, and timeline events\n- add Incidents list/detail workspace with manual creation and response-state updates\n- add alert-row action to create or reuse an open incident for a firing alert\n- document the incident workspace and update progress tracking\n\n## Validation\n- node --experimental-strip-types --test lib/incidents/core.test.mjs\n- DATABASE_URL=postgres://ct_ops:ct_ops@localhost:5432/ct_ops pnpm db:validate\n- pnpm lint -- 'app/(dashboard)/incidents/page.tsx' 'app/(dashboard)/incidents/incidents-client.tsx' 'app/(dashboard)/incidents/[id]/page.tsx' 'app/(dashboard)/incidents/[id]/incident-detail-client.tsx' 'app/(dashboard)/alerts/alerts-client.tsx' components/shared/sidebar.tsx lib/actions/incidents.ts lib/db/schema/incidents.ts lib/incidents/core.ts lib/incidents/core.test.mjs\n- pnpm type-check\n- DATABASE_URL=postgres://ct_ops:ct_ops@localhost:5432/ct_ops BETTER_AUTH_URL=http://localhost:3000 pnpm --filter web build\n\n## Notes\n- Browser smoke reached the protected /incidents route and redirected to login; login rendering was blocked by the local PostgreSQL database not running (ECONNREFUSED querying ldap_configurations).\n- Filed issue #481 for pre-existing Drizzle snapshot parent collisions that block normal drizzle-kit migration generation.
feat(incidents): add incident workspace
All checks were successful
Conventional PR title / Conventional PR title (pull_request) Successful in 0s
PR Checks (Docker images) / Ansible API contract (pull_request) Successful in 7s
PR Checks (Docker images) / Detect Docker image changes (pull_request) Successful in 10s
Dev stack check / validate (pull_request) Successful in 26s
PR Checks (Docker images) / Ingest Docker image (pull_request) Has been skipped
Secret Scan / gitleaks (pull_request) Successful in 27s
PR Checks (Docker images) / Ansible API Docker image (pull_request) Has been skipped
SAST / crypto-lint (no weak hashes / ciphers) (pull_request) Successful in 1m7s
SAST / semgrep (pull_request) Successful in 1m12s
SAST / gosec (agent) (pull_request) Successful in 2m4s
SAST / gosec (ingest) (pull_request) Successful in 2m5s
SAST / trivy (filesystem) (pull_request) Successful in 2m6s
SAST / trivy (config / IaC) (pull_request) Successful in 2m1s
PR Checks (Web) / Web (lint / type-check / build) (pull_request) Successful in 2m33s
PR Checks (Docker images) / Web Docker image (pull_request) Successful in 8m42s
63b389691a
simon merged commit c5e35c9f72 into main 2026-06-06 00:06:53 +00:00
simon deleted branch feat/incident-workspace 2026-06-06 00:06:53 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
carrtech/ct-ops!482
No description provided.