Title: Party inheritance via relationship path in the instances DSL
Description
Currently, when a resource needs to record party ownership it does so explicitly — storing the party's id as an attribute (e.g. rsp_id) and wiring it up manually in a change. This works for a flat ownership model but breaks down when ownership is implicit in the graph topology.
In the NBN domain, an RSP owns NNI Groups directly. Everything beneath that — CVCs, AVCs, NNIs — belongs to the same RSP by virtue of how it relates back through the graph. There is no meaningful sense in which an AVC is independently owned; its ownership is inherited from the NNI Group it terminates at.
The same pattern applies to Place. A resource located at a place that belongs to a party should be able to inherit that party context without redundantly recording it as an attribute.
What we need
The instances DSL should support declaring that a party relationship is inherited through a named relationship path, with the ability to assign a local role that may differ from the role the party holds on the parent. For example:
instances do
inherit_party :operator, from: :owner, via: :reverse_relationships
end
This would tell diffo that the owning party is resolved by following the given relationship, inheriting the party context from the related resource rather than recording it as a local attribute.
Why it matters
Without this, every resource in a topology must independently store and maintain party ownership — creating redundant data, extra edges or attributes, and a maintenance burden when ownership changes. Inheritance through the graph reflects how ownership actually works in network domains, and keeps the model honest.
This is also relevant to how Place relates to Party — the same inheritance semantics apply wherever party context flows through a relationship rather than being directly asserted.
Title: Party inheritance via relationship path in the instances DSL
Description
Currently, when a resource needs to record party ownership it does so explicitly — storing the party's id as an attribute (e.g. rsp_id) and wiring it up manually in a change. This works for a flat ownership model but breaks down when ownership is implicit in the graph topology.
In the NBN domain, an RSP owns NNI Groups directly. Everything beneath that — CVCs, AVCs, NNIs — belongs to the same RSP by virtue of how it relates back through the graph. There is no meaningful sense in which an AVC is independently owned; its ownership is inherited from the NNI Group it terminates at.
The same pattern applies to Place. A resource located at a place that belongs to a party should be able to inherit that party context without redundantly recording it as an attribute.
What we need
The instances DSL should support declaring that a party relationship is inherited through a named relationship path, with the ability to assign a local role that may differ from the role the party holds on the parent. For example:
This would tell diffo that the owning party is resolved by following the given relationship, inheriting the party context from the related resource rather than recording it as a local attribute.
Why it matters
Without this, every resource in a topology must independently store and maintain party ownership — creating redundant data, extra edges or attributes, and a maintenance burden when ownership changes. Inheritance through the graph reflects how ownership actually works in network domains, and keeps the model honest.
This is also relevant to how Place relates to Party — the same inheritance semantics apply wherever party context flows through a relationship rather than being directly asserted.