Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1671,7 +1671,14 @@ async fn wait_for_dashboard_ready(registry: &CodeIndexSchedulerRegistryV1, path:
&& freshness.coverage
== tracedecay_contracts::code_index_freshness::CodeIndexFreshnessCoverageV1::Complete
});
if still_ready && !registry.reconcile_in_progress_for_test(path).await {
// A seat can leave a continuation queued (the clone-fingerprint
// successor runs on a later pass), and the ladder reports
// Verifying for as long as that pass runs. Ready means no pass
// is running and none is pending.
if still_ready
&& !registry.reconcile_in_progress_for_test(path).await
&& registry.pending_wake_micros_for_root(path).await == Some(0)
Comment on lines +1679 to +1680

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Recheck the owner after inspecting the pending wake

The checks are ordered so the helper can still return during the queued continuation: after reconcile_in_progress_for_test observes false, the worker can start the follow-up pass and clear its pending wake before pending_wake_micros_for_root reads it, making this condition succeed while the dashboard has already moved to Verifying. Read the pending slot first and then recheck reconcile_in_progress (as wait_for_settled_owner already does), or use that existing barrier before accepting still_ready.

Useful? React with 👍 / 👎.

{
break;
}
continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ mod tests {
conservative_tokens: Arc::from(
(0..8)
.map(|index| ConservativeCloneTokenV1::Syntax {
syntax_kind: "identifier".to_owned(),
syntax_kind: "identifier".into(),
text: format!("token_{seed}_{index}"),
})
.collect::<Vec<_>>(),
Expand Down
6 changes: 6 additions & 0 deletions crates/tracedecay-sessions/src/repository_provenance_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ impl GitFixture {
tracedecay_runtime_core::git::try_git_program()
.expect("absolute git executable should resolve"),
)
// Git 2.47+ detaches `maintenance run --auto` after a commit and holds
// `.git/objects/maintenance.lock` while it runs, which lands in one
// git-dir fingerprint and vanishes before the next. The read-only
// capture test compares those fingerprints, so the fixture must not
// write either.
.args(["-c", "maintenance.auto=false", "-c", "gc.auto=0"])
.args(args)
.current_dir(self.path())
.output()
Expand Down
Loading