use std::sync::Arc;
use anyhow::Result;
use iceberg::spec::{NestedField, PrimitiveType, Schema, Type};
pub fn bench_runs() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "run_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(4, "date", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "machine", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "cores", Type::Primitive(PrimitiveType::Int))),
])
.build()?)
}
pub fn bench_results() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "run_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "result_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "metric_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "metric_value", Type::Primitive(PrimitiveType::Double))),
])
.build()?)
}
pub fn bench_telemetry() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "run_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "bench", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "n_cores", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(5, "cpu_pct_avg", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::required(6, "cpu_pct_max", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::required(7, "cores_busy_avg", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::required(8, "cores_busy_max", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(9, "mem_peak_mb", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::required(10, "mem_pct_max", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::required(11, "elapsed_ms", Type::Primitive(PrimitiveType::Double))),
])
.build()?)
}
pub fn test_outcomes() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "run_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "test_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "passed", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::optional(4, "duration_ms", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::optional(5, "message", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(6, "source_repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(7, "source_crate", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(8, "attempt_idx", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::optional(9, "retry_of_run_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(10, "quarantined", Type::Primitive(PrimitiveType::Boolean))),
])
.build()?)
}
pub fn test_results() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "run_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "suite", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "test_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "status", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "duration_ms", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::required(7, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(8, "message", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(9, "aspect", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(10, "metric", Type::Primitive(PrimitiveType::Double))),
])
.build()?)
}
pub fn dep_graph_edges() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "workspace_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(4, "from_repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "to_repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "via_crate", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn release_lineage() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "release_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "workspace_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(4, "dep_graph_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "build_order_idx", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(6, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "git_sha", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "git_branch", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(9, "git_dirty", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::required(10, "gate_status", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(11, "tests_passed", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(12, "tests_failed", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(13, "dry_run", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::required(14, "published_versions_csv", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(15, "tantivy_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(16, "dwarf_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(17, "gimli_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(18, "git_tag", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(19, "git_tag_matches_published", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::optional(20, "rustdoc_json_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(21, "patch_lines_stripped", Type::Primitive(PrimitiveType::Int))),
])
.build()?)
}
pub fn release_events() -> Result<Schema> {
use iceberg::spec::ListType;
let depends_on = Type::List(ListType::new(Arc::new(NestedField::required(
111,
"element",
Type::Primitive(PrimitiveType::String),
))));
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "run_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "seq", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(3, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(4, "component", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "op", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "phase", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "status", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(9, "detail", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(10, "depends_on", depends_on)),
Arc::new(NestedField::optional(11, "elapsed_ms", Type::Primitive(PrimitiveType::Long))),
])
.build()?)
}
pub fn funnel_events() -> Result<Schema> {
use iceberg::spec::{ListType, StructType};
let commit_struct = Type::Struct(StructType::new(vec![
Arc::new(NestedField::required(101, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(102, "sha", Type::Primitive(PrimitiveType::String))),
]));
let list_string = |elem_id: i32| {
Type::List(ListType::new(Arc::new(NestedField::required(
elem_id,
"element",
Type::Primitive(PrimitiveType::String),
))))
};
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "event_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(3, "kind", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(4, "idea_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(5, "plan_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(6, "node_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(7, "run_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(8, "from_node", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(9, "to_node", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(10, "source", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(11, "text", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(12, "refs", list_string(112))),
Arc::new(NestedField::optional(13, "decision", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(14, "node_status", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(15, "plan_status", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(16, "why", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(17, "summary", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(18, "planner", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(19, "node_kind", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(20, "targets", list_string(120))),
Arc::new(NestedField::optional(21, "prompt_excerpt", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(22, "params_json", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(23, "ran_by", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(24, "outcome", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(25, "log_ref", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(26, "produced_commits",
Type::List(ListType::new(Arc::new(NestedField::required(126, "element", commit_struct)))))),
Arc::new(NestedField::optional(27, "produced_test_runs", list_string(127))),
])
.build()?)
}
pub fn artifact_snapshots() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "workspace", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "git_sha", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "branch", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(7, "schema_hash", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "blob_count", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(9, "total_bytes", Type::Primitive(PrimitiveType::Long))),
])
.build()?)
}
pub fn artifact_blobs() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "filename", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "bytes", Type::Primitive(PrimitiveType::Binary))),
Arc::new(NestedField::required(4, "byte_len", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(5, "sha256", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn doc_exports() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "export_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "workspace", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "doc_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "format", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "git_sha", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(9, "sha256", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(10, "byte_len", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(11, "bytes", Type::Primitive(PrimitiveType::Binary))),
])
.build()?)
}
pub fn embeddings() -> Result<Schema> {
use iceberg::spec::ListType;
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "content_hash", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "model_profile", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "dim", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(
4,
"vector",
Type::List(ListType::new(Arc::new(NestedField::required(
104,
"element",
Type::Primitive(PrimitiveType::Float),
)))),
)),
Arc::new(NestedField::required(5, "normalized", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::required(6, "vector_sha256", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn embedding_snapshots() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "workspace", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "git_sha", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "branch", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "model_profile", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "chunker_hash", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "fileset_hash", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(9, "complete", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::required(10, "row_count", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(11, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
])
.build()?)
}
pub fn embedding_manifest() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "ordinal", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(3, "content_hash", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "model_profile", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "file", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "start_line", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(7, "end_line", Type::Primitive(PrimitiveType::Int))),
])
.build()?)
}
pub fn path_dep_audits() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "release_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "manifest_path", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "dep_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "dep_path", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "has_version", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::optional(7, "version_req", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "ok", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::required(9, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
])
.build()?)
}
pub fn patch_strip_events() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "release_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "file", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "line", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(5, "raw_line", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "action", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
])
.build()?)
}
pub fn publish_attempts() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "release_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "attempt_idx", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(6, "started_ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::optional(7, "index_seen_ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::optional(8, "wait_ms", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::optional(9, "http_status", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(10, "outcome", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(11, "stderr_excerpt", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn crate_metadata_checks() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "release_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "has_readme", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::required(6, "has_license", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::optional(7, "license_expr", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "has_repository", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::optional(9, "repository_url", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(10, "has_description", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::optional(11, "description_len", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(12, "ok", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::required(13, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
])
.build()?)
}
pub fn crate_tarball_stats() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "release_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "tarball_bytes", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(6, "file_count", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::optional(7, "largest_file", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(8, "largest_file_bytes", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::optional(9, "p50_bytes_baseline", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(10, "exceeds_threshold", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::required(11, "threshold_bytes", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(12, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
])
.build()?)
}
pub fn yank_events() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "event_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(3, "dep_graph_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "action", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(8, "reason", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(9, "requested_by", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(10, "cascade_root_event_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(11, "http_status", Type::Primitive(PrimitiveType::Int))),
])
.build()?)
}
pub fn semver_diffs() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "from_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "to_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "added_items", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(6, "removed_items", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(7, "changed_items", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(8, "suggested_bump", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(9, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
])
.build()?)
}
pub fn links_declarations() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "dep_graph_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "links_value", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "manifest_path", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn resolved_features() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "dep_graph_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "workspace_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "member_repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "member_crate", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "dep_crate", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "dep_version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "feature", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "source", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn msrv_probes() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "probe_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(4, "declared_rust_version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "probed_rust_version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "probe_status", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::optional(8, "ci_run_id", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn test_impacted_selections() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "run_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "dep_graph_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "changed_repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "selected_test_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "reason", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
])
.build()?)
}
pub fn test_quarantines() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "test_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "quarantined_at_ts", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::optional(4, "unquarantined_at_ts", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(5, "pass_rate_window", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::required(6, "sample_size", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(7, "decision_reason", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(8, "decided_by", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn release_commits() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "release_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "git_sha", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(4, "parent_sha", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "author", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::optional(7, "conventional_type", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(8, "scope", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(9, "breaking", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::required(10, "subject", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(11, "body", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn registry_mirrors() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "mirror_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "release_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "source_registry", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "target_registry", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "started_ts", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::optional(9, "completed_ts", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::optional(10, "bytes_copied", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::optional(11, "sha256", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(12, "outcome", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(13, "error", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn version_bump_plans() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "plan_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(3, "dep_graph_snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "scope", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(5, "requested_by", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn version_bump_targets() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "plan_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "from_version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "to_version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "reason", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "applied", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::optional(8, "applied_release_id", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn symbol_facts() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(3, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "module_path", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "item_kind", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "item_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "visibility", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(9, "file", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(10, "line", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::required(11, "doc_lines", Type::Primitive(PrimitiveType::Int))),
Arc::new(NestedField::optional(12, "signature", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn call_edges() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(3, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "caller_path", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "callee_ident", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "call_kind", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "file", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(9, "line", Type::Primitive(PrimitiveType::Int))),
])
.build()?)
}
pub fn feature_gate_facts() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(3, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "crate_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "module_path", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "item_name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "cfg_expr", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(8, "file", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(9, "line", Type::Primitive(PrimitiveType::Int))),
])
.build()?)
}
pub fn git_heat_facts() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(3, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "file", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "commits_total", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(6, "commits_30d", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(7, "commits_90d", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(8, "authors_total", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(9, "last_commit_ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
])
.build()?)
}
pub fn mcp_requests() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(2, "tool", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "status", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "latency_ms", Type::Primitive(PrimitiveType::Long))),
])
.build()?)
}
pub fn viz_actions() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "session_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "seq", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(3, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(4, "kind", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "workspace", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "tab", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "detail", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn vuln_findings() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "crate", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "ids", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "summary", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "checked_at_micros", Type::Primitive(PrimitiveType::Timestamptz))),
])
.build()?)
}
pub fn sbom_components() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(3, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "name", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "version", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "license", Type::Primitive(PrimitiveType::String))),
])
.build()?)
}
pub fn agent_model_runs() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "run_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "ts_micros", Type::Primitive(PrimitiveType::Timestamptz))),
Arc::new(NestedField::required(3, "model", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "prompt_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(5, "prompt", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(6, "output", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(7, "latency_ms", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::required(8, "tokens_in", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(9, "tokens_out", Type::Primitive(PrimitiveType::Long))),
Arc::new(NestedField::required(10, "tokens_per_s", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::required(11, "score", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::required(12, "ok", Type::Primitive(PrimitiveType::Boolean))),
Arc::new(NestedField::optional(13, "error", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(14, "agent", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::optional(15, "cost_usd", Type::Primitive(PrimitiveType::Double))),
Arc::new(NestedField::optional(16, "mcp_tool_calls", Type::Primitive(PrimitiveType::Long))),
])
.build()?)
}
pub fn knowledge_scans() -> Result<Schema> {
Ok(Schema::builder()
.with_schema_id(0)
.with_fields(vec![
Arc::new(NestedField::required(1, "repo", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(2, "git_sha", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(3, "snapshot_id", Type::Primitive(PrimitiveType::String))),
Arc::new(NestedField::required(4, "scanned_at_micros", Type::Primitive(PrimitiveType::Timestamptz))),
])
.build()?)
}