Implement contract testing to catch CLI schema drift early: Contract Test Suite (fixture_contract_tests.rs): - parse_lore_me_empty_fixture: Validates LoreMeResponse on empty data - parse_lore_me_with_activity_fixture: Real lore output with activity - parse_br_list_empty_fixture: Empty beads list - parse_br_list_with_beads_fixture: Real br output with beads Fixtures (captured from real CLI output): - fixtures/lore/me_empty.json: Synthetic empty response - fixtures/lore/me_with_activity.json: Real 'lore --robot me' output - fixtures/br/list_empty.json: Empty array [] - fixtures/br/list_with_beads.json: Real 'br list --json' output - fixtures/br/bv_triage.json: Real 'bv --robot-triage' output Fixture Regeneration: - scripts/regenerate-fixtures.sh: Captures fresh CLI output - Run periodically to update fixtures - CI can diff against committed fixtures to detect drift Why Contract Tests Matter: MC depends on external CLIs (lore, br, bv) whose output format may change. Contract tests fail fast when our Rust types diverge from actual CLI output, preventing runtime deserialization errors. The tests use include_str!() for compile-time fixture embedding, ensuring tests fail to compile if fixtures are missing.
2 lines
17 KiB
JSON
2 lines
17 KiB
JSON
{"generated_at":"2026-02-25T21:37:26Z","data_hash":"094c806ab1b27ac4","triage":{"meta":{"version":"1.0.0","generated_at":"2026-02-25T16:37:26.272111-05:00","phase2_ready":true,"issue_count":66,"compute_time_ms":3},"quick_ref":{"open_count":66,"actionable_count":2,"blocked_count":64,"in_progress_count":0,"top_picks":[{"id":"bd-jyz","title":"Phase 0: Test Infrastructure","score":0.41628190537278625,"reasons":["🎯 Completing this unblocks 5 downstream issues (bd-11k, bd-1ps, +3 more)","📊 High centrality in dependency graph (PageRank: 100%)","⚡ Low effort, high impact - good starting point","✅ Currently unclaimed - available for work"],"unblocks":5}]},"recommendations":[{"id":"bd-2us","title":"Phase 2: Bridge + Data Layer","type":"epic","status":"open","priority":2,"labels":null,"score":0.578813394067507,"breakdown":{"pagerank":0.163073856174739,"betweenness":0.2,"blocker_ratio":0.13,"staleness":0.00008102365129243827,"priority_boost":0.05,"time_to_impact":0.026250000000000002,"urgency":0.00034631226397800475,"risk":0.0020000000000000005,"pagerank_norm":0.7412448007942681,"betweenness_norm":1,"blocker_ratio_norm":1,"staleness_norm":0.0016204730258487655,"priority_boost_norm":0.5,"time_to_impact_norm":0.2625,"urgency_norm":0.0034631226397800474,"risk_norm":0.020000000000000004,"time_to_impact_explanation":"Leaf node, median estimate 60m","risk_explanation":"Low risk - stable dependency structure","risk_signals":{"fan_variance":0,"activity_churn":0,"cross_repo_risk":0,"status_risk":0.1,"composite_risk":0.020000000000000004,"explanation":"Low risk - stable dependency structure"}},"action":"Work on bd-hee first to unblock this","reasons":["🎯 Completing this unblocks 7 downstream issues (bd-1ft, bd-1jy, +5 more)","🔀 Critical path bottleneck (betweenness: 100%)","📊 High centrality in dependency graph (PageRank: 74%)","✅ Currently unclaimed - available for work","⏳ Blocked by bd-hee - complete that first"],"unblocks_ids":["bd-1ft","bd-1jy","bd-1w5","bd-24r","bd-2at","bd-2sj","bd-2zu"],"blocked_by":["bd-hee"]},{"id":"bd-hee","title":"Phase 1: Foundation","type":"epic","status":"open","priority":2,"labels":null,"score":0.49580454474808555,"breakdown":{"pagerank":0.20655405029668022,"betweenness":0.1509433962264151,"blocker_ratio":0.13,"staleness":0.00008282562168209877,"priority_boost":0.05,"time_to_impact":0.026250000000000002,"urgency":0.0003539802189009511,"risk":0.0020000000000000005,"pagerank_norm":0.938882046803092,"betweenness_norm":0.7547169811320754,"blocker_ratio_norm":1,"staleness_norm":0.0016565124336419752,"priority_boost_norm":0.5,"time_to_impact_norm":0.2625,"urgency_norm":0.003539802189009511,"risk_norm":0.020000000000000004,"time_to_impact_explanation":"Leaf node, median estimate 60m","risk_explanation":"Low risk - stable dependency structure","risk_signals":{"fan_variance":0,"activity_churn":0,"cross_repo_risk":0,"status_risk":0.1,"composite_risk":0.020000000000000004,"explanation":"Low risk - stable dependency structure"}},"action":"Work on bd-jyz first to unblock this","reasons":["🔓 Unblocks 2 item(s): bd-2us, bd-3fd","🔀 Critical path bottleneck (betweenness: 75%)","📊 High centrality in dependency graph (PageRank: 94%)","⚡ Low effort, high impact - good starting point","✅ Currently unclaimed - available for work","⏳ Blocked by bd-jyz - complete that first"],"unblocks_ids":["bd-2us","bd-3fd"],"blocked_by":["bd-jyz"]},{"id":"bd-jyz","title":"Phase 0: Test Infrastructure","type":"epic","status":"open","priority":2,"labels":null,"score":0.41628190537278625,"breakdown":{"pagerank":0.22,"betweenness":0,"blocker_ratio":0.065,"staleness":0.00008405534064429014,"priority_boost":0.05,"time_to_impact":0.026250000000000002,"urgency":0.00035894257691932997,"risk":0.0020000000000000005,"pagerank_norm":1,"betweenness_norm":0,"blocker_ratio_norm":0.5,"staleness_norm":0.0016811068128858026,"priority_boost_norm":0.5,"time_to_impact_norm":0.2625,"urgency_norm":0.0035894257691932996,"risk_norm":0.020000000000000004,"time_to_impact_explanation":"Leaf node, median estimate 60m","risk_explanation":"Low risk - stable dependency structure","risk_signals":{"fan_variance":0,"activity_churn":0,"cross_repo_risk":0,"status_risk":0.1,"composite_risk":0.020000000000000004,"explanation":"Low risk - stable dependency structure"}},"action":"Quick win - start here for fast progress","reasons":["🎯 Completing this unblocks 5 downstream issues (bd-11k, bd-1ps, +3 more)","📊 High centrality in dependency graph (PageRank: 100%)","⚡ Low effort, high impact - good starting point","✅ Currently unclaimed - available for work"],"unblocks_ids":["bd-11k","bd-1ps","bd-28q","bd-3em","bd-hee"]},{"id":"bd-716","title":"Phase 4: Queue + Inbox Views","type":"epic","status":"open","priority":2,"labels":null,"score":0.29960953290662745,"breakdown":{"pagerank":0.05451817118502244,"betweenness":0.0981132075471698,"blocker_ratio":0.07428571428571429,"staleness":0.00007535345812114198,"priority_boost":0.05,"time_to_impact":0.026250000000000002,"urgency":0.00032219237017490636,"risk":0.0020000000000000005,"pagerank_norm":0.24780986902282925,"betweenness_norm":0.490566037735849,"blocker_ratio_norm":0.5714285714285714,"staleness_norm":0.0015070691624228395,"priority_boost_norm":0.5,"time_to_impact_norm":0.2625,"urgency_norm":0.003221923701749063,"risk_norm":0.020000000000000004,"time_to_impact_explanation":"Leaf node, median estimate 60m","risk_explanation":"Low risk - stable dependency structure","risk_signals":{"fan_variance":0,"activity_churn":0,"cross_repo_risk":0,"status_risk":0.1,"composite_risk":0.020000000000000004,"explanation":"Low risk - stable dependency structure"}},"action":"Work on bd-1ft first to unblock this","reasons":["🎯 Completing this unblocks 4 downstream issues (bd-2cl, bd-3c2, +2 more)","✅ Currently unclaimed - available for work","⏳ Blocked by bd-1ft - complete that first"],"unblocks_ids":["bd-2cl","bd-3c2","bd-3ua","bd-qvc"],"blocked_by":["bd-1ft"]},{"id":"bd-1ft","title":"Phase 3: Focus View","type":"epic","status":"open","priority":2,"labels":null,"score":0.2956888057900965,"breakdown":{"pagerank":0.07559790589227482,"betweenness":0.11132075471698114,"blocker_ratio":0.065,"staleness":0.00007719380947145063,"priority_boost":0.05,"time_to_impact":0.026250000000000002,"urgency":0.00032999058753289127,"risk":0.0020000000000000005,"pagerank_norm":0.34362684496488555,"betweenness_norm":0.5566037735849056,"blocker_ratio_norm":0.5,"staleness_norm":0.0015438761894290126,"priority_boost_norm":0.5,"time_to_impact_norm":0.2625,"urgency_norm":0.0032999058753289123,"risk_norm":0.020000000000000004,"time_to_impact_explanation":"Leaf node, median estimate 60m","risk_explanation":"Low risk - stable dependency structure","risk_signals":{"fan_variance":0,"activity_churn":0,"cross_repo_risk":0,"status_risk":0.1,"composite_risk":0.020000000000000004,"explanation":"Low risk - stable dependency structure"}},"action":"Work on bd-2us first to unblock this","reasons":["🎯 Completing this unblocks 3 downstream issues (bd-1kr, bd-2p0, bd-716)","🔀 Critical path bottleneck (betweenness: 56%)","📊 High centrality in dependency graph (PageRank: 34%)","✅ Currently unclaimed - available for work","⏳ Blocked by bd-2us - complete that first"],"unblocks_ids":["bd-1kr","bd-2p0","bd-716"],"blocked_by":["bd-2us"]},{"id":"bd-25l","title":"Phase 7: Polish + E2E Tests","type":"epic","status":"open","priority":2,"labels":null,"score":0.16740905286035423,"breakdown":{"pagerank":0.020648499966321544,"betweenness":0.041509433962264156,"blocker_ratio":0.037142857142857144,"staleness":0.00007210816263503086,"priority_boost":0.05,"time_to_impact":0.026250000000000002,"urgency":0.00030840077050983683,"risk":0.0020000000000000005,"pagerank_norm":0.09385681802873429,"betweenness_norm":0.20754716981132076,"blocker_ratio_norm":0.2857142857142857,"staleness_norm":0.0014421632527006172,"priority_boost_norm":0.5,"time_to_impact_norm":0.2625,"urgency_norm":0.0030840077050983683,"risk_norm":0.020000000000000004,"time_to_impact_explanation":"Leaf node, median estimate 60m","risk_explanation":"Low risk - stable dependency structure","risk_signals":{"fan_variance":0,"activity_churn":0,"cross_repo_risk":0,"status_risk":0.1,"composite_risk":0.020000000000000004,"explanation":"Low risk - stable dependency structure"}},"action":"Work on bd-24r first to unblock this","reasons":["🔓 Unblocks 2 item(s): bd-1ds, bd-1ie","✅ Currently unclaimed - available for work","⏳ Blocked by 2 items - need to clear dependencies"],"unblocks_ids":["bd-1ds","bd-1ie"],"blocked_by":["bd-24r","bd-3c2"]},{"id":"bd-3c2","title":"Phase 5: Batch Mode","type":"epic","status":"open","priority":2,"labels":null,"score":0.14264398450515328,"breakdown":{"pagerank":0.025159928371599964,"betweenness":0.041509433962264156,"blocker_ratio":0.027857142857142858,"staleness":0.00007361050869984568,"priority_boost":0.05,"time_to_impact":0.026250000000000002,"urgency":0.00031476012398155563,"risk":0.0020000000000000005,"pagerank_norm":0.11436331077999984,"betweenness_norm":0.20754716981132076,"blocker_ratio_norm":0.21428571428571427,"staleness_norm":0.0014722101739969135,"priority_boost_norm":0.5,"time_to_impact_norm":0.2625,"urgency_norm":0.003147601239815556,"risk_norm":0.020000000000000004,"time_to_impact_explanation":"Leaf node, median estimate 60m","risk_explanation":"Low risk - stable dependency structure","risk_signals":{"fan_variance":0,"activity_churn":0,"cross_repo_risk":0,"status_risk":0.1,"composite_risk":0.020000000000000004,"explanation":"Low risk - stable dependency structure"}},"action":"Work on bd-716 first to unblock this","reasons":["🔓 Unblocks 1 item(s): bd-j76","✅ Currently unclaimed - available for work","⏳ Blocked by bd-716 - complete that first"],"unblocks_ids":["bd-j76"],"blocked_by":["bd-716"]},{"id":"bd-24r","title":"Phase 6: Quick Capture","type":"epic","status":"open","priority":2,"labels":null,"score":0.1366232293667359,"breakdown":{"pagerank":0.02410932458917874,"betweenness":0.033962264150943396,"blocker_ratio":0.027857142857142858,"staleness":0.00007298123333333334,"priority_boost":0.05,"time_to_impact":0.026250000000000002,"urgency":0.00031208422392234314,"risk":0.0020000000000000005,"pagerank_norm":0.10958783904172154,"betweenness_norm":0.16981132075471697,"blocker_ratio_norm":0.21428571428571427,"staleness_norm":0.0014596246666666666,"priority_boost_norm":0.5,"time_to_impact_norm":0.2625,"urgency_norm":0.0031208422392234314,"risk_norm":0.020000000000000004,"time_to_impact_explanation":"Leaf node, median estimate 60m","risk_explanation":"Low risk - stable dependency structure","risk_signals":{"fan_variance":0,"activity_churn":0,"cross_repo_risk":0,"status_risk":0.1,"composite_risk":0.020000000000000004,"explanation":"Low risk - stable dependency structure"}},"action":"Work on bd-2us first to unblock this","reasons":["🔓 Unblocks 1 item(s): bd-xsp","✅ Currently unclaimed - available for work","⏳ Blocked by bd-2us - complete that first"],"unblocks_ids":["bd-xsp"],"blocked_by":["bd-2us"]},{"id":"bd-2zu","title":"Implement decision log infrastructure","type":"task","status":"open","priority":2,"labels":null,"score":0.13567768294715368,"breakdown":{"pagerank":0.01605367082324676,"betweenness":0.043396226415094344,"blocker_ratio":0.055714285714285716,"staleness":0.00007765204687500001,"priority_boost":0.05,"time_to_impact":0.026250000000000002,"urgency":0.00033342635357488937,"risk":0.0020000000000000005,"pagerank_norm":0.07297123101475801,"betweenness_norm":0.2169811320754717,"blocker_ratio_norm":0.42857142857142855,"staleness_norm":0.0015530409375,"priority_boost_norm":0.5,"time_to_impact_norm":0.2625,"urgency_norm":0.0033342635357488937,"risk_norm":0.020000000000000004,"time_to_impact_explanation":"Leaf node, median estimate 60m","risk_explanation":"Low risk - stable dependency structure","risk_signals":{"fan_variance":0,"activity_churn":0,"cross_repo_risk":0,"status_risk":0.1,"composite_risk":0.020000000000000004,"explanation":"Low risk - stable dependency structure"}},"action":"Work on bd-2us first to unblock this","reasons":["✅ Currently unclaimed - available for work","⏳ Blocked by bd-2us - complete that first"],"blocked_by":["bd-2us"]},{"id":"bd-3fd","title":"Scaffold Tauri + Vite + React project","type":"task","status":"open","priority":2,"labels":null,"score":0.12267265013881834,"breakdown":{"pagerank":0.02916498818792806,"betweenness":0,"blocker_ratio":0.055714285714285716,"staleness":0.00008137308572530866,"priority_boost":0.05,"time_to_impact":0.026250000000000002,"urgency":0.00035288653048539125,"risk":0.0020000000000000005,"pagerank_norm":0.13256812812694574,"betweenness_norm":0,"blocker_ratio_norm":0.42857142857142855,"staleness_norm":0.001627461714506173,"priority_boost_norm":0.5,"time_to_impact_norm":0.2625,"urgency_norm":0.003528865304853912,"risk_norm":0.020000000000000004,"time_to_impact_explanation":"Leaf node, median estimate 60m","risk_explanation":"Low risk - stable dependency structure","risk_signals":{"fan_variance":0,"activity_churn":0,"cross_repo_risk":0,"status_risk":0.1,"composite_risk":0.020000000000000004,"explanation":"Low risk - stable dependency structure"}},"action":"Work on bd-hee first to unblock this","reasons":["✅ Currently unclaimed - available for work","⏳ Blocked by bd-hee - complete that first"],"blocked_by":["bd-hee"]}],"quick_wins":[{"id":"bd-2us","title":"Phase 2: Bridge + Data Layer","score":1.2000000000000002,"reason":"Unblocks 7 items","unblocks_ids":["bd-1ft","bd-1jy","bd-1w5","bd-24r","bd-2at","bd-2sj","bd-2zu"]},{"id":"bd-jyz","title":"Phase 0: Test Infrastructure","score":1.0339850002884625,"reason":"Unblocks 5 items","unblocks_ids":["bd-11k","bd-1ps","bd-28q","bd-3em","bd-hee"]},{"id":"bd-716","title":"Phase 4: Queue + Inbox Views","score":0.9287712379549449,"reason":"Unblocks 4 items","unblocks_ids":["bd-2cl","bd-3c2","bd-3ua","bd-qvc"]},{"id":"bd-25l","title":"Phase 7: Polish + E2E Tests","score":0.8339850002884626,"reason":"Unblocks 2 items","unblocks_ids":["bd-1ds","bd-1ie"]},{"id":"bd-1ft","title":"Phase 3: Focus View","score":0.8,"reason":"Unblocks 3 items","unblocks_ids":["bd-1kr","bd-2p0","bd-716"]}],"blockers_to_clear":[{"id":"bd-2us","title":"Phase 2: Bridge + Data Layer","unblocks_count":7,"unblocks_ids":["bd-1ft","bd-1jy","bd-1w5","bd-24r","bd-2at","bd-2sj","bd-2zu"],"actionable":false,"blocked_by":["bd-hee"]},{"id":"bd-jyz","title":"Phase 0: Test Infrastructure","unblocks_count":5,"unblocks_ids":["bd-11k","bd-1ps","bd-28q","bd-3em","bd-hee"],"actionable":true},{"id":"bd-716","title":"Phase 4: Queue + Inbox Views","unblocks_count":4,"unblocks_ids":["bd-2cl","bd-3c2","bd-3ua","bd-qvc"],"actionable":false,"blocked_by":["bd-1ft"]},{"id":"bd-1ft","title":"Phase 3: Focus View","unblocks_count":3,"unblocks_ids":["bd-1kr","bd-2p0","bd-716"],"actionable":false,"blocked_by":["bd-2us"]},{"id":"bd-25l","title":"Phase 7: Polish + E2E Tests","unblocks_count":2,"unblocks_ids":["bd-1ds","bd-1ie"],"actionable":false,"blocked_by":["bd-24r","bd-3c2"]}],"project_health":{"counts":{"total":66,"open":66,"closed":0,"blocked":64,"actionable":2,"by_status":{"open":66},"by_type":{"epic":8,"feature":4,"task":54},"by_priority":{"1":2,"2":64}},"graph":{"node_count":66,"edge_count":122,"density":0.02843822843822844,"has_cycles":false,"phase2_ready":true},"velocity":{"closed_last_7_days":0,"closed_last_30_days":0,"avg_days_to_close":0,"weekly":[{"week_start":"2026-02-23T00:00:00Z","closed":0},{"week_start":"2026-02-16T00:00:00Z","closed":0},{"week_start":"2026-02-09T00:00:00Z","closed":0},{"week_start":"2026-02-02T00:00:00Z","closed":0},{"week_start":"2026-01-26T00:00:00Z","closed":0},{"week_start":"2026-01-19T00:00:00Z","closed":0},{"week_start":"2026-01-12T00:00:00Z","closed":0},{"week_start":"2026-01-05T00:00:00Z","closed":0}]}},"commands":{"claim_top":"CI=1 bd update bd-2us --status in_progress --json","show_top":"CI=1 bd show bd-2us --json","list_ready":"CI=1 bd ready --json","list_blocked":"CI=1 bd blocked --json","refresh_triage":"bv --robot-triage"}},"usage_hints":["jq '.triage.quick_ref.top_picks[:3]' - Top 3 picks for immediate work","jq '.triage.recommendations[3:10] | map({id,title,score})' - Next candidates after top picks","jq '.triage.blockers_to_clear | map(.id)' - High-impact blockers to clear","jq '.triage.recommendations[] | select(.type == \"bug\")' - Bug-focused recommendations","jq '.triage.quick_ref.top_picks[] | select(.unblocks \u003e 2)' - High-impact picks","jq '.triage.quick_wins' - Low-effort, high-impact items","--robot-next - Get only the single top recommendation","--robot-triage-by-track - Group by execution track for multi-agent coordination","--robot-triage-by-label - Group by label for area-focused agents","jq '.triage.recommendations_by_track[].top_pick' - Top pick per track","jq '.triage.recommendations_by_label[].claim_command' - Claim commands per label","jq '.feedback.weight_adjustments' - View feedback-adjusted weights (bv-90)"]}
|