Repository navigation
Releases: raktim-mondol/academic-harness
Release list
v0.25.4 — Fix new-session failure on current DSH
DSH's latest Cordis enforces service injection on preset plugins. paper-fold registered a tool through ctx.tools without declaring inject: ['tools'], so every new session failed with:
agent-preset/invalid: paper-fold (academic-harness/paper-fold): cannot get property "tools" without inject
This patch declares the dependency. New sessions create normally after restart, and paper_fold still passes its 85 checks. No account login or SDK change is involved.
v0.25.3 — Skill updates reach existing installs
The v0.25.2 Modal troubleshooting guidance only reached fresh installs: seeded skills are never overwritten by copyMissing, and the refresh hook only matched the old ResearchCraft marker.
This patch makes the seeder refresh first-party briefs that lack current-version markers:
modal— managed SDK runtime / pnpmallowBuildstroubleshootingrunpod— REST API v2 sectionvastai— agent pitfalls section
Known-old content is replaced; local edits to other skills are untouched. Covered by test-academic-harness.
v0.25.2 — Modal SDK troubleshooting guidance
Agent-facing guidance for the Modal SDK runtime.
- The
modalskill now covers the managed SDK install ($DSH_HOME/modal-sdk),ACADEMIC_HARNESS_MODAL_SKIP_INSTALL, and the pnpm 11ERR_PNPM_IGNORED_BUILDSworkaround — including whyallowBuildsmust live in the profile'spnpm-workspace.yamlrather than the package. - The system prompt sends a failed manual Modal install to that skill before any profile config is edited, and prefers denying the two optional native builds over
pnpm approve-builds --all. - Docs index changelog range updated.
v0.25.1 — Automatic Modal SDK, pnpm 11 fix
Removes the last manual step from Modal setup.
Modal SDK is automatic
modal_run loads the SDK from the profile when present. Otherwise it installs a pinned modal@0.11.1 into $DSH_HOME/modal-sdk on first use and loads it immediately — no dsh plugin add modal, no restart. Set ACADEMIC_HARNESS_MODAL_SKIP_INSTALL=1 to manage the SDK yourself.
pnpm 11 installs no longer fail
pnpm 11 exits nonzero when a dependency has unapproved build scripts. The managed runtime, and every existing profile that depends on Academic Harness, now gets:
allowBuilds:
cbor-extract: false
protobufjs: falseSo a manual dsh plugin --profile <profile> add modal exits 0 instead of ERR_PNPM_IGNORED_BUILDS. Profile patching only touches Academic Harness profiles, preserves existing decisions, and is idempotent.
Verified with a live managed install (pnpm exit 0, ModalClient loaded), a temp-profile seed test, and the full CI suite.
v0.25.0 — Vast.ai, Runpod REST v2, compute hardening
Remote GPU compute now has three backends, and the two existing ones are fixed.
Vast.ai joins the tools
vastai_run searches live marketplace offers, rents the cheapest verified machine, uploads files_in, runs a command, copies files_out back, and destroys the instance. Supports spot bidding (bid_price), pinned offer_id, exact GPU counts, a price cap, and pre-created volumes. A temporary SSH key is registered per call and removed during teardown. New vastai skill and VAST_API_KEY in Settings.
Runpod moves to REST API v2
Ahead of the v1 retirement on 2026-11-15. Fixes the invalid CPU flavor/image, pins network-volume pods to the volume's data center, retries deletes, reports teardown failures with the pod id, and reconciles a create whose reply was lost.
Modal reaches parity
Persistent Modal Volumes, CUDA/PyTorch GPU defaults (no more CUDA-free python image), directory transfers, sandbox_id, retried teardown, and the SDK peer bumped to ^0.11.1.
Transfer and safety hardening
Symlink-safe workspace confinement (the workspace root itself is rejected), atomic directory downloads, both-end tar checks, capped output capture, transfer timeouts, and outputs that fail to transfer are no longer reported as "missing".
Skills and docs
Fixed the duplicate modal skill name (modal-usage), added stale-brief refresh during seeding, and documented all three backends, credentials, storage, and teardown behavior.
Tests: npm run test:compute (catalog/payload/registration/path/transfer) plus a mock-HTTP suite, wired into CI.
v0.16.2 — checkout move fix
Fixes
- The vendored Academic Harness engine venv is now recreated with
--clearwhen the plugin moves or its version changes. Previously a moved checkout leftpippointing at the old path, soah_*tools failed to start. - The AH adapter test now tracks the package version, fixing the v0.16.1 CI failure.
Checkout moved
This release was cut from the renamed checkout at /home/raktim/academic-harness. The GitHub repo remains raktim-mondol/academic-harness.
No new installation steps: fresh installs use the v0.16.0 rename instructions. Existing profiles linked to the old checkout should point at the new path and run dsh plugin --profile academic-harness install.
Full Changelog: v0.16.0...v0.16.2
v0.16.0 — Academic Harness
Academic Harness is the new name
The repo, npm package, plugin, DSH preset, profile, launcher, and product name are now academic-harness / Academic Harness. The science, tools, and behavior are unchanged.
Fresh install
dsh plugin --profile academic-harness add github:raktim-mondol/academic-harness
dsh --profile academic-harness
# or, with the shared launcher:
academic-harnessnpm is not published in v0.16.0; install from GitHub or a local checkout.
Updating from dsh-researchcraft
node scripts/migrate-profile.mjs --profile researchcraft --to academic-harness --apply
dsh plugin --profile academic-harness installThe migration backs up the profile, moves the package/bundle entries, merges API keys into the new academic-harness settings entry, updates the preset default, and renames the profile directory.
This release:
- keeps the legacy
researchcraftpreset registered so sessions created before v0.16.0 still open; - migrates API keys per field from the old profile row and the old
dsh-researchcraft-keysnamespace; - keeps
dsh-researchcraftas a transition launcher alias; - adds
scripts/test-rename.mjsand profile-migration tests; - removes two tracked
__pycache__files and adds.npmignore.
The vendored Academic Harness engine keeps its name and ah CLI. Its former upstream URL now refers to this plugin; docs/ACADEMIC-HARNESS-ENGINE.md and vendor/academic-harness/SOURCE.txt are authoritative.
Verified: rename/migration tests, legacy-preset boot, API-key preservation, full local test suite, and CI on main and v0.16.0.
Full Changelog: v0.15.0...v0.16.0
v0.15.0
Superseded by v0.16.0: the repo, npm package, plugin, preset, profile, and launcher were renamed to
academic-harness. The commands below use the old name; see the v0.16.0 notes for the new install and migration commands.
zg ↔ PaperMemory v2 alignment
zg is now workspace context, not citation evidence. The system prompt and zvec-grep skill route claims, numbers, quotations, methods, and citations about a paper through PaperMemory (cite, quote_check, trace, get). zg remains fail-soft; PaperMemory remains fail-loud.
zvec_index action=startacceptsexclude(-gglobs). PaperMemory store,corpus/,*.db*, and evidence paths under the index root are excluded automatically.- Auto-ingest (
paper_download,pdf_to_markdown write_to) now passes--cwd, so PaperMemory resolves the project fromah.yamlor manuscriptroot_pathinstead of the workspace directory slug.PAPERMEMORY_PROJECTremains the explicit override. - Re-vendors PaperMemory 0.2.1 (
--cwdin CLI and MCP) and bumps the bundle revision todsh15. - Verified: 90 upstream + 90 vendored tests, golden surface, exclusion unit tests, a real zg index exclusion run, and the 104-paper scale run at 28/28.
Install / update
dsh plugin --profile researchcraft update dsh-researchcraftRestart dsh after updating; the managed PaperMemory venv is reinstalled as 0.2.1+dsh15 on the next ResearchCraft start.
Full Changelog: v0.14.1...v0.15.0
v0.13.2
Fix: Add Plugin no longer stalls on Academic Harness setup
A fresh package copy has no vendored Academic Harness .venv. The hooks row awaited venv preparation inside apply(), so pnpm could finish in seconds while the UI stayed on Installing for the two 5-minute uv/pip timeouts.
- Hooks now register immediately; engine preparation runs in the background.
ah_*tools and hooks resolve the engine lazily and wait only when they are used.- Add Plugin and live-profile activation are no longer blocked by Python setup.
- Verified with a simulated slow
uv: hooksapply()returns in ~4 ms while setup continues in the background.
Install / update
dsh plugin --profile researchcraft update dsh-researchcraftOr remove and reinstall from Plugins → Add plugin. Restart dsh after updating; reload the browser to clear a stale install dialog.
Full Changelog: v0.13.1...v0.13.2
v0.13.1
DSH 0.2.1
ResearchCraft now targets DeepSeek Harness 0.2.1 (latest published CLI: 0.2.1-rc.2).
dsh-*dependencies track0.2.1-rc.2;engines.dshdeclares>=0.2.1-rc.2 <0.3.0.- Removed the
{{cwd}}persona clause (the variable was removed in 0.2.1) and subagentbackgroundMode(managed activations). - Subagents now return
{ kind: "activation", subagentId }immediately; the final answer arrives as a completion notice. The prompt and Paper2Agent skills documentsend_messageandinterrupt_agent. - Added the official Standard
time-contextrow. web_fetchguidance now covers the local HTTP provider and the DeepSeek Search/Fetch setting;working_directoryreplaces the persona path reference.- CI pins DSH
0.2.1-rc.2.
Install from the Web UI
The bundle now installs from Plugins → Add plugin:
- GitHub:
github:raktim-mondol/dsh-researchcraft - npm:
dsh-researchcraft(after the package is published to npm) - Local checkout: an absolute path to the repository
The package includes localized display metadata (locale/en.json, locale/zh.json) and an icon (assets/icon.svg).
Install / update
npm install -g @deepseek-ai/dsh
dsh plugin --profile researchcraft add github:raktim-mondol/dsh-researchcraft
# update
dsh plugin --profile researchcraft update dsh-researchcraftFrom the Web UI, the bundle installs into the current profile; update it by removing and reinstalling. Restart dsh after updating and confirm the preset selector reads ResearchCraft.
Modal SDK is optional
modal moved to an optional peer so pnpm 11's blocked native builds (cbor-extract, protobufjs) no longer fail plugin installation. runpod_run works with its API key; modal_run returns sdk_missing until the optional SDK is installed:
dsh plugin --profile <profile> add modalFull Changelog: v0.12.0...v0.13.1