063a839790
- Add clone_mode and branch fields to tool_instances - Add ssh_key_id to git_repositories for per-repo SSH key assignment - Implement host-side git cloning with branch selection (default: main) - Mount SSH keys into containers for git operations in clone mode - Add dirty state check on clone-mode instance deletion with confirmation - Update SessionsPage with mount/clone selector, branch input, SSH key display - Add SSH key selector to repository creation form - Add dirty delete confirmation modal with changed files list - Update API schemas and endpoints for new fields - Sync delta specs to main specs (git-repo, tool-instances, repo-clone-mode) - Archive completed OpenSpec change: repo-clone-mode-with-ssh - Document git requirement for custom tool types Quality gates: Frontend typecheck and build passed OpenSpec: repo-clone-mode-with-ssh archived with all tasks complete
52 lines
1.8 KiB
Markdown
52 lines
1.8 KiB
Markdown
## ADDED Requirements
|
|
|
|
### Requirement: Readiness probe configuration
|
|
The system SHALL use tool type readiness probe configuration during instance startup.
|
|
|
|
#### Scenario: Web tool with custom probe
|
|
- **GIVEN** a tool type with `readiness_probe` configured as:
|
|
- `command: "curl -f http://localhost:8080/api/health"`
|
|
- `timeout: 60`
|
|
- `interval: 5`
|
|
- **WHEN** an instance of this type starts
|
|
- **THEN** the system executes the probe command inside the container
|
|
- **AND** retries every 5 seconds for up to 60 seconds
|
|
- **AND** the instance remains in "starting" status until probe succeeds
|
|
|
|
#### Scenario: Web tool with default probe
|
|
- **GIVEN** a web-enabled tool type with no `readiness_probe` configured
|
|
- **WHEN** an instance of this type starts
|
|
- **THEN** the system uses the default probe: `curl -f http://localhost:{port}`
|
|
- **AND** retries every 2 seconds for up to 30 seconds
|
|
|
|
#### Scenario: Probe command execution
|
|
- **GIVEN** a readiness probe command
|
|
- **WHEN** the system executes it inside the container
|
|
- **THEN** it runs via `docker exec {container_id} sh -c "{command}"`
|
|
- **AND** stdout/stderr are captured for diagnostics
|
|
- **AND** exit code 0 indicates success
|
|
|
|
### Requirement: Probe result storage
|
|
The system SHALL store readiness probe results for diagnostics.
|
|
|
|
#### Scenario: Successful probe logged
|
|
- **GIVEN** a readiness probe that succeeds
|
|
- **WHEN** the probe returns exit code 0
|
|
- **THEN** the success is logged with timestamp
|
|
- **AND** the instance status changes to "running"
|
|
|
|
#### Scenario: Failed probe logged
|
|
- **GIVEN** a readiness probe that fails or times out
|
|
- **WHEN** the probe reaches timeout
|
|
- **THEN** the failure is logged with last stdout/stderr output
|
|
- **AND** the instance status changes to "unhealthy"
|
|
- **AND** the probe output is available via the health endpoint
|
|
|
|
## MODIFIED Requirements
|
|
|
|
None.
|
|
|
|
## REMOVED Requirements
|
|
|
|
None.
|