Created
Jun 23, 12:43
Started
Jun 23, 21:57
Completed
Jun 24, 00:16
DevOps handoff
Type
Bug
Shape
backend
Worktree Slug
reviewer-select-weight-followups
Repositories
mcritchie-studio
Release Train
—
Branch
feat/reviewer-select-weight-followups
Local URL
—
QA URL
—
Production URL
—
Acceptance Criteria
Expected Test Plan
Checks Run
Agent Context
Two non-blocking observations from Carl's heavy review of PR #123 (wire-2-senior-review). (1) PRE-EXISTING: prod seeds db/seeds/02_agents.rb:44,77,93,109,125 store review_weight as the STRING 'heavy'/'light'; ReviewerSelector#reviewer_weight does raw.to_f -> 0.0 for all of them, so the seeded weight label never drives the heavy seat in prod — fit breaks the tie instead (happens to put the right domain owner heavy, so low impact). The unit test reviewer_selector_test.rb:140 uses numeric weights (9/1), masking this. Reconcile label<->numeric (map heavy->2.0/light->1.0 or store numeric). (2) bin/reviewer-select calls .decision while the avatars recorder task.rb:418 independently calls ReviewerSelector.select; the CLI never writes Current.task_event_reviewers, so on a genuine fit+weight tie Avi could spawn one pair while the avatars record another. Mitigated by the CLI 'advisory until PR opened' note; tidy fix = CLI surfaces/persists the pair for Avi to curate.
Stage Timeline
Who handled each stage, the time it took (measured), and the model / tokens / cost reported (best-effort) — plus who's on it right now. — means the agent didn't report that metric.
Conversation
QA review feedback, agent handoffs, and follow-up notes for this task.
2-senior review: carl (HEAVY) REQUEST_CHANGES; alex-docs (LIGHT) REQUEST_CHANGES. Fix before resubmit: (1) BLOCKER test/models/agents_seed_test.rb:62 — the seed change review_weight 'heavy'->2.0 is NOT reflected here; this guard loads the seed file and asserts =="heavy" for all 5 seniors, so the FULL suite goes RED post-merge (you only ran the 2 touched files). Update the assertion to 2.0 (+ rename off 'heavy'); RUN THE FULL bin/rails test, not just touched files. (2) MEDIUM docs same-pass (alex-docs): behavior changed random->per-task-seeded/reproducible but docs weren't updated. Fix devops-cycle-design.md §1.2 (~line 275) to say the tiebreak is seeded per-task (reproducible), logged for audit, + add the 'bin/reviewer-select preview matches the recorded submitted->reviewed pick' guarantee; sweep remaining 'random tiebreak' wording (devops-cycle-design 247/426, avi/role.md 10/37, mission.md 72-73, bin/reviewer-select 14/138). (3) MINOR scope the 'preview matches recorded pick' claim to the DEFAULT qa_owner (a custom --qa-owner diverges pool+seed). (4) MERGE COORDINATION: this PR will REBASE onto exclude-builder-from-reviewers (#136, merging first); fold the EXCLUDED BUILDER into seed_for's key alongside qa_owner, else two passes excluding different builders share a seed but differ in pool -> divergence returns. (5) NIT WEIGHT_LABELS fallback treats '12abc' as 12.0. NOTE: rework dispatched AFTER #136 merges so you can rebase onto it.
Rework RE-REVIEW PASS: carl (HEAVY) approve — agents_seed_test asserts 2.0 (full suite green); seed-key coordination verified (seed_for folds excluded_builder so .decision/.select agree post-exclusion; tie-with-builder-excluded test proves CLI preview==recorded); rebase kept BOTH #136 exclusion + #135 seed/weight intact; CI 1308/0 + rubocop 0. alex-docs (LIGHT) approve — 'random tiebreak' wording swept across devops-cycle-design/avi-role/mission/bin, preview guarantee scoped to default qa_owner, #136 §247 preserved. DEFERRED nits: mission.md guarantee lacks the default-qa_owner caveat (overview altitude, ok); one code comment says 'random' loosely.
Sealed-bid sizing
Edit →Alex (PM)
—
Avi (PO)
—
Dev
—
Actual
—
We emailed a one-tap sign-in link to . It expires shortly and can only be used once.
No email? Check spam, or close this and try again.