huskies: merge 1010

This commit is contained in:
dave
2026-05-14 08:07:43 +00:00
parent 4520e0e6f9
commit 13ab97a615
27 changed files with 572 additions and 95 deletions
+8 -2
View File
@@ -93,7 +93,10 @@ mod tests {
make_item(
"20_story_in_progress",
"In Progress",
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default(),
},
),
make_item("30_story_in_qa", "In QA", Stage::Qa),
];
@@ -234,7 +237,10 @@ mod tests {
let items = vec![make_item(
"1_story_done",
"Done",
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default(),
},
)];
let output = build_backlog_from_items(&items);
assert!(
+52 -13
View File
@@ -137,7 +137,10 @@ fn status_does_not_show_full_filename_stem() {
let items = vec![make_item(
"293_story_register_all_bot_commands",
"Register all bot commands",
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default(),
},
)];
let agents = AgentPool::new_test(3000);
@@ -163,7 +166,10 @@ fn status_shows_cost_when_token_usage_exists() {
let items = vec![make_item(
"293_story_register_all_bot_commands",
"Register all bot commands",
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default(),
},
)];
// Write token usage for this story.
@@ -200,7 +206,10 @@ fn status_no_cost_when_no_usage() {
let items = vec![make_item(
"293_story_register_all_bot_commands",
"Register all bot commands",
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default(),
},
)];
let agents = AgentPool::new_test(3000);
@@ -220,7 +229,10 @@ fn status_aggregates_multiple_records_per_story() {
let items = vec![make_item(
"293_story_register_all_bot_commands",
"Register all bot commands",
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default(),
},
)];
// Write two records for the same story — costs should be summed.
@@ -264,7 +276,10 @@ fn status_shows_waiting_on_for_story_with_unmet_deps() {
make_item_with_deps(
"10_story_waiting",
"Waiting Story",
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default(),
},
vec![999],
),
make_item("999_story_dep", "Dep Story", Stage::Backlog),
@@ -289,7 +304,10 @@ fn status_does_not_show_waiting_on_when_dep_is_done() {
make_item_with_deps(
"10_story_unblocked",
"Unblocked Story",
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default(),
},
vec![999],
),
make_item(
@@ -319,7 +337,10 @@ fn status_shows_no_waiting_info_when_no_deps() {
let items = vec![make_item(
"42_story_nodeps",
"No Deps Story",
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default(),
},
)];
let agents = AgentPool::new_test(3000);
@@ -383,7 +404,10 @@ fn stage_is_blocked_returns_true_for_archived_blocked() {
#[test]
fn stage_is_blocked_returns_false_for_coding() {
assert!(!matches!(
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default()
},
Stage::Blocked { .. }
| Stage::MergeFailure { .. }
| Stage::MergeFailureFinal { .. }
@@ -422,7 +446,10 @@ fn status_shows_idle_dot_for_unassigned_story() {
let items = vec![make_item(
"42_story_idle",
"Idle Story",
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default(),
},
)];
let agents = AgentPool::new_test(3000);
@@ -793,7 +820,10 @@ fn in_progress_count_includes_blocked_items() {
make_item(
"10_story_coding",
"Coding Story",
Stage::Coding { claim: None },
Stage::Coding {
claim: None,
plan: Default::default(),
},
),
make_item(
"11_story_blocked",
@@ -825,7 +855,10 @@ fn frozen_coding_item_appears_in_in_progress_section() {
"60_story_frozen",
"Frozen Coding Story",
Stage::Frozen {
resume_to: Box::new(Stage::Coding { claim: None }),
resume_to: Box::new(Stage::Coding {
claim: None,
plan: Default::default(),
}),
},
)];
@@ -883,7 +916,10 @@ fn frozen_item_shows_snowflake_indicator() {
"80_story_frozen_flake",
"Frozen Flake Story",
Stage::Frozen {
resume_to: Box::new(Stage::Coding { claim: None }),
resume_to: Box::new(Stage::Coding {
claim: None,
plan: Default::default(),
}),
},
)];
@@ -913,7 +949,10 @@ fn frozen_and_blocked_use_distinct_indicators() {
"91_story_frozen_ind",
"Frozen Story",
Stage::Frozen {
resume_to: Box::new(Stage::Coding { claim: None }),
resume_to: Box::new(Stage::Coding {
claim: None,
plan: Default::default(),
}),
},
),
];