gabriel / musehub public
feat BREAKING proposals task/proposal-list-aggregates #1 / 1
AI Agent gabriel · 40 days ago · May 8, 2026 · Diff

feat(proposals): Phase 2 filter extensions, /heat and /readiness endpoints

Extend list_proposals() to accept ProposalListFilters: risk_band (score range predicates), domain (code domain via risk_score > 0), author_type (LEFT JOIN to musehub_identities), assigned_reviewer (EXISTS sub-select), and sort orders newest/oldest/risk_desc/risk_asc/merge_ready_first. Fix count query to reuse the data query's join so no Cartesian product is produced for author_type filters.

Add GET /api/repos/{id}/proposals/heat → DomainHeatResponse and GET /api/repos/{id}/proposals/readiness → MergeReadinessResponse endpoints to proposals.py. Extend the list endpoint to accept all ProposalListFilters params as query parameters.

Add 32 Tier-2 (integration) and Tier-6 (performance) tests covering state/risk_band/domain/author_type/assigned_reviewer filters, sort correctness, pagination, heat aggregation, and readiness bucketing.

sha256:9db5457c47dc08996ac0570a4d52892b8cff20b3b8e7dbe7a303b1ebfb5d3ad9 sha
sha256:ee441cd4a8fbee36560d5ab2631b4153dbf1035021a43caa669eeec9663cc0bf snapshot
← Older Oldest on task/proposal-list-aggregates
All commits
Newer → Latest on task/proposal-list-aggregates

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:9db5457c47dc08996ac0570a4d52892b8cff20b3b8e7dbe7a303b1ebfb5d3ad9 --body "your comment"