c8db6ce933
- Change mobile terminal CSS to use touch-action: none and overscroll-behavior: none so the custom touch handler owns swipes - Archive completed/partial OpenSpec specs to openspec/changes/archive/2026-06-14-completed-specs-archive/ - Regenerate project maps Quality gates: npm run typecheck, npm run lint (apps/web)
2.3 KiB
2.3 KiB
ADDED Requirements
Requirement: Runtime health endpoint
The system SHALL provide a health endpoint that checks both container and tunnel health.
Scenario: Full health check
- GIVEN a running web-enabled instance
- WHEN
GET /instances/{id}/healthis called - THEN the response includes:
container_status: "running", "exited", "restarting", or "not_found"container_health: "healthy", "unhealthy", or null (if no Docker healthcheck)tunnel_status: "healthy", "unreachable", or "error_response"tunnel_status_code: the HTTP status code from the tunnel URL, or nullprobe_status: "passed", "failed", "pending", or "not_configured"healthy: true only if container is running AND tunnel is healthy
Scenario: Health check for terminal-only instance
- GIVEN a running terminal-only instance
- WHEN
GET /instances/{id}/healthis called - THEN the response includes
container_status: "running" - AND
tunnel_status: "not_applicable" - AND
healthy: trueif container is running
Requirement: Continuous health polling
The system SHALL support periodic health checks from the frontend.
Scenario: Frontend health polling
- GIVEN active instances in the UI
- WHEN the frontend polls health every 30 seconds
- THEN the health status is displayed as a badge
- AND the badge shows "tunnel error" only when tunnel is unreachable
- AND the badge shows "app error" when tunnel returns 502/503/504
- AND the badge shows "starting" when container is up but probe is pending
Requirement: Container state synchronization
The system SHALL update instance status when container state changes unexpectedly.
Scenario: Container crashes
- GIVEN an instance with status "running"
- WHEN the container exits (crash or OOM)
- AND a health check is performed
- THEN the instance status is updated to "error"
- AND the container exit code and logs are captured
Scenario: Container stopped externally
- GIVEN an instance with status "running"
- WHEN the container is stopped via docker command outside the system
- AND a health check is performed
- THEN the instance status is updated to "stopped"
MODIFIED Requirements
None.
REMOVED Requirements
None.