Cross-surface BLAST sharding contract convergence¶
Motivation¶
BLAST submits could drift across the dashboard inline-FASTA path, the external
submit facade, and the optional Azure Service Bus
ingress. The highest-risk drift was searchsp handling: one surface could trust
caller input while another derived the calibrated Web BLAST value server-side.
User-facing change¶
- Dashboard inline-FASTA submits,
/api/v1/elastic-blast/submit, and Service Bus drain now resolve sharding mode anddb_effective_search_spacethrough the same server-side helper. - Calibrated databases such as
core_ntderive the Web BLAST-compatible search space server-side for all three surfaces. - A bad caller override is rejected on dashboard / OpenAPI submits and stripped plus downgraded on the Service Bus path instead of being trusted blindly.
Persona impact: Reader/Contributor/Owner behavior is unchanged because this is a submit-contract hardening change only; no auth, RBAC, or routing surface changed.
API / IaC diff summary¶
- Added
sharding_modeanddb_effective_search_spaceto the external submit options model. - Updated the Service Bus request-contract documentation to match the external submit shape.
- No infrastructure defaults changed; the existing capacity gate remains default-OFF.
Validation evidence¶
pytest -q api/tests/test_external_blast_api.py api/tests/test_blast_submit_route_options.py api/tests/test_servicebus_tasks.pypytest -q api/tests/test_external_blast_api.py api/tests/test_blast_submit_route_options.py api/tests/test_blast_queue.py api/tests/test_blast_tasks.py api/tests/test_openapi_rate_limit.py