This document captures the release-readiness sweep completed for v0.2.1.
- Public surface remains evidence federation plus screening prioritization.
- Predictive and orchestrator code remains experimental and unregistered in the default public server.
- Version bump target:
0.2.1.
- ✅
pytest -q->165 passed in 88.36s - ✅ Direct CTX dependency checks passed against:
- chemical
- hazard
- exposure
- bioactivity
- ✅
/healthzreturned livenessok - ✅
/readyzreturned authenticated CTX readiness - ✅ HTTP MCP validation:
initializetools/listresources/listget_contract_manifestresolve_chemical_identifierprioritize_risk_signalsassemble_comptox_evidence_packbuild_aop_linkage_summarybuild_pbpk_context_bundle
- ✅ WebSocket MCP validation:
- initialize
- tools/resources discovery
resolve_chemical_identifier
- ✅
scripts/mcp_interop_smoke.py --endpoint http://127.0.0.1:8013/mcp --json - ✅
scripts/release_smoke.py --endpoint http://127.0.0.1:8013/mcp --json
resolve_chemical_identifierno longer treats permissive upstream partial-name matches as exact identity.- Invalid identifier inputs now collapse to the documented
not_foundcontract instead of surfacing raw CTX 4xx envelopes. /readyzno longer reports success based on generic/ctx-api/healthreachability alone.
- Partial-name identifier inputs are intentionally ambiguous unless they truly match exactly; downstream agents should prefer
DTXSIDorCASRN. - Some optional MMDB slices still return
404for specific chemicals and are represented as known data gaps rather than hard failures. - Predictive/orchestrator modules remain experimental and are not part of the default public tool catalog.
- Bump package version to
0.2.1 - Update README for the new public contract and release smoke path
- Publish
v0.2.1release description - Run full automated test suite
- Run release-oriented live smoke
- Validate authenticated readiness against live CTX
Tag and publish v0.2.1 once the release notes and changelog copy are moved into the GitHub release draft.