nadellaroshni
Update README.md
2d35d5a
|
Raw
History Blame
6.76 kB
---
title: Smart Sprint Planner
emoji: "🗂️"
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7860
---
# Smart Sprint Planner
Real-world OpenEnv environment for agile sprint planning and dynamic replanning.
Core pipeline:
`audio or transcript -> extraction -> JIRA-style tickets -> developer assignments -> dynamic disruptions -> reward and grading`
This repository is aligned to the Round 1 competition requirements captured in [context_scaler.txt](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/context_scaler.txt).
## Environment Summary
The environment simulates a real planning workflow an engineering manager, scrum lead, or delivery lead would actually perform:
- convert planning discussion into structured tasks
- assign work under team capacity constraints
- respond to urgent work, capacity loss, and dependency changes
- maximize completion, timeliness, workload balance, and adaptability
This is intended as a real-world planning and replanning environment, not a toy game.
## Tasks And Difficulty
There are 3 graded tasks:
- `easy`
Static sprint planning. Fixed backlog, fixed capacity, fixed deadlines.
- `medium`
One disruption event. Usually urgent work or a developer capacity loss.
- `hard`
Multiple disruptions over time. New work, dependency shifts, and changing capacity.
Difficulty represents volatility, not just more tickets.
## Project Flow
1. [env/transcription.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/env/transcription.py)
Handles audio-to-text or accepts provided transcript text.
2. [env/extraction.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/env/extraction.py)
Extracts structured work items with an LLM or deterministic fallback logic.
3. [env/jira.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/env/jira.py)
Converts extracted items into JIRA-style sprint tickets.
4. [env/environment.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/env/environment.py)
Implements `reset()`, `step()`, and `state()` with dynamic event handling.
5. [env/graders.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/env/graders.py)
Computes dense rewards and final deterministic grading in `[0.0, 1.0]`.
6. [planner.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/planner.py)
Runs the full end-to-end pipeline and returns assignment recommendations.
## Observation And Action Space
Observation includes:
- meeting text
- extracted work items
- active JIRA tickets
- developer pool
- completed task ids
- sprint day
- metrics and event history
- pending and recent disruption signals
Action is one assignment:
```json
{
"task_id": "T001",
"developer_id": "D1"
}
```
## Extraction Schema
Each extracted item can include:
- `task`
- `description`
- `deadline`
- `priority`
- `category`
- `tags`
- `acceptance_criteria`
- `dependency_hints`
- `owner_hint`
- `urgency_reason`
- `raw_text`
LLM extraction uses the OpenAI client when credentials are available. Otherwise the system uses a deterministic rule-based fallback for offline reproducibility.
## Reward And Grading
Dense step rewards include:
- on-time completion
- specialization or skill-match reward
- priority-aware completion reward
- penalties for invalid, blocked, and over-capacity actions
- adaptation reward for disruption-created work
- future-feasibility shaping for preserving replanning options
Final grading combines:
- completion rate
- on-time rate
- extraction quality
- workload balance
- efficiency
- adaptability
All final scores are normalized to `[0.0, 1.0]`.
## Baseline Inference
The required root-level baseline script is [inference.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/inference.py).
It:
- uses the OpenAI client for LLM calls
- reads `API_BASE_URL`, `MODEL_NAME`, and `HF_TOKEN`
- also supports `OPENAI_API_KEY` locally
- falls back deterministically when no key is configured
- emits strict competition stdout lines:
- `[START]`
- `[STEP]`
- `[END]`
Run one task:
```bash
python inference.py medium
```
Run all tasks:
```bash
python inference.py --all
```
Current local reproducible baseline from `python inference.py --all`:
- `easy`: `0.83`
- `medium`: `0.73`
- `hard`: `0.76`
These are the submission-safe heuristic fallback scores in the current environment.
## Learned Planner
The learned planner is trained separately and is not required for the baseline script.
- training entrypoint: [train.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/train.py)
- evaluation entrypoint: [eval.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/eval.py)
- strongest checkpoint: `checkpoints/best`
Current held-out dataset-eval comparison for the strongest checkpoint:
- Heuristic: `0.893`
- DDQN: `0.897`
On the richer held-out split, the learned DDQN now slightly outperforms the heuristic overall and on `hard`.
Train:
```bash
python train.py --episodes 400
```
Evaluate:
```bash
python eval.py --checkpoint checkpoints/best --scenario-source dataset-eval
```
## Full Pipeline
The full product-facing path is exposed through [planner.py](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/planner.py) and `POST /plan`.
Run locally from transcript:
```bash
python planner.py --transcript "Fix the checkout bug today, then finish analytics after auth." --difficulty medium --strategy auto
```
`auto` prefers the trained DDQN checkpoint when `checkpoints/best` exists, and falls back to heuristic otherwise.
## API Server
Start the server:
```bash
uvicorn server.app:app --reload --port 7860
```
Endpoints:
- `GET /health`
- `POST /reset`
- `POST /step`
- `GET /state`
- `GET /render`
- `GET /grade`
- `POST /plan`
## Setup
```bash
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
Windows:
```powershell
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
```
## Validation And Tests
Run tests:
```bash
pytest tests -v
```
Run OpenEnv validation:
```powershell
.\whisper_env\Scripts\openenv.exe validate
```
Current local status:
- `25` tests passing
- `openenv validate` previously passing in the project environment
- baseline inference reproducing all 3 tasks
## Docker
Build:
```bash
docker build -t smart-sprint-planner .
```
Run:
```bash
docker run -p 7860:7860 smart-sprint-planner
```
## Metadata
Environment metadata lives in [openenv.yaml](C:/Users/ASUS/Documents/GitHub/smart_sprint_planner/openenv.yaml).
Before final submission, the remaining non-code checklist is:
1. verify Docker builds on the target machine
2. verify the Hugging Face Space responds with `200`
3. keep the root `inference.py` output unchanged
4. submit with `checkpoints/best` included if you want `auto` to use DDQN