You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This document defines the functional and non-functional requirements for TaskPilot, a reinforcement learning-powered cloud job scheduler that minimises carbon emissions while maintaining performance and cost efficiency.
1.2 Scope
TaskPilot is a web application that:
Accepts compute job submissions (manual or CSV bulk upload)
Routes each job to an optimal server using RL-based scoring
Displays scheduling results, sustainability metrics, and AI-generated explanations
Provides analytics charts covering reward trends, energy usage, server distribution, and carbon intensity
1.3 Definitions
Term
Definition
Job
A compute task described by CPU requirement, memory, priority tier, and latency class
Priority tier
One of: green, balanced, performance — determines which server pool is eligible
TierAgent
An RL agent (one per priority tier) that selects a server within the tier's pool
Carbon factor
Normalised grid carbon intensity (0 = clean, 1 = dirty), derived from the Steel Industry Dataset
Sustainability score
Composite KPI (0–100) combining green ratio, CO2 efficiency, and reward quality
Session
Browser-isolated context identified by a UUID in localStorage; passed as X-Session-ID header
2. Overall Description
2.1 Product Perspective
TaskPilot is a standalone web application. It does not integrate with a live cloud provider; it simulates a 9-server cluster using real workload and energy datasets. It is deployable on any platform supporting Python + Uvicorn (Render, Railway, Heroku, Docker).
2.2 User Classes
Class
Description
End user
Schedules jobs, reviews results, reads XAI explanations via the browser dashboard
Developer
Deploys and configures the backend; may extend RL agents or scoring weights
2.3 Constraints
Python 3.10 or higher
Free-tier deployment (Render): single process, no persistent storage between restarts
Groq API key is optional; XAI degrades gracefully to rule-based explanations without it
No database — all session state is in-memory
3. Functional Requirements
3.1 Job Submission
ID
Requirement
FR-01
The system shall accept a single job with fields: priority, latency, cpu, memory
FR-02
The system shall accept a batch of jobs as a JSON array via POST /submit_batch
FR-03
The system shall accept CSV file uploads and parse them client-side before submission
FR-04
The system shall assign a unique integer job ID to each submitted job within the session