Add Draft PR Mode Support (#13)

* arc(01KK9VW7TXZQQZPHBC08935H0C): toolchain (success)

Arc-Run: 01KK9VW7TXZQQZPHBC08935H0C
Arc-Completed: 2
Arc-Checkpoint: 477c304d4b72cb390186195c5357c79d0c62a9bc

* arc(01KK9VW7TXZQQZPHBC08935H0C): preflight_compile (success)

Arc-Run: 01KK9VW7TXZQQZPHBC08935H0C
Arc-Completed: 3
Arc-Checkpoint: 535652db567b6a31f1a9ae2f2aef8de306c5f447

* arc(01KK9VW7TXZQQZPHBC08935H0C): preflight_lint (success)

Arc-Run: 01KK9VW7TXZQQZPHBC08935H0C
Arc-Completed: 4
Arc-Checkpoint: dae88bf9dd1765d3753691c73985b21d39841c5a

* arc(01KK9VW7TXZQQZPHBC08935H0C): implement (success)

Arc-Run: 01KK9VW7TXZQQZPHBC08935H0C
Arc-Completed: 5
Arc-Checkpoint: a7d72489ba62fb15a971ff209d4713aa77892064

* arc(01KK9VW7TXZQQZPHBC08935H0C): simplify (success)

Arc-Run: 01KK9VW7TXZQQZPHBC08935H0C
Arc-Completed: 6
Arc-Checkpoint: 1c1e8fa045e6d116a1dbdc83ac4677d693e0a4b2

* arc(01KK9VW7TXZQQZPHBC08935H0C): verify (fail)

Arc-Run: 01KK9VW7TXZQQZPHBC08935H0C
Arc-Completed: 7
Arc-Checkpoint: deb4e29bc1e7b5a16a25c0b65733ba65d63875ba

* arc(01KK9VW7TXZQQZPHBC08935H0C): fixup (success)

Arc-Run: 01KK9VW7TXZQQZPHBC08935H0C
Arc-Completed: 8
Arc-Checkpoint: bace62da4526e4c129766324b7263bf16ca58d57

* arc(01KK9VW7TXZQQZPHBC08935H0C): verify (success)

Arc-Run: 01KK9VW7TXZQQZPHBC08935H0C
Arc-Completed: 9
Arc-Checkpoint: a2cccac34d826070d4d861e6b598e831bea7f9fd

* Default pull request draft to true

PRs are now created as drafts by default. Users can opt out with
`draft = false` in the TOML [pull_request] config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: arc <arc@local>
Co-authored-by: Bryan Helmkamp <bryan@brynary.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
arc-1e68f1[bot] 2026-03-09 15:20:45 -04:00 • committed by GitHub
parent 6cdb91e5fa
commit 61c7541fd5
14 changed files with 298 additions and 10 deletions

View file

@ -4098,6 +4098,9 @@ components:
enabled:
type: boolean
description: Whether to create a pull request after a successful run.
draft:
type: boolean
description: Whether to create the pull request as a draft.
WebConfiguration:
description: Web UI configuration.
@ -4267,4 +4270,4 @@ components:
login:
type: string
description: User's login identifier (e.g. GitHub username).
example: octocat
example: octocat

View file

@ -81,6 +81,7 @@ include = ["test-results/**", "playwright-report/**"]
[pull_request]
enabled = true
draft = false
[[hooks]]
event = "stage_start"
@ -278,11 +279,13 @@ Automatically open a GitHub pull request when the workflow run completes success
```toml title="run.toml"
[pull_request]
enabled = true
draft = true
```
| Field | Description |
|---|---|
| `enabled` | When `true`, Arc creates a PR from the agent's working branch after a successful run. Default: `false`. |
| `draft` | When `true`, the PR is created as a draft pull request. Default: `false`. |
### `[[hooks]]`

View file

@ -608,6 +608,7 @@ async fn execute_run(state: Arc<AppState>, run_id: String) {
git_author: state.git_author.clone(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: true,
asset_globs: Vec::new(),
};

View file

@ -310,7 +310,10 @@ fn fully_populated_server_config() -> ServerConfig {
checkpoint: CheckpointConfig {
exclude_globs: vec![],
},
pull_request: Some(PullRequestConfig { enabled: true }),
pull_request: Some(PullRequestConfig {
enabled: true,
draft: false,
}),
assets: Some(AssetsConfig {
include: vec!["test-results/**".into()],
}),

View file

@ -221,6 +221,7 @@ pub async fn create_installation_access_token_for_pr(
///
/// Signs a JWT, obtains a PR-scoped installation token, and POSTs to the
/// GitHub pulls API. Returns `(html_url, pr_number)` on success.
#[allow(clippy::too_many_arguments)]
pub async fn create_pull_request(
creds: &GitHubAppCredentials,
owner: &str,
@ -229,6 +230,7 @@ pub async fn create_pull_request(
head: &str,
title: &str,
body: &str,
draft: bool,
) -> Result<(String, u64), String> {
let jwt = sign_app_jwt(&creds.app_id, &creds.private_key_pem)?;
let client = reqwest::Client::new();
@ -237,13 +239,14 @@ pub async fn create_pull_request(
create_installation_access_token_for_pr(&client, &jwt, owner, repo, GITHUB_API_BASE_URL)
.await?;
tracing::debug!(title = %title, head = %head, base = %base, "Creating pull request");
tracing::debug!(title = %title, head = %head, base = %base, draft, "Creating pull request");
let pr_body = serde_json::json!({
"title": title,
"head": head,
"base": base,
"body": body,
"draft": draft,
});
let url = format!("{GITHUB_API_BASE_URL}/repos/{owner}/{repo}/pulls");

View file

@ -97,6 +97,7 @@ async fn pr_create_from(
&manifest.goal,
&diff,
&model,
true,
)
.await
.map_err(|e| anyhow::anyhow!("{e}"))?;

View file

@ -896,6 +896,7 @@ pub async fn run_command(
.as_ref()
.map(|c| c.checkpoint.exclude_globs.clone())
.unwrap_or_default();
let pr_cfg = run_cfg.as_ref().and_then(|c| c.pull_request.as_ref());
let config = RunConfig {
logs_root: logs_dir.clone(),
cancel_token: None,
@ -921,10 +922,8 @@ pub async fn run_command(
github_app: github_app.clone(),
git_author,
base_branch: detected_base_branch.or(remote_base_branch),
pull_request_enabled: run_cfg
.as_ref()
.and_then(|c| c.pull_request.as_ref())
.is_some_and(|p| p.enabled),
pull_request_enabled: pr_cfg.is_some_and(|p| p.enabled),
pull_request_draft: pr_cfg.map_or(true, |p| p.draft),
asset_globs: run_cfg
.as_ref()
.and_then(|c| c.assets.as_ref())
@ -1077,10 +1076,16 @@ pub async fn run_command(
graph.goal(),
&diff,
&model,
config.pull_request_draft,
)
.await
{
Ok(Some(record)) => {
emitter.emit(&crate::event::WorkflowRunEvent::PullRequestCreated {
pr_url: record.html_url.clone(),
pr_number: record.number,
draft: config.pull_request_draft,
});
eprintln!(
"{} {}",
styles.bold.apply_to("Pull request:"),
@ -1092,7 +1097,9 @@ pub async fn run_command(
}
Ok(None) => {} // empty diff, logged at DEBUG
Err(e) => {
tracing::warn!(error = %e, "Pull request creation failed");
emitter.emit(&crate::event::WorkflowRunEvent::PullRequestFailed {
error: e.to_string(),
});
eprintln!(
"{} PR creation failed: {e}",
styles.yellow.apply_to("Warning:")
@ -1500,6 +1507,7 @@ async fn run_from_branch(
git_author,
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};

View file

@ -16,10 +16,16 @@ pub struct CheckpointConfig {
pub exclude_globs: Vec<String>,
}
fn default_true() -> bool {
true
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct PullRequestConfig {
#[serde(default)]
pub enabled: bool,
#[serde(default = "default_true")]
pub draft: bool,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
@ -1852,7 +1858,10 @@ enabled = true
)
.unwrap();
let defaults = RunDefaults {
pull_request: Some(PullRequestConfig { enabled: false }),
pull_request: Some(PullRequestConfig {
enabled: false,
draft: false,
}),
..RunDefaults::default()
};
cfg.apply_defaults(&defaults);
@ -1870,7 +1879,10 @@ graph = "w.dot"
)
.unwrap();
let defaults = RunDefaults {
pull_request: Some(PullRequestConfig { enabled: true }),
pull_request: Some(PullRequestConfig {
enabled: true,
draft: false,
}),
..RunDefaults::default()
};
cfg.apply_defaults(&defaults);
@ -1959,4 +1971,37 @@ include = ["playwright-report/**"]
let assets = cfg.assets.unwrap();
assert_eq!(assets.include, vec!["playwright-report/**"]);
}
#[test]
fn parse_toml_with_pull_request_draft() {
let toml = r#"
version = 1
goal = "test"
graph = "w.dot"
[pull_request]
enabled = true
draft = true
"#;
let config = parse_run_config(toml).unwrap();
let pr = config.pull_request.unwrap();
assert!(pr.enabled);
assert!(pr.draft);
}
#[test]
fn parse_toml_pull_request_draft_defaults_true() {
let toml = r#"
version = 1
goal = "test"
graph = "w.dot"
[pull_request]
enabled = true
"#;
let config = parse_run_config(toml).unwrap();
let pr = config.pull_request.unwrap();
assert!(pr.enabled);
assert!(pr.draft);
}
}

View file

@ -840,6 +840,8 @@ pub struct RunConfig {
pub base_branch: Option<String>,
/// Whether to auto-create a PR on successful completion.
pub pull_request_enabled: bool,
/// Whether to create the PR as a draft.
pub pull_request_draft: bool,
/// Glob patterns for asset collection. Empty = no asset collection.
pub asset_globs: Vec<String>,
}
@ -2859,6 +2861,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&g, &config).await.unwrap();
@ -2886,6 +2889,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();
@ -2921,6 +2925,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();
@ -2952,6 +2957,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -2979,6 +2985,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();
@ -3019,6 +3026,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&g, &config).await.unwrap();
@ -3083,6 +3091,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();
@ -3174,6 +3183,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();
@ -3208,6 +3218,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();
@ -3237,6 +3248,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();
@ -3266,6 +3278,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();
@ -3299,6 +3312,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();
@ -3460,6 +3474,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();
@ -3504,6 +3519,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();
@ -3566,6 +3582,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&g, &config).await.unwrap();
@ -3631,6 +3648,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -3700,6 +3718,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -3758,6 +3777,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&g, &config).await.unwrap();
@ -3817,6 +3837,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&g, &config).await.unwrap();
@ -3851,6 +3872,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&g, &config).await.unwrap();
@ -3881,6 +3903,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -3910,6 +3933,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&g, &config).await.unwrap();
@ -3952,6 +3976,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -4031,6 +4056,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -4063,6 +4089,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -4097,6 +4124,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -4136,6 +4164,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -4173,6 +4202,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -4207,6 +4237,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -4302,6 +4333,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -4512,6 +4544,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -4549,6 +4582,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -4593,6 +4627,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -4677,6 +4712,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -4772,6 +4808,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let result = engine.run(&g, &config).await;
@ -4844,6 +4881,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&g, &config).await.unwrap();
@ -4903,6 +4941,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&g, &config).await.unwrap();
@ -4963,6 +5002,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let _outcome = engine.run(&g, &config).await.unwrap();
@ -5050,6 +5090,7 @@ mod tests {
git_author: crate::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&g, &config).await.unwrap();

View file

@ -219,6 +219,14 @@ pub enum WorkflowRunEvent {
error: String,
duration_ms: u64,
},
PullRequestCreated {
pr_url: String,
pr_number: u64,
draft: bool,
},
PullRequestFailed {
error: String,
},
}
impl WorkflowRunEvent {
@ -529,6 +537,17 @@ impl WorkflowRunEvent {
} => {
error!(cli_name, provider, error, duration_ms, "CLI ensure failed");
}
Self::PullRequestCreated {
pr_url,
pr_number,
draft,
..
} => {
info!(pr_url = %pr_url, pr_number, draft, "Pull request created");
}
Self::PullRequestFailed { error, .. } => {
error!(error = %error, "Pull request creation failed");
}
}
}
}
@ -1783,4 +1802,42 @@ mod tests {
assert_eq!(json, json2);
}
}
#[test]
fn pull_request_created_event_serialization() {
let event = WorkflowRunEvent::PullRequestCreated {
pr_url: "https://github.com/owner/repo/pull/42".to_string(),
pr_number: 42,
draft: true,
};
let json = serde_json::to_string(&event).unwrap();
assert!(json.contains("PullRequestCreated"));
assert!(json.contains("\"pr_number\":42"));
assert!(json.contains("\"draft\":true"));
let deserialized: WorkflowRunEvent = serde_json::from_str(&json).unwrap();
assert!(matches!(
deserialized,
WorkflowRunEvent::PullRequestCreated {
pr_number: 42,
draft: true,
..
}
));
}
#[test]
fn pull_request_failed_event_serialization() {
let event = WorkflowRunEvent::PullRequestFailed {
error: "auth failed".to_string(),
};
let json = serde_json::to_string(&event).unwrap();
assert!(json.contains("PullRequestFailed"));
assert!(json.contains("\"error\":\"auth failed\""));
let deserialized: WorkflowRunEvent = serde_json::from_str(&json).unwrap();
assert!(
matches!(deserialized, WorkflowRunEvent::PullRequestFailed { error } if error == "auth failed")
);
}
}

