Skip to content

feat: add openenv.yaml manifests (repo + per-Space)#19

Merged
rycerzes merged 3 commits into
mainfrom
feat/openenv-yaml-manifest
Apr 26, 2026
Merged

feat: add openenv.yaml manifests (repo + per-Space)#19
rycerzes merged 3 commits into
mainfrom
feat/openenv-yaml-manifest

Conversation

@SourasishBasu
Copy link
Copy Markdown
Contributor

@SourasishBasu SourasishBasu commented Apr 25, 2026

Closes the "valid openenv.yaml manifest" engineering-quality criterion in the OpenEnv hackathon judging guidelines (Round 2 minimum requirements).

Why

The judging rubric explicitly calls out a valid openenv.yaml manifest as table-stakes engineering quality. Audit of main showed every other env-scope criterion was already met (Spaces healthy, no reserved tool names, Gym-style API, client/server separation, multi-layer rubric) — only this manifest was missing.

What changed

  • Repo-root openenv.yaml: package-level manifest pointing at all 3 task Spaces. Lists shared package primitives (FastAPI app, port, MCP tools, OpenEnv base classes) and explicitly confirms our 4 MCP tools (submit_plan, submit_subtask, get_status, advance) avoid the reserved set (reset, step, state, close).
  • Per-Space manifests at spaces/notebook/openenv.yaml, spaces/postgres/openenv.yaml, spaces/type-checker/openenv.yaml. Each is populated from the corresponding TaskConfig defaults (workspace_dir, episode_timeout_s, l1_score_mode, etc.) plus a composite-rubric description (gate_checks → l1_tests → l2_code_review → l3_plan_review → episode_aggregator).
  • scripts/prepare_hf_space.py: lifts openenv.yaml to the Space root alongside Dockerfile + README.md so judges pulling the live Space see a valid manifest at the URL root. Missing manifest is non-fatal for backward compatibility.

Verified

Check Result
All 4 manifests parse via yaml.safe_load
Dry-run prepare_hf_space.py for each task lifts openenv.yaml to payload root
spaces/<other>/ subtree stripped from each payload
Live Space /health on all 3 deployed Spaces ✅ 200
Live Space /reset 200, /state 200 (sampled on type-checker)
MCP tool names verified non-reserved submit_plan, submit_subtask, get_status, advance

Followups

  1. Notebook verifier reward.json hard-fail coverage — to be verified in a separate PR (PG uses ratio mode so naturally safe).
  2. L2/L3 prompt-injection hardening (wrap {diff} and {plan} in <agent_*> delimiters) — separate PR; small change but shifts judge calibration slightly.
  3. README update to link the live Space URLs and the manifest.

Test plan

  • On merge: sync-hf-spaces redeploys all 3 Spaces; validate-spaces probe still 200
  • Manually curl https://rycerzes-frontier-swe-{notebook,postgres,type-checker}.hf.space/openenv.yaml post-deploy returns the per-task manifest

🤖 Generated with Claude Code

Closes the "valid openenv.yaml manifest" engineering-quality criterion in
the OpenEnv hackathon judging guidelines.

- Repo-root openenv.yaml: package-level manifest pointing at all 3 task
  Spaces, listing the shared package primitives (FastAPI app, port, tools,
  base classes) and confirming none of our MCP tools collide with reserved
  names (reset/step/state/close).
- Per-Space manifests at spaces/{notebook,postgres,type-checker}/openenv.yaml:
  one task per file, populated from the corresponding TaskConfig defaults
  (workspace_dir, episode_timeout_s, l1_score_mode, etc.) plus a
  composite-rubric description (gate_checks, l1_tests, l2_code_review,
  l3_plan_review, episode_aggregator).
- prepare_hf_space.py: lift openenv.yaml to the Space root alongside
  Dockerfile + README.md so judges pulling the live Space see a valid
  manifest at the URL root. Missing manifest is non-fatal for backward
  compatibility.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Member

@rycerzes rycerzes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! but waiting on merge of the later 3 tasks, so that we can bundle them up together in this PR itself

@rycerzes
Copy link
Copy Markdown
Member

merging this now, not waiting for the rest 2 tasks completion since deadline is imminent

@rycerzes rycerzes merged commit 50d2285 into main Apr 26, 2026
1 check passed
@rycerzes rycerzes deleted the feat/openenv-yaml-manifest branch April 26, 2026 04:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants