mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-07 03:00:29 +00:00
Merge pull request #717 from fabro-sh/codex/trim-run-created
Trim unused run creation event fields
This commit is contained in:
commit
c87f005b5f
38 changed files with 66 additions and 217 deletions
|
|
@ -44,7 +44,6 @@ Emitted when the run record is created.
|
|||
"event": "run.created",
|
||||
"properties": {
|
||||
"workflow_slug": "my-workflow",
|
||||
"run_dir": "/home/user/.fabro/storage/scratch/20260428-01JQXYZ",
|
||||
"source_directory": "/home/user/src/my-project",
|
||||
"repo_origin_url": "https://github.com/acme/my-project.git",
|
||||
"base_branch": "main",
|
||||
|
|
@ -79,20 +78,21 @@ Emitted when the run record is created.
|
|||
| `settings` | object | Workflow settings snapshot |
|
||||
| `graph` | object | Parsed workflow graph |
|
||||
| `workflow_source` | string? | Workflow source text |
|
||||
| `workflow_config` | string? | Workflow config text |
|
||||
| `labels` | object | Run labels |
|
||||
| `run_dir` | string | Local scratch directory for the run |
|
||||
| `source_directory` | string? | Submitter-side source directory |
|
||||
| `repo_origin_url` | string? | Normalized repository origin URL used by clone-based sandboxes |
|
||||
| `base_branch` | string? | Submitter-side base branch |
|
||||
| `workflow_slug` | string? | Workflow slug |
|
||||
| `db_prefix` | string? | Store prefix used for the run |
|
||||
| `provenance` | object | Actor and request provenance |
|
||||
| `manifest_blob` | string? | Blob id for the submitted manifest |
|
||||
| `pre_run_git` | object? | Submitter-side pre-run git context and push outcome |
|
||||
| `fork_source_ref` | object? | Source run/checkpoint reference when this run was forked |
|
||||
| `in_place` | boolean | Whether the run was created with `--in-place` (no git checkpoints) |
|
||||
|
||||
Readers remain tolerant of the legacy `workflow_config`, `run_dir`, and
|
||||
`db_prefix` properties when replaying historical events, but newly emitted
|
||||
`run.created` events omit them.
|
||||
|
||||
### `run.started`
|
||||
|
||||
Emitted when the workflow run begins.
|
||||
|
|
|
|||
|
|
@ -916,7 +916,6 @@ fn attach_json_errors_without_prompting_for_human_input() {
|
|||
"login": "dev"
|
||||
}
|
||||
},
|
||||
"run_dir": "[RUN_DIR]",
|
||||
"settings": {
|
||||
"project": {
|
||||
"description": null,
|
||||
|
|
|
|||
|
|
@ -115,11 +115,6 @@ fn events_completed_run_reads_store_without_progress_jsonl() {
|
|||
r#""id":"[0-9a-f-]+""#.to_string(),
|
||||
r#""id":"[EVENT_ID]""#.to_string(),
|
||||
));
|
||||
filters.push((
|
||||
r#""run_dir":"(?:\[DRY_RUN_DIR\]|\[STORAGE_DIR\]/scratch/REDACTED)""#.to_string(),
|
||||
r#""run_dir":"[RUN_DIR]""#.to_string(),
|
||||
));
|
||||
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["events", "--tail", "2", &run.run_id]);
|
||||
|
||||
|
|
@ -146,10 +141,6 @@ fn events_tail_limits_output() {
|
|||
r#""id":"[0-9a-f-]+""#.to_string(),
|
||||
r#""id":"[EVENT_ID]""#.to_string(),
|
||||
));
|
||||
filters.push((
|
||||
r#""run_dir":"(?:\[DRY_RUN_DIR\]|\[STORAGE_DIR\]/scratch/REDACTED)""#.to_string(),
|
||||
r#""run_dir":"[RUN_DIR]""#.to_string(),
|
||||
));
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["events", "--tail", "2", &run.run_id]);
|
||||
|
||||
|
|
|
|||
|
|
@ -2069,7 +2069,6 @@ async fn mcp_events_decodes_run_created_with_model_keyed_fallbacks() {
|
|||
"settings": settings,
|
||||
"graph": Graph::new("Remote Workflow"),
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"source_directory": "/srv/repo",
|
||||
"provenance": test_support::test_run_provenance()
|
||||
},
|
||||
|
|
|
|||
|
|
@ -621,13 +621,10 @@ mod stage_events_tests {
|
|||
settings: serde_json::to_value(WorkflowSettings::default()).unwrap(),
|
||||
graph: serde_json::to_value(Graph::new("test")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::new(),
|
||||
run_dir: "/tmp/test".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -1021,13 +1021,10 @@ mod tests {
|
|||
settings: serde_json::to_value(WorkflowSettings::default()).unwrap(),
|
||||
graph: serde_json::to_value(Graph::new("test")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::new(),
|
||||
run_dir: "/tmp/test".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -1365,7 +1365,6 @@ mod retrieve_sandbox_tests {
|
|||
"properties": {
|
||||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("test"),
|
||||
"run_dir": "/tmp/test",
|
||||
"provenance": test_support::test_run_provenance(),
|
||||
},
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -4569,13 +4569,10 @@ async fn append_default_run_created(run_store: &fabro_store::RunDatabase, run_id
|
|||
settings: serde_json::to_value(WorkflowSettings::default()).unwrap(),
|
||||
graph: serde_json::to_value(Graph::new("test")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: "/tmp".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
@ -4623,13 +4620,10 @@ async fn create_slack_notification_run(
|
|||
settings: serde_json::to_value(settings).unwrap(),
|
||||
graph: serde_json::to_value(Graph::new(graph_name)).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: "/tmp".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: workflow_slug.map(str::to_string),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
@ -5699,13 +5693,10 @@ async fn list_run_stages_distinguishes_visits() {
|
|||
settings: serde_json::to_value(fabro_types::WorkflowSettings::default()).unwrap(),
|
||||
graph: serde_json::to_value(&graph).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: String::new(),
|
||||
source_directory: None,
|
||||
workflow_slug: Some("test".to_string()),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
@ -5838,13 +5829,10 @@ async fn list_run_stages_exposes_execution_identity_for_resumed_stage() {
|
|||
settings: serde_json::to_value(fabro_types::WorkflowSettings::default()).unwrap(),
|
||||
graph: serde_json::to_value(&graph).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: String::new(),
|
||||
source_directory: None,
|
||||
workflow_slug: Some("test".to_string()),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
@ -7045,13 +7033,10 @@ async fn create_completed_run_ready_for_pull_request(
|
|||
settings: serde_json::to_value(&run_spec.settings).unwrap(),
|
||||
graph: serde_json::to_value(&run_spec.graph).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: run_spec.labels.clone().into_iter().collect(),
|
||||
run_dir: run_spec.source_directory.clone().unwrap_or_default(),
|
||||
source_directory: run_spec.source_directory.clone(),
|
||||
workflow_slug: run_spec.workflow_slug.clone(),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: run_spec.provenance.clone(),
|
||||
manifest_blob: None,
|
||||
git,
|
||||
|
|
@ -10598,10 +10583,6 @@ async fn create_run_persists_manifest_and_definition_blobs_without_bundle_file()
|
|||
);
|
||||
assert_eq!(accepted_definition["workflow_path"], "workflow.fabro");
|
||||
assert!(accepted_definition["workflows"]["workflow.fabro"].is_object());
|
||||
|
||||
created["properties"]["run_dir"]
|
||||
.as_str()
|
||||
.expect("run.created should include run_dir");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
|
@ -13869,13 +13850,10 @@ async fn create_preserved_local_sandbox_run(state: &Arc<AppState>, run_id: RunId
|
|||
settings: serde_json::to_value(settings).unwrap(),
|
||||
graph: serde_json::to_value(graph).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: "/tmp/fabro-run".to_string(),
|
||||
source_directory: Some("/tmp/fabro-run".to_string()),
|
||||
workflow_slug: Some("test".to_string()),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
@ -14621,13 +14599,10 @@ async fn delete_run_retry_after_missing_provider_resource_removes_metadata() {
|
|||
settings: serde_json::to_value(fabro_types::WorkflowSettings::default()).unwrap(),
|
||||
graph: serde_json::to_value(graph).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: "/tmp/fabro-run".to_string(),
|
||||
source_directory: Some("/tmp/fabro-run".to_string()),
|
||||
workflow_slug: Some("test".to_string()),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -62,13 +62,10 @@ async fn append_completed_run_with_final_patch(
|
|||
.expect("workflow settings should serialize"),
|
||||
graph: serde_json::to_value(Graph::new("test")).expect("graph should serialize"),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: "/tmp".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -2337,7 +2337,6 @@ mod tests {
|
|||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("test"),
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"provenance": test_support::test_run_provenance()
|
||||
}),
|
||||
None,
|
||||
|
|
@ -2351,6 +2350,48 @@ mod tests {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn run_created_replay_ignores_unknown_properties() {
|
||||
let provenance = test_support::test_run_provenance();
|
||||
let event = test_raw_event(
|
||||
1,
|
||||
"run.created",
|
||||
&json!({
|
||||
"title": "Historical run",
|
||||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("historical"),
|
||||
"workflow_source": "digraph historical { start -> exit }",
|
||||
"labels": {"team": "platform"},
|
||||
"source_directory": "/workspace/project",
|
||||
"workflow_slug": "historical",
|
||||
"unknown_future_property": {
|
||||
"nested": ["value", 42, true]
|
||||
},
|
||||
"provenance": provenance
|
||||
}),
|
||||
None,
|
||||
);
|
||||
|
||||
let projection = RunProjection::apply_events(&[event]).unwrap();
|
||||
|
||||
assert_eq!(projection.title(), "Historical run");
|
||||
assert_eq!(projection.spec.graph.name, "historical");
|
||||
assert_eq!(
|
||||
projection.spec.graph_source.as_deref(),
|
||||
Some("digraph historical { start -> exit }")
|
||||
);
|
||||
assert_eq!(
|
||||
projection.spec.labels.get("team").map(String::as_str),
|
||||
Some("platform")
|
||||
);
|
||||
assert_eq!(
|
||||
projection.spec.source_directory.as_deref(),
|
||||
Some("/workspace/project")
|
||||
);
|
||||
assert_eq!(projection.spec.workflow_slug.as_deref(), Some("historical"));
|
||||
assert_eq!(projection.spec.provenance, provenance);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn run_created_projects_automation_into_spec_and_summary() {
|
||||
let automation = AutomationRef {
|
||||
|
|
@ -2366,7 +2407,6 @@ mod tests {
|
|||
"graph": Graph::new("test"),
|
||||
"automation": automation,
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"provenance": test_support::test_run_provenance()
|
||||
}),
|
||||
None,
|
||||
|
|
@ -2390,7 +2430,6 @@ mod tests {
|
|||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("test"),
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"provenance": test_support::test_run_provenance()
|
||||
}),
|
||||
None,
|
||||
|
|
@ -2413,7 +2452,6 @@ mod tests {
|
|||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("test"),
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"provenance": test_support::test_run_provenance()
|
||||
}),
|
||||
None,
|
||||
|
|
@ -2491,7 +2529,6 @@ mod tests {
|
|||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("test"),
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"provenance": test_support::test_run_provenance()
|
||||
}),
|
||||
None,
|
||||
|
|
@ -4082,7 +4119,6 @@ mod tests {
|
|||
"attrs": { "goal": { "String": "Goal title" } }
|
||||
},
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"provenance": test_support::test_run_provenance()
|
||||
}),
|
||||
None,
|
||||
|
|
@ -4110,7 +4146,6 @@ mod tests {
|
|||
"attrs": { "goal": { "String": "## Plan: Legacy title\n\nDetails" } }
|
||||
},
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"provenance": test_support::test_run_provenance()
|
||||
}),
|
||||
None,
|
||||
|
|
@ -4140,7 +4175,6 @@ mod tests {
|
|||
"attrs": { "goal": { "String": "Goal title" } }
|
||||
},
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"provenance": test_support::test_run_provenance()
|
||||
}),
|
||||
None,
|
||||
|
|
@ -4183,7 +4217,6 @@ mod tests {
|
|||
"attrs": {}
|
||||
},
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"source_directory": "/tmp/run",
|
||||
"provenance": test_support::test_run_provenance(),
|
||||
"manifest_blob": manifest_blob
|
||||
|
|
|
|||
|
|
@ -648,7 +648,6 @@ mod tests {
|
|||
"graph": run_spec.graph,
|
||||
"workflow_slug": run_spec.workflow_slug,
|
||||
"source_directory": run_spec.source_directory,
|
||||
"run_dir": format!("/tmp/{label}"),
|
||||
"git": run_spec.git,
|
||||
"labels": run_spec.labels,
|
||||
"provenance": run_spec.provenance,
|
||||
|
|
@ -674,7 +673,6 @@ mod tests {
|
|||
"graph": run_spec.graph,
|
||||
"workflow_slug": run_spec.workflow_slug,
|
||||
"source_directory": run_spec.source_directory,
|
||||
"run_dir": format!("/tmp/{label}"),
|
||||
"git": run_spec.git,
|
||||
"labels": run_spec.labels,
|
||||
"parent_id": parent_id,
|
||||
|
|
@ -1041,7 +1039,6 @@ mod tests {
|
|||
"properties": {
|
||||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("test"),
|
||||
"run_dir": "/tmp/test",
|
||||
"provenance": test_support::test_run_provenance(),
|
||||
},
|
||||
}),
|
||||
|
|
@ -1590,7 +1587,6 @@ mod tests {
|
|||
"graph": run_spec["graph"],
|
||||
"workflow_slug": run_spec["workflow_slug"],
|
||||
"source_directory": run_spec["source_directory"],
|
||||
"run_dir": "/tmp/run-2",
|
||||
"git": run_spec["git"],
|
||||
"labels": run_spec["labels"],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -987,7 +987,6 @@ mod tests {
|
|||
"properties": {
|
||||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("test"),
|
||||
"run_dir": "/tmp/test",
|
||||
"provenance": test_support::test_run_provenance(),
|
||||
},
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -30,13 +30,10 @@ fn event_body_from_event(event: &Event) -> EventBody {
|
|||
settings,
|
||||
graph,
|
||||
workflow_source,
|
||||
workflow_config,
|
||||
labels,
|
||||
run_dir,
|
||||
source_directory,
|
||||
workflow_slug,
|
||||
automation,
|
||||
db_prefix,
|
||||
provenance,
|
||||
manifest_blob,
|
||||
git,
|
||||
|
|
@ -51,13 +48,10 @@ fn event_body_from_event(event: &Event) -> EventBody {
|
|||
.expect("run.created settings should deserialize: value was serialized from a typed struct in this session"),
|
||||
graph: serde_json::from_value(graph.clone()).expect("run.created graph should deserialize: value was serialized from a typed struct in this session"),
|
||||
workflow_source: workflow_source.clone(),
|
||||
workflow_config: workflow_config.clone(),
|
||||
labels: labels.clone(),
|
||||
run_dir: run_dir.clone(),
|
||||
source_directory: source_directory.clone(),
|
||||
workflow_slug: workflow_slug.clone(),
|
||||
automation: automation.clone(),
|
||||
db_prefix: db_prefix.clone(),
|
||||
provenance: provenance.clone(),
|
||||
manifest_blob: *manifest_blob,
|
||||
git: git.clone(),
|
||||
|
|
@ -2657,13 +2651,10 @@ mod tests {
|
|||
settings: serde_json::to_value(WorkflowSettings::default()).unwrap(),
|
||||
graph: serde_json::to_value(Graph::new("test")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: BTreeMap::default(),
|
||||
run_dir: "/tmp/run".to_string(),
|
||||
source_directory: Some("/tmp/run".to_string()),
|
||||
workflow_slug: None,
|
||||
automation: Some(automation.clone()),
|
||||
db_prefix: None,
|
||||
provenance,
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -30,18 +30,13 @@ pub enum Event {
|
|||
graph: serde_json::Value,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
workflow_source: Option<String>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
workflow_config: Option<String>,
|
||||
labels: BTreeMap<String, String>,
|
||||
run_dir: String,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
source_directory: Option<String>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
workflow_slug: Option<String>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
automation: Option<AutomationRef>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
db_prefix: Option<String>,
|
||||
provenance: RunProvenance,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
manifest_blob: Option<RunBlobId>,
|
||||
|
|
@ -795,10 +790,8 @@ impl Event {
|
|||
pub fn trace(&self) {
|
||||
use tracing::{debug, error, info, warn};
|
||||
match self {
|
||||
Self::RunCreated {
|
||||
run_id, run_dir, ..
|
||||
} => {
|
||||
info!(run_id = %run_id, run_dir, "Run created");
|
||||
Self::RunCreated { run_id, .. } => {
|
||||
info!(run_id = %run_id, "Run created");
|
||||
}
|
||||
Self::WorkflowRunStarted { name, run_id, .. } => {
|
||||
info!(workflow = name.as_str(), run_id = %run_id, "Workflow run started");
|
||||
|
|
|
|||
|
|
@ -284,13 +284,10 @@ mod tests {
|
|||
settings: serde_json::to_value(WorkflowSettings::default()).unwrap(),
|
||||
graph: serde_json::to_value(Graph::new("test")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::new(),
|
||||
run_dir: "/tmp/test".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -358,13 +358,10 @@ mod tests {
|
|||
.unwrap(),
|
||||
graph: serde_json::to_value(fabro_types::Graph::new("test")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: "/tmp".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -495,13 +495,10 @@ mod tests {
|
|||
.unwrap(),
|
||||
graph: serde_json::to_value(fabro_types::Graph::new("test")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: "/tmp".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -465,13 +465,10 @@ mod tests {
|
|||
settings: serde_json::to_value(WorkflowSettings::default()).unwrap(),
|
||||
graph: serde_json::to_value(Graph::new("test")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: "/tmp".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -950,13 +950,10 @@ mod tests {
|
|||
.unwrap(),
|
||||
graph: serde_json::to_value(fabro_types::Graph::new("test")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: BTreeMap::default(),
|
||||
run_dir: "/tmp".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -273,13 +273,10 @@ mod tests {
|
|||
.unwrap(),
|
||||
graph: serde_json::to_value(fabro_types::Graph::new("test")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: "/tmp".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -744,13 +744,10 @@ mod tests {
|
|||
settings: serde_json::to_value(WorkflowSettings::default()).unwrap(),
|
||||
graph: serde_json::to_value(fabro_types::Graph::new("metadata")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: BTreeMap::new(),
|
||||
run_dir: "/tmp/run".to_string(),
|
||||
source_directory: Some("/tmp/project".to_string()),
|
||||
workflow_slug: Some("metadata".to_string()),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -221,13 +221,10 @@ mod tests {
|
|||
.unwrap(),
|
||||
graph: serde_json::to_value(fabro_types::Graph::new("test")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::default(),
|
||||
run_dir: "/tmp".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
#![expect(
|
||||
clippy::disallowed_methods,
|
||||
reason = "sync workflow creation path: reads workflow.toml during workflow load and persists \
|
||||
.fabro scaffolding outside the Tokio execution hot path"
|
||||
#![cfg_attr(
|
||||
test,
|
||||
expect(
|
||||
clippy::disallowed_methods,
|
||||
reason = "tests write workflow fixture files synchronously before exercising async creation"
|
||||
)
|
||||
)]
|
||||
|
||||
use std::collections::{BTreeMap, HashMap};
|
||||
|
|
@ -156,7 +158,6 @@ pub struct CompiledRun {
|
|||
settings: WorkflowSettings,
|
||||
raw_source: String,
|
||||
workflow_slug: Option<String>,
|
||||
workflow_config: Option<String>,
|
||||
dot_path: Option<PathBuf>,
|
||||
definition: Option<RunDefinition>,
|
||||
source_directory: String,
|
||||
|
|
@ -181,7 +182,6 @@ pub struct MaterializedRun {
|
|||
settings: WorkflowSettings,
|
||||
raw_source: String,
|
||||
workflow_slug: Option<String>,
|
||||
workflow_config: Option<String>,
|
||||
dot_path: Option<PathBuf>,
|
||||
definition: Option<RunDefinition>,
|
||||
source_directory: String,
|
||||
|
|
@ -290,10 +290,6 @@ pub fn compile_create_run(
|
|||
.map_err(|err| Error::Parse(err.to_string()))?;
|
||||
let settings = resolved.settings;
|
||||
let labels = settings.combined_labels();
|
||||
let workflow_config = resolved
|
||||
.workflow_toml_path
|
||||
.as_deref()
|
||||
.and_then(|path| std::fs::read_to_string(path).ok());
|
||||
let source_name = resolved
|
||||
.dot_path
|
||||
.as_ref()
|
||||
|
|
@ -349,7 +345,6 @@ pub fn compile_create_run(
|
|||
settings,
|
||||
raw_source: resolved.raw_source,
|
||||
workflow_slug: resolved.workflow_slug,
|
||||
workflow_config,
|
||||
dot_path: resolved.dot_path,
|
||||
definition,
|
||||
source_directory: resolved.working_directory.to_string_lossy().to_string(),
|
||||
|
|
@ -368,7 +363,6 @@ pub fn materialize_create_run(
|
|||
settings,
|
||||
raw_source,
|
||||
workflow_slug,
|
||||
workflow_config,
|
||||
dot_path,
|
||||
definition,
|
||||
source_directory,
|
||||
|
|
@ -386,7 +380,6 @@ pub fn materialize_create_run(
|
|||
settings,
|
||||
raw_source,
|
||||
workflow_slug,
|
||||
workflow_config,
|
||||
dot_path,
|
||||
definition,
|
||||
source_directory,
|
||||
|
|
@ -458,7 +451,6 @@ pub async fn persist_create_run(
|
|||
settings,
|
||||
raw_source,
|
||||
workflow_slug: _,
|
||||
workflow_config,
|
||||
dot_path,
|
||||
definition,
|
||||
source_directory,
|
||||
|
|
@ -493,7 +485,6 @@ pub async fn persist_create_run(
|
|||
store,
|
||||
&persisted,
|
||||
&raw_source,
|
||||
workflow_config,
|
||||
submitted_manifest_bytes.as_deref(),
|
||||
definition.as_ref(),
|
||||
title,
|
||||
|
|
@ -514,7 +505,6 @@ async fn persist_created_run(
|
|||
store: &Database,
|
||||
persisted: &Persisted,
|
||||
workflow_source: &str,
|
||||
workflow_config: Option<String>,
|
||||
submitted_manifest_bytes: Option<&[u8]>,
|
||||
accepted_definition: Option<&RunDefinition>,
|
||||
explicit_title: Option<String>,
|
||||
|
|
@ -554,17 +544,14 @@ async fn persist_created_run(
|
|||
.map_err(|err| Error::engine(err.to_string()))?,
|
||||
),
|
||||
workflow_source: (!workflow_source.is_empty()).then(|| workflow_source.to_string()),
|
||||
workflow_config,
|
||||
labels: record
|
||||
.labels
|
||||
.clone()
|
||||
.into_iter()
|
||||
.collect::<BTreeMap<_, _>>(),
|
||||
run_dir: persisted.run_dir().display().to_string(),
|
||||
source_directory: record.source_directory.clone(),
|
||||
workflow_slug: record.workflow_slug.clone(),
|
||||
automation: record.automation.clone(),
|
||||
db_prefix: None,
|
||||
provenance: record.provenance.clone(),
|
||||
manifest_blob,
|
||||
git: record.git.clone(),
|
||||
|
|
@ -1753,20 +1740,9 @@ reasoning = false
|
|||
web_url: None,
|
||||
};
|
||||
let catalog = test_catalog();
|
||||
let workflow_config_path = dir.path().join("workflow.toml");
|
||||
std::fs::write(
|
||||
&workflow_config_path,
|
||||
"_version = 1\n[workflow]\ngraph = \"workflow.fabro\"\n",
|
||||
)
|
||||
.unwrap();
|
||||
let compiled = compile_create_run(compile_input(&request), Arc::clone(&catalog)).unwrap();
|
||||
assert_eq!(
|
||||
compiled.workflow_config.as_deref(),
|
||||
Some("_version = 1\n[workflow]\ngraph = \"workflow.fabro\"\n")
|
||||
);
|
||||
|
||||
std::fs::write(&dot_path, "this is no longer a graph").unwrap();
|
||||
std::fs::write(&workflow_config_path, "changed after compilation").unwrap();
|
||||
|
||||
let materialized = materialize_create_run(compiled, catalog.as_ref()).unwrap();
|
||||
let metadata = persistence_metadata(&request, fixtures::RUN_2, &storage_root);
|
||||
|
|
@ -1798,10 +1774,6 @@ reasoning = false
|
|||
created.workflow_source.as_deref(),
|
||||
Some(compiled_source.as_str())
|
||||
);
|
||||
assert_eq!(
|
||||
created.workflow_config.as_deref(),
|
||||
Some("_version = 1\n[workflow]\ngraph = \"workflow.fabro\"\n")
|
||||
);
|
||||
let manifest_blob = created
|
||||
.manifest_blob
|
||||
.as_ref()
|
||||
|
|
|
|||
|
|
@ -156,13 +156,10 @@ async fn persist_forked_run(
|
|||
graph: serde_json::to_value(&spec.graph)
|
||||
.map_err(|err| Error::engine(err.to_string()))?,
|
||||
workflow_source: projection.spec.graph_source.clone(),
|
||||
workflow_config: None,
|
||||
labels: spec.labels.clone().into_iter().collect(),
|
||||
run_dir: String::new(),
|
||||
source_directory: spec.source_directory.clone(),
|
||||
workflow_slug: spec.workflow_slug.clone(),
|
||||
automation: spec.automation.clone(),
|
||||
db_prefix: None,
|
||||
provenance: spec.provenance.clone(),
|
||||
manifest_blob: spec.manifest_blob,
|
||||
git: spec.git.clone(),
|
||||
|
|
@ -378,13 +375,10 @@ mod tests {
|
|||
settings: serde_json::to_value(&settings).unwrap(),
|
||||
graph: serde_json::to_value(&graph).unwrap(),
|
||||
workflow_source: Some("digraph fork_source {}".to_string()),
|
||||
workflow_config: None,
|
||||
labels: BTreeMap::new(),
|
||||
run_dir: "/tmp/source".to_string(),
|
||||
source_directory: Some("/client/source".to_string()),
|
||||
workflow_slug: Some("fork-source".to_string()),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: Some(fabro_types::GitContext {
|
||||
|
|
|
|||
|
|
@ -72,13 +72,10 @@ pub async fn retry_run(
|
|||
settings,
|
||||
graph,
|
||||
workflow_source: graph_source,
|
||||
workflow_config: None,
|
||||
labels: labels.into_iter().collect::<BTreeMap<_, _>>(),
|
||||
run_dir: String::new(),
|
||||
source_directory,
|
||||
workflow_slug,
|
||||
automation,
|
||||
db_prefix: None,
|
||||
provenance: input.provenance.clone(),
|
||||
manifest_blob,
|
||||
git,
|
||||
|
|
@ -183,13 +180,10 @@ mod tests {
|
|||
settings: serde_json::to_value(&settings).unwrap(),
|
||||
graph: serde_json::to_value(Graph::new("retry_source")).unwrap(),
|
||||
workflow_source: Some("digraph retry_source { start -> exit }".to_string()),
|
||||
workflow_config: None,
|
||||
labels: labels.into_iter().collect(),
|
||||
run_dir: "/tmp/source".to_string(),
|
||||
source_directory: Some("/workspace/source".to_string()),
|
||||
workflow_slug: Some("retry-source".to_string()),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: provenance("source-user"),
|
||||
manifest_blob,
|
||||
git: Some(git_context()),
|
||||
|
|
|
|||
|
|
@ -35,15 +35,14 @@ pub(crate) struct ResolveWorkflowInput {
|
|||
|
||||
#[derive(Clone)]
|
||||
pub(crate) struct ResolvedWorkflow {
|
||||
pub raw_source: String,
|
||||
pub settings: WorkflowSettings,
|
||||
pub workflow_slug: Option<String>,
|
||||
pub workflow_toml_path: Option<PathBuf>,
|
||||
pub dot_path: Option<PathBuf>,
|
||||
pub current_dir: Option<PathBuf>,
|
||||
pub file_resolver: Option<Arc<dyn FileResolver>>,
|
||||
pub goal_override: Option<String>,
|
||||
pub working_directory: PathBuf,
|
||||
pub raw_source: String,
|
||||
pub settings: WorkflowSettings,
|
||||
pub workflow_slug: Option<String>,
|
||||
pub dot_path: Option<PathBuf>,
|
||||
pub current_dir: Option<PathBuf>,
|
||||
pub file_resolver: Option<Arc<dyn FileResolver>>,
|
||||
pub goal_override: Option<String>,
|
||||
pub working_directory: PathBuf,
|
||||
}
|
||||
|
||||
pub(crate) fn resolve_workflow(request: ResolveWorkflowInput) -> anyhow::Result<ResolvedWorkflow> {
|
||||
|
|
@ -60,7 +59,6 @@ pub(crate) fn resolve_workflow(request: ResolveWorkflowInput) -> anyhow::Result<
|
|||
raw_source,
|
||||
settings,
|
||||
workflow_slug: location.slug,
|
||||
workflow_toml_path: location.toml,
|
||||
dot_path: Some(location.graph),
|
||||
current_dir: Some(location.dir),
|
||||
file_resolver: Some(Arc::new(FilesystemFileResolver::new(Some(
|
||||
|
|
@ -79,7 +77,6 @@ pub(crate) fn resolve_workflow(request: ResolveWorkflowInput) -> anyhow::Result<
|
|||
raw_source: source,
|
||||
settings,
|
||||
workflow_slug: None,
|
||||
workflow_toml_path: None,
|
||||
dot_path: None,
|
||||
current_dir: base_dir,
|
||||
file_resolver: has_base_dir.then(|| {
|
||||
|
|
@ -100,7 +97,6 @@ pub(crate) fn resolve_workflow(request: ResolveWorkflowInput) -> anyhow::Result<
|
|||
raw_source: workflow.source.clone(),
|
||||
settings,
|
||||
workflow_slug: workflow_slug_from_path(workflow.path.as_path()),
|
||||
workflow_toml_path: None,
|
||||
dot_path: Some(workflow.path.as_path().to_path_buf()),
|
||||
current_dir: Some(workflow.current_dir()),
|
||||
file_resolver: Some(workflow.file_resolver()),
|
||||
|
|
|
|||
|
|
@ -213,13 +213,10 @@ async fn seed_created_and_starting(
|
|||
settings: serde_json::to_value(&run_options.settings).unwrap(),
|
||||
graph: serde_json::to_value(graph).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: run_options.labels.clone().into_iter().collect(),
|
||||
run_dir: run_options.run_dir.display().to_string(),
|
||||
source_directory: Some(std::env::current_dir().unwrap().display().to_string()),
|
||||
workflow_slug: run_options.workflow_slug.clone(),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: run_options.pre_run_git.clone(),
|
||||
|
|
|
|||
|
|
@ -782,13 +782,10 @@ mod tests {
|
|||
settings: serde_json::to_value(WorkflowSettings::default()).unwrap(),
|
||||
graph: serde_json::to_value(fabro_types::Graph::new("metadata")).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::new(),
|
||||
run_dir: "/tmp/run".to_string(),
|
||||
source_directory: Some("/tmp/project".to_string()),
|
||||
workflow_slug: Some("metadata".to_string()),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -1048,13 +1048,10 @@ mod tests {
|
|||
settings: serde_json::to_value(&run_options.settings).unwrap(),
|
||||
graph: serde_json::to_value(&graph).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: BTreeMap::new(),
|
||||
run_dir: run_dir.display().to_string(),
|
||||
source_directory: Some(workspace.display().to_string()),
|
||||
workflow_slug: Some("test".to_string()),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ mod tests {
|
|||
}
|
||||
}
|
||||
|
||||
async fn seeded_store(run_dir: &Path, record: &RunSpec, source: Option<&str>) -> RunDatabase {
|
||||
async fn seeded_store(record: &RunSpec, source: Option<&str>) -> RunDatabase {
|
||||
let store = memory_store();
|
||||
let run_store = store.create_run(&record.run_id).await.unwrap();
|
||||
append_event(&run_store, &record.run_id, &Event::RunCreated {
|
||||
|
|
@ -164,13 +164,10 @@ mod tests {
|
|||
settings: serde_json::to_value(&record.settings).unwrap(),
|
||||
graph: serde_json::to_value(&record.graph).unwrap(),
|
||||
workflow_source: source.map(ToOwned::to_owned),
|
||||
workflow_config: None,
|
||||
labels: record.labels.clone().into_iter().collect(),
|
||||
run_dir: run_dir.to_string_lossy().to_string(),
|
||||
source_directory: record.source_directory.clone(),
|
||||
workflow_slug: record.workflow_slug.clone(),
|
||||
automation: record.automation.clone(),
|
||||
db_prefix: None,
|
||||
provenance: record.provenance.clone(),
|
||||
manifest_blob: None,
|
||||
git: record.git.clone(),
|
||||
|
|
@ -250,7 +247,7 @@ mod tests {
|
|||
)
|
||||
.unwrap();
|
||||
|
||||
let run_store = seeded_store(&run_dir, &expected, Some(&source)).await;
|
||||
let run_store = seeded_store(&expected, Some(&source)).await;
|
||||
let loaded = load_from_store(&run_store.clone().into(), &run_dir)
|
||||
.await
|
||||
.unwrap();
|
||||
|
|
@ -301,7 +298,7 @@ mod tests {
|
|||
let mut record = sample_record(different_graph());
|
||||
record.graph = graph;
|
||||
|
||||
let run_store = seeded_store(&run_dir, &record, None).await;
|
||||
let run_store = seeded_store(&record, None).await;
|
||||
let loaded = load_from_store(&run_store.clone().into(), &run_dir)
|
||||
.await
|
||||
.unwrap();
|
||||
|
|
@ -319,7 +316,7 @@ mod tests {
|
|||
let mut record = sample_record(different_graph());
|
||||
record.graph = graph.clone();
|
||||
|
||||
let run_store = seeded_store(&run_dir, &record, Some(&source)).await;
|
||||
let run_store = seeded_store(&record, Some(&source)).await;
|
||||
let loaded = load_from_store(&run_store.clone().into(), &run_dir)
|
||||
.await
|
||||
.unwrap();
|
||||
|
|
|
|||
|
|
@ -1048,13 +1048,10 @@ mod tests {
|
|||
settings: serde_json::to_value(&run_spec.settings).unwrap(),
|
||||
graph: serde_json::to_value(&run_spec.graph).unwrap(),
|
||||
workflow_source: Some("digraph test { plan -> code }".to_string()),
|
||||
workflow_config: None,
|
||||
labels: run_spec.labels.clone().into_iter().collect(),
|
||||
run_dir: "/tmp/project".to_string(),
|
||||
source_directory: run_spec.source_directory.clone(),
|
||||
workflow_slug: run_spec.workflow_slug.clone(),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: run_spec.provenance.clone(),
|
||||
manifest_blob: None,
|
||||
git: run_spec.git.clone(),
|
||||
|
|
@ -1119,13 +1116,10 @@ mod tests {
|
|||
settings: serde_json::to_value(&run_spec.settings).unwrap(),
|
||||
graph: serde_json::to_value(&run_spec.graph).unwrap(),
|
||||
workflow_source: Some("digraph test { plan -> code }".to_string()),
|
||||
workflow_config: None,
|
||||
labels: run_spec.labels.clone().into_iter().collect(),
|
||||
run_dir: "/tmp/project".to_string(),
|
||||
source_directory: run_spec.source_directory.clone(),
|
||||
workflow_slug: run_spec.workflow_slug.clone(),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: run_spec.provenance.clone(),
|
||||
manifest_blob: None,
|
||||
git: run_spec.git.clone(),
|
||||
|
|
@ -1539,13 +1533,10 @@ mod tests {
|
|||
settings: serde_json::to_value(&run_spec.settings).unwrap(),
|
||||
graph: serde_json::to_value(&run_spec.graph).unwrap(),
|
||||
workflow_source: Some("digraph test { plan -> code }".to_string()),
|
||||
workflow_config: None,
|
||||
labels: run_spec.labels.clone().into_iter().collect(),
|
||||
run_dir: "/tmp/project".to_string(),
|
||||
source_directory: run_spec.source_directory.clone(),
|
||||
workflow_slug: run_spec.workflow_slug.clone(),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
@ -1733,13 +1724,10 @@ mod tests {
|
|||
settings: serde_json::to_value(&run_spec.settings).unwrap(),
|
||||
graph: serde_json::to_value(&run_spec.graph).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: run_spec.labels.clone().into_iter().collect(),
|
||||
run_dir: "/tmp/x".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -507,13 +507,10 @@ mod tests {
|
|||
settings: serde_json::to_value(&run_spec.settings).unwrap(),
|
||||
graph: serde_json::to_value(&run_spec.graph).unwrap(),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: run_spec.labels.clone().into_iter().collect(),
|
||||
run_dir: run_dir.display().to_string(),
|
||||
source_directory: run_spec.source_directory.clone(),
|
||||
workflow_slug: run_spec.workflow_slug.clone(),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: run_spec.provenance.clone(),
|
||||
manifest_blob: None,
|
||||
git: run_spec.git.clone(),
|
||||
|
|
|
|||
|
|
@ -163,13 +163,10 @@ mod tests {
|
|||
settings: serde_json::to_value(&record.settings).unwrap(),
|
||||
graph: serde_json::to_value(&record.graph).unwrap(),
|
||||
workflow_source: Some("digraph test {}".to_string()),
|
||||
workflow_config: None,
|
||||
labels: std::collections::BTreeMap::new(),
|
||||
run_dir: "/tmp/test".to_string(),
|
||||
source_directory: Some("/tmp/test".to_string()),
|
||||
workflow_slug: Some("test".to_string()),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_support::test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
|
|||
|
|
@ -188,17 +188,14 @@ async fn initialized(
|
|||
.expect("failed to serialize settings"),
|
||||
graph: serde_json::to_value(graph).expect("failed to serialize graph"),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: run_options
|
||||
.labels
|
||||
.clone()
|
||||
.into_iter()
|
||||
.collect::<BTreeMap<_, _>>(),
|
||||
run_dir: run_options.run_dir.display().to_string(),
|
||||
source_directory: Some(sandbox.working_directory().to_string()),
|
||||
workflow_slug: run_options.workflow_slug.clone(),
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: fabro_types::RunProvenance {
|
||||
server: None,
|
||||
client: None,
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ fn run_event_round_trips_run_created() {
|
|||
"properties": {
|
||||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("test"),
|
||||
"run_dir": "/tmp/fabro/run-1",
|
||||
"source_directory": "/tmp/fabro/run-1",
|
||||
"provenance": test_support::test_run_provenance()
|
||||
}
|
||||
|
|
@ -38,7 +37,6 @@ fn run_event_round_trips_run_created_with_web_url() {
|
|||
"properties": {
|
||||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("test"),
|
||||
"run_dir": "/tmp/fabro/run-1",
|
||||
"source_directory": "/tmp/fabro/run-1",
|
||||
"web_url": format!("http://localhost:3000/runs/{}", fixtures::RUN_1),
|
||||
"provenance": test_support::test_run_provenance()
|
||||
|
|
|
|||
|
|
@ -1007,7 +1007,6 @@ mod tests {
|
|||
"settings": settings,
|
||||
"graph": graph,
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"source_directory": "/tmp/run",
|
||||
"provenance": test_support::test_run_provenance()
|
||||
}
|
||||
|
|
@ -1055,7 +1054,6 @@ mod tests {
|
|||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("test"),
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"source_directory": "/tmp/run",
|
||||
"provenance": test_support::test_run_provenance(),
|
||||
"manifest_blob": RunBlobId::new(br#"{"version":1}"#).to_string()
|
||||
|
|
|
|||
|
|
@ -17,19 +17,14 @@ pub struct RunCreatedProps {
|
|||
pub graph: Graph,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub workflow_source: Option<String>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub workflow_config: Option<String>,
|
||||
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
|
||||
pub labels: BTreeMap<String, String>,
|
||||
pub run_dir: String,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub source_directory: Option<String>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub workflow_slug: Option<String>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub automation: Option<AutomationRef>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub db_prefix: Option<String>,
|
||||
pub provenance: RunProvenance,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub manifest_blob: Option<RunBlobId>,
|
||||
|
|
|
|||
|
|
@ -22,9 +22,7 @@ fn run_created_props_round_trip_templated_settings() {
|
|||
settings: templated_settings(),
|
||||
graph: Graph::new("ship"),
|
||||
workflow_source: Some("digraph Ship { start -> exit }".to_string()),
|
||||
workflow_config: Some("[run]\ngoal = \"Ship {{ env.TASK }}\"".to_string()),
|
||||
labels: BTreeMap::from([("team".to_string(), "platform".to_string())]),
|
||||
run_dir: "/tmp/run".to_string(),
|
||||
source_directory: Some("/Users/client/project".to_string()),
|
||||
workflow_slug: Some("demo".to_string()),
|
||||
automation: Some(AutomationRef {
|
||||
|
|
@ -32,7 +30,6 @@ fn run_created_props_round_trip_templated_settings() {
|
|||
name: Some("Nightly".to_string()),
|
||||
trigger_id: Some("schedule_1".to_string()),
|
||||
}),
|
||||
db_prefix: Some("run_".to_string()),
|
||||
provenance: test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: Some(GitContext {
|
||||
|
|
@ -91,13 +88,10 @@ fn run_created_props_omits_web_url_when_absent() {
|
|||
settings: WorkflowSettings::default(),
|
||||
graph: Graph::new("ship"),
|
||||
workflow_source: None,
|
||||
workflow_config: None,
|
||||
labels: BTreeMap::new(),
|
||||
run_dir: "/tmp/run".to_string(),
|
||||
source_directory: None,
|
||||
workflow_slug: None,
|
||||
automation: None,
|
||||
db_prefix: None,
|
||||
provenance: test_run_provenance(),
|
||||
manifest_blob: None,
|
||||
git: None,
|
||||
|
|
@ -135,7 +129,6 @@ fn run_created_props_defaults_additive_fields_for_legacy_events() {
|
|||
"settings": WorkflowSettings::default(),
|
||||
"graph": Graph::new("ship"),
|
||||
"labels": {},
|
||||
"run_dir": "/tmp/run",
|
||||
"provenance": test_run_provenance()
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue