refactor(settings): stage 6.5b sweep ::v2:: prefix out of consumers

Final mechanical pass: replaces every remaining
`fabro_types::settings::v2::*` import path with
`fabro_types::settings::*` (or the appropriate submodule) across 53
files in 10 crates, then deletes the transitional
`pub mod v2 { pub use super::*; }` alias from
`fabro-types/src/settings/mod.rs`.

No functional changes — all touches are `sed s|settings::v2::|settings::|g`
on import statements and fully-qualified type paths. The v2
namespace is now fully gone; the authoritative module path is
`fabro_types::settings::{accessors, cli, duration, features, interp,
model_ref, project, run, server, size, splice_array, tree, version,
workflow}`.

All 3,758 workspace tests pass. `cargo fmt --check --all` and
`cargo clippy --workspace -- -D warnings` are clean.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Bryan Helmkamp 2026-04-09 18:42:05 -04:00
parent d82d167f07
commit c625747e0c
No known key found for this signature in database
53 changed files with 124 additions and 133 deletions

View file

@ -1,7 +1,7 @@
use std::fmt::Write;
use fabro_types::settings::InterpString;
use fabro_types::settings::v2::run::GitAuthorLayer;
use fabro_types::settings::run::GitAuthorLayer;
/// Resolved git author identity for checkpoint commits.
#[derive(Debug, Clone, PartialEq)]

View file

