git-ents.gitmain
⌘K
foforge
commit 466509c
model: annotate effect.definition and effect.deployment-property on Effect

Both rules were already satisfied by phase-2 code (Effect carries no executor/sandbox/retry field; effect_ref/result_ref derive the results namespace from the effect’s own name) but carried no Tracey marker, so ents-effect’s phase-5 coverage sweep found them uncovered. Adds the ids to the existing struct, builder, and test markers; no behavior change.

Assisted-by: Claude:claude-sonnet-4-6

Joseph D. Carpinelli · 1 month ago

Reviews

No reviews of this commit yet — record a verdict below.

Start a review

verdict

crates/ents-model/src/effect.rs @@ -32,7 +32,7 @@ /// let back: Effect = facet_git_tree::deserialize(&id, &store).expect("deserialize"); /// assert_eq!(back, effect); /// ``` -// @relation(model.effect-definition, meta-ref.typed-tree, model.extensibility, scope=file) +// @relation(model.effect-definition, effect.definition, effect.deployment-property, meta-ref.typed-tree, model.extensibility, scope=file) #[derive(Debug, Clone, PartialEq, Eq, Facet)] pub struct Effect { /// The raw `CommitQuery` text denoting the commit set this effect @@ -60,7 +60,7 @@ use super::*; #[rstest] - // @relation(model.effect-definition, meta-ref.typed-tree, scope=function, role=Verifies) + // @relation(model.effect-definition, effect.definition, meta-ref.typed-tree, scope=function, role=Verifies) fn effect_round_trips_through_a_tree() { let effect = Effect { trigger: "rev(refs/heads/main) & results(unit, pass)".to_owned(), @@ -76,7 +76,7 @@ #[case::executor("executor")] #[case::sandbox("sandbox")] #[case::retry("retry")] - // @relation(model.effect-definition, scope=function, role=Verifies) + // @relation(model.effect-definition, effect.deployment-property, scope=function, role=Verifies) fn effect_never_carries_a_deployment_field(#[case] forbidden: &str) { let Type::User(UserType::Struct(struct_ty)) = Effect::SHAPE.ty else { panic!("Effect must reflect as a struct");
crates/ents-model/src/namespace.rs @@ -61,15 +61,17 @@ } /// The ref holding the effect named `name` — `refs/meta/effects/<name>` -/// (`meta-ref.granularity`). -// @relation(meta-ref.granularity, scope=function) +/// (`meta-ref.granularity`, `effect.definition`). +// @relation(meta-ref.granularity, effect.definition, scope=function) pub fn effect_ref(name: &str) -> Result<FullName> { build(format!("refs/meta/effects/{name}")) } /// The canonical ref for one effect's result on one tested commit — -/// `refs/meta/results/<effect>/<short_oid>` (`meta-ref.granularity`). -// @relation(meta-ref.granularity, scope=function) +/// `refs/meta/results/<effect>/<short_oid>` (`meta-ref.granularity`, +/// `effect.definition`: derived from the effect's own name, never a +/// stored pattern). +// @relation(meta-ref.granularity, effect.definition, scope=function) pub fn result_ref(effect: &str, short_oid: &str) -> Result<FullName> { build(format!("refs/meta/results/{effect}/{short_oid}")) } @@ -393,7 +395,7 @@ } #[rstest] - // @relation(meta-ref.namespace, scope=function, role=Verifies) + // @relation(meta-ref.namespace, effect.definition, scope=function, role=Verifies) fn every_builder_stays_under_refs_meta() { let id = MemberId::new("jdc"); let built = [