Skip to content

204: trial search improvements and PyPI trusted publisher#146

Merged
imaurer merged 4 commits intomainfrom
204-biomcp-trial-search
Mar 4, 2026
Merged

204: trial search improvements and PyPI trusted publisher#146
imaurer merged 4 commits intomainfrom
204-biomcp-trial-search

Conversation

@imaurer
Copy link
Collaborator

@imaurer imaurer commented Mar 4, 2026

Summary

  • Add boolean-aware eligibility query handling for --mutation flag (OR/AND/NOT operators)
  • Add --criteria flag for free-text eligibility text search against ClinicalTrials.gov
  • Push keyword into trial condition for search all relevance improvement
  • Add PyPI publish workflow via Trusted Publishers (OIDC — no API token needed)
  • Bump version to 0.8.10

Context

Project 204 fixes trial search gaps identified during the dMMR adjuvant endometrial cancer validation scenario. The three P0/P1 gaps (GAP-2 boolean mutation, GAP-1 criteria search, GAP-4 keyword pushdown) are addressed. The release workflow is updated to use PyPI Trusted Publishers instead of token-based auth.

Verification

  • Architect signoff: APPROVED
  • cargo fmt --check: pass
  • cargo test: 373 passed
  • pytest tests/: 6 passed (including MCP contract)
  • Live validation: boolean mutation, criteria search, and search all keyword pushdown all return relevant results against ClinicalTrials.gov

- Add boolean-aware eligibility query handling for --mutation (OR/AND/NOT)
- Add --criteria flag for free-text eligibility search
- Push keyword into trial condition for search all relevance
- Add PyPI publish via Trusted Publishers (OIDC, no token needed)
- Bump version to 0.8.10
- Update README, CHANGELOG, SKILL.md for new features
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d7095b6fd9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +288 to +289
if term.is_empty() {
return None;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Handle unary NOT when splitting boolean expressions

split_boolean_expression rejects any operator token that has an empty left segment, so inputs like "dMMR AND NOT MSI-H" return None at the NOT token and are later treated as a single quoted literal instead of a boolean query. This breaks the new AND/NOT behavior for a common form (AND NOT ...) and can also poison eligibility post-filtering because the literal string gets tokenized as ordinary words.

Useful? React with 👍 / 👎.

Comment on lines +174 to +175
- uses: dtolnay/rust-toolchain@stable

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Install Rust targets in PyPI wheel matrix builds

The pypi-build job builds non-host targets (for example aarch64-unknown-linux-gnu) but the dtolnay/rust-toolchain step does not request with: targets: ${{ matrix.target }}. On GitHub runners the default toolchain only has the host target installed, so cross-target maturin build --target ... fails with missing std for that target, which blocks pypi-publish because it depends on all matrix jobs.

Useful? React with 👍 / 👎.

Cargo.lock Outdated
[[package]]
name = "biomcp-cli"
version = "0.8.9"
version = "0.9.0"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Align package version across manifests and lockfiles

This commit sets the root package entry in Cargo.lock to 0.9.0 while Cargo.toml and pyproject.toml are 0.8.10, creating an inconsistent release state. That mismatch can cause confusing version reporting and lockfile churn when developers run packaging/release commands locally, since tooling expects the root package version to match the source manifests.

Useful? React with 👍 / 👎.

imaurer added 3 commits March 4, 2026 15:10
…ockfile sync

- Handle unary NOT in boolean expressions (e.g., "dMMR AND NOT MSI-H")
- Add Rust target to pypi-build toolchain for cross-compilation
- Regenerate Cargo.lock to match 0.8.10 version
Copy install.sh into docs/ so MkDocs serves it at biomcp.org/install.sh.
Update all references from the raw.githubusercontent.com URL.
@imaurer imaurer merged commit 80451f1 into main Mar 4, 2026
2 checks passed
@imaurer imaurer deleted the 204-biomcp-trial-search branch March 4, 2026 20:40
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.

1 participant