View file

@ -153,6 +153,7 @@ impl Handler for SubWorkflowHandler {
.unwrap_or_default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: true,
asset_globs: Vec::new(),
};

View file

@ -82,6 +82,7 @@ pub async fn generate_pr_body(diff: &str, goal: &str, model: &str) -> Result<Str
///
/// Returns `Ok(Some(PullRequestRecord))` if a PR was created, `Ok(None)` if
/// the diff was empty, or `Err` on failure.
#[allow(clippy::too_many_arguments)]
pub async fn maybe_open_pull_request(
creds: &GitHubAppCredentials,
origin_url: &str,
@ -90,6 +91,7 @@ pub async fn maybe_open_pull_request(
goal: &str,
diff: &str,
model: &str,
draft: bool,
) -> Result<Option<PullRequestRecord>, String> {
if diff.is_empty() {
debug!("Empty diff, skipping pull request creation");
@ -112,6 +114,7 @@ pub async fn maybe_open_pull_request(
head_branch,
&title,
&body,
draft,
)
.await?;
@ -229,6 +232,7 @@ mod tests {
"Fix bug",
"",
"claude-sonnet-4-20250514",
false,
)
.await;
assert!(result.is_ok());

View file

@ -400,6 +400,7 @@ async fn daytona_pipeline_artifact_offload_and_sync() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -597,6 +598,7 @@ async fn daytona_git_checkpoint_remote_emits_events() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -786,6 +788,7 @@ async fn daytona_parallel_git_branching_e2e() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -1163,6 +1166,7 @@ async fn daytona_git_checkpoint_with_shadow_branch() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -1306,6 +1310,7 @@ async fn daytona_asset_collection() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -1561,6 +1566,7 @@ async fn daytona_git_push_run_branch_to_origin() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};

View file

@ -204,6 +204,7 @@ async fn end_to_end_linear_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -347,6 +348,7 @@ async fn end_to_end_branching_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -472,6 +474,7 @@ async fn end_to_end_human_gate_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -587,6 +590,7 @@ async fn goal_gate_routes_to_retry_target_on_failure() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -712,6 +716,7 @@ async fn goal_gate_routes_to_retry_target_when_present() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -1024,6 +1029,7 @@ async fn retry_on_failure_then_succeed() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -1103,6 +1109,7 @@ async fn pipeline_with_many_nodes() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -1432,6 +1439,7 @@ async fn smoke_test_with_mock_codergen_backend() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -1537,6 +1545,7 @@ async fn end_to_end_parallel_fan_out_fan_in() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -1654,6 +1663,7 @@ async fn resume_from_checkpoint_completes_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -1757,6 +1767,7 @@ async fn resume_from_checkpoint_preserves_goal_gate_outcomes() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -1804,6 +1815,7 @@ async fn graph_goal_in_context() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -1843,6 +1855,7 @@ async fn event_streaming_lifecycle() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -1926,6 +1939,7 @@ async fn context_flow_between_stages() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -1982,6 +1996,7 @@ async fn tool_handler_e2e() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -2055,6 +2070,7 @@ async fn auto_approve_interviewer_e2e() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -2095,6 +2111,7 @@ async fn codergen_without_backend_simulated() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -2203,6 +2220,7 @@ async fn branching_loop_back_on_failure() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -2291,6 +2309,7 @@ async fn human_gate_loops_back() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -2352,6 +2371,7 @@ async fn scenario_ship_a_feature() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -2441,6 +2461,7 @@ async fn scenario_parallel_expert_review() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -2524,6 +2545,7 @@ async fn scenario_node_retries_on_retry_status() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -2589,6 +2611,7 @@ async fn scenario_loop_restart_resets_context() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -2660,6 +2683,7 @@ async fn scenario_bug_triage_router() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -2722,6 +2746,7 @@ async fn scenario_crash_recovery() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine
@ -2834,6 +2859,7 @@ async fn manager_loop_stop_condition_satisfied_e2e() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -2914,6 +2940,7 @@ async fn manager_loop_max_cycles_exceeded_e2e() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -3053,6 +3080,7 @@ async fn conditional_branching_success_fail_paths() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -3109,6 +3137,7 @@ async fn edge_selection_condition_match_wins_over_weight() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -3159,6 +3188,7 @@ async fn edge_selection_weight_breaks_ties() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -3201,6 +3231,7 @@ async fn edge_selection_lexical_tiebreak() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -3262,6 +3293,7 @@ async fn context_updates_visible_across_nodes() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -3309,6 +3341,7 @@ async fn stylesheet_applies_model_override() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -3368,6 +3401,7 @@ async fn custom_handler_registration_and_execution() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -3442,6 +3476,7 @@ async fn integration_smoke_plan_implement_review_done() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");
@ -3549,6 +3584,7 @@ async fn manager_loop_runs_child_engine_e2e() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -3687,6 +3723,7 @@ async fn manager_loop_context_flows_e2e() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -3764,6 +3801,7 @@ async fn manager_loop_child_dotfile_e2e() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -3881,6 +3919,7 @@ async fn graph_merge_e2e_through_engine() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -4035,6 +4074,7 @@ async fn fidelity_default_is_compact() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -4095,6 +4135,7 @@ async fn fidelity_graph_default_applied() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -4151,6 +4192,7 @@ async fn fidelity_node_overrides_graph_default() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -4213,6 +4255,7 @@ async fn fidelity_edge_overrides_node_and_graph() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -4265,6 +4308,7 @@ async fn fidelity_full_produces_empty_preamble() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -4327,6 +4371,7 @@ async fn fidelity_truncate_preamble_minimal() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -4402,6 +4447,7 @@ async fn fidelity_summary_low_mode() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -4472,6 +4518,7 @@ async fn fidelity_summary_medium_mode() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -4542,6 +4589,7 @@ async fn fidelity_summary_high_mode() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -4605,6 +4653,7 @@ async fn fidelity_full_sets_thread_id_in_context() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -4679,6 +4728,7 @@ async fn fidelity_full_nodes_share_thread_id() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -4763,6 +4813,7 @@ async fn fidelity_resume_degrades_full_to_summary_high() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine
@ -4863,6 +4914,7 @@ async fn fidelity_resume_degrade_only_affects_first_hop() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine
@ -4950,6 +5002,7 @@ async fn fidelity_resume_no_degrade_when_not_full() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine
@ -4995,6 +5048,7 @@ async fn fidelity_stored_in_checkpoint_context() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -5084,6 +5138,7 @@ async fn fidelity_precedence_multi_node_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -5155,6 +5210,7 @@ async fn fidelity_compact_preamble_includes_completed_stages_and_context() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -5234,6 +5290,7 @@ async fn fidelity_summary_low_excludes_context_values_in_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine_low
@ -5305,6 +5362,7 @@ async fn fidelity_summary_low_excludes_context_values_in_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine_med
@ -5379,6 +5437,7 @@ async fn fidelity_thread_id_fallback_to_previous_node_in_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -5436,6 +5495,7 @@ async fn fidelity_thread_id_from_node_class_in_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -5496,6 +5556,7 @@ async fn fidelity_edge_thread_id_override_in_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -5557,6 +5618,7 @@ async fn fidelity_full_without_explicit_thread_id_uses_previous_node() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -5628,6 +5690,7 @@ async fn fidelity_from_parsed_dot_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -5679,6 +5742,7 @@ async fn fidelity_checkpoint_roundtrip_preserves_fidelity() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -5752,6 +5816,7 @@ async fn fidelity_node_thread_id_overrides_edge_thread_id_in_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine.run(&graph, &config).await.expect("run");
@ -5842,6 +5907,7 @@ async fn fidelity_resume_preserves_context_values_across_checkpoint() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
engine
@ -6056,6 +6122,7 @@ mod real_llm {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -6174,6 +6241,7 @@ mod real_llm {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -6317,6 +6385,7 @@ mod real_llm {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -6428,6 +6497,7 @@ mod real_llm {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -6528,6 +6598,7 @@ async fn human_gate_freeform_only_routes_text() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -6663,6 +6734,7 @@ async fn human_gate_freeform_with_fixed_choice_match() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -6782,6 +6854,7 @@ async fn human_gate_freeform_fallback_on_unmatched_text() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -6915,6 +6988,7 @@ async fn human_gate_freeform_sets_allow_freeform_on_question() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -7028,6 +7102,7 @@ async fn human_gate_without_freeform_sets_allow_freeform_false() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -7292,6 +7367,7 @@ fn make_run_config(dir: &std::path::Path) -> RunConfig {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
}
}
@ -8432,6 +8508,7 @@ async fn arc_e2e_with_real_llm() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -8564,6 +8641,7 @@ async fn run_fidelity_prompt_pipeline(fidelity: &str) -> String {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -8767,6 +8845,7 @@ async fn large_context_values_are_offloaded_to_artifact_store() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -8991,6 +9070,7 @@ async fn artifact_pointers_rewritten_for_remote_sandbox() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -9125,6 +9205,7 @@ async fn node_dir_uses_visit_count_on_revisit() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -10089,6 +10170,7 @@ async fn full_pipeline_with_cli_backend_node() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -10222,6 +10304,7 @@ async fn stylesheet_backend_property_routes_to_cli() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -10508,6 +10591,7 @@ async fn git_checkpoint_host_emits_events_and_diff_patch() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -10701,6 +10785,7 @@ async fn git_checkpoint_host_writes_shadow_branch() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -10899,6 +10984,7 @@ async fn parallel_git_branching_host_e2e() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -11165,6 +11251,7 @@ async fn git_checkpoint_host_skips_empty_diff_patch() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -11551,6 +11638,7 @@ async fn e2e_circuit_breaker_deterministic_self_loop() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -11602,6 +11690,7 @@ async fn e2e_circuit_breaker_custom_limit() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -11646,6 +11735,7 @@ async fn e2e_circuit_breaker_ignores_transient_failures() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -11697,6 +11787,7 @@ async fn e2e_circuit_breaker_different_reasons_separate_counters() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -11741,6 +11832,7 @@ async fn e2e_circuit_breaker_loop_restart() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -11807,6 +11899,7 @@ async fn e2e_failure_signature_persisted_in_context() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -11875,6 +11968,7 @@ async fn e2e_failure_signature_hint_overrides_reason_in_context() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -11935,6 +12029,7 @@ async fn e2e_signature_maps_persist_in_checkpoint() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12066,6 +12161,7 @@ async fn e2e_circuit_breaker_emits_events_before_abort() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12137,6 +12233,7 @@ async fn e2e_circuit_breaker_does_not_fire_below_limit() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12237,6 +12334,7 @@ async fn e2e_circuit_breaker_multi_stage_impl_verify_cycle() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12337,6 +12435,7 @@ async fn e2e_loop_restart_blocked_for_deterministic_failure() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12381,6 +12480,7 @@ async fn e2e_loop_restart_blocked_for_structural_failure() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12425,6 +12525,7 @@ async fn e2e_loop_restart_blocked_for_budget_exhausted_failure() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12469,6 +12570,7 @@ async fn e2e_loop_restart_blocked_for_canceled_failure() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12510,6 +12612,7 @@ async fn e2e_loop_restart_blocked_for_compilation_loop_failure() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12555,6 +12658,7 @@ async fn e2e_loop_restart_allowed_for_transient_infra() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12663,6 +12767,7 @@ async fn e2e_stall_watchdog_triggers_from_dot_parsed_pipeline() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12723,6 +12828,7 @@ async fn e2e_stall_watchdog_kept_alive_by_handler_events() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12773,6 +12879,7 @@ async fn e2e_stall_watchdog_disabled_with_zero_timeout() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12842,6 +12949,7 @@ async fn e2e_stall_watchdog_with_explicit_timeout_override() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -12976,6 +13084,7 @@ async fn asset_collection_local_sandbox_success() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: vec!["test-results/**".to_string()],
};
@ -13088,6 +13197,7 @@ async fn asset_collection_local_sandbox_on_failure() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: vec!["test-results/**".to_string()],
};
@ -13183,6 +13293,7 @@ async fn asset_collection_docker_sandbox() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
@ -13256,6 +13367,7 @@ async fn wait_timer_e2e() {
git_author: arc_workflows::git::GitAuthor::default(),
base_branch: None,
pull_request_enabled: false,
pull_request_draft: false,
asset_globs: Vec::new(),
};
let outcome = engine.run(&graph, &config).await.expect("run");