Why:
- Compare is the wrong surface for two-stage family selection over the 10-doc set.
Changes:
- Add the Decision Tab; raise GET /experiments default/max so the board can load the grid client-side.
Impact:
- Operators pick fixed_size ±N vs semantic@Boundary from existing Experiments.
Co-authored-by: Cursor <cursoragent@cursor.com>
Why:
- Queries and Experiments must hit the Corpus Embedding Model's collections and optionally widen fixed_size context.
Changes:
- Resolve corpus model per request; apply Neighbor Expansion with Expansion Tree; persist and report expansion provenance.
Co-authored-by: Cursor <cursoragent@cursor.com>
Why:
- Experiment list and detail responses showed raw IDs instead of filenames
- No way to delete experiments from the UI
Changes:
- Add document_filename field to ExperimentDetailResponse
- Enrich list endpoint with filenames and calculated best_strategy from aggregate_metrics
- Add DELETE /experiments/{id} endpoint
Impact:
- API responses now include document_filename for all experiment endpoints
- Frontend can display filenames instead of IDs
Why:
- Need request/response models for benchmark endpoints
- Need routes for creating and retrieving benchmarks
- Need view parameter for managerial vs technical report views
Changes:
- models.py: Added BenchmarkRequest, BenchmarkResponse, StrategyMetrics, ExperimentDetailResponse
- routes.py: Added POST /benchmarks, GET /benchmarks/{id}, GET /experiments, view parameter for reports