diaznakh/researchcomb
Search indexes, verify claims against sources, and produce evidence-backed research documents.
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog,
and this project uses three-part version numbers of the form major.minor.patch
as stored in plugin.json and skills/researchcomb/VERSION.
Entries below are taken from git history and the GitHub Releases for tags
v0.5.21, v0.5.22, and v0.5.23. Dates are the annotated-tag dates.
Unreleased
Added
-
Opt-in on-disk cache for
safe_fetch.py(--cache/RESEARCHCOMB_CACHE=1), stored under$XDG_CACHE_HOME/researchcomb(or~/.cache/researchcomb;%LOCALAPPDATA%\researchcombon Windows), keyed by the final validated URL after redirects, with a 24-hour TTL.RESEARCHCOMB_CACHE_DIRoverrides the location. Cache hits copy into a fresh output file.--no-cache/RESEARCHCOMB_NO_CACHE=1forces a new fetch. The cache is not read or written when--allow-privateis on. Error responses, HTTP 429, non-2xx, andCache-Control: no-storeare not stored. -
CI installs pinned
jsonschema==4.26.0so the evidence-schema cross-check runs on GitHub Actions. -
Keep a Changelog covering tags
v0.5.21,v0.5.22, andv0.5.23from git history and the GitHub Releases for those tags. -
Live GitHub Actions status badge for
.github/workflows/test.ymlin the README header. -
CONTRIBUTING.md,.github/ISSUE_TEMPLATE/issue forms, and.github/pull_request_template.md. -
Draft 2020-12 JSON Schema for
evidence.jsonatskills/researchcomb/references/evidence.schema.json, linked fromevidence-record.md, with a standard-library test that validates every fixtureevidence.json. Closed objects (source,claim, evidence items, search entries, citation trails, trail leads, and search rounds) setadditionalPropertiesto false. Schema tests cross-check withjsonschemawhen that library is importable and include invalid evidence fixtures.
Changed
- Rename focused workflows to the comb metaphor and fold similar commands:
add
comb-part,comb-snag,comb-sweep, andcomb-weave; mergecomb-blueprintandcomb-rerunintocomb-trace; keepcomb-align,comb-blueprint,comb-critique,comb-manuscript,comb-rerun, andcomb-surveyas deprecated aliases. Result is eleven workflows plus six aliases (#8). - Pin README install instructions to ResearchComb
v0.5.23at commitc43d1dcaef4d930c463fe51ab31ae60a1999fc73(#4). - Reframe
comb-paperfor academic integrity: remind users to check institutional policy, refuse producing a finished coursework essay for submission, and append an## AI Assistance Disclosuresection (#5, #6). - Rewrite focused-workflow descriptions in ResearchComb's own voice (#7).
- Update the README local-checker count to 32 after adding a disclosure word-count test (#6).
0.5.23 - 2026-10-11
GitHub Release: ResearchComb v0.5.23.
Merged pull requests listed on that release:
- #1 Fix word counting, HTTP headers, stale docs, test coverage, and add 3 owner-approved features
- #2 Release v0.5.23: Fix proxy support, accept HTTP 2xx, improve guidance
- #3 Security hardening: DNS rebinding fix, API etiquette, prompt injection guidance, CI
Added
- Opt-in sandbox/proxy fetch mode (
--allow-private/RESEARCHCOMB_ALLOW_PRIVATE=1) that honoursHTTP_PROXY,HTTPS_PROXY, andNO_PROXYand allows non-global resolved addresses; record"fetch_mode": "allow_private"on the source when used. tests/local_proxy.pyhelper for CONNECT-proxy testing.- Search checker acceptance of API hosts for Crossref (
api.crossref.org), OpenAlex (api.openalex.org), Semantic Scholar (api.semanticscholar.org), Europe PMC (www.ebi.ac.uk/europepmc), and PubMed (eutils.ncbi.nlm.nih.gov). - PASS line that reports searched, inaccessible, and unavailable counts separately.
comb-checksteps to identify document version (preprint, accepted manuscript, version of record) and compare a DOI's reference list with Crossref metadata.- Optional evidence-record fields documented in the source table:
checked_date,source_type,commit,version, andreference_issues. comb-papercase intests/check_results.py.- GitHub Actions workflow
.github/workflows/test.yml(push and pull request tomain, Python 3.11,python3 -m unittest discover -s tests -p 'test_*.py',contents: read, actions pinned by commit SHA). SECURITY.mdwith private vulnerability reporting, supported versions, scope, and known limitations.- Prompt-injection guidance: treat fetched pages, PDFs, repositories, and search results as untrusted data, not instructions.
- API etiquette notes in the search-source guide (Crossref
mailto, OpenAlex API key after the polite-pool change, NCBI rate limits, Semantic Scholar limits, backoff on HTTP 429).
Changed
- Manuscript word counting strips table pipe characters and recognizes additional bibliography heading aliases, including Works Cited.
safe_fetch.pysendsUser-Agent: ResearchComb.- Documentation skill and test counts updated to thirteen workflow skills.
- Root
.gitignorepatterns anchored so tracked fixtures such astests/fixtures/workflows/evidence.jsonare not ignored. - Version set to
0.5.23inplugin.jsonandskills/researchcomb/VERSION.
Fixed
safe_fetch.pyproxy support, including HTTPS targets through an HTTP CONNECT proxy; HTTPS proxy URLs remain rejected.- HTTP 2xx responses accepted (not only 200).
- Stub detection and temporary-file handling in
safe_fetch.py. - Proxy environment variables no longer disable private-address checks outside opt-in mode.
- Europe PMC direct URLs must use the
/europepmcpath prefix. - README and other stale documentation corrections from the v0.5.23 release commits.
Security
- Connections pin to the validated address after DNS (including
--allow-privatenon-proxy paths) to prevent DNS rebinding. --allow-privatecontinues to block loopback (127.0.0.0/8,::1), link-local / cloud metadata (169.254.0.0/16,fe80::/10), and unspecified addresses (0.0.0.0/8,::). The unspecified-address block covers the full0.0.0.0/8range, not only0.0.0.0.
0.5.22 - 2026-10-09
GitHub Release: ResearchComb v0.5.22 (compare link only: v0.5.21...v0.5.22).
Changed
comb-critiquerequires checking each central claim against its main-text location, accessible supplementary material, and the cited source; classify findings as demonstrated error, unsupported claim, or concern needing a check; add ML-specific inspection items; and end with an inspection inventory of supplementary material, data, code, and cited sources.- Version set to
0.5.22inplugin.jsonandskills/researchcomb/VERSION. - README install pin updated to
v0.5.22.
0.5.21 - 2026-10-09
GitHub Release: ResearchComb v0.5.21 (compare link only: v0.5.20...v0.5.21).
Added
paper-searchmode incheck_completion.pyfor open-endedcomb-paperdiscovery.- Evidence-record
citation_trails,trail_leads, andsearch_roundsfor paper search: trailkindisreferences,cited_by, orrelated; trailoutcomeisscreenedorinaccessible(with a reason when inaccessible); each trail lead has a title and statusincluded(withsource_id),excluded(with a reason), orinaccessible; each search round has a nonnegativenew_relevantcount, and the final count is zero only after screening encountered relevant leads. - Completion-gate tests that require all eleven scholarly source attempts and screened citation trails.
Changed
- Open-ended
comb-paperdiscovery attempts every scholarly source in the search guide (with a separatesite:fallback when direct search fails), screens backward references and forward or related-paper trails, queues encountered relevant leads, and continues until a further round yields no new relevant leads. A five-paper checker PASS is only a floor. Inaccessible trails or leads fail the paper completion gate. - Version set to
0.5.21inplugin.jsonandskills/researchcomb/VERSION. - README install pin updated to
v0.5.21.