v1.6.1
Refactor release. Implements ROADMAP Theme 6 (surface consolidation):
five tool clusters merge behind one canonical entry each, two
synthesis protocols collapse into a single parametrized form, and a
new deprecation telemetry pipeline (alias / redirect log +
tool_deprecations_summary) gives projects an audit trail before the
next MAJOR removes the back-compat layer. Every old name continues
to work end-to-end — the dispatcher injects the implied
operation / kind / source / mode / scope parameter and logs
the hit. See docs/MIGRATION.md for the full
old-name → new-invocation table.
Added — consolidated tools
tool_search(query, source='auto'|'semantic_scholar'|'pubmed'|'crossref'|'arxiv'|'web', limit?)— replaces the five per-provider search tools.source='auto'(default) picks providers from the query domain (biomedical → S2 + PubMed; ML/methods → S2 + arXiv; social → Crossref + S2; geoscience → Crossref + arXiv; generic → web).tool_plan(operation='turn'|'advance'|'clear')— replacestool_plan_turn/tool_plan_advance/tool_plan_clear.tool_plan_step_groundedstays standalone.sys_path(operation='create'|'abandon'|'list', ...)— replacessys_path_create/sys_path_abandon/sys_path_list.tool_ground(mode='explicit'|'from_context', claim, ...)— replacestool_grounding_register+tool_ground_from_context.tool_verify(scope='claim'|'project', ...)— replacestool_claim_verify+tool_grounding_verify.tool_lessons(operation='record'|'consult', ...)— replacestool_lessons_record+tool_lessons_consult.mem_log(kind='methods'|'decision'|'hypothesis'|'analysis', ...)— replacesmem_methods_append/mem_decision_log/mem_hypothesis_update/mem_analysis_log.tool_deprecations_summary— aggregates counts from.os_state/deprecations.log(alias hits + redirect-stub loads) bykind/source/target. Run before upgrading to the next MAJOR.
Added — protocol consolidation
synthesis/printable.yaml— new parametrized protocol covering both poster (format='poster') and handout / one-pager (format='handout'/'one_pager') variants. Quality bars, audience profiles, and steps branch on the format parameter.
Added — infrastructure
- Protocol loader honours
redirect_to: <target>+redirect_params: {...}. The loader recursively resolves the target, attaches_redirected_from+_redirect_paramsto the result for AI context, and logs every redirect to.os_state/deprecations.log. Cycles are detected across the whole chain. - Dispatcher logs every deprecated-alias invocation to
.os_state/deprecations.logwithkind='tool_alias'. A new_ALIAS_PARAM_INJECTIONtable injects the back-compat parameter so legacy call shapes keep working without the caller supplying the consolidation argument. - Preflight adds two new checks: Alias table complete (every
_ALIASESentry resolves to a registered handler; every_DEPRECATED_ALIASESentry has a param-injection row) and Redirect-stub targets resolve (every YAML withredirect_to:points at a real protocol; no stub carries bothredirect_to:andsteps:). - Preflight: 15 → 17 checks. All green.
docs/MIGRATION.md(new) — the complete migration table.
Improved
_router_index.yaml(version 10 → 11): addssynthesis/printableentry; markssynthesis/synthesis_handout+synthesis/synthesis_posteras redirects in their summaries; updates the handout decomposition to point at the consolidated target.- 44 new tests in
tests/unit/test_v161_consolidation.pyexercise alias completeness, param-injection coverage, end-to-end old-name behaviour, deprecation logging, redirect resolution, cycle detection, and the new preflight checks. Pytest 553 → 597 passes.
Migration table
| Cluster | Old name | New invocation |
|---|---|---|
| Search | tool_search_semantic_scholar |
tool_search(query=..., source='semantic_scholar') |
| Search | tool_search_pubmed |
tool_search(query=..., source='pubmed') |
| Search | tool_search_crossref |
tool_search(query=..., source='crossref') |
| Search | tool_search_arxiv |
tool_search(query=..., source='arxiv') |
| Search | tool_search_web |
tool_search(query=..., source='web') |
| Plan | tool_plan_turn |
tool_plan(operation='turn') |
| Plan | tool_plan_advance |
tool_plan(operation='advance') |
| Plan | tool_plan_clear |
tool_plan(operation='clear') |
| Path | sys_path_create |
sys_path(operation='create', name=..., hypothesis=...) |
| Path | sys_path_abandon |
sys_path(operation='abandon', path_name=..., rationale=...) |
| Path | sys_path_list |
sys_path(operation='list') |
| Ground | tool_grounding_register |
tool_ground(mode='explicit', claim=..., sources=[...]) |
| Ground | tool_ground_from_context |
tool_ground(mode='from_context', claim=..., context_paths=[...]) |
| Verify | tool_claim_verify |
tool_verify(scope='claim', claim=..., verifications=[...]) |
| Verify | tool_grounding_verify |
tool_verify(scope='project') |
| Lessons | tool_lessons_record |
tool_lessons(operation='record', outcome=..., reflection=...) |
| Lessons | tool_lessons_consult |
tool_lessons(operation='consult', task=...) |
| Memory | mem_methods_append |
mem_log(kind='methods', method=..., ...) |
| Memory | mem_decision_log |
mem_log(kind='decision', context=..., selected=..., rationale=...) |
| Memory | mem_hypothesis_update |
mem_log(kind='hypothesis', hypothesis_id=..., status=...) |
| Memory | mem_analysis_log |
mem_log(kind='analysis', entry=...) |
| Protocol | synthesis/synthesis_handout |
synthesis/printable (redirect_params: {format: handout}) |
| Protocol | synthesis/synthesis_poster |
synthesis/printable (redirect_params: {format: poster}) |
Compatibility: old names continue to work for the lifetime of
the current MAJOR. They are scheduled for removal in the next MAJOR.
Run tool_deprecations_summary to audit your project's exposure
before then.
Bumped
version 1.6.0 → 1.6.1inpyproject.toml,src/research_os/__init__.py,CITATION.cff.- All 114 protocol YAMLs bumped 1.6.0 → 1.6.1 (semantic-routing embeddings rebuilt to track).
_router_index.yamlversion 10 → 11.
Counts
- Tools surface: 166 → 174 (+8 new consolidated tools; old names retained as aliases for back-compat).
- Protocols: 113 → 114 (+1 consolidated
synthesis/printable; old handout + poster retained as redirect stubs). - Active surface after consolidation (excluding deprecated aliases / redirect stubs): ~89 distinct tool entry points + ~112 distinct protocol entry points.