fix(ci): fix pipeline #366 — web @mosaic/ui build, Dockerfile find bug, event handler types #366

Merged
jason.woltje merged 1 commits from fix/ci-366 into develop 2026-02-13 00:27:48 +00:00
Owner

Summary

  • Added build to web.yml step — fixes 10 test suite failures and ~20 TS2307 typecheck errors
  • Fixed POSIX parentheses bug in orchestrator Dockerfile — spec files with test fixture secrets were not being deleted, causing 5 Trivy false positives
  • Added type annotations to 9 web component files — fixes 49 lint errors and 19 typecheck errors

Test plan

@mosaic/web@0.0.1 lint /home/localadmin/src/mosaic-stack/apps/web
eslint "src/**/*.{ts,tsx}" — 0 errors (was 49)

@mosaic/web@0.0.1 typecheck /home/localadmin/src/mosaic-stack/apps/web
tsc --noEmit — 0 errors (was 50+)

@mosaic/web@0.0.1 test /home/localadmin/src/mosaic-stack/apps/web
vitest run

RUN v3.2.4 /home/localadmin/src/mosaic-stack/apps/web

✓ src/app/(authenticated)/tasks/page.test.tsx (5 tests) 453ms
✓ TasksPage > should render the TaskList with tasks after loading 315ms
✓ src/app/(authenticated)/page.test.tsx (5 tests) 475ms
✓ DashboardPage > should render all widgets with data after loading 315ms
✓ src/hooks/tests/useLayouts.test.tsx (9 tests) 507ms
✓ src/components/filters/FilterBar.test.tsx (19 tests) 741ms
✓ src/components/widgets/tests/QuickCaptureWidget.test.tsx (12 tests | 3 skipped) 576ms
✓ src/components/federation/InitiateConnectionDialog.test.tsx (16 tests) 875ms
✓ src/components/workspace/InviteMember.test.tsx (9 tests) 943ms
✓ src/components/knowledge/KnowledgeGraphViewer.test.tsx (16 tests) 871ms
✓ src/app/(authenticated)/calendar/page.test.tsx (5 tests) 498ms
✓ CalendarPage > should render the Calendar with events after loading 335ms
✓ src/components/gantt/GanttChart.test.tsx (28 tests) 560ms
✓ src/components/knowledge/tests/EntryEditor.test.tsx (10 tests) 361ms
✓ src/lib/auth/auth-context.test.tsx (12 tests) 258ms
✓ src/components/widgets/tests/ActiveProjectsWidget.test.tsx (11 tests) 447ms
✓ src/components/knowledge/tests/WikiLinkRenderer.test.tsx (38 tests) 401ms
✓ src/components/federation/ConnectionCard.test.tsx (18 tests) 454ms
✓ src/components/kanban/KanbanBoard.test.tsx (22 tests) 825ms
✓ src/components/search/tests/SearchResults.test.tsx (10 tests) 335ms
✓ src/components/mindmap/ReactFlowEditor.test.tsx (13 tests) 399ms
✓ src/components/tasks/TaskList.test.tsx (13 tests) 1544ms
✓ TaskList > error states > should handle extremely large task lists 1290ms
✓ src/components/workspace/MemberList.test.tsx (6 tests) 271ms
✓ src/components/chat/ChatOverlay.test.tsx (18 tests) 322ms
✓ src/components/search/tests/SearchFilters.test.tsx (12 tests) 424ms
✓ src/components/federation/SpokeConfigurationForm.test.tsx (10 tests) 275ms
✓ src/components/domains/DomainFilter.test.tsx (7 tests) 304ms
✓ src/components/federation/ConnectionList.test.tsx (8 tests) 227ms
✓ src/components/widgets/tests/TaskProgressWidget.test.tsx (10 tests) 273ms
✓ src/app/settings/workspaces/[id]/teams/page.test.tsx (4 tests) 276ms
✓ src/components/knowledge/tests/LinkAutocomplete.test.tsx (17 tests | 9 skipped) 317ms
✓ src/app/(auth)/callback/page.test.tsx (8 tests) 249ms
✓ src/components/widgets/tests/BaseWidget.test.tsx (9 tests) 300ms
✓ src/components/domains/DomainList.test.tsx (7 tests) 259ms
✓ src/components/dashboard/tests/QuickCaptureWidget.test.tsx (5 tests) 226ms
✓ src/components/auth/LogoutButton.test.tsx (5 tests) 209ms
✓ src/components/widgets/tests/AgentStatusWidget.test.tsx (6 tests) 185ms
✓ src/app/(authenticated)/settings/workspaces/page.test.tsx (4 tests) 192ms
✓ src/components/domains/DomainSelector.test.tsx (7 tests) 244ms
✓ src/components/error-boundary.test.tsx (7 tests) 258ms
✓ src/hooks/useWebSocket.test.tsx (27 tests) 228ms
✓ src/components/knowledge/tests/BacklinksList.test.tsx (8 tests) 211ms
✓ src/components/workspace/WorkspaceSettings.test.tsx (1 test) 274ms
✓ src/components/mindmap/MermaidViewer.test.tsx (19 tests) 241ms
✓ src/components/auth/LoginButton.test.tsx (3 tests) 196ms
✓ src/components/ui/ComingSoon.test.tsx (5 tests) 127ms
✓ src/components/federation/AggregatedDataGrid.test.tsx (9 tests) 164ms
✓ src/app/(auth)/login/page.test.tsx (4 tests) 148ms
✓ src/components/federation/FederatedEventCard.test.tsx (10 tests) 155ms
✓ src/hooks/useChat.test.ts (26 tests) 164ms
✓ src/components/search/tests/SearchInput.test.tsx (10 tests) 110ms
✓ src/app/(authenticated)/federation/connections/page.test.tsx (3 tests) 97ms
✓ src/components/tasks/TaskItem.test.tsx (21 tests) 157ms
✓ src/components/federation/FederatedTaskCard.test.tsx (11 tests) 162ms
✓ src/hooks/useChatOverlay.test.ts (26 tests) 130ms
✓ src/lib/api/client.test.ts (41 tests) 85ms
✓ src/app/page.test.tsx (2 tests) 39ms
✓ src/components/chat/Chat.test.tsx (3 tests) 69ms
✓ src/components/federation/ProvenanceIndicator.test.tsx (7 tests) 57ms
✓ src/components/widgets/tests/WidgetGrid.test.tsx (8 tests) 102ms
✓ src/providers/WebSocketProvider.test.tsx (4 tests) 62ms
✓ src/components/team/TeamSettings.test.tsx (2 tests) 69ms
✓ src/lib/hooks/useWorkspaceId.test.ts (5 tests) 60ms
✓ src/components/widgets/tests/TasksWidget.test.tsx (7 tests | 6 skipped) 69ms
✓ src/components/widgets/tests/CalendarWidget.test.tsx (6 tests | 5 skipped) 35ms
✓ src/lib/api/federation.test.ts (12 tests) 16ms
✓ src/components/chat/MessageList.test.tsx (6 tests) 42ms
✓ src/components/gantt/types.test.ts (14 tests) 12ms
✓ src/lib/utils/safe-json.test.ts (26 tests) 14ms
✓ src/lib/api/tasks.test.ts (15 tests) 20ms
✓ src/lib/config.test.ts (6 tests) 33ms
✓ src/lib/api/federation-queries.test.ts (7 tests) 11ms
✓ src/components/workspace/validation.test.ts (29 tests) 8ms
✓ src/components/widgets/tests/WidgetRegistry.test.tsx (12 tests) 7ms
✓ src/lib/utils/date-format.test.ts (15 tests) 12ms
✓ src/components/gantt/index.test.ts (3 tests) 4ms

