Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
b3b7520
checkpoint: manifest renames
lmolkova Feb 13, 2026
148bd04
another checkpoint
lmolkova Feb 14, 2026
ba91924
mostly ready
lmolkova Feb 14, 2026
a42f7c8
cleanup
lmolkova Feb 14, 2026
4ee4cd5
cleanup
lmolkova Feb 14, 2026
afd3cd6
cleanup
lmolkova Feb 14, 2026
4d8b90f
checkpoint: manifest renames
lmolkova Feb 13, 2026
c9fdf1c
another checkpoint
lmolkova Feb 14, 2026
9be8d84
mostly ready
lmolkova Feb 14, 2026
db3b09b
cleanup
lmolkova Feb 14, 2026
84c81c1
cleanup
lmolkova Feb 14, 2026
a7735b9
cleanup
lmolkova Feb 14, 2026
c87f4e0
Merge branch 'main' into manifest-renames
lmolkova Feb 14, 2026
404d05a
Update crates/weaver_resolver/data/circular-registry-test/registry_b/…
lmolkova Feb 14, 2026
29d557b
Update crates/weaver_resolver/data/registry-test-published-1/registry…
lmolkova Feb 14, 2026
90a8b60
cleanup
lmolkova Feb 14, 2026
f51b74a
Merge branch 'manifest-renames' of https://github.com/lmolkova/weaver…
lmolkova Feb 14, 2026
a47c54b
cleanup
lmolkova Feb 14, 2026
c4b60b2
cleanup
lmolkova Feb 15, 2026
9eba7c6
changelog
lmolkova Feb 15, 2026
ed45560
review
lmolkova Feb 15, 2026
4f6d544
try_into
lmolkova Feb 18, 2026
4688453
warning/error in the future, remove deprecated properties from the API
lmolkova Feb 18, 2026
587c0c9
unbox, private url
lmolkova Feb 18, 2026
1428955
remove some boxing
lmolkova Feb 18, 2026
2ec64fa
up
lmolkova Feb 18, 2026
99f03fb
tests
lmolkova Feb 18, 2026
8677b1b
Merge branch 'main' into manifest-renames
lmolkova Feb 18, 2026
95e350e
box and doc
lmolkova Feb 18, 2026
c492204
Merge branch 'main' into manifest-renames
lmolkova Feb 18, 2026
6a254f2
Merge branch 'main' into manifest-renames
lmolkova Feb 21, 2026
4134bf7
feedback
lmolkova Feb 21, 2026
09721d2
Merge branch 'main' into manifest-renames
jsuereth Feb 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion crates/weaver_codegen_test/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ fn main() {
path: SEMCONV_REGISTRY_PATH.into(),
};
let registry_repo =
RegistryRepo::try_new("main", &registry_path).unwrap_or_else(|e| process_error(&logger, e));
RegistryRepo::try_new(None, &registry_path).unwrap_or_else(|e| process_error(&logger, e));
let loaded = SchemaResolver::load_semconv_repository(registry_repo, FOLLOW_SYMLINKS)
.ignore(|e| matches!(e.severity(), Some(miette::Severity::Warning)))
.into_result_failing_non_fatal()
Expand Down
3 changes: 2 additions & 1 deletion crates/weaver_emit/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ mod tests {
use weaver_semconv::{
attribute::{AttributeType, Examples, PrimitiveOrArrayTypeSpec, RequirementLevel},
group::{GroupType, InstrumentSpec, SpanKindSpec},
schema_url::SchemaUrl,
stability::Stability,
};

Expand Down Expand Up @@ -590,7 +591,7 @@ mod tests {
};

let registry = ForgeResolvedRegistry {
registry_url: "TEST_V2".to_owned(),
schema_url: SchemaUrl::new("https://example.com/schemas/1.2.3".to_owned()),
registry: Registry {
attributes: vec![],
attribute_groups: vec![],
Expand Down
13 changes: 7 additions & 6 deletions crates/weaver_forge/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -842,6 +842,7 @@ mod tests {
use weaver_diff::diff_dir;
use weaver_resolver::{LoadedSemconvRegistry, SchemaResolver};
use weaver_semconv::registry_repo::RegistryRepo;
use weaver_semconv::schema_url::SchemaUrl;

use crate::config::{ApplicationMode, CaseConvention, Params, TemplateConfig, WeaverConfig};
use crate::debug::print_dedup_errors;
Expand All @@ -855,12 +856,12 @@ mod tests {
cli_params: Params,
ignore_non_fatal_errors: bool,
) -> (TemplateEngine, ResolvedRegistry, PathBuf, PathBuf) {
let registry_id = "default";
let schema_url = Some(SchemaUrl::new("https://default/1.0.0".to_owned()));
let path: VirtualDirectoryPath = "data/registry"
.try_into()
.expect("Invalid virtual directory path string");
let repo =
RegistryRepo::try_new(registry_id, &path).expect("Failed to construct repository");
RegistryRepo::try_new(schema_url, &path).expect("Failed to construct repository");
let registry_result = SchemaResolver::load_semconv_repository(repo, false);
// SemConvRegistry::try_from_path_pattern(registry_id, "data/*.yaml");
let registry = if ignore_non_fatal_errors {
Expand Down Expand Up @@ -1056,12 +1057,12 @@ mod tests {
});
engine.target_config.templates = Some(templates);

let registry_id = "default";
let path: VirtualDirectoryPath = "data/registry"
.try_into()
.expect("Invalid virtual directory path string");
let schema_url = Some(SchemaUrl::new("https://default/1.0.0".to_owned()));
let repo =
RegistryRepo::try_new(registry_id, &path).expect("Failed to construct repository");
RegistryRepo::try_new(schema_url, &path).expect("Failed to construct repository");
let loaded = SchemaResolver::load_semconv_repository(repo, false)
.into_result_with_non_fatal()
.expect("Failed to load registry")
Expand Down Expand Up @@ -1186,12 +1187,12 @@ mod tests {

#[test]
fn test_comment_format() {
let registry_id = "default";
let path: VirtualDirectoryPath = "data/mini_registry_for_comments"
.try_into()
.expect("Invalid virtual directory path string");
let schema_url = Some(SchemaUrl::new("https://default/1.0.0".to_owned()));
let repo =
RegistryRepo::try_new(registry_id, &path).expect("Failed to construct repository");
RegistryRepo::try_new(schema_url, &path).expect("Failed to construct repository");
let loaded = SchemaResolver::load_semconv_repository(repo, false)
.into_result_with_non_fatal()
.expect("Failed to load registry")
Expand Down
16 changes: 5 additions & 11 deletions crates/weaver_forge/src/v2/registry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use weaver_resolved_schema::{attribute::AttributeRef, v2::catalog::AttributeCatalog};
use weaver_semconv::schema_url::SchemaUrl;

use crate::{
error::Error,
Expand All @@ -24,8 +25,7 @@ use crate::{
#[serde(deny_unknown_fields)]
pub struct ForgeResolvedRegistry {
/// The semantic convention registry url.
#[serde(skip_serializing_if = "String::is_empty")]
pub registry_url: String,
pub schema_url: SchemaUrl,
// TODO - Attribute Groups
/// The signals defined in this registry.
pub registry: Registry,
Expand Down Expand Up @@ -413,7 +413,7 @@ impl ForgeResolvedRegistry {
}

Ok(Self {
registry_url: schema.schema_url.clone(),
schema_url: schema.schema_url.clone(),
registry: Registry {
attributes,
attribute_groups,
Expand Down Expand Up @@ -448,16 +448,14 @@ mod tests {
fn test_try_from_resolved_schema() {
let resolved_schema = ResolvedTelemetrySchema {
file_format: "2.0.0".to_owned(),
schema_url: "https://example.com/schema".to_owned(),
registry_id: "my-registry".to_owned(),
schema_url: SchemaUrl::new("https://example.com/schema".to_owned()),
attribute_catalog: vec![attribute::Attribute {
key: "test.attr".to_owned(),
r#type: AttributeType::PrimitiveOrArray(PrimitiveOrArrayTypeSpec::String),
examples: None,
common: CommonFields::default(),
}],
registry: v2::registry::Registry {
registry_url: "https://example.com/registry".to_owned(),
attributes: vec![attribute::AttributeRef(0)],
spans: vec![span::Span {
r#type: SignalId::from("my-span".to_owned()),
Expand Down Expand Up @@ -563,7 +561,6 @@ mod tests {
},
}],
},
registry_manifest: None,
};

let forge_registry =
Expand Down Expand Up @@ -613,11 +610,9 @@ mod tests {
fn test_try_from_resolved_schema_with_missing_attribute() {
let resolved_schema = ResolvedTelemetrySchema {
file_format: "2.0.0".to_owned(),
schema_url: "https://example.com/schema".to_owned(),
registry_id: "my-registry".to_owned(),
schema_url: SchemaUrl::new("https://example.com/schema".to_owned()),
attribute_catalog: vec![],
registry: v2::registry::Registry {
registry_url: "https://example.com/registry".to_owned(),
attributes: vec![], // No attributes - This is the logic bug.
spans: vec![span::Span {
r#type: SignalId::from("my-span".to_owned()),
Expand Down Expand Up @@ -645,7 +640,6 @@ mod tests {
metrics: vec![],
events: vec![],
},
registry_manifest: None,
};

let result = ForgeResolvedRegistry::try_from(resolved_schema);
Expand Down
12 changes: 6 additions & 6 deletions crates/weaver_live_check/src/advice/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ mod tests {

// Test DeprecatedAdvisor
let mut deprecated_advisor = DeprecatedAdvisor;
let deprecated_attr = Rc::new(VersionedAttribute::V1(Attribute {
let deprecated_attr = Rc::new(VersionedAttribute::V1(Box::new(Attribute {
name: "deprecated.attr".to_owned(),
requirement_level: RequirementLevel::Basic(BasicRequirementLevelSpec::Required),
r#type: PrimitiveOrArray(PrimitiveOrArrayTypeSpec::String),
Expand All @@ -179,7 +179,7 @@ mod tests {
role: None,
tags: None,
value: None,
}));
})));

let sample_attr = create_sample_attribute("deprecated.attr");
let sample = Sample::Attribute(sample_attr.clone());
Expand All @@ -198,7 +198,7 @@ mod tests {

// Test TypeAdvisor
let mut type_advisor = TypeAdvisor;
let int_attr = Rc::new(VersionedAttribute::V1(Attribute {
let int_attr = Rc::new(VersionedAttribute::V1(Box::new(Attribute {
name: "int.attr".to_owned(),
requirement_level: RequirementLevel::Basic(BasicRequirementLevelSpec::Required),
r#type: PrimitiveOrArray(PrimitiveOrArrayTypeSpec::Int),
Expand All @@ -214,7 +214,7 @@ mod tests {
role: None,
tags: None,
value: None,
}));
})));

let mut sample_attr = create_sample_attribute("int.attr");
sample_attr.r#type = Some(PrimitiveOrArrayTypeSpec::String);
Expand All @@ -236,7 +236,7 @@ mod tests {

// Test StabilityAdvisor
let mut stability_advisor = StabilityAdvisor;
let dev_attr = Rc::new(VersionedAttribute::V1(Attribute {
let dev_attr = Rc::new(VersionedAttribute::V1(Box::new(Attribute {
name: "dev.attr".to_owned(),
requirement_level: RequirementLevel::Basic(BasicRequirementLevelSpec::Required),
r#type: PrimitiveOrArray(PrimitiveOrArrayTypeSpec::String),
Expand All @@ -252,7 +252,7 @@ mod tests {
role: None,
tags: None,
value: None,
}));
})));

let sample_attr = create_sample_attribute("dev.attr");
let sample = Sample::Attribute(sample_attr.clone());
Expand Down
6 changes: 3 additions & 3 deletions crates/weaver_live_check/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,17 +118,17 @@ pub enum VersionedRegistry {
/// v1 ResolvedRegistry
V1(ResolvedRegistry),
/// v2 ForgeResolvedRegistry
V2(ForgeResolvedRegistry),
V2(Box<ForgeResolvedRegistry>),
}

/// Versioned enum for the attribute
#[derive(Debug, Clone, PartialEq, Serialize)]
#[serde(untagged)]
pub enum VersionedAttribute {
/// v1 Attribute
V1(weaver_resolved_schema::attribute::Attribute),
V1(Box<weaver_resolved_schema::attribute::Attribute>),
/// v2 Attribute
V2(weaver_forge::v2::attribute::Attribute),
V2(Box<weaver_forge::v2::attribute::Attribute>),
}

impl VersionedAttribute {
Expand Down
35 changes: 19 additions & 16 deletions crates/weaver_live_check/src/live_checker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ impl LiveChecker {
}
}
for attribute in &group.attributes {
let attribute_rc = Rc::new(VersionedAttribute::V1(attribute.clone()));
let attribute_rc =
Rc::new(VersionedAttribute::V1(Box::new(attribute.clone())));
match attribute.r#type {
AttributeType::Template(_) => {
templates_by_length
Expand Down Expand Up @@ -92,7 +93,7 @@ impl LiveChecker {
let _ = semconv_events.insert(event_name, event_rc);
}
for attribute in &registry.registry.attributes {
let attribute_rc = Rc::new(VersionedAttribute::V2(attribute.clone()));
let attribute_rc = Rc::new(VersionedAttribute::V2(Box::new(attribute.clone())));
match &attribute.r#type {
AttributeType::Template(_) => {
templates_by_length.push((attribute.key.clone(), attribute_rc.clone()));
Expand Down Expand Up @@ -185,7 +186,6 @@ mod tests {
span::{Span as V2Span, SpanAttribute},
};
use weaver_resolved_schema::attribute::Attribute;
use weaver_semconv::v2::{span::SpanName, CommonFields};
use weaver_semconv::{
attribute::{
AttributeType, BasicRequirementLevelSpec, EnumEntriesSpec, Examples,
Expand All @@ -195,6 +195,10 @@ mod tests {
stability::Stability,
YamlValue,
};
use weaver_semconv::{
schema_url::SchemaUrl,
v2::{span::SpanName, CommonFields},
};

fn get_all_advice(sample: &mut Sample) -> &mut [PolicyFinding] {
match sample {
Expand Down Expand Up @@ -507,8 +511,8 @@ mod tests {

fn make_registry(use_v2: bool) -> VersionedRegistry {
if use_v2 {
VersionedRegistry::V2(ForgeResolvedRegistry {
registry_url: "TEST".to_owned(),
VersionedRegistry::V2(Box::new(ForgeResolvedRegistry {
schema_url: SchemaUrl::new("https://example.com/schemas/1.2.3".to_owned()),
registry: Registry {
attributes: vec![
V2Attribute {
Expand Down Expand Up @@ -609,7 +613,7 @@ mod tests {
spans: vec![],
events: vec![],
},
})
}))
} else {
VersionedRegistry::V1(ResolvedRegistry {
registry_url: "TEST".to_owned(),
Expand Down Expand Up @@ -793,8 +797,8 @@ mod tests {
},
};

VersionedRegistry::V2(ForgeResolvedRegistry {
registry_url: "TEST_METRICS".to_owned(),
VersionedRegistry::V2(Box::new(ForgeResolvedRegistry {
schema_url: SchemaUrl::new("https://example.com/schemas/1.2.3".to_owned()),
registry: Registry {
attributes: vec![memory_state_attr.clone()],
attribute_groups: vec![],
Expand Down Expand Up @@ -842,7 +846,7 @@ mod tests {
spans: vec![],
events: vec![],
},
})
}))
} else {
VersionedRegistry::V1(ResolvedRegistry {
registry_url: "TEST_METRICS".to_owned(),
Expand Down Expand Up @@ -1001,9 +1005,8 @@ mod tests {
},
};

VersionedRegistry::V2(ForgeResolvedRegistry {
registry_url: "TEST".to_owned(),

VersionedRegistry::V2(Box::new(ForgeResolvedRegistry {
schema_url: SchemaUrl::new("https://example.com/schemas/1.2.3".to_owned()),
registry: Registry {
attributes: vec![custom_string_attr.clone()],
attribute_groups: vec![],
Expand Down Expand Up @@ -1038,7 +1041,7 @@ mod tests {
spans: vec![],
events: vec![],
},
})
}))
} else {
VersionedRegistry::V1(ResolvedRegistry {
registry_url: "TEST".to_owned(),
Expand Down Expand Up @@ -1516,8 +1519,8 @@ mod tests {
},
};

VersionedRegistry::V2(ForgeResolvedRegistry {
registry_url: "TEST_EVENTS".to_owned(),
VersionedRegistry::V2(Box::new(ForgeResolvedRegistry {
schema_url: SchemaUrl::new("https://example.com/schemas/1.2.3".to_owned()),
registry: Registry {
attributes: vec![session_id_attr.clone(), session_previous_id_attr.clone()],
attribute_groups: vec![],
Expand Down Expand Up @@ -1591,7 +1594,7 @@ mod tests {
spans: vec![],
events: vec![],
},
})
}))
} else {
VersionedRegistry::V1(ResolvedRegistry {
registry_url: "TEST_EVENTS".to_owned(),
Expand Down
6 changes: 4 additions & 2 deletions crates/weaver_mcp/src/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ impl WeaverMcpService {
let search_context = Arc::new(SearchContext::from_registry(&registry));

// Create versioned registry wrapper once for live check
let versioned_registry = Arc::new(VersionedRegistry::V2((*registry).clone()));
let versioned_registry =
Arc::new(VersionedRegistry::V2(Box::new(registry.as_ref().clone())));

Self {
search_context,
Expand Down Expand Up @@ -386,13 +387,14 @@ mod tests {
use weaver_search::SearchType;
use weaver_semconv::attribute::AttributeType;
use weaver_semconv::group::{InstrumentSpec, SpanKindSpec};
use weaver_semconv::schema_url::SchemaUrl;
use weaver_semconv::stability::Stability;
use weaver_semconv::v2::span::SpanName;
use weaver_semconv::v2::CommonFields;

fn make_test_registry() -> ForgeResolvedRegistry {
ForgeResolvedRegistry {
registry_url: "test".to_owned(),
schema_url: SchemaUrl::new("https://todo/1.0.0".to_owned()),
registry: Registry {
attributes: vec![Attribute {
key: "http.request.method".to_owned(),
Expand Down
Loading
Loading