@ -178,7 +178,7 @@ mod tests {
use super::*;
use chrono::{TimeZone, Utc};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{Graph, fixtures};
/// Create a temporary git repo with an initial commit.

View file

@ -2,7 +2,7 @@ use std::path::{Path, PathBuf};
use std::sync::Arc;
use anyhow::{Context as _, Result, bail};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use tokio::sync::OnceCell;
use crate::args::{ServerConnectionArgs, ServerTargetArgs};

View file

@ -3,7 +3,7 @@ use fabro_agent::cli::{OutputFormat, run_with_args, run_with_args_and_client};
use fabro_llm::client::Client;
use fabro_llm::providers::FabroServerAdapter;
use fabro_mcp::config::{McpServerSettings, bridge_mcp_entry};
use fabro_types::settings::v2::InterpString;
use fabro_types::settings::InterpString;
use std::collections::HashMap;
use std::sync::Arc;
@ -12,7 +12,7 @@ use crate::user_config;
pub(crate) async fn execute(mut args: ExecArgs, globals: &GlobalArgs) -> Result<()> {
use fabro_agent::cli::PermissionLevel as AgentPermissionLevel;
use fabro_types::settings::v2::run::AgentPermissions;
use fabro_types::settings::run::AgentPermissions;
let cli_settings = user_config::load_settings()?;
#[cfg(feature = "sleep_inhibitor")]

View file

@ -1024,7 +1024,7 @@ mod tests {
#[test]
fn config_toml_roundtrips() {
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
let toml_str = format_config_toml("brynary");
let cfg: SettingsFile = fabro_config::ConfigLayer::parse(&toml_str)
.expect("generated config should parse as v2")
@ -1041,7 +1041,7 @@ mod tests {
#[test]
fn config_toml_has_auth_strategies() {
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
let toml_str = format_config_toml("alice");
let cfg: SettingsFile = fabro_config::ConfigLayer::parse(&toml_str).unwrap().into();
let auth_api = cfg
@ -1066,8 +1066,8 @@ mod tests {
#[test]
fn config_toml_has_tls_paths() {
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::v2::server::ServerListenLayer;
use fabro_types::settings::SettingsFile;
use fabro_types::settings::server::ServerListenLayer;
let toml_str = format_config_toml("bob");
let cfg: SettingsFile = fabro_config::ConfigLayer::parse(&toml_str).unwrap().into();
let listen = cfg

View file

@ -5,7 +5,7 @@ use crate::command_context::CommandContext;
use fabro_config::ConfigLayer;
use fabro_config::Storage;
use fabro_types::RunId;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_util::terminal::Styles;
use super::output::{api_diagnostics_to_local, print_preflight_workflow_summary};

View file

@ -3,10 +3,10 @@ use std::collections::HashMap;
use anyhow::Result;
use fabro_config::ConfigLayer;
use fabro_sandbox::SandboxProvider;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::v2::cli::{CliLayer, CliOutputLayer, OutputVerbosity};
use fabro_types::settings::v2::interp::InterpString;
use fabro_types::settings::v2::run::{
use fabro_types::settings::SettingsFile;
use fabro_types::settings::cli::{CliLayer, CliOutputLayer, OutputVerbosity};
use fabro_types::settings::interp::InterpString;
use fabro_types::settings::run::{
ApprovalMode, RunExecutionLayer, RunLayer, RunMode, RunModelLayer, RunSandboxLayer,
};

View file

@ -7,7 +7,7 @@ use anyhow::{Context, Result, anyhow};
use async_trait::async_trait;
use fabro_interview::{ControlInterviewer, WorkerControlEnvelope, WorkerControlMessage};
use fabro_store::{EventEnvelope, EventPayload, RunProjection};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{EventBody, RunBlobId, RunEvent, RunId, StatusReason};
use fabro_workflow::artifact_snapshot::CapturedArtifactInfo;
use fabro_workflow::artifact_upload::{ArtifactSink, StageArtifactUploader};

View file

@ -297,7 +297,7 @@ mod tests {
use chrono::{DateTime, Utc};
use fabro_store::{Database, EventEnvelope, EventPayload};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{
AggregateStats, AttrValue, BilledTokenCounts, Checkpoint, Conclusion, Graph,
NodeStatusRecord, Retro, RunId, RunRecord, RunStatus, RunStatusRecord, SandboxRecord,

View file

@ -132,7 +132,7 @@ async fn main_inner() -> (String, Result<()>) {
{
match load_settings_config(args.config.as_deref()) {
Ok(layer) => {
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
let server_settings: SettingsFile = layer.into();
(
server_settings

View file

@ -11,8 +11,8 @@ use fabro_graphviz::graph::AttrValue;
use fabro_graphviz::parser;
use fabro_sandbox::daytona::detect_repo_info;
use fabro_types::RunId;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::v2::run::DaytonaDockerfileLayer;
use fabro_types::settings::SettingsFile;
use fabro_types::settings::run::DaytonaDockerfileLayer;
use fabro_workflow::git::{GitSyncStatus, head_sha, sync_status};
use crate::args::{PreflightArgs, RunArgs};

View file

@ -54,8 +54,8 @@ pub(crate) fn apply_storage_dir_override(
mut layer: ConfigLayer,
storage_dir: Option<&Path>,
) -> ConfigLayer {
use fabro_types::settings::v2::interp::InterpString;
use fabro_types::settings::v2::server::{ServerLayer, ServerStorageLayer};
use fabro_types::settings::interp::InterpString;
use fabro_types::settings::server::{ServerLayer, ServerStorageLayer};
if let Some(dir) = storage_dir {
let file = layer.as_v2_mut();
let server = file.server.get_or_insert_with(ServerLayer::default);
@ -82,8 +82,8 @@ pub(crate) enum ServerTarget {
/// http(s) URL or a unix socket path. `tls` is the CLI-side client TLS
/// settings extracted from `[cli.target.http.tls]`.
fn cli_target_from_v2(settings: &SettingsFile) -> Option<(String, Option<ClientTlsSettings>)> {
use fabro_types::settings::v2::cli::CliTargetLayer;
use fabro_types::settings::v2::interp::InterpString;
use fabro_types::settings::cli::CliTargetLayer;
use fabro_types::settings::interp::InterpString;
let target = settings.cli.as_ref()?.target.as_ref()?;
match target {

View file

@ -330,7 +330,7 @@ fn settings_local_workflow_name_applies_run_overlay_and_deep_merges() {
.stdout
.clone();
use fabro_types::settings::v2::run::McpEntryLayer;
use fabro_types::settings::run::McpEntryLayer;
let cfg = parse_settings(&output);
assert_eq!(cfg.run_goal_str().as_deref(), Some("demo goal"));

View file

@ -13,7 +13,7 @@
use std::path::Path;
use anyhow::Context;
use fabro_types::settings::v2::{SettingsFile, parse_settings_file as parse_v2_settings_file};
use fabro_types::settings::{SettingsFile, parse_settings_file as parse_v2_settings_file};
use serde::{Deserialize, Serialize};
use crate::merge::combine_files;
@ -124,7 +124,7 @@ impl ConfigLayer {
#[cfg(test)]
mod tests {
use fabro_types::settings::v2::InterpString;
use fabro_types::settings::InterpString;
use super::*;

View file

@ -7,9 +7,9 @@
//! stanzas in `fabro.toml` and `workflow.toml` remain schema-valid but inert.
use anyhow::{Result, anyhow};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::v2::run::{RunExecutionLayer, RunLayer};
use fabro_types::settings::v2::server::ServerLayer;
use fabro_types::settings::SettingsFile;
use fabro_types::settings::run::{RunExecutionLayer, RunLayer};
use fabro_types::settings::server::ServerLayer;
use crate::ConfigLayer;
use crate::merge::combine_files;
@ -177,10 +177,8 @@ fn apply_local_daemon_overrides(mut settings: SettingsFile, server: &SettingsFil
#[cfg(test)]
mod tests {
use fabro_types::settings::v2::InterpString;
use fabro_types::settings::v2::server::{
ServerLayer, ServerSchedulerLayer, ServerStorageLayer,
};
use fabro_types::settings::InterpString;
use fabro_types::settings::server::{ServerLayer, ServerSchedulerLayer, ServerStorageLayer};
use super::{EffectiveSettingsLayers, EffectiveSettingsMode, resolve_settings};
use crate::ConfigLayer;
@ -295,7 +293,7 @@ provider = "openai"
#[test]
fn cli_and_server_domains_from_fabro_toml_are_inert_under_remote_mode() {
let mut server_settings = fabro_types::settings::v2::SettingsFile::default();
let mut server_settings = fabro_types::settings::SettingsFile::default();
server_settings.server = Some(ServerLayer {
storage: Some(ServerStorageLayer {
root: Some(InterpString::parse("/srv/fabro")),
@ -339,7 +337,7 @@ root = "/tmp/should-be-inert"
#[test]
fn local_daemon_mode_only_applies_server_owned_overrides() {
let mut server_settings = fabro_types::settings::v2::SettingsFile::default();
let mut server_settings = fabro_types::settings::SettingsFile::default();
server_settings.server = Some(ServerLayer {
storage: Some(ServerStorageLayer {
root: Some(InterpString::parse("/srv/fabro")),

View file

@ -17,7 +17,7 @@ pub use storage::{RunScratch, ServerState, Storage};
use std::path::{Path, PathBuf};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use serde::de::DeserializeOwned;
/// Resolve the storage directory: v2 `server.storage.root` > home default.

View file

@ -9,22 +9,22 @@
use std::collections::HashMap;
use fabro_types::settings::v2::cli::{
use fabro_types::settings::cli::{
CliExecAgentLayer, CliExecLayer, CliExecModelLayer, CliLayer, CliTargetLayer,
};
use fabro_types::settings::v2::project::ProjectLayer;
use fabro_types::settings::v2::run::{
use fabro_types::settings::project::ProjectLayer;
use fabro_types::settings::run::{
DaytonaSandboxLayer, GitAuthorLayer, HookEntry, InterviewsLayer, ModelRefOrSplice,
NotificationRouteLayer, RunAgentLayer, RunCheckpointLayer, RunExecutionLayer, RunGitLayer,
RunLayer, RunModelLayer, RunPrepareLayer, RunPullRequestLayer, RunSandboxLayer, RunScmLayer,
StringOrSplice,
};
use fabro_types::settings::v2::server::{
use fabro_types::settings::server::{
ServerArtifactsLayer, ServerAuthLayer, ServerIntegrationsLayer, ServerLayer, ServerListenLayer,
ServerSchedulerLayer, ServerSlateDbLayer, ServerStorageLayer, ServerWebLayer,
};
use fabro_types::settings::v2::tree::SettingsFile;
use fabro_types::settings::v2::workflow::WorkflowLayer;
use fabro_types::settings::tree::SettingsFile;
use fabro_types::settings::workflow::WorkflowLayer;
/// Combine two settings files: `higher` takes precedence over `lower` wherever
/// the merge matrix does not dictate otherwise.
@ -479,7 +479,7 @@ fn combine_server_integrations(
#[cfg(test)]
mod tests {
use fabro_types::settings::v2::{InterpString, parse_settings_file};
use fabro_types::settings::{InterpString, parse_settings_file};
use super::*;

View file

@ -1,7 +1,7 @@
//! Hook configuration runtime types.
//!
//! These types are the runtime shape that the hook executor consumes. The
//! v2 parse tree under `fabro_types::settings::v2::run::HookEntry` is the
//! v2 parse tree under `fabro_types::settings::run::HookEntry` is the
//! *config-file* shape; this module lives in `fabro-hooks` because the
//! behavior methods (`is_blocking`, `timeout`, `resolved_hook_type`,
//! `runs_in_sandbox`, `effective_name`) are runtime concerns owned by the
@ -13,8 +13,8 @@
use std::borrow::Cow;
use fabro_types::settings::v2::InterpString;
use fabro_types::settings::v2::run::{
use fabro_types::settings::InterpString;
use fabro_types::settings::run::{
HookAgentMarker, HookEntry, HookEvent as V2HookEvent, HookTlsMode as V2HookTlsMode,
};
use serde::{Deserialize, Serialize};

View file

@ -1,6 +1,6 @@
//! MCP server configuration runtime types.
//!
//! The v2 parse tree lives in `fabro_types::settings::v2::run::McpEntryLayer`.
//! The v2 parse tree lives in `fabro_types::settings::run::McpEntryLayer`.
//! This module owns the runtime shape (flattened, with timeout helpers) that
//! the MCP client consumes at execution time. Conversion from the v2 shape
//! lives in [`bridge_mcp_entry`] / [`bridge_mcps`].
@ -8,8 +8,8 @@
use std::collections::HashMap;
use std::time::Duration;
use fabro_types::settings::v2::InterpString;
use fabro_types::settings::v2::run::McpEntryLayer;
use fabro_types::settings::InterpString;
use fabro_types::settings::run::McpEntryLayer;
use serde::{Deserialize, Serialize};
#[must_use]

View file

@ -1,7 +1,7 @@
//! Sandbox configuration runtime types.
//!
//! These types are the runtime shape that the sandbox providers consume.
//! The v2 parse tree lives in `fabro_types::settings::v2::run::RunSandboxLayer`.
//! The v2 parse tree lives in `fabro_types::settings::run::RunSandboxLayer`.
//! Conversion from the v2 shape lives in [`bridge_sandbox`].
//!
//! The `DaytonaSettings`/`DaytonaSnapshotSettings` names are kept for
@ -11,8 +11,8 @@
use std::collections::HashMap;
use fabro_types::settings::v2::InterpString;
use fabro_types::settings::v2::run::{
use fabro_types::settings::InterpString;
use fabro_types::settings::run::{
DaytonaDockerfileLayer, DaytonaNetworkLayer, RunSandboxLayer, WorktreeMode as V2WorktreeMode,
};
use serde::de::{self, MapAccess, Visitor};

View file

@ -465,7 +465,7 @@ async fn check_brave_search(state: &AppState) -> CheckResult {
}
fn check_crypto(state: &AppState) -> CheckResult {
use fabro_types::settings::v2::interp::InterpString;
use fabro_types::settings::interp::InterpString;
let settings_file = state
.settings
@ -501,7 +501,7 @@ fn check_crypto(state: &AppState) -> CheckResult {
let mut errors = Vec::new();
if has_mtls {
use fabro_types::settings::v2::server::ServerListenLayer;
use fabro_types::settings::server::ServerListenLayer;
let listen_tls = settings_file
.server
.as_ref()

View file

@ -17,10 +17,10 @@ use fabro_sandbox::config::bridge_sandbox;
use fabro_sandbox::daytona::DaytonaConfig;
use fabro_sandbox::{DockerSandboxOptions, Sandbox, SandboxProvider, SandboxSpec};
use fabro_types::RunId;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::v2::cli::{CliLayer, CliOutputLayer, OutputVerbosity};
use fabro_types::settings::v2::interp::InterpString;
use fabro_types::settings::v2::run::{
use fabro_types::settings::SettingsFile;
use fabro_types::settings::cli::{CliLayer, CliOutputLayer, OutputVerbosity};
use fabro_types::settings::interp::InterpString;
use fabro_types::settings::run::{
ApprovalMode, DaytonaDockerfileLayer, RunExecutionLayer, RunLayer, RunMode, RunModelLayer,
RunSandboxLayer,
};

View file

@ -17,7 +17,7 @@ use tracing::{error, info, warn};
use clap::Args;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use crate::bind::{self, Bind, BindRequest};
use crate::github_webhooks::WebhookManager;
@ -93,12 +93,12 @@ fn apply_serve_overrides(
args: &ServeArgs,
dry_run_mode: bool,
) -> SettingsFile {
use fabro_types::settings::v2::cli::CliLayer;
use fabro_types::settings::v2::interp::InterpString;
use fabro_types::settings::v2::run::{
use fabro_types::settings::cli::CliLayer;
use fabro_types::settings::interp::InterpString;
use fabro_types::settings::run::{
RunExecutionLayer, RunLayer, RunMode, RunModelLayer, RunSandboxLayer,
};
use fabro_types::settings::v2::server::{ServerLayer, ServerWebLayer};
use fabro_types::settings::server::{ServerLayer, ServerWebLayer};
let mut settings = base.clone();
if dry_run_mode {
let run = settings.run.get_or_insert_with(RunLayer::default);
@ -136,8 +136,8 @@ fn apply_runtime_settings(
dry_run_mode: bool,
data_dir: &Path,
) -> SettingsFile {
use fabro_types::settings::v2::interp::InterpString;
use fabro_types::settings::v2::server::{ServerLayer, ServerStorageLayer};
use fabro_types::settings::interp::InterpString;
use fabro_types::settings::server::{ServerLayer, ServerStorageLayer};
let mut settings = apply_serve_overrides(base, args, dry_run_mode);
let server = settings.server.get_or_insert_with(ServerLayer::default);
let storage = server
@ -174,8 +174,8 @@ fn build_artifact_object_store(
settings: &SettingsFile,
storage: &Storage,
) -> anyhow::Result<(Arc<dyn ObjectStore>, String)> {
use fabro_types::settings::v2::interp::InterpString;
use fabro_types::settings::v2::server::ObjectStoreProvider;
use fabro_types::settings::interp::InterpString;
use fabro_types::settings::server::ObjectStoreProvider;
let artifacts = settings.server_artifacts();
let prefix = artifacts
@ -349,7 +349,7 @@ where
// Optionally start webhook listener
let webhook_app_id = {
use fabro_types::settings::v2::InterpString;
use fabro_types::settings::InterpString;
let cfg_file = shared_settings.read().expect("config lock poisoned");
cfg_file
.server_integrations_github()
@ -680,7 +680,7 @@ mod tests {
};
use crate::bind::Bind;
use fabro_config::ConfigLayer;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
fn parse_settings(source: &str) -> SettingsFile {
ConfigLayer::parse(source)

View file

@ -33,7 +33,7 @@ use fabro_model::{BilledModelUsage, BilledTokenCounts};
use fabro_store::{
ArtifactStore, Database, EventEnvelope, EventPayload, PendingInterviewRecord, StageId,
};
use fabro_types::settings::v2::{InterpString, SettingsFile};
use fabro_types::settings::{InterpString, SettingsFile};
use fabro_types::{
EventBody, InterviewQuestionRecord, InterviewQuestionType, RunBlobId, RunClientProvenance,
RunControlAction, RunEvent, RunId, RunProvenance, RunServerProvenance, RunSubjectProvenance,
@ -5911,7 +5911,7 @@ mod tests {
}"#;
fn dry_run_settings() -> SettingsFile {
use fabro_types::settings::v2::run::{RunExecutionLayer, RunLayer, RunMode};
use fabro_types::settings::run::{RunExecutionLayer, RunLayer, RunMode};
SettingsFile {
run: Some(RunLayer {
execution: Some(RunExecutionLayer {

View file

@ -6,7 +6,7 @@ use axum::http::{HeaderMap, HeaderValue, StatusCode, header};
use axum::response::{IntoResponse, Redirect, Response};
use axum::{Json, Router, routing::get, routing::post};
use cookie::{Cookie, CookieJar, Expiration, Key, SameSite, time::Duration};
use fabro_types::settings::v2::{InterpString, SettingsFile};
use fabro_types::settings::{InterpString, SettingsFile};
use serde::{Deserialize, Serialize};
use serde_json::json;
use tracing::{debug, error, info, warn};

View file

@ -6,7 +6,7 @@ use fabro_server::server::{
RouterOptions, build_router, build_router_with_options, create_app_state,
create_app_state_with_options,
};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use tower::ServiceExt;
use crate::helpers::body_json;

View file

@ -3,7 +3,7 @@ use axum::http::{Request, StatusCode};
use fabro_config::ConfigLayer;
use fabro_server::jwt_auth::AuthMode;
use fabro_server::server::{build_router, create_app_state_with_options};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use tower::ServiceExt;
use crate::helpers::body_json;

View file

@ -4,10 +4,10 @@ use axum::body::Body;
use axum::http::{Request, StatusCode};
use fabro_config::Storage;
use fabro_types::RunId;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::v2::interp::InterpString;
use fabro_types::settings::v2::run::{RunExecutionLayer, RunLayer, RunMode};
use fabro_types::settings::v2::server::{ServerLayer, ServerStorageLayer};
use fabro_types::settings::SettingsFile;
use fabro_types::settings::interp::InterpString;
use fabro_types::settings::run::{RunExecutionLayer, RunLayer, RunMode};
use fabro_types::settings::server::{ServerLayer, ServerStorageLayer};
use http_body_util::BodyExt;
use std::path::PathBuf;
use tempfile::tempdir;

View file

@ -8,8 +8,8 @@ use fabro_server::server::{
AppState, build_router, create_app_state, create_app_state_with_settings_and_registry_factory,
spawn_scheduler,
};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::v2::run::{
use fabro_types::settings::SettingsFile;
use fabro_types::settings::run::{
LocalSandboxLayer, RunExecutionLayer, RunLayer, RunMode, RunSandboxLayer, WorktreeMode,
};
use tokio::time::sleep;

View file

@ -233,7 +233,7 @@ mod tests {
use super::*;
use chrono::{DateTime, Utc};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{AttrValue, Graph, RunControlAction, RunRecord, RunStatus, StatusReason};
use futures::TryStreamExt;
use object_store::memory::InMemory;

View file

@ -6,7 +6,7 @@ use serde::{Deserialize, Serialize};
use crate::graph::Graph;
use crate::run_blob_id::RunBlobId;
use crate::run_id::RunId;
use crate::settings::v2::SettingsFile;
use crate::settings::SettingsFile;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]

View file

@ -2,7 +2,7 @@ use std::collections::BTreeMap;
use serde::{Deserialize, Serialize};
use crate::settings::v2::SettingsFile;
use crate::settings::SettingsFile;
use crate::{Graph, RunBlobId, RunControlAction, RunProvenance, StatusReason};
use super::{BilledTokenCounts, RunNoticeLevel};

View file

@ -413,7 +413,7 @@ impl SettingsFile {
#[cfg(test)]
mod tests {
use super::*;
use crate::settings::v2::run::{RunLayer, RunModelLayer};
use crate::settings::run::{RunLayer, RunModelLayer};
#[test]
fn run_goal_str_returns_source_value() {
@ -453,8 +453,8 @@ mod tests {
#[test]
fn all_labels_merges_project_workflow_run() {
use crate::settings::v2::project::ProjectLayer;
use crate::settings::v2::workflow::WorkflowLayer;
use crate::settings::project::ProjectLayer;
use crate::settings::workflow::WorkflowLayer;
let mut project_metadata = HashMap::new();
project_metadata.insert("env".into(), "project".into());

View file

@ -39,10 +39,3 @@ pub use splice_array::{SPLICE_MARKER, SpliceArray, SpliceArrayError};
pub use tree::{ParseError, SettingsFile, parse_settings_file};
pub use version::{CURRENT_VERSION, SchemaVersion, VersionError, validate_version};
pub use workflow::WorkflowLayer;
/// Transitional alias for code still using `fabro_types::settings::v2::*`
/// paths. The whole `v2` namespace is scheduled for removal once the
/// workspace-wide sweep (Stage 6.5b follow-up) is done.
pub mod v2 {
pub use super::*;
}

View file

@ -1,11 +1,11 @@
//! Workflow runtime configuration shapes.
//!
//! Runtime-side types consumed by the pipeline. The v2 parse tree lives in
//! `fabro_types::settings::v2::run::{RunPullRequestLayer, MergeStrategy,
//! `fabro_types::settings::run::{RunPullRequestLayer, MergeStrategy,
//! RunArtifactsLayer}`. Conversion from v2 lives in [`bridge_pull_request`]
//! / [`bridge_run_artifacts`].
use fabro_types::settings::v2::run::{
use fabro_types::settings::run::{
MergeStrategy as V2MergeStrategy, RunArtifactsLayer, RunPullRequestLayer,
};
use serde::{Deserialize, Serialize};

View file

@ -2,7 +2,7 @@ use std::path::Path;
use std::process::Command;
use fabro_checkpoint::git::Store;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use crate::error::{FabroError, Result};
use tokio::task::{JoinError, spawn_blocking};

View file

@ -18,7 +18,7 @@ use crate::run_options::RunOptions;
use async_trait::async_trait;
use fabro_graphviz::graph::{AttrValue, Graph, Node};
use fabro_store::{ArtifactStore, Database};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use object_store::memory::InMemory;
use tokio::time::{sleep, timeout};

View file

@ -3,8 +3,8 @@ use fabro_graphviz::graph::{AttrValue, Graph};
use fabro_model::{Catalog, Provider};
use fabro_sandbox::SandboxProvider;
use fabro_store::Database;
use fabro_types::settings::v2::run::{RunLayer, RunModelLayer};
use fabro_types::settings::v2::{InterpString, SettingsFile};
use fabro_types::settings::run::{RunLayer, RunModelLayer};
use fabro_types::settings::{InterpString, SettingsFile};
use fabro_types::{RunId, RunProvenance};
use std::collections::BTreeMap;
use std::collections::HashMap;
@ -559,7 +559,7 @@ mod tests {
start -> work -> exit
}"#;
let validated = validate_dot(dot, {
use fabro_types::settings::v2::run::RunLayer;
use fabro_types::settings::run::RunLayer;
let mut inputs = std::collections::HashMap::new();
inputs.insert("who".to_string(), toml::Value::String("agent".to_string()));
SettingsFile {
@ -765,7 +765,7 @@ mod tests {
base_dir: None,
},
settings: {
use fabro_types::settings::v2::run::{
use fabro_types::settings::run::{
RunExecutionLayer, RunLayer, RunMode, RunModelLayer, RunPullRequestLayer,
};
let mut metadata = HashMap::new();
@ -871,7 +871,7 @@ mod tests {
base_dir: None,
},
settings: {
use fabro_types::settings::v2::run::{RunExecutionLayer, RunLayer, RunMode};
use fabro_types::settings::run::{RunExecutionLayer, RunLayer, RunMode};
SettingsFile {
run: Some(RunLayer {
working_dir: Some(InterpString::parse("workspace")),
@ -947,7 +947,7 @@ mod tests {
}
fn dry_run_only_settings() -> SettingsFile {
use fabro_types::settings::v2::run::{RunExecutionLayer, RunLayer, RunMode};
use fabro_types::settings::run::{RunExecutionLayer, RunLayer, RunMode};
SettingsFile {
run: Some(RunLayer {
execution: Some(RunExecutionLayer {
@ -961,8 +961,8 @@ mod tests {
}
fn dry_run_with_storage(storage_dir: &Path) -> SettingsFile {
use fabro_types::settings::v2::run::{RunExecutionLayer, RunLayer, RunMode};
use fabro_types::settings::v2::server::{ServerLayer, ServerStorageLayer};
use fabro_types::settings::run::{RunExecutionLayer, RunLayer, RunMode};
use fabro_types::settings::server::{ServerLayer, ServerStorageLayer};
SettingsFile {
run: Some(RunLayer {
execution: Some(RunExecutionLayer {

View file

@ -335,7 +335,7 @@ mod tests {
use chrono::{TimeZone, Utc};
use fabro_graphviz::graph::Graph;
use fabro_store::{Database, StageId};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{RunId, RunRecord, SandboxRecord, StartRecord, fixtures};
use object_store::memory::InMemory;
use std::collections::HashMap;

View file

@ -3,7 +3,7 @@ use std::sync::Arc;
use anyhow::Context;
use fabro_config::project as project_config;
use fabro_types::settings::v2::{InterpString, SettingsFile};
use fabro_types::settings::{InterpString, SettingsFile};
use fabro_util::path::expand_tilde;
use crate::file_resolver::{FileResolver, FilesystemFileResolver};
@ -168,7 +168,7 @@ mod tests {
#[test]
fn resolve_workflow_uses_explicit_cwd_for_relative_work_dir() {
use fabro_types::settings::v2::run::RunLayer;
use fabro_types::settings::run::RunLayer;
let dir = tempfile::tempdir().unwrap();
let resolved = resolve_workflow(ResolveWorkflowInput {

View file

@ -14,8 +14,8 @@ use fabro_sandbox::config::{
};
use fabro_sandbox::{SandboxProvider, SandboxSpec};
use fabro_types::RunId;
use fabro_types::settings::v2::run::ModelRefOrSplice;
use fabro_types::settings::v2::{InterpString, SettingsFile};
use fabro_types::settings::run::ModelRefOrSplice;
use fabro_types::settings::{InterpString, SettingsFile};
use crate::config::{PullRequestSettings, bridge_pull_request};
@ -852,7 +852,7 @@ mod tests {
use chrono::Utc;
use fabro_store::Database;
use fabro_types::fixtures;
use fabro_types::settings::v2::run::{RunExecutionLayer, RunLayer, RunMode};
use fabro_types::settings::run::{RunExecutionLayer, RunLayer, RunMode};
use object_store::memory::InMemory;
use super::*;

View file

@ -1,6 +1,6 @@
use std::path::PathBuf;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use crate::error::FabroError;
use crate::pipeline::Validated;

View file

@ -13,7 +13,7 @@ use fabro_hooks::HookSettings;
use fabro_interview::AutoApproveInterviewer;
use fabro_sandbox::SandboxSpec;
use fabro_store::Database;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{RunId, fixtures};
use object_store::memory::InMemory;

View file

@ -306,7 +306,7 @@ mod tests {
use fabro_graphviz::graph::Graph;
use fabro_store::Database;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{RunId, fixtures};
use object_store::memory::InMemory;

View file

@ -534,7 +534,7 @@ pub async fn initialize(
build_registry(&options.llm, Arc::clone(&options.interviewer), &env, &graph).await?
};
if effective_dry_run {
use fabro_types::settings::v2::run::{RunExecutionLayer, RunLayer, RunMode};
use fabro_types::settings::run::{RunExecutionLayer, RunLayer, RunMode};
options.dry_run = true;
let run = options
@ -688,7 +688,7 @@ mod tests {
use fabro_interview::AutoApproveInterviewer;
use fabro_sandbox::SandboxSpec;
use fabro_store::Database;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{RunId, fixtures};
use object_store::memory::InMemory;

View file

@ -55,9 +55,9 @@ mod tests {
use fabro_graphviz::graph::{AttrValue, Edge, Graph, Node};
use fabro_store::{Database, RunDatabase};
use fabro_types::fixtures;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::v2::cli::{CliLayer, CliOutputLayer, OutputVerbosity};
use fabro_types::settings::v2::run::{RunExecutionLayer, RunLayer, RunMode};
use fabro_types::settings::SettingsFile;
use fabro_types::settings::cli::{CliLayer, CliOutputLayer, OutputVerbosity};
use fabro_types::settings::run::{RunExecutionLayer, RunLayer, RunMode};
use object_store::memory::InMemory;
use std::sync::Arc;
use std::time::Duration;

View file

@ -595,7 +595,7 @@ mod tests {
AggregateStats, FrictionKind, FrictionPoint, OpenItem, OpenItemKind, StageRetro,
};
use fabro_store::Database;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{BilledTokenCounts, RunRecord, fixtures};
use futures::stream;
use object_store::memory::InMemory;

View file

@ -184,7 +184,7 @@ mod tests {
use fabro_graphviz::graph::Graph;
use fabro_store::Database;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{RunId, fixtures};
use object_store::memory::InMemory;

View file

@ -6,7 +6,7 @@ use chrono::{DateTime, Utc};
use fabro_config::Storage;
use fabro_store::{Database, RunSummary};
use fabro_types::RunId;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use serde::Serialize;
use crate::operations::make_run_dir;
@ -397,7 +397,7 @@ mod tests {
use fabro_graphviz::graph::Graph;
use fabro_store::Database;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{RunStatus, fixtures};
use object_store::memory::InMemory;

View file

@ -4,8 +4,8 @@ use std::sync::Arc;
use std::sync::atomic::AtomicBool;
use fabro_types::RunId;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::v2::run::RunPullRequestLayer;
use fabro_types::settings::SettingsFile;
use fabro_types::settings::run::RunPullRequestLayer;
use crate::git::{GitAuthor, git_author_from_settings};

View file

@ -113,7 +113,7 @@ mod tests {
use fabro_store::Database;
use fabro_types::fixtures;
use fabro_types::run_event::RunSubmittedProps;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_types::{EventBody, RunEvent};
use object_store::memory::InMemory;

View file

@ -22,8 +22,8 @@ use fabro_graphviz::graph::{AttrValue, Edge, Graph, Node};
use fabro_llm::provider::Provider;
use fabro_sandbox::daytona::{DaytonaConfig, DaytonaSandbox, DaytonaSnapshotConfig};
use fabro_store::{ArtifactStore, Database};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::v2::run::{RunArtifactsLayer, RunLayer};
use fabro_types::settings::SettingsFile;
use fabro_types::settings::run::{RunArtifactsLayer, RunLayer};
use fabro_types::{RunId, StageId};
use fabro_workflow::artifact::sync_artifacts_to_env;
use fabro_workflow::context::Context;

View file

@ -26,8 +26,8 @@ use fabro_interview::{
};
use fabro_llm::provider::Provider;
use fabro_store::{ArtifactStore, Database};
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::v2::run::{RunArtifactsLayer, RunLayer};
use fabro_types::settings::SettingsFile;
use fabro_types::settings::run::{RunArtifactsLayer, RunLayer};
use fabro_types::{RunEvent, RunId, StageId};
use fabro_validate::{Severity, validate, validate_or_raise};
use fabro_workflow::context::Context;
@ -6019,7 +6019,7 @@ mod real_llm {
use async_trait::async_trait;
use fabro_graphviz::graph::Node;
use fabro_types::settings::v2::SettingsFile;
use fabro_types::settings::SettingsFile;
use fabro_workflow::context::Context;
use fabro_workflow::error::FabroError;
use fabro_workflow::handler::agent::{AgentHandler, CodergenBackend, CodergenResult};
@ -8091,7 +8091,7 @@ async fn hook_config_merge_run_overrides_by_name() {
// The legacy `Settings`-based TOML parsing tests were deleted in Stage
// 6.3b. Hook TOML parsing now flows through the v2 `SettingsFile` path,
// with coverage in `fabro-types::settings::v2::tree::tests` and the
// with coverage in `fabro-types::settings::tree::tests` and the
// fabro-cli integration tests under `cmd::config`.
// --- Blocking vs non-blocking behavior ---
@ -8241,7 +8241,7 @@ async fn hook_sandbox_false_runs_on_host() {
// Prompt and Agent hook TOML parsing: the legacy `Settings`-based
// variant of this test was deleted in Stage 6.3b; v2 coverage lives in
// `fabro-types::settings::v2::tree::tests`.
// `fabro-types::settings::tree::tests`.
// --- Events emitted correctly alongside hooks ---