huskies: merge 538_bug_done_archived_sweep_never_fires_because_stage_done_projection_uses_utc_now_instead_of_real_merged_at_timestamp

This commit is contained in:
dave
2026-04-11 13:25:51 +00:00
parent 5d193bb568
commit 4ab723f40b
5 changed files with 130 additions and 4 deletions
+13
View File
@@ -244,6 +244,11 @@ pub fn write_item_with_content(
write_content(story_id, content);
// Primary: CRDT ops.
let merged_at_ts = if stage == "5_done" {
Some(chrono::Utc::now().timestamp() as f64)
} else {
None
};
crate::crdt_state::write_item(
story_id,
stage,
@@ -254,6 +259,7 @@ pub fn write_item_with_content(
depends_on.as_deref(),
None,
None,
merged_at_ts,
);
// Shadow: pipeline_items table (only when DB is initialised).
@@ -312,6 +318,11 @@ pub fn move_item_stage(
.unwrap_or((None, None, None, None, None));
// CRDT stage transition.
let merged_at_ts = if new_stage == "5_done" {
Some(chrono::Utc::now().timestamp() as f64)
} else {
None
};
crate::crdt_state::write_item(
story_id,
new_stage,
@@ -322,6 +333,7 @@ pub fn move_item_stage(
depends_on.as_deref(),
None,
None,
merged_at_ts,
);
// Shadow table.
@@ -453,6 +465,7 @@ pub async fn sync_crdt_stages_from_db(db_path: &Path) {
depends_on.as_deref(),
None,
None,
None, // merged_at unknown for migrated items; epoch fallback sweeps them
);
corrected += 1;
} else {