v0.30.0
Closed two review umbrellas: the MCP-server conformance/security review
(#14, 13 issues) and the end-to-end pipeline session findings (#34, 18 issues).
31 fixes/features, each shipped with tests; the unit suite grew to 4593 passing.
Security
- Sandbox custom Jinja2 report templates with
ImmutableSandboxedEnvironment,
closing an SSTI → RCE viatool_report(custom_template=…)(#35). - Confine resource paths: a
_safe_joincontainment helper + traversal
validators onrun_id/paper_id/date, plus arun_idschema validator (#40). - Wire the zero-trust
McpGuard(registration + schema-hash integrity +
rate-limit + audit) into MCP tool dispatch (#45). - Scrub absolute filesystem paths from tool error messages (#44).
MCP server
- Tools emit
isErroron failure and returnToolResult, so FastMCP now
populatesoutputSchemaandstructuredContent(#38). - Fix 5 broken prompts (invalid
role:"system") (#36); make elicitation gates
real and fail-closed on cancel (#37); declare theloggingcapability and
honoursetLevel(#41). - Resource reads raise on missing artifacts instead of returning
success-shaped error blobs (#42); size-cap resource reads + search progress (#44). - Flip
readOnlyHinton 7 writer tools (#39); unify theworkspacedefault (#43). - Capability-domain toolsets via
RESEARCH_PIPELINE_MCP_TOOLSETSto cut the
64-tool schema tax (#46); add an in-memory protocol test harness (#47).
Pipeline & CLI
- New
verifycommand so the skill's manifest validation gates work (#18). - Field-scope plain-language arXiv query variants (#16); per-source search
summary + zero-yield warning +--strict-sources(#20). quality/summarize/export-bibtexparse shortlists leniently, withllm
coercion (#25, #28);CandidateRecorddefaults/coerces null category fields (#24).expandmerges instead of overwriting (--replacefor the old behaviour) (#27);
convert-rough/-fine rebuild the unified manifest (#30); download surfaces the
max_per_runcap truncation (#29).- Config loader raises on an explicit missing
--config(#21); statistic range
sanity checks with astat_warnings.jsonsidecar (#33).
Skill & setup
setup --checkdiagnoses dangling-symlink/stub installs; warn on fragile
--symlink(#19).- Skill runner validates MCP-kind tasks and captures the plan
run_id(#17);
runner--statusexit code locked (#22);check_completionfinds
validation_result.json(#32);reportaccepts--config(#31); sub-agent
model guidance de-pinned + missing-agent fallback (#23); fix null-externalIds
warning spam in the citation graph (#26).