You are an expert systems engineer, RL researcher, and backend architect. Your task is to build a COMPLETE, PRODUCTION-GRADE OpenEnv environment for: "Noise-aware, hardware-constrained quantum circuit optimization using reinforcement learning" This is NOT a toy project. It must fully comply with OpenEnv specification and be deployable. --- # HARD REQUIREMENTS (DO NOT VIOLATE) * Must follow OpenEnv spec EXACTLY: * step(action) -> observation, reward, done, info * reset() * state() * Use strict Pydantic models * Include openenv.yaml * Include 3+ tasks (easy, medium, hard) * Each task must have deterministic graders (0.0-1.0) * Include meaningful reward shaping (NOT sparse) * Include baseline inference.py (OpenAI client) * Include Dockerfile (must run) * Must be HF Spaces deployable * Must pass "openenv validate" --- # PROBLEM DEFINITION We are building an RL environment where an agent learns to: * Construct and optimize quantum circuits * Maximize fidelity to a target state/unitary * Minimize circuit depth and gate count * Minimize noise impact * Respect hardware connectivity constraints Use Qiskit for simulation (statevector + noisy Aer simulator). --- # REQUIRED FILE STRUCTURE envs/my_env/ |---- **init**.py |---- models.py |---- client.py |---- README.md |---- openenv.yaml |---- server/ |---- **init**.py |---- my_environment.py |---- graders/ | |---- fidelity.py | |---- efficiency.py | |---- noise.py | |---- constraints.py | |---- aggregate.py |---- tasks/ | |---- easy.py | |---- medium.py | |---- hard.py |---- app.py |---- Dockerfile Also include: * inference.py (root) * requirements.txt --- # MODEL DEFINITIONS (STRICT) Define: Action: * action_type: ADD, REMOVE, SWAP, PARAM, STOP * gate * qubits * parameter (optional) Observation: * circuit (structured representation) * fidelity (float) * depth (int) * gate_count (int) * noise_estimate (float) * valid_actions State: * full circuit object * step count * internal simulator state --- # ENVIRONMENT LOGIC Implement: ## reset() * initialize empty circuit * load task config (target, noise model, connectivity) * return initial observation ## step(action) * validate action * apply gate using Qiskit * simulate: * ideal (statevector) * noisy (Aer) * compute: * fidelity * depth * noise estimate * compute reward via modular graders * return observation, reward, done, info ## state() * return full internal state --- # ACTION SPACE * ADD gate (H, X, CNOT, RX, RZ) * REMOVE gate * SWAP qubits * PARAM tuning (continuous angle) * STOP --- # REWARD SYSTEM (VERY IMPORTANT) Implement modular grading: ## fidelity.py * compute overlap with target state ## efficiency.py * penalize depth and gate count ## noise.py * penalize noisy circuits ## constraints.py * penalize invalid hardware usage ## aggregate.py * combine scores into final score (0-1) Final reward: * shaped reward = current_score - previous_score --- # TASKS (MANDATORY) ## EASY * Bell state (2 qubits) * no noise ## MEDIUM * GHZ state (3 qubits) * noise + connectivity constraints ## HARD * arbitrary unitary approximation * strict depth + noisy simulation Each task must: * define target * define constraints * define grading thresholds --- # OPENENV INTEGRATION Include openenv.yaml: * name * description * tasks * action/observation schema Ensure environment passes openenv validate. --- # API SERVER Use FastAPI: * POST /reset * POST /step * GET /state --- # DOCKER Dockerfile must: * install qiskit, fastapi, uvicorn, openenv * expose port * run server --- # BASELINE INFERENCE Create inference.py: * uses OpenAI client * reads: * API_BASE_URL * MODEL_NAME * OPENAI_API_KEY * runs all 3 tasks * prints logs in EXACT format: [START] [STEP] [END] This is critical. --- # LOGGING FORMAT (STRICT) Each step must log: * step number * action * reward * cumulative score --- # README REQUIREMENTS Include: * problem description * real-world relevance (quantum compiler optimization) * action space * observation space * reward design * task descriptions * setup instructions * how to run inference * expected baseline results --- # IMPORTANT DESIGN REQUIREMENTS * Reward must NOT be sparse * Must include partial progress signals * Must penalize bad actions * Must prevent infinite loops * Must be deterministic (same input -> same score) --- # OUTPUT FORMAT Generate ALL files with FULL CODE. Do NOT: * skip files * leave TODOs * give partial implementations Everything must be runnable. --- # BONUS (IF POSSIBLE) * Add circuit visualization utility * Add simple logging middleware * Add reproducibility seed --- # FINAL GOAL Produce a COMPLETE, CLEAN, PROFESSIONAL repository that: * passes OpenEnv validation * runs locally * deploys on HF Spaces * produces meaningful RL signals * demonstrates real-world quantum optimization Think like a Meta/Hugging Face engineer reviewing submissions. Quality > speed. Now generate the full implementation.