Files
2026-09-30 20:30:56 +03:00

35 lines
1.9 KiB
Markdown

## ADDED Requirements
### Requirement: Bounded GitLab discovery transport retries
The system SHALL retry idempotent GitLab project discovery requests after transient transport failures using a source-configured bounded attempt count and delay.
#### Scenario: Transient timeout succeeds on retry
- **WHEN** a GitLab project discovery request times out and a later attempt within the configured budget succeeds
- **THEN** discovery continues using the successful response without restarting the source
#### Scenario: Retry budget is bounded
- **WHEN** every GitLab project discovery attempt fails transiently
- **THEN** the request stops after the configured attempt count and does not retry indefinitely
### Requirement: Exhausted discovery is a nonfatal source cycle
The system SHALL record an exhausted GitLab discovery transport failure as a failed cycle without terminating the supervised source child.
#### Scenario: Discovery attempts are exhausted
- **WHEN** GitLab project discovery exhausts its transport attempt budget
- **THEN** the cycle is finished as failed and the configured source loop remains alive
#### Scenario: Query position is retained
- **WHEN** a GitLab discovery cycle fails from an exhausted transport error
- **THEN** the current query is not advanced and is eligible for the next cycle
### Requirement: Discovery failure isolation
The system SHALL keep transport-only GitLab discovery failures separate from authentication, rate-limit, scanner, and non-GitLab source policy.
#### Scenario: Token remains healthy after transport failure
- **WHEN** GitLab discovery fails only because of a network transport error
- **THEN** the active token is not marked invalid or rate limited
#### Scenario: Other source behavior is unchanged
- **WHEN** a non-GitLab source encounters an API request failure
- **THEN** this GitLab-only cycle handling does not alter its existing behavior