openenv_version: "1.0" environment: name: smart-study-session-optimizer description: > An RL environment where an agent learns to balance studying and breaks to maximize productivity without burning out. Inspired by my own terrible study habits during college. version: "1.0.0" author: "Hackathon Participant" observation_space: type: object properties: energy: type: number minimum: 0.0 maximum: 100.0 description: Current energy level of the student (0=exhausted, 100=fully rested) focus: type: number minimum: 0.0 maximum: 100.0 description: Focus/concentration score right now time_studied: type: number minimum: 0.0 description: Total minutes studied in this session so far session_minutes: type: number minimum: 0.0 description: Total elapsed minutes in the current session consecutive_study_minutes: type: number minimum: 0.0 description: How many minutes studied in a row without a break break_count: type: integer minimum: 0 description: Number of breaks taken so far productive_minutes: type: number minimum: 0.0 description: Minutes where focus was above 60 (counted as productive) action_space: type: integer values: - value: 0 name: study description: Continue studying for the next time step (5 minutes) - value: 1 name: short_break description: Take a short 10-minute break to recover some energy - value: 2 name: long_break description: Take a long 20-minute break for full energy recovery endpoints: reset: method: POST path: /reset description: Reset the environment to initial state, returns first observation step: method: POST path: /step description: Execute one action in the environment request_body: action: type: integer description: Action to take (0=study, 1=short break, 2=long break) response_body: observation: type: object description: New observation after action reward: type: number description: Reward signal for this step done: type: boolean description: Whether the episode is finished info: type: object description: Extra info for debugging/grading state: method: GET path: /state description: Get current environment state without modifying it health: method: GET path: /health description: Health check endpoint tasks: - id: survive_8_hours name: "Survive 8 Hours" description: > Study for 8 hours (480 minutes) without energy hitting zero. Score based on remaining energy (clamped 0.1 to 0.9). max_steps: 120 scoring: 0.1 + (energy / 100) * 0.8 success_threshold: 0.5 - id: maximize_productivity name: "Maximize Productivity" description: > Get as many productive minutes (focus > 60) as possible. Score based on focus and energy (clamped 0.1 to 0.9). max_steps: 60 scoring: 0.1 + (focus / 200) * 0.8 + (energy / 200) * 0.8 success_threshold: 0.5 - id: smart_break_taker name: "Smart Break Taker" description: > Only take breaks when energy is low (below 40%). Score based on energy and focus (clamped 0.1 to 0.9). max_steps: 80 scoring: 0.1 + (energy / 200) * 0.8 + (focus / 200) * 0.8 success_threshold: 0.6