Skip to content

Add hyperagents_dsh: DeepSeek Harness as a first-class candidate (rebase of #57) - #78

Draft
Andyyesiyu wants to merge 8 commits into
mainfrom
cursor/hyperagents-dsh-rebase-3c78
Draft

Add hyperagents_dsh: DeepSeek Harness as a first-class candidate (rebase of #57)#78
Andyyesiyu wants to merge 8 commits into
mainfrom
cursor/hyperagents-dsh-rebase-3c78

Conversation

@Andyyesiyu

@Andyyesiyu Andyyesiyu commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Rebases / replays #57 onto current main (post-#77 continuous evolve agent) so hyperagents_dsh can merge first.

What conflicted and how it was resolved

Area Conflict Resolution
docs/concepts/design.md Recipe inventory list vs full-benchmark profiles from main Kept tbench_full recipes and added hyperagents_dsh
recipes/README.md Same inventory split Listed dsh alongside existing HyperAgents / tbench_full entries
docs/QUICKSTART.md Root QUICKSTART.md no longer exists on main Relocated edit to docs/QUICKSTART.md with corrected relative link
tests/test_recipe_inventory.py, test_phase_e_recipes.py, fixtures, release artifact Inventory/operator expectations diverged after tbench_full landed Merged both: keep tbench_full coverage; add local-mutate / node_check / builtin-dsh assertions and exclude dsh from Codex-image expectations

What this PR keeps from #57

  • recipes/hyperagents_dsh/ (recipe + doctor + prepare-runtime)
  • seeds/dsh/ (profile, Harbor adapter, runners, compositions)
  • library/validate/node_check.py
  • builtin-dsh registration in src/evolve/workspace.py
  • inventory / composition / phase / release tests

Fixes applied for merge readiness

  1. Node ≥ 22.19 truly enforced in prepare-runtime.sh (rejects 22.0–22.18; accepts 22.19+ / later majors). Covered by tests/test_hyperagents_dsh.py.
  2. SDK / sandbox boundaries documented and tightened
    • Recipe README + scaffold AGENTS.md: dsh Python SDK is not the unrelated PyPI name; uv add from a deepseek-harness clone path.
    • mutate_local preflight fails nonzero if deepseek_harness is not importable.
    • Mutation cordis sandbox policy: workspace-write (not danger-full-access).
  3. mutate_local failure semantics: exhausted driver failures with no target/ changes propagate the driver exit code (no longer masquerade as clean no_proposal). Successful no-ops still return 0 so the framework records discard / no changes to commit.
  4. Harbor adapter: nonzero / timeout dsh driver exits raise instead of looking like a successful agent phase.
  5. Operator inventory docs (library/PROTOCOL.md, library/README.md) list node_check.

Follow-ups (explicitly out of scope)

  • Efficiency usage metrics / efficiency_floor gate
  • Outer-agent SPEC-001 / Ralph loop
  • SoL-Pi mechanism ports
  • Stronger host-side isolation of candidate-owned .mjs plugins during rollout (documented as trusted eval infrastructure for now)

Test plan

Supersedes the merge path for #57.

Open in Web Open in Cursor 

New supported recipe recipes/hyperagents_dsh (HyperAgents selection and
recording over the built-in dsh target) plus its parts in their native
homes:

- seeds/dsh: dsh's own agent profile as the evolvable target (cordis
  composition + plugins + skills + lineage PLAYBOOK), with the harness
  pieces shipped alongside under surface.exclude — the host-side Harbor
  adapter (agent.py), the session-log-to-trajectory.json converter, the
  SDK drivers, and the frozen rollout/mutation cordis compositions. The
  mutate stage is runner: local — a dsh self-modification session in the
  child worktree rewrites its own persona, plugins, and skills.
- library/validate/node_check.py: new validate operator running
  node --check on evolved plugins plus a tag-tolerant YAML syntax check,
  rejecting syntactically broken candidates before a full evaluation.
- src/evolve/workspace.py: register the builtin-dsh seed.
- recipe evaluator assets: prepare-runtime.sh pins Node >= 22.19 and
  forwards optional restricted-network compensations; doctor.json
  enforces it before every run.
- tests and docs updated for the new inventory entry; a dedicated
  composition test covers builtin-dsh initialization.

Recorded end-to-end run (30-task Terminal-Bench 2 subset): certified
genesis 0.700, a gate rejection (0.667 < parent) and a gate acceptance
(0.700 >= parent, dsh-authored skill) across three evolved generations.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Co-authored-by: 403-error <andyyesiyu@gmail.com>
@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

cursoragent and others added 7 commits September 12, 2026 08:41
Replace the out-of-docs relative link with a GitHub blob URL so
mkdocs build --strict no longer fails on docs CI.

Co-authored-by: 403-error <andyyesiyu@gmail.com>
Initialize returncode before the driver wait so timeout/cancel paths
raise their intended errors instead of UnboundLocalError after the
finally trajectory write. Cover timeout and nonzero-exit with unit tests.

Co-authored-by: 403-error <andyyesiyu@gmail.com>
Co-authored-by: 403-error <andyyesiyu@gmail.com>
Align _BUILTIN_SEEDS with workspace.py so hyperagents_dsh init-check
accepts the vendored dsh seed instead of treating it as a missing path.

Co-authored-by: 403-error <andyyesiyu@gmail.com>
Replace removed session_root/cordis kwargs with dsh_home + profile +
patches, convert frozen compositions into sdk-minimal overlays, and
teach trajectory conversion to read session JSONL under the isolated
harness home (including optional .jsonl.zst).

Co-authored-by: 403-error <andyyesiyu@gmail.com>
Replace removed agent-spine-demo with system-prompt, drop foreign
cordis-plugin-include of checkout/target, and materialize the candidate
overlay under dsh_home so @deepseek-ai/* resolves via harness
profiles/node_modules while local plugins keep absolute paths.

Co-authored-by: 403-error <andyyesiyu@gmail.com>
Load the sibling candidate_overlay helper via importlib so production
Python passes the import-hygiene check.

Co-authored-by: 403-error <andyyesiyu@gmail.com>
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