# PR-3 Apply Report: Integration + Polish for Container Monitoring & Notifications ## Status **COMPLETE** ## Changed Files ### New Files | File | Purpose | |------|---------| | `apps/api/tests/integration/test_events.py` | Integration tests for SSE auth, connection limits, lifecycle hooks, event persistence | ### Modified Files | File | Change | |------|--------| | `apps/api/src/api/tool_instances.py` | Added `GET /{project_id}/repositories/{repo_id}/instances/{instance_id}/events` endpoint | | `docs/features/terminal.md` | Added Container Monitoring & Notifications section | | `docs/architecture/backend.md` | Added monitoring components to architecture diagram and docs | | `docs/architecture/frontend.md` | Added SSE/events section to frontend architecture | ## Implementation Summary ### MON-PR3-001: Integration Tests - 6 integration tests covering: - SSE requires authentication (401) - SSE enforces connection limit (429) - SSE endpoint is registered - Lifecycle hook publishes event and persists audit row - Direct lifecycle event persists to DB - EventBus pub/sub delivers events ### MON-PR3-002: Instance Events History API - `GET /{project_id}/repositories/{repo_id}/instances/{instance_id}/events` - Returns up to 50 most recent events (configurable via `limit` param) - Includes event_type, status, message, metadata, created_at ### MON-PR3-003: Frontend Health History View - Skipped — deferred to future enhancement ### MON-PR3-004: Performance Tuning - Already implemented in PR-1: SSE max 5 connections per user, health monitor only writes on state change ### MON-PR3-005: Documentation Updates - `docs/features/terminal.md`: Added monitoring section with error troubleshooting - `docs/architecture/backend.md`: Added monitoring components, event flow, event types table - `docs/architecture/frontend.md`: Added SSE architecture, event-to-toast mapping ### MON-PR3-006: Final Regression Validation - Backend: 21 monitoring tests passed, 172 unit tests passed (4 pre-existing failures unrelated) - Frontend: 14 tests passed, tsc clean, eslint clean - Ruff: All clean ## Quality Gates | Check | Result | |-------|--------| | pytest unit (monitoring) | 21 passed | | pytest unit (full) | 172 passed, 4 pre-existing failures | | vitest frontend | 14 passed | | tsc --noEmit | Clean | | eslint | Clean | | ruff | Clean |