Test Files 73 passed (73)
Tests 811 passed | 23 skipped (834)
Start at 17:52:30
Duration 13.64s (transform 3.82s, setup 17.78s, collect 20.98s, tests 19.73s, environment 45.01s, prepare 9.32s) — 73/73 suites pass (was 10 failures)

  • Pre-commit hooks pass (lint, typecheck, prettier, git-secrets)
  • CI pipeline should pass all 4 gates (lint, typecheck, test, security-trivy)

🤖 Generated with Claude Code

## Summary - Added build to web.yml step — fixes 10 test suite failures and ~20 TS2307 typecheck errors - Fixed POSIX parentheses bug in orchestrator Dockerfile — spec files with test fixture secrets were not being deleted, causing 5 Trivy false positives - Added type annotations to 9 web component files — fixes 49 lint errors and 19 typecheck errors ## Test plan - [x] > @mosaic/web@0.0.1 lint /home/localadmin/src/mosaic-stack/apps/web > eslint "src/**/*.{ts,tsx}" — 0 errors (was 49) - [x] > @mosaic/web@0.0.1 typecheck /home/localadmin/src/mosaic-stack/apps/web > tsc --noEmit — 0 errors (was 50+) - [x] > @mosaic/web@0.0.1 test /home/localadmin/src/mosaic-stack/apps/web > vitest run RUN v3.2.4 /home/localadmin/src/mosaic-stack/apps/web ✓ src/app/(authenticated)/tasks/page.test.tsx (5 tests) 453ms ✓ TasksPage > should render the TaskList with tasks after loading 315ms ✓ src/app/(authenticated)/page.test.tsx (5 tests) 475ms ✓ DashboardPage > should render all widgets with data after loading 315ms ✓ src/hooks/__tests__/useLayouts.test.tsx (9 tests) 507ms ✓ src/components/filters/FilterBar.test.tsx (19 tests) 741ms ✓ src/components/widgets/__tests__/QuickCaptureWidget.test.tsx (12 tests | 3 skipped) 576ms ✓ src/components/federation/InitiateConnectionDialog.test.tsx (16 tests) 875ms ✓ src/components/workspace/InviteMember.test.tsx (9 tests) 943ms ✓ src/components/knowledge/KnowledgeGraphViewer.test.tsx (16 tests) 871ms ✓ src/app/(authenticated)/calendar/page.test.tsx (5 tests) 498ms ✓ CalendarPage > should render the Calendar with events after loading 335ms ✓ src/components/gantt/GanttChart.test.tsx (28 tests) 560ms ✓ src/components/knowledge/__tests__/EntryEditor.test.tsx (10 tests) 361ms ✓ src/lib/auth/auth-context.test.tsx (12 tests) 258ms ✓ src/components/widgets/__tests__/ActiveProjectsWidget.test.tsx (11 tests) 447ms ✓ src/components/knowledge/__tests__/WikiLinkRenderer.test.tsx (38 tests) 401ms ✓ src/components/federation/ConnectionCard.test.tsx (18 tests) 454ms ✓ src/components/kanban/KanbanBoard.test.tsx (22 tests) 825ms ✓ src/components/search/__tests__/SearchResults.test.tsx (10 tests) 335ms ✓ src/components/mindmap/ReactFlowEditor.test.tsx (13 tests) 399ms ✓ src/components/tasks/TaskList.test.tsx (13 tests) 1544ms ✓ TaskList > error states > should handle extremely large task lists 1290ms ✓ src/components/workspace/MemberList.test.tsx (6 tests) 271ms ✓ src/components/chat/ChatOverlay.test.tsx (18 tests) 322ms ✓ src/components/search/__tests__/SearchFilters.test.tsx (12 tests) 424ms ✓ src/components/federation/SpokeConfigurationForm.test.tsx (10 tests) 275ms ✓ src/components/domains/DomainFilter.test.tsx (7 tests) 304ms ✓ src/components/federation/ConnectionList.test.tsx (8 tests) 227ms ✓ src/components/widgets/__tests__/TaskProgressWidget.test.tsx (10 tests) 273ms ✓ src/app/settings/workspaces/[id]/teams/page.test.tsx (4 tests) 276ms ✓ src/components/knowledge/__tests__/LinkAutocomplete.test.tsx (17 tests | 9 skipped) 317ms ✓ src/app/(auth)/callback/page.test.tsx (8 tests) 249ms ✓ src/components/widgets/__tests__/BaseWidget.test.tsx (9 tests) 300ms ✓ src/components/domains/DomainList.test.tsx (7 tests) 259ms ✓ src/components/dashboard/__tests__/QuickCaptureWidget.test.tsx (5 tests) 226ms ✓ src/components/auth/LogoutButton.test.tsx (5 tests) 209ms ✓ src/components/widgets/__tests__/AgentStatusWidget.test.tsx (6 tests) 185ms ✓ src/app/(authenticated)/settings/workspaces/page.test.tsx (4 tests) 192ms ✓ src/components/domains/DomainSelector.test.tsx (7 tests) 244ms ✓ src/components/error-boundary.test.tsx (7 tests) 258ms ✓ src/hooks/useWebSocket.test.tsx (27 tests) 228ms ✓ src/components/knowledge/__tests__/BacklinksList.test.tsx (8 tests) 211ms ✓ src/components/workspace/WorkspaceSettings.test.tsx (1 test) 274ms ✓ src/components/mindmap/MermaidViewer.test.tsx (19 tests) 241ms ✓ src/components/auth/LoginButton.test.tsx (3 tests) 196ms ✓ src/components/ui/ComingSoon.test.tsx (5 tests) 127ms ✓ src/components/federation/AggregatedDataGrid.test.tsx (9 tests) 164ms ✓ src/app/(auth)/login/page.test.tsx (4 tests) 148ms ✓ src/components/federation/FederatedEventCard.test.tsx (10 tests) 155ms ✓ src/hooks/useChat.test.ts (26 tests) 164ms ✓ src/components/search/__tests__/SearchInput.test.tsx (10 tests) 110ms ✓ src/app/(authenticated)/federation/connections/page.test.tsx (3 tests) 97ms ✓ src/components/tasks/TaskItem.test.tsx (21 tests) 157ms ✓ src/components/federation/FederatedTaskCard.test.tsx (11 tests) 162ms ✓ src/hooks/useChatOverlay.test.ts (26 tests) 130ms ✓ src/lib/api/client.test.ts (41 tests) 85ms ✓ src/app/page.test.tsx (2 tests) 39ms ✓ src/components/chat/Chat.test.tsx (3 tests) 69ms ✓ src/components/federation/ProvenanceIndicator.test.tsx (7 tests) 57ms ✓ src/components/widgets/__tests__/WidgetGrid.test.tsx (8 tests) 102ms ✓ src/providers/WebSocketProvider.test.tsx (4 tests) 62ms ✓ src/components/team/TeamSettings.test.tsx (2 tests) 69ms ✓ src/lib/hooks/useWorkspaceId.test.ts (5 tests) 60ms ✓ src/components/widgets/__tests__/TasksWidget.test.tsx (7 tests | 6 skipped) 69ms ✓ src/components/widgets/__tests__/CalendarWidget.test.tsx (6 tests | 5 skipped) 35ms ✓ src/lib/api/federation.test.ts (12 tests) 16ms ✓ src/components/chat/MessageList.test.tsx (6 tests) 42ms ✓ src/components/gantt/types.test.ts (14 tests) 12ms ✓ src/lib/utils/safe-json.test.ts (26 tests) 14ms ✓ src/lib/api/tasks.test.ts (15 tests) 20ms ✓ src/lib/config.test.ts (6 tests) 33ms ✓ src/lib/api/federation-queries.test.ts (7 tests) 11ms ✓ src/components/workspace/validation.test.ts (29 tests) 8ms ✓ src/components/widgets/__tests__/WidgetRegistry.test.tsx (12 tests) 7ms ✓ src/lib/utils/date-format.test.ts (15 tests) 12ms ✓ src/components/gantt/index.test.ts (3 tests) 4ms Test Files 73 passed (73) Tests 811 passed | 23 skipped (834) Start at 17:52:30 Duration 13.64s (transform 3.82s, setup 17.78s, collect 20.98s, tests 19.73s, environment 45.01s, prepare 9.32s) — 73/73 suites pass (was 10 failures) - [x] Pre-commit hooks pass (lint, typecheck, prettier, git-secrets) - [ ] CI pipeline should pass all 4 gates (lint, typecheck, test, security-trivy) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jason.woltje added 1 commit 2026-02-12 23:52:45 +00:00
fix(ci): fix pipeline #366 — web @mosaic/ui build, Dockerfile find bug, event handler types
All checks were successful
ci/woodpecker/push/orchestrator Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
e8a9a3087a
Three root causes resolved:

1. .woodpecker/web.yml: build-shared step was missing @mosaic/ui build,
   causing 10 test suite failures + 20 typecheck errors (TS2307)

2. apps/orchestrator/Dockerfile: find -o without parentheses only deleted
   last pattern's matches, leaving spec files with test fixture secrets
   that triggered 5 Trivy false positives (3 CRITICAL, 2 HIGH)

3. 9 web files had untyped event handler parameters (e) causing 49 lint
   errors and 19 typecheck errors — added React.ChangeEvent<T> types

Verification: lint 0 errors, typecheck 0 errors, tests 73/73 suites pass

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
jason.woltje merged commit 2ab795a95d into develop 2026-02-13 00:27:48 +00:00
jason.woltje deleted branch fix/ci-366 2026-02-13 00:27:49 +00:00
Sign in to join this conversation.