Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
e9dc45f
build(ci): align Rust with Blaze and allow fleet fallback
ScriptedAlchemy Oct 25, 2026
0d9769f
fix(ci): preserve prepared release fleet configuration
ScriptedAlchemy Oct 25, 2026
d8e95ad
fix(runtime): bound native Git startup future layout
ScriptedAlchemy Oct 25, 2026
4ec5cd6
fix(bazel): validate production features during generation
ScriptedAlchemy Oct 25, 2026
72bf941
fix(bazel): declare Cargo acquisition tools and policy
ScriptedAlchemy Oct 25, 2026
72b8cf5
Merge branch 'master' of https://github.com/ScriptedAlchemy/tracedeca…
ScriptedAlchemy Oct 25, 2026
b642d80
test(release): keep refresh fixture in provisioned CI
ScriptedAlchemy Oct 25, 2026
6351b51
fix(ci): let local-tagged tests spawn beside dynamic
ScriptedAlchemy Oct 25, 2026
1a01382
Merge branch 'master' into build/rust-1.99-blaze-compat
ScriptedAlchemy Oct 25, 2026
c3fde96
fix(ci): bound Windows compiler concurrency
ScriptedAlchemy Oct 25, 2026
8bb08a0
fix(ci): scope native concurrency to Windows
ScriptedAlchemy Oct 25, 2026
aad9d69
build(blaze): add pinned native launcher and workspace CI
ScriptedAlchemy Oct 25, 2026
ddc8b3c
fix(ci): resolve Blaze runtime paths on the runner
ScriptedAlchemy Oct 25, 2026
f112f4c
fix(blaze): enable the shared shallow acquisition policy
ScriptedAlchemy Oct 25, 2026
f0e8508
fix(blaze): propagate acquisition policy to metadata loaders
ScriptedAlchemy Oct 25, 2026
aecd7cc
docs(bazel): explain macOS worker hardlink permissions
ScriptedAlchemy Oct 26, 2026
be85029
docs(bazel): document shared APFS worker input trees
ScriptedAlchemy Oct 26, 2026
199785e
fix(blaze): use the selected Cargo for unit graph loading
ScriptedAlchemy Oct 26, 2026
e5cf9d9
build(ci): leave optimization to release jobs
ScriptedAlchemy Oct 26, 2026
dbb6b96
fix(blaze): avoid overlapping cold compiler warmups
ScriptedAlchemy Oct 26, 2026
33f1a52
fix(clippy): pin large pending-stop scout futures
ScriptedAlchemy Oct 26, 2026
939359b
ci: integrate master fleet-start-alongside-gates
ScriptedAlchemy Oct 26, 2026
36bb76d
fix(ci): avoid redundant Windows debug databases
ScriptedAlchemy Oct 26, 2026
219546f
fix(blaze): budget the cold native compiler bootstrap
ScriptedAlchemy Oct 26, 2026
d982d26
fix(ci): disable MSVC fastbuild before stripping PDBs
ScriptedAlchemy Oct 26, 2026
233a253
fix(ci): isolate Windows cache after PDB removal
ScriptedAlchemy Oct 26, 2026
efebdec
Merge remote-tracking branch 'origin/master' into HEAD
ScriptedAlchemy Oct 26, 2026
48c1e2c
Merge remote-tracking branch 'origin/master' into HEAD
ScriptedAlchemy Oct 26, 2026
2b25d1b
fix(runtime): complete expired timers before scheduling work
ScriptedAlchemy Oct 26, 2026
2ac59f4
Merge master into build/rust-1.99-blaze-compat
ScriptedAlchemy Oct 26, 2026
547bbce
fix(ci): restore assertion-enabled runtime optimization
ScriptedAlchemy Oct 26, 2026
4928a21
fix(storage): recover writer admission after caller panic
ScriptedAlchemy Oct 27, 2026
f5cfc5c
perf(windows): keep hook admission within its callback budget
ScriptedAlchemy Oct 27, 2026
b45378b
fix(windows): align native identity and validation tooling
ScriptedAlchemy Oct 27, 2026
78f74af
Merge commit '547bbce5268ed2a187e99c7f104b0c24dfa2fae1' into codex/wi…
ScriptedAlchemy Oct 27, 2026
6e2710f
fix(windows): tolerate transient host bundle sharing conflicts
ScriptedAlchemy Oct 27, 2026
ee8ac52
fix(windows): publish host bundles through file handles
ScriptedAlchemy Oct 27, 2026
789eb48
fix(sessions): reject unproven transcript path aliases
ScriptedAlchemy Oct 27, 2026
955ba73
Merge commit '5f8892c5b0dcf62a3edc125d312504a36870a020' into codex/wi…
ScriptedAlchemy Oct 27, 2026
b0bcbff
fix(windows): use durable renames for host publication
ScriptedAlchemy Oct 27, 2026
d19f0b0
fix(sessions): prove native transcript aliases before merging
ScriptedAlchemy Oct 27, 2026
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
3 changes: 3 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ build:windows --action_env=PATH
# Windows runfiles default to a manifest; suites read fixtures and spawn
# binaries through the runfiles tree.
build:windows --enable_runfiles
# Git for Windows exports its installation root to Git Bash. Preserve gix's
# native discovery fast path in tests instead of launching Git per hook.
test:windows --test_env=EXEPATH

