feat: the five knowledge endpoints, gradio_ui and frozen descriptor (s2)
avoigt1121+1: Claude Opus 5.5
3ed6b66
- src/endpoints/: drugs_for_targets, trials_for_genes, annotate_genes,
pathways_for_genes, targets_for_disease on the s1 core. Inputs validated
before any call; every row and nested block (ChEMBL mechanisms, UniProt
protein, HGNC mapping, disease resolution) stamped; deterministic
"According to <source> (queried <date>)" narratives; unresolved inputs and
structured source errors instead of guesses.
- Loaded tool set narrowed 12 -> 8 once real responses were seen (HGNC gives
Ensembl + UniProt ids; one batched UniProt search; Reactome's mapping is
already lowest-level). The other 4 stay approved, unloaded.
- 8 pinned output schemas, written from the recorded responses.
- scripts/record_fixtures.py: the only live step. 11 cassettes recorded
2026-10-20 through ToolUniverse 1.5.6 (123 calls): the Phase 0 lookups Q1-Q9
plus the C1 SORD2P case and two edge cases. All Phase 0 expectations replay.
- gradio_ui.py: machine gate first in every handler (x-orchestrator-token),
ty…