From 22fe3d2ce7478450a1d7443c4ecbd85fd4c46716 Mon Sep 17 00:00:00 2001 From: main Date: Fri, 20 Mar 2026 01:11:39 -0400 Subject: Excise git provenance from experiment ledger --- crates/fidget-spinner-core/src/id.rs | 1 - crates/fidget-spinner-core/src/lib.rs | 21 ++++---- crates/fidget-spinner-core/src/model.rs | 89 +++++++-------------------------- 3 files changed, 27 insertions(+), 84 deletions(-) (limited to 'crates/fidget-spinner-core/src') diff --git a/crates/fidget-spinner-core/src/id.rs b/crates/fidget-spinner-core/src/id.rs index ea2cd5a..7f696a3 100644 --- a/crates/fidget-spinner-core/src/id.rs +++ b/crates/fidget-spinner-core/src/id.rs @@ -39,7 +39,6 @@ macro_rules! define_id { define_id!(AgentSessionId); define_id!(AnnotationId); define_id!(ArtifactId); -define_id!(CheckpointId); define_id!(ExperimentId); define_id!(FrontierId); define_id!(NodeId); diff --git a/crates/fidget-spinner-core/src/lib.rs b/crates/fidget-spinner-core/src/lib.rs index 3c9aaac..1c4108a 100644 --- a/crates/fidget-spinner-core/src/lib.rs +++ b/crates/fidget-spinner-core/src/lib.rs @@ -12,17 +12,16 @@ mod model; pub use crate::error::CoreError; pub use crate::id::{ - AgentSessionId, AnnotationId, ArtifactId, CheckpointId, ExperimentId, FrontierId, NodeId, RunId, + AgentSessionId, AnnotationId, ArtifactId, ExperimentId, FrontierId, NodeId, RunId, }; pub use crate::model::{ - AdmissionState, AnnotationVisibility, ArtifactKind, ArtifactRef, CheckpointDisposition, - CheckpointRecord, CheckpointSnapshotRef, CodeSnapshotRef, CommandRecipe, CompletedExperiment, - DagEdge, DagNode, DiagnosticSeverity, EdgeKind, EvaluationProtocol, ExecutionBackend, - ExperimentResult, FieldPresence, FieldRole, FieldValueType, FrontierContract, FrontierNote, - FrontierProjection, FrontierRecord, FrontierStatus, FrontierVerdict, GitCommitHash, - InferencePolicy, JsonObject, MetricDefinition, MetricObservation, MetricSpec, MetricUnit, - MetricValue, NodeAnnotation, NodeClass, NodeDiagnostics, NodePayload, NodeTrack, NonEmptyText, - OpenExperiment, OptimizationObjective, PayloadSchemaRef, ProjectFieldSpec, ProjectSchema, - RunDimensionDefinition, RunDimensionValue, RunRecord, RunStatus, TagName, TagRecord, - ValidationDiagnostic, + AdmissionState, AnnotationVisibility, ArtifactKind, ArtifactRef, CommandRecipe, + CompletedExperiment, DagEdge, DagNode, DiagnosticSeverity, EdgeKind, EvaluationProtocol, + ExecutionBackend, ExperimentResult, FieldPresence, FieldRole, FieldValueType, FrontierContract, + FrontierNote, FrontierProjection, FrontierRecord, FrontierStatus, FrontierVerdict, + FrontierVerdictCounts, InferencePolicy, JsonObject, MetricDefinition, MetricObservation, + MetricSpec, MetricUnit, MetricValue, NodeAnnotation, NodeClass, NodeDiagnostics, NodePayload, + NodeTrack, NonEmptyText, OpenExperiment, OptimizationObjective, PayloadSchemaRef, + ProjectFieldSpec, ProjectSchema, RunDimensionDefinition, RunDimensionValue, RunRecord, + RunStatus, TagName, TagRecord, ValidationDiagnostic, }; diff --git a/crates/fidget-spinner-core/src/model.rs b/crates/fidget-spinner-core/src/model.rs index 170f49c..88050a2 100644 --- a/crates/fidget-spinner-core/src/model.rs +++ b/crates/fidget-spinner-core/src/model.rs @@ -8,8 +8,7 @@ use time::OffsetDateTime; use time::format_description::well_known::Rfc3339; use crate::{ - AgentSessionId, AnnotationId, ArtifactId, CheckpointId, CoreError, ExperimentId, FrontierId, - NodeId, RunId, + AgentSessionId, AnnotationId, ArtifactId, CoreError, ExperimentId, FrontierId, NodeId, RunId, }; #[derive(Clone, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)] @@ -37,27 +36,6 @@ impl Display for NonEmptyText { } } -#[derive(Clone, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)] -#[serde(transparent)] -pub struct GitCommitHash(NonEmptyText); - -impl GitCommitHash { - pub fn new(value: impl Into) -> Result { - NonEmptyText::new(value).map(Self) - } - - #[must_use] - pub fn as_str(&self) -> &str { - self.0.as_str() - } -} - -impl Display for GitCommitHash { - fn fmt(&self, formatter: &mut Formatter<'_>) -> fmt::Result { - Display::fmt(&self.0, formatter) - } -} - #[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd, Serialize, Deserialize)] #[serde(try_from = "String", into = "String")] pub struct TagName(String); @@ -286,15 +264,6 @@ pub enum FrontierStatus { Archived, } -#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)] -pub enum CheckpointDisposition { - Champion, - FrontierCandidate, - Baseline, - DeadEnd, - Archived, -} - #[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)] pub enum MetricUnit { Seconds, @@ -418,12 +387,12 @@ pub enum ExecutionBackend { } #[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)] +#[serde(rename_all = "snake_case")] pub enum FrontierVerdict { - PromoteToChampion, - KeepOnFrontier, - RevertToChampion, - ArchiveDeadEnd, - NeedsMoreEvidence, + Accepted, + Kept, + Parked, + Rejected, } #[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)] @@ -731,23 +700,6 @@ pub struct ArtifactRef { pub produced_by_run: Option, } -#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] -pub struct CodeSnapshotRef { - pub repo_root: Utf8PathBuf, - pub worktree_root: Utf8PathBuf, - pub worktree_name: Option, - pub head_commit: Option, - pub dirty_paths: BTreeSet, -} - -#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] -pub struct CheckpointSnapshotRef { - pub repo_root: Utf8PathBuf, - pub worktree_root: Utf8PathBuf, - pub worktree_name: Option, - pub commit_hash: GitCommitHash, -} - #[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] pub struct CommandRecipe { pub working_directory: Utf8PathBuf, @@ -831,17 +783,6 @@ impl FrontierRecord { } } -#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] -pub struct CheckpointRecord { - pub id: CheckpointId, - pub frontier_id: FrontierId, - pub node_id: NodeId, - pub snapshot: CheckpointSnapshotRef, - pub disposition: CheckpointDisposition, - pub summary: NonEmptyText, - pub created_at: OffsetDateTime, -} - #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] pub struct RunRecord { pub node_id: NodeId, @@ -849,7 +790,6 @@ pub struct RunRecord { pub frontier_id: Option, pub status: RunStatus, pub backend: ExecutionBackend, - pub code_snapshot: Option, pub dimensions: BTreeMap, pub command: CommandRecipe, pub started_at: Option, @@ -868,7 +808,6 @@ pub struct ExperimentResult { pub struct OpenExperiment { pub id: ExperimentId, pub frontier_id: FrontierId, - pub base_checkpoint_id: CheckpointId, pub hypothesis_node_id: NodeId, pub title: NonEmptyText, pub summary: Option, @@ -885,8 +824,6 @@ pub struct FrontierNote { pub struct CompletedExperiment { pub id: ExperimentId, pub frontier_id: FrontierId, - pub base_checkpoint_id: CheckpointId, - pub candidate_checkpoint_id: CheckpointId, pub hypothesis_node_id: NodeId, pub run_node_id: NodeId, pub run_id: RunId, @@ -900,12 +837,20 @@ pub struct CompletedExperiment { pub created_at: OffsetDateTime, } +#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)] +pub struct FrontierVerdictCounts { + pub accepted: u64, + pub kept: u64, + pub parked: u64, + pub rejected: u64, +} + #[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] pub struct FrontierProjection { pub frontier: FrontierRecord, - pub champion_checkpoint_id: Option, - pub candidate_checkpoint_ids: BTreeSet, - pub experiment_count: u64, + pub open_experiment_count: u64, + pub completed_experiment_count: u64, + pub verdict_counts: FrontierVerdictCounts, } #[cfg(test)] -- cgit v1.2.3