--- title: ReleaseOps Arena emoji: 🚦 colorFrom: blue colorTo: green sdk: docker pinned: false --- # ReleaseOps Arena **Live Space:** you are on **[hiitsesh/New_gpu_space](https://huggingface.co/spaces/hiitsesh/New_gpu_space)**. **Figures** are loaded from the public **[RL](https://github.com/eshwanthkartitr/RL)** repo via `raw.githubusercontent.com` (this Space’s Git remote **rejects plain PNG commits**; use [Xet](https://huggingface.co/docs/hub/xet) if you want images inside the Space repo). Ensure `images/*.png` exist on the **RL** `main` branch. --- Konichiwa Hey, this is **Eshwanth**. We know that companies are constantly shipping code to hit quarterly goals and honor commitments. That pushes teams toward **AI agents** for CI/CD, triage, security scans, and more—each is domain-specific, customizable, and powerful. The failure modes are familiar: **hallucination**, **hardcoded fixes to “pass” tests**, and changes that are hard to audit. Developers still need a strong **check** on what those agents did. That is where **ReleaseOps** comes in: instead of an exhaustive, brittle rulebook, we try to **learn the org’s policy**—what governs systems and workflows—so we are not maintaining a huge static manual that breaks in prod. With RL I’ve shown that a **smaller** model can be steered to respect this environment, compared to a much larger model tuned for generic “agentic coding,” where the combinatorial mess of **multi-agent** interaction still blows up even with long instructions. In this project we provide tools and agents that implement that **workflow** end-to-end. **Full technical + narrative build log:** open **[blog.md](https://huggingface.co/spaces/hiitsesh/New_gpu_space/blob/main/blog.md)** in this repository (or browse **Files** → `blog.md`). It mirrors what we ship on [GitHub RL](https://github.com/eshwanthkartitr/RL/blob/main/blog.md) and is the “long README” for agents and judges; this page stays the **Space card** with plots and links. --- ### Judge-facing links | What | URL | |------|-----| | **This Hugging Face Space (submitted env)** | [huggingface.co/spaces/hiitsesh/New_gpu_space](https://huggingface.co/spaces/hiitsesh/New_gpu_space) | | **GitHub (full repo: notebook, extra demos)** | [github.com/eshwanthkartitr/RL](https://github.com/eshwanthkartitr/RL) | | **Same notebook on this Hub (view / download IPYNB)** | [ReleaseOps_final_walkthrough.ipynb on the Space](https://huggingface.co/spaces/hiitsesh/New_gpu_space/blob/main/notebooks/ReleaseOps_final_walkthrough.ipynb) | | **Re-run training / eval (Colab)** | [Open `ReleaseOps_final_walkthrough.ipynb` in Colab](https://colab.research.google.com/github/eshwanthkartitr/RL/blob/main/notebooks/ReleaseOps_final_walkthrough.ipynb) | | **Short pitch (YouTube Shorts)** | [YouTube: ReleaseOps / project pitch](https://www.youtube.com/shorts/OxfBH7jDOwg) | | **Build log / long-form writeup (blog)** | **[blog.md in this Space](https://huggingface.co/spaces/hiitsesh/New_gpu_space/blob/main/blog.md)** (same file on [GitHub RL](https://github.com/eshwanthkartitr/RL/blob/main/blog.md)) — design → GRPO → REST → 1.7B run + inference metrics. | | **What judges look for** | [Organizer doc](https://docs.google.com/document/d/1Odznuzwtb1ecDOm2t6ToZd4MuMXXfO6vWUGcxbC6mFs/edit?tab=t.0#bookmark=kix.2dz0x0nie3me) | --- ## Submission checklist (organizer “NOTE 1”) | # | Requirement | Where | |---|-------------|--------| | 1 | **OpenEnv (latest).** | `openenv-core` in [requirements.txt](requirements.txt), spec in [openenv.yaml](openenv.yaml), env: [releaseops_arena/tool_env.py](releaseops_arena/tool_env.py). On PyPI: [openenv-core](https://pypi.org/project/openenv-core/). | | 2 | **TRL + training** | [training/train_grpo.py](training/train_grpo.py). Colab walkthrough: [on GitHub](https://github.com/eshwanthkartitr/RL/blob/main/notebooks/ReleaseOps_final_walkthrough.ipynb). | | 3 | **Training evidence** | Plots below; PNGs live in [RL `images/`](https://github.com/eshwanthkartitr/RL/tree/main/images) on GitHub (linked here, not stored in the Space git tree). | | 4 | **Writeup or under-2 min video (URL only)** | This README; YouTube link in the table above. | | 5 | **This Space** | You are here — submit this Space URL. | | 6 | **README** | Problem, env, results, links — this file. | **NOTE 2:** One submission per team; **team lead** submits; **deadline: 26 April, 5 PM IST** (confirm on official call). **No commits after the deadline** for judging. --- ### How the environment works **Episode and reward (example run).** ![Episode and reward](https://raw.githubusercontent.com/eshwanthkartitr/RL/main/images/Ep%26reward.png) ReleaseOps Arena is a **stateful, tool-using** [OpenEnv](https://pypi.org/project/openenv-core/)-style environment: a supervisor LLM gets **JSON observations** (release phase, proposals, CI refs, safety rules, budgets) and can call a fixed toolset (`inspect_pr_diff`, `inspect_ci_run`, `ask_worker`, approve / block / `hold_release`, …). Rewards come from [releaseops_arena/rewards.py](releaseops_arena/rewards.py) and the same loop drives **GRPO** in [training/train_grpo.py](training/train_grpo.py). This **Space** runs the **FastAPI** app: use **`/docs`**, `/reset`, `/step` on the public `*.hf.space` URL (see below). --- ## Training evidence and results The supervisor was trained with **Group Relative Policy Optimization (GRPO)** (100-step run referenced in the narrative below). ![GRPO training (reward and tool usage)](https://raw.githubusercontent.com/eshwanthkartitr/RL/main/images/Training.png) * **Adaptation and policy learning:** The reward trace shows an initial exploration dip around step 15, then a climb toward a stable reward (~3.09). The model learns the environment’s **hard** rules. * **Tool reliability:** The lower panel shows the agent using the **OpenEnv** tool schema; `tool_failure_freq` stays near zero—no spurious tool syntax. **Additional run traces (in this repo):** ![Training proof (metrics)](https://raw.githubusercontent.com/eshwanthkartitr/RL/main/images/Training_proof.png) ![Training proof (logs)](https://raw.githubusercontent.com/eshwanthkartitr/RL/main/images/Training_proof_logs.png) --- ## Getting started You can use **this Space over HTTPS** (no Docker on your side) or run a **local** container from the Space image. Pick one. **1. OpenEnv** ```bash pip install openenv-core ``` **2. Call this Space (recommended for judges)** Use the `*.hf.space` base URL (not the `huggingface.co/spaces/...` *page* only): ```python from releaseops_arena.client import ReleaseOpsEnvClient from releaseops_arena.models import ReleaseOpsAction BASE = "https://hiitsesh-new-gpu-space.hf.space" client = ReleaseOpsEnvClient(BASE) obs = client.reset() print(obs.model_dump() if hasattr(obs, "model_dump") else obs.dict()) # next: client.step(ReleaseOpsAction(...)) ``` Interactive API: append **`/docs`** to `BASE` (e.g. `https://hiitsesh-new-gpu-space.hf.space/docs`). **3. Local Docker (optional)** Map port **7860** (see [Dockerfile](Dockerfile)). Image name: use **Space → Settings → Docker** for the exact `registry.hf.space/...` string. ```bash docker run -d -p 7860:7860 -e PORT=7860 registry.hf.space//:latest ``` Then `BASE = "http://127.0.0.1:7860"`. --- ## UI flow diagram (static HTML) * **On this Space (same HTML, in the container):** open **`/ui/flow`** — e.g. [https://hiitsesh-new-gpu-space.hf.space/ui/flow](https://hiitsesh-new-gpu-space.hf.space/ui/flow) (Mermaid + fonts load from CDNs; allow outbound in Space if blocked). * **Locally:** open `demo/releaseops_episode_flow.html` in a browser, or from repo root: `open demo/releaseops_episode_flow.html` (macOS). * **On GitHub:** [demo/releaseops_episode_flow.html](https://github.com/eshwanthkartitr/RL/blob/main/demo/releaseops_episode_flow.html) (raw file or clone). --- ## Design note Deeper design and API notes: [ref.md](ref.md) in this repository.