test --test_output=errors
# Suites spawn child services as well as the bounded Rust test harness.
Expand Down
2 changes: 1 addition & 1 deletion crates/tracedecay-agent-hosts/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ genrule(
srcs = [":rustfmt_sources_2024", "//:rustfmt.toml"],
outs = ["rustfmt_check_2024.ok"],
cmd = "\"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $(locations :rustfmt_sources_2024) && touch \"$@\"",
cmd_ps = "foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
cmd_ps = "$$env:PATHEXT += ';.EXE'; foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
tools = ["//:rustfmt_toolchain"],
toolchains = ["//:rustfmt_toolchain"],
tags = ["manual"],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,7 @@ pub mod test_server {
#[cfg(test)]
#[allow(clippy::unwrap_used)]
mod tests {
use std::io::Read as _;
use std::time::{Duration, Instant};

use super::test_server::{
Expand Down Expand Up @@ -1059,12 +1060,16 @@ mod tests {
}

#[test]
fn an_unreachable_engine_is_unreachable() {
let port = std::net::TcpListener::bind("127.0.0.1:0")
.unwrap()
.local_addr()
.unwrap()
.port();
fn a_disconnected_engine_is_unreachable() {
let listener = std::net::TcpListener::bind("127.0.0.1:0").unwrap();
let port = listener.local_addr().unwrap().port();
// A closed port can spend the entire request deadline in Windows'
// connect retries. Close an established request to observe transport
// loss independently of that platform's refusal timing.
let peer = std::thread::spawn(move || {
let (mut stream, _) = listener.accept().unwrap();
stream.read_exact(&mut [0_u8; 1]).unwrap();
});
let mut configured = config(&format!("http://127.0.0.1:{port}"));
configured.timeout = Duration::from_millis(500);
assert_eq!(
Expand All @@ -1073,6 +1078,7 @@ mod tests {
.ask_blocking(&request("s", vec![noul("q")])),
DecisionEngineOutcomeV1::Unreachable
);
peer.join().unwrap();
}

#[test]
Expand Down
39 changes: 39 additions & 0 deletions crates/tracedecay-agent-hosts/src/agents/host_bundle/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,45 @@ use super::doctor::doctor_artifact_state;
use super::planner::plan_artifact_action;
use super::*;

#[cfg(windows)]
#[test]
fn publication_survives_a_transient_windows_reader() {
let temp = tempfile::tempdir().unwrap();
let destination = temp.path().join("artifact");
drop(tracedecay_private_fs::create_private_file(&destination).unwrap());
fs::write(&destination, b"before").unwrap();
let reader =
tracedecay_private_fs::windows::open_or_create_private_lock_file(&destination).unwrap();
let probe = temp.path().join("probe");
fs::write(&probe, b"probe").unwrap();
let error = fs::rename(&probe, &destination).unwrap_err();
assert!(matches!(error.raw_os_error(), Some(5 | 32)));
fs::remove_file(probe).unwrap();
let parent =
cap_std::fs::Dir::open_ambient_dir(temp.path(), cap_std::ambient_authority()).unwrap();
std::thread::scope(|scope| {
scope.spawn(move || {
std::thread::sleep(std::time::Duration::from_millis(40));
drop(reader);
});
super::writer::atomic_write_nofollow(&parent, "artifact", b"after", true).unwrap();
});
assert_eq!(fs::read(destination).unwrap(), b"after");
assert_eq!(fs::read_dir(temp.path()).unwrap().count(), 1);

let destination = temp.path().join("artifact");
tracedecay_private_fs::make_private_file(&destination).unwrap();
let reader =
tracedecay_private_fs::windows::open_or_create_private_lock_file(&destination).unwrap();
assert!(matches!(
super::writer::atomic_write_nofollow(&parent, "artifact", b"denied", true),
Err(HostBundleError::StorageFailure(_))
));
assert_eq!(fs::read(destination).unwrap(), b"after");
assert_eq!(fs::read_dir(temp.path()).unwrap().count(), 1);
drop(reader);
}

#[derive(Clone)]
struct FirstPartyVerifier([u8; 32]);

Expand Down
38 changes: 25 additions & 13 deletions crates/tracedecay-agent-hosts/src/agents/host_bundle/writer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ use cap_std::ambient_authority;
use cap_std::fs::{Dir, OpenOptions as CapOpenOptions};
use sha2::{Digest, Sha256};
use tracedecay_host_integration::host_bundle_storage_failure;
#[cfg(windows)]
use tracedecay_private_fs::capability_dir::rename_noreplace;
use tracedecay_private_fs::capability_dir::replace_file;
use tracedecay_runtime_core::storage::retry_transient_file_op;

use super::control::{
HOST_BUNDLE_CONTROL_DIR, HOST_BUNDLE_LOCK_FILE, MAX_CONTROL_FILE_BYTES,
Expand Down Expand Up @@ -829,21 +833,29 @@ pub(super) fn atomic_write_nofollow(
// a final symlink; the preflight and capability parent prevent
// traversal through any descendant component.
if replace_existing {
parent
.rename(&temporary, parent, name)
// Retain the staged bytes across transient failures under
// the shared bounded file policy.
retry_transient_file_op(|| replace_file(parent, temporary.as_ref(), name.as_ref()))
.map_err(|_| host_bundle_storage_failure!())?;
} else {
parent
.hard_link(&temporary, parent, name)
.map_err(|error| {
if error.kind() == io::ErrorKind::AlreadyExists {
HostBundleError::OwnershipConflict(format!(
"{name}: a file appeared at this deploy path mid-write"
))
} else {
host_bundle_storage_failure!()
}
})?;
#[cfg(windows)]
// First publication needs the same namespace durability as
// replacement, without ever displacing a raced entry.
let publication = retry_transient_file_op(|| {
rename_noreplace(parent, temporary.as_ref(), parent, name.as_ref())
});
#[cfg(not(windows))]
let publication = parent.hard_link(&temporary, parent, name);
publication.map_err(|error| {
if error.kind() == io::ErrorKind::AlreadyExists {
HostBundleError::OwnershipConflict(format!(
"{name}: a file appeared at this deploy path mid-write"
))
} else {
host_bundle_storage_failure!()
}
})?;
#[cfg(not(windows))]
parent
.remove_file(&temporary)
.map_err(|_| host_bundle_storage_failure!())?;
Expand Down
2 changes: 1 addition & 1 deletion crates/tracedecay-api/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ genrule(
srcs = [":rustfmt_sources_2024", "//:rustfmt.toml"],
outs = ["rustfmt_check_2024.ok"],
cmd = "\"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $(locations :rustfmt_sources_2024) && touch \"$@\"",
cmd_ps = "foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
cmd_ps = "$$env:PATHEXT += ';.EXE'; foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
tools = ["//:rustfmt_toolchain"],
toolchains = ["//:rustfmt_toolchain"],
tags = ["manual"],
Expand Down
2 changes: 1 addition & 1 deletion crates/tracedecay-application/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ genrule(
srcs = [":rustfmt_sources_2024", "//:rustfmt.toml"],
outs = ["rustfmt_check_2024.ok"],
cmd = "\"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $(locations :rustfmt_sources_2024) && touch \"$@\"",
cmd_ps = "foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
cmd_ps = "$$env:PATHEXT += ';.EXE'; foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
tools = ["//:rustfmt_toolchain"],
toolchains = ["//:rustfmt_toolchain"],
tags = ["manual"],
Expand Down
15 changes: 11 additions & 4 deletions crates/tracedecay-application/src/lsp_runtime/semantic/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,11 +103,18 @@ impl PendingAnalyzerRequest {

async fn assert_stopped(mut self) {
let mut byte = [0_u8];
let bytes = tokio::time::timeout(TEST_BOUND, self.stream.read(&mut byte))
let stopped = tokio::time::timeout(TEST_BOUND, self.stream.read(&mut byte))
.await
.expect("cancelled analyzer work must release its process")
.unwrap();
assert_eq!(bytes, 0);
.expect("cancelled analyzer work must release its process");
match stopped {
Ok(0) => {}
Err(error)
if matches!(
error.kind(),
std::io::ErrorKind::ConnectionReset | std::io::ErrorKind::ConnectionAborted
) => {}
other => panic!("cancelled analyzer connection must close: {other:?}"),
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ use std::path::Path;
use std::process::Command;

use tracedecay_domain::ProjectId;
use tracedecay_runtime_core::path_safety::plain_git_args;
use tracedecay_session_memory::context::RegisteredScopeResolver;

fn git(root: &Path, args: &[&str]) {
let status = Command::new("git")
.current_dir(root)
.args(args)
.args(plain_git_args(args))
.status()
.expect("git command starts");
assert!(status.success(), "git command failed: {args:?}");
Expand Down
2 changes: 1 addition & 1 deletion crates/tracedecay-automation-runtime/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ genrule(
srcs = [":rustfmt_sources_2024", "//:rustfmt.toml"],
outs = ["rustfmt_check_2024.ok"],
cmd = "\"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $(locations :rustfmt_sources_2024) && touch \"$@\"",
cmd_ps = "foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
cmd_ps = "$$env:PATHEXT += ';.EXE'; foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
tools = ["//:rustfmt_toolchain"],
toolchains = ["//:rustfmt_toolchain"],
tags = ["manual"],
Expand Down
37 changes: 19 additions & 18 deletions crates/tracedecay-automation-runtime/src/automation/scheduler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1020,6 +1020,7 @@ mod tests {
SESSION_EVIDENCE_BUDGET_EXHAUSTED, SESSION_EVIDENCE_BUDGET_SUPPRESSED,
};
use tracedecay_private_fs::framed_log::{DirectorySyncPolicy, with_owned_temp_publish};
use tracedecay_private_fs::{create_private_file, open_private_file};
#[cfg(unix)]
use tracedecay_runtime_core::storage::with_durable_namespace_sync_fault_for_test;

Expand Down Expand Up @@ -1899,13 +1900,13 @@ evidence about it",
for command in std::io::stdin().lock().lines() {
let answer = match command.unwrap().as_str() {
"prepare" if old => {
let file = std::fs::OpenOptions::new()
.read(true)
.write(true)
.create(true)
.truncate(false)
.open(&coordination_path)
.unwrap();
let file = match create_private_file(&coordination_path) {
Ok(file) => file,
Err(error) if error.kind() == std::io::ErrorKind::AlreadyExists => {
open_private_file(&coordination_path).unwrap()
}
Err(error) => panic!("create old coordination: {error}"),
};
match file.try_lock() {
Ok(()) => {
coordination = Some(FileLease::held(file, "test.old-task"));
Expand All @@ -1921,11 +1922,7 @@ evidence about it",
// The production publisher hard-linked a synced staging
// file under this lock. Keep that publication ordering.
let staging = lock_dir.join("old-owner-staging");
let mut file = std::fs::OpenOptions::new()
.write(true)
.create_new(true)
.open(&staging)
.unwrap();
let mut file = create_private_file(&staging).unwrap();
writeln!(file, "pid={}\ncreated_at=0", std::process::id()).unwrap();
file.sync_all().unwrap();
std::fs::hard_link(&staging, &lock_path).unwrap();
Expand Down Expand Up @@ -2244,12 +2241,16 @@ evidence about it",
fn write_pre_lease_lock(lock_dir: &Path, key: &str, payload: &[u8]) -> PathBuf {
tracedecay_runtime_core::storage::PrivateStoreIo::create_dir_all_durable(lock_dir).unwrap();
let lock_path = lock_dir.join(format!("{key}.lock"));
std::fs::write(&lock_path, payload).unwrap();
std::fs::write(
tracedecay_runtime_core::storage::append_lock_path(&lock_path),
b"",
)
.unwrap();
create_private_file(&lock_path)
.unwrap()
.write_all(payload)
.unwrap();
drop(
create_private_file(&tracedecay_runtime_core::storage::append_lock_path(
&lock_path,
))
.unwrap(),
);
lock_path
}

Expand Down
2 changes: 1 addition & 1 deletion crates/tracedecay-automation/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ genrule(
srcs = [":rustfmt_sources_2024", "//:rustfmt.toml"],
outs = ["rustfmt_check_2024.ok"],
cmd = "\"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $(locations :rustfmt_sources_2024) && touch \"$@\"",
cmd_ps = "foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
cmd_ps = "$$env:PATHEXT += ';.EXE'; foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
tools = ["//:rustfmt_toolchain"],
toolchains = ["//:rustfmt_toolchain"],
tags = ["manual"],
Expand Down
2 changes: 1 addition & 1 deletion crates/tracedecay-capture/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ genrule(
srcs = [":rustfmt_sources_2024", "//:rustfmt.toml"],
outs = ["rustfmt_check_2024.ok"],
cmd = "\"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $(locations :rustfmt_sources_2024) && touch \"$@\"",
cmd_ps = "foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
cmd_ps = "$$env:PATHEXT += ';.EXE'; foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
tools = ["//:rustfmt_toolchain"],
toolchains = ["//:rustfmt_toolchain"],
tags = ["manual"],
Expand Down
2 changes: 1 addition & 1 deletion crates/tracedecay-cli/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ genrule(
srcs = [":rustfmt_sources_2024", "//:rustfmt.toml"],
outs = ["rustfmt_check_2024.ok"],
cmd = "\"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $(locations :rustfmt_sources_2024) && touch \"$@\"",
cmd_ps = "foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
cmd_ps = "$$env:PATHEXT += ';.EXE'; foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
tools = ["//:rustfmt_toolchain"],
toolchains = ["//:rustfmt_toolchain"],
tags = ["manual"],
Expand Down
2 changes: 1 addition & 1 deletion crates/tracedecay-code-extraction/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ genrule(
srcs = [":rustfmt_sources_2024", "//:rustfmt.toml"],
outs = ["rustfmt_check_2024.ok"],
cmd = "\"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $(locations :rustfmt_sources_2024) && touch \"$@\"",
cmd_ps = "foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
cmd_ps = "$$env:PATHEXT += ';.EXE'; foreach ($$source in ('$(locations :rustfmt_sources_2024)' -split ' ')) { & \"$(RUSTFMT)\" --config-path \"$(location //:rustfmt.toml)\" --edition 2024 --config skip_children=true --check $$source; if ($$LASTEXITCODE -ne 0) { exit $$LASTEXITCODE } }; New-Item -ItemType File -Path \"$@\" -Force | Out-Null",
tools = ["//:rustfmt_toolchain"],
toolchains = ["//:rustfmt_toolchain"],
tags = ["manual"],
Expand Down
Loading
Loading