# Get Release Dates

> Fetch OpenShift release dates and metadata from Sippy API Use when this capability is needed.

- Skill: `tomevault-io/get-release-dates` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/get-release-dates`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/get-release-dates/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/get-release-dates

---


# Get Release Dates

This skill provides functionality to fetch OpenShift release information including GA dates and development start dates from the Sippy API.

## When to Use This Skill

Use this skill when you need to:

- Get GA (General Availability) date for a specific OpenShift release
- Find when development started for a release
- Identify the previous release in the sequence
- Validate if a release exists in Sippy
- Determine if a release is in development or has GA'd

## Prerequisites

1. **Python 3 Installation**

   - Check if installed: `which python3`
   - Python 3.6 or later is required
   - Comes pre-installed on most systems

2. **Network Access**

   - The script requires network access to reach the Sippy API
   - Ensure you can make HTTPS requests to `sippy.dptools.openshift.org`

## Implementation Steps

### Step 1: Verify Prerequisites

First, ensure Python 3 is available:

```bash
python3 --version
```

If Python 3 is not installed, guide the user through installation for their platform.

### Step 2: Locate the Script

The script is located at:

```
plugins/teams/skills/get-release-dates/get_release_dates.py
```

### Step 3: Run the Script

Execute the script with the release parameter:

```bash
# Get dates for release 4.21
python3 plugins/teams/skills/get-release-dates/get_release_dates.py \
  --release 4.21

# Get dates for release 4.20
python3 plugins/teams/skills/get-release-dates/get_release_dates.py \
  --release 4.20
```

### Step 4: Process the Output

The script outputs JSON data with the following structure:

```json
{
  "release": "4.21",
  "found": true,
  "ga": "2026-02-17T00:00:00Z",
  "development_start": "2025-09-02T00:00:00Z",
  "previous_release": "4.20"
}
```

**Field Descriptions**:

- `release`: The release identifier that was queried
- `found`: Boolean indicating if the release exists in Sippy
- `ga`: GA (General Availability) date. **If null, the release is still in development.**
- `development_start`: When development started for this release
- `previous_release`: The previous release in the sequence (empty string if none)

**If Release Not Found**:

```json
{
  "release": "99.99",
  "found": false
}
```

**Release Status - Development vs GA'd**:

- **In Development**: If `ga` is `null`, the release is still under active development
  ```json
  {
    "release": "4.21",
    "found": true,
    "development_start": "2025-09-02T00:00:00Z",
    "previous_release": "4.20"
  }
  ```
- **GA'd (Released)**: If `ga` has a timestamp, the release has reached General Availability
  ```json
  {
    "release": "4.17",
    "found": true,
    "ga": "2024-10-01T00:00:00Z",
    "development_start": "2024-05-17T00:00:00Z",
    "previous_release": "4.16"
  }
  ```

### Step 5: Use the Information

Based on the release dates:

1. **Determine release status**: Check if release is in development or GA'd
   - If `ga` is `null`: Release is still in development
   - If `ga` has a timestamp: Release has reached General Availability
2. **Determine release timeline**: Use `development_start` and `ga` dates
   - Calculate time in development: `ga` - `development_start`
   - For in-development releases: Calculate time since `development_start`
3. **Find related releases**: Use `previous_release` to navigate the release sequence
4. **Validate release**: Check `found` field before using the release in other operations

## Error Handling

The script handles several error scenarios:

1. **Network Errors**: If unable to reach Sippy API

   ```
   Error: URL Error: [reason]
   ```

2. **HTTP Errors**: If API returns an error status

   ```
   Error: HTTP Error 404: Not Found
   ```

3. **Invalid Release**: Script returns exit code 1 with `found: false` in output

4. **Parsing Errors**: If API response is malformed
   ```
   Error: Failed to fetch release dates: [details]
   ```

## Output Format

The script outputs JSON to stdout with:

- **Success**: Exit code 0, JSON with `found: true`
- **Release Not Found**: Exit code 1, JSON with `found: false`
- **Error**: Exit code 1, error message to stderr

## API Details

The script queries the Sippy releases API:

- **URL**: https://sippy.dptools.openshift.org/api/releases
- **Method**: GET
- **Response**: JSON containing all releases and their metadata

The full API response includes:

- `releases`: Array of all available release identifiers
- `ga_dates`: Simple mapping of release to GA date
- `dates`: Detailed mapping with GA and development_start dates
- `release_attrs`: Extended attributes including previous release

## Examples

### Example 1: Get Current Development Release

```bash
python3 plugins/teams/skills/get-release-dates/get_release_dates.py \
  --release 4.21
```

Output:

```json
{
  "release": "4.21",
  "found": true,
  "development_start": "2025-09-02T00:00:00Z",
  "previous_release": "4.20"
}
```

### Example 2: Get GA'd Release

```bash
python3 plugins/teams/skills/get-release-dates/get_release_dates.py \
  --release 4.17
```

Output:

```json
{
  "release": "4.17",
  "found": true,
  "ga": "2024-10-01T00:00:00Z",
  "development_start": "2024-05-17T00:00:00Z",
  "previous_release": "4.16"
}
```

### Example 3: Query Non-Existent Release

```bash
python3 plugins/teams/skills/get-release-dates/get_release_dates.py \
  --release 99.99
```

Output:

```json
{
  "release": "99.99",
  "found": false
}
```

Exit code: 1

## Integration with Other Commands

This skill can be used in conjunction with other teams skills:

1. **Before analyzing regressions**: Verify the release exists
2. **Timeline context**: Understand how long a release has been in development
3. **Release status**: Determine if a release is in development or has GA'd
4. **Release navigation**: Find previous/next releases in the sequence

## Notes

- The script uses Python's standard library only (no external dependencies)
- API responses are cached by Sippy, so repeated calls are fast
- Release identifiers are case-sensitive (use "4.21" not "4.21.0")
- OKD releases are suffixed with "-okd" (e.g., "4.21-okd")
- ARO releases have special identifiers (e.g., "aro-production")
- "Presubmits" is a special release for pull request data

## See Also

- Skill Documentation: `plugins/teams/skills/list-regressions/SKILL.md`
- Sippy API: https://sippy.dptools.openshift.org/api/releases
- Component Health Plugin: `plugins/teams/README.md`

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/openshift-eng) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

