model: annotate effect.definition and effect.deployment-property on Effect
commit
466509cmodel: 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
Reviews
No reviews of this commit yet — record a verdict below.
Start a review
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 = [