huskies: merge 945

This commit is contained in:
dave
2026-05-13 06:05:01 +00:00
parent 3a8894ea8f
commit 9ce5a8df0c
53 changed files with 497 additions and 654 deletions
+7 -15
View File
@@ -18,7 +18,6 @@ pub struct ItemMeta {
pub name: Option<String>,
pub agent: Option<String>,
pub retry_count: Option<i64>,
pub blocked: Option<bool>,
pub depends_on: Option<Vec<u32>>,
}
@@ -50,12 +49,11 @@ fn normalise_stage_str(stage: &str) -> &str {
"3_qa" => "qa",
"4_merge" => "merge",
"4_merge_failure" => "merge_failure",
"4_merge_failure_final" => "merge_failure_final",
"5_done" => "done",
"6_archived" => "archived",
// `7_frozen` has no direct clean equivalent (the variant was
// removed in story 934 stage 4). Returning the unmapped string
// makes `Stage::from_dir` return None, so the write is logged and
// skipped — frozen items should be seeded via the `frozen` flag.
"7_frozen" => "frozen",
"7_review_hold" => "review_hold",
other => other,
}
}
@@ -94,7 +92,6 @@ pub fn write_item_with_content(story_id: &str, stage: &str, content: &str, meta:
meta.name.as_deref(),
meta.agent.as_deref(),
meta.retry_count,
meta.blocked,
depends_on_json.as_deref(),
None,
None,
@@ -109,7 +106,6 @@ pub fn write_item_with_content(story_id: &str, stage: &str, content: &str, meta:
name: meta.name,
agent: meta.agent,
retry_count: meta.retry_count,
blocked: meta.blocked,
depends_on: depends_on_json,
content: Some(content.to_string()),
};
@@ -139,10 +135,10 @@ pub fn move_item_stage(
_ => None,
};
// Story 929: metadata (name/agent/blocked/depends_on) is owned by the
// CRDT typed registers — no need to re-derive it from the content body's
// YAML front matter on every stage transition. Pass `None` for those
// fields so write_item leaves the existing registers untouched.
// Story 929: metadata (name/agent/depends_on) is owned by the CRDT typed
// registers — no need to re-derive it from the content body's YAML front
// matter on every stage transition. Pass `None` for those fields so
// write_item leaves the existing registers untouched.
let new_stage = normalise_stage_str(new_stage);
let Some(typed_stage) = crate::pipeline_state::Stage::from_dir(new_stage) else {
crate::slog!(
@@ -161,7 +157,6 @@ pub fn move_item_stage(
None,
None,
None,
None,
merged_at_ts,
);
// Bug 780: stage transitions reset retry_count to 0. retry_count tracks
@@ -177,7 +172,6 @@ pub fn move_item_stage(
let view = crate::crdt_state::read_item(story_id);
let name = view.as_ref().and_then(|v| v.name().map(str::to_string));
let agent = view.as_ref().and_then(|v| v.agent().map(str::to_string));
let blocked = view.as_ref().map(|v| v.blocked());
let depends_on = view
.as_ref()
.map(|v| v.depends_on())
@@ -189,7 +183,6 @@ pub fn move_item_stage(
name,
agent,
retry_count: Some(0),
blocked,
depends_on,
content,
};
@@ -212,7 +205,6 @@ pub fn delete_item(story_id: &str) {
name: None,
agent: None,
retry_count: None,
blocked: None,
depends_on: None,
content: None,
};