{
  "schema_version": 1,
  "status": "cpu-qualified-gpu-pending",
  "checked_at": "2026-10-20",
  "backend": "openenv",
  "release_eligible": false,
  "model_inference": false,
  "gpu_training": false,
  "upstream": {
    "repository": "https://github.com/huggingface/OpenEnv",
    "revision": "17c1edd22168fcb76b086def1ed90a7168fb8749",
    "version": "0.9.0",
    "pyproject_sha256": "45e8d1cefacdbf8dcbd6526f259611d8726ff4f15a2168adfa6f5b7046b1e952"
  },
  "python_version": "3.13.14",
  "source_sha256": {
    "src/hessian_recipes/__init__.py": "789c960cdc4eca10e9b04ed4a66bdcb59f4c7236778ae6ba139277fa8c655ac7",
    "src/hessian_recipes/openenv_training.py": "00699499a3b107d891efd84665ec51014d98e2424ec5b1b81c1b3d2cf02bb8dd",
    "src/hessian_recipes/openenv_client.py": "68e96371b524a95a8a16404739e802f245183fb02c4507192a4df3b11d381bf0",
    "src/hessian_recipes/gym_training_long.py": "693e0c02de502f10a345b0806312e110cf76ea0504d385df0c6b32aeafb90ef5",
    "src/hessian_recipes/gym_training.py": "1485b633f54dd61487f0cc93b532611889926a083ec5cb5360162bac9c1b3b07",
    "src/hessian_recipes/gym_client.py": "6371e637cdb80cfad5a56f3670079e8c24abbc9b10631ce3d13a3f228fca5166",
    "src/hessian_recipes/agent_rl_training.py": "24a0f1e132f1d941607824a11ceae8009bdb4928feda53a4ba4b065e54529ae5",
    "src/hessian_recipes/agent_rl_tasks.py": "b62f23111b55f1c12d48364521b5799e19b6c716514200a79db1b8d553b13bda",
    "src/hessian_recipes/agent_rl_pilot.py": "45ea9ca59623d0aab1302e9da274f57f440c7a6b6757e8e46829944356da91a6",
    "src/hessian_recipes/training.py": "529b40d87092ce91103fc58197ee29b8381bf449334d83a6dd04e4d2cf6b6148",
    "src/hessian_recipes/evaluation.py": "b4f5434c4164125a78e8b1745a35a065a91961b9f93a70c21f9ea3bf7ab9797a",
    "src/hessian_recipes/distillation.py": "c71707023998274b422a7d416a0c91d14803ee6ef85031f63e3eab163e2b5f5e",
    "examples/agent_gyms/openenv_server.py": "8d909fb7a6f24d5265a127e448712d33f6f3f6147f32704aad0786d71af8e2fc",
    "examples/agent_gyms/openenv_smoke.py": "903a686b773e15714c1173468eb4f0af3e5b119598b17ec2ba88bb678dfd9d38",
    "requirements/openenv.txt": "f4cb825a3a7d44ad677f47753e28e316bd38d96c8f89646798ba71ffd7279cdb"
  },
  "native_service": {
    "evidence_path": "runs/agent-gyms/openenv-native-smoke-04/report.json",
    "evidence_sha256": "e57d24dc07ad5813aaa46829653b76bc6feb322fb4531d4f17083275890269ea",
    "checks": {
      "inherited_python_overlay_removed": true,
      "typed_native_reset_state_no_hidden_facts": true,
      "two_native_sessions_isolated_and_strict_score_parity": true,
      "unknown_names_kwargs_reserved_keys_badtypes_scored_zero": true,
      "verification_idempotent_terminal_immutable_reset_reusable": true,
      "32_concurrent_native_sessions_unique_and_correct": true,
      "native_capacity_rejection_and_recovery": true,
      "native_wire_duplicate_keys_and_nonfinite_json_rejected": true,
      "failed_controller_reset_discards_prior_task_and_recovers": true,
      "260_sequential_resets_no_session_limit_leak": true,
      "native_close_releases_all_environment_instances": true,
      "owned_service_process_reaped": true
    },
    "seconds": 9.194233790040016,
    "simultaneous_sessions": {
      "episodes": 32,
      "workers": 32,
      "simultaneously_open_before_actions": 32,
      "all_native_states_received_before_release": true
    },
    "capacity": {
      "limit": 32,
      "rejected_session": 33,
      "active_after_one_close": 31,
      "replacement_completed": true
    },
    "sequential_resets": 260,
    "native_tests_passed": 24,
    "server_released": true
  },
  "native_client": {
    "evidence_path": "runs/agent-gyms/openenv-client-native-04/qualification-report.json",
    "evidence_sha256": "58003a260d050e6ffa33ea569b51ed50f2261b6d7d9bc5baeece6f853dc83d84",
    "checks": {
      "isolated_websocket_instances": true,
      "strict_real_tools_success": true,
      "identical_verification_idempotent": true,
      "forged_tool_history_rejected": true,
      "reset_preserves_session_changes_episode": true,
      "real_workflow_error_is_zero_strict_reward": true
    },
    "abi_isolation": {
      "parent_PYTHONPATH_deliberately_poisoned": true,
      "parent_PYTHONHOME_deliberately_poisoned": true,
      "service_and_SDK_child_started": true
    },
    "native_optional_test": "passed against fresh final-source owned service",
    "lightweight_tests": {
      "passed": 27,
      "native_opt_in_skipped_by_default": 1,
      "ruff": "passed"
    },
    "artifacts_sha256": {
      "native-client-contract-final.json": "1aa5169a401999eddbdee886fa96abcb525d83e136695bc90e1cb4dbe65bc62f",
      "poisoned-abi.json": "a856f4485a5e7c8fc3174be1b8d237274e50826a76e19b8d70f2370222f00045",
      "service-loss.json": "63577b05de1eb0b16c4e3fcacb68c14b7229ffd50b16ba8f57fc24444785c299",
      "runtime-inspect-pickle.json": "6d7d46b9d380ee5fa2d12e9576bbcea62fdd8fd50d17220c24fd04274733f8d4",
      "final-source-recheck.json": "e6cceb68e41136d6c3bb2c73f3d04e40fb8b960ddc8c2fbc6d91aaeb8b5ff00b",
      "final-source-service/server-lifecycle.json": "64fbd2babe6dfce572fc715eaea10787b3eaf8fe72585c84a5856f24f60a4b63"
    },
    "forced_owned_service_loss": "sticky infrastructure error; no task-zero substitution",
    "native_runtime_inspect_config_serialization": "passed",
    "model_tool_schemas": "exactly equal to original pinned TRL recipe"
  },
  "software": {
    "core_tests_passed": 394,
    "core_optional_skipped": 8,
    "openenv_driver_tests_passed": 32,
    "offline_queue_controller_tests_passed": 21,
    "actual_scalar_optimizer_rng_and_wrapper_tests_passed": 33,
    "ruff": "passed",
    "package_build": "passed"
  },
  "protocol": "Same original SFT checkpoint, frozen TRAIN256 and evaluation plan, 256 GRPO steps, independent DEV-only selection, full MGSM250 at two generation seeds; sequential one-GPU arms with eight hours each.",
  "pending": [
    "actual GPU uninterrupted4 versus stop2/resume4 equality",
    "256-step OpenEnv training",
    "held-out agent assessment",
    "MGSM retention assessment",
    "fixed-sample language review"
  ],
  "limits": [
    "Scripted native service checks establish integration, not model capability.",
    "The 32-session bound is the exercised smoke configuration; the runtime service can be configured separately.",
    "One synthetic task family and one training seed do not establish framework superiority.",
    "Existing NeMo sources and prepared experiment remain unchanged.",
    "Weights, datasets and raw run artifacts remain on the cluster."
  ]
}
