feat: tombstones record excludedBy for provenance tracking#420
feat: tombstones record excludedBy for provenance tracking#420vic merged 1 commit intodenful:mainfrom
Conversation
Tombstones now carry meta.excludedBy — the name of the aspect whose meta.adapter caused the exclusion. Combined with the existing meta.provider (structural origin from provides chain), tombstones clearly document both who defines an aspect and who excluded it. Tombstone meta fields: - provider — who defines this aspect (provides chain) - excludedBy — who excluded it (adapter source) - originalName — display name before ~prefix - replacedBy — replacement name (substitutions only)
| # name collisions with live aspects. Harmless to module, visible to trace. | ||
| # Consumers should check meta.excluded before accessing other aspect fields. | ||
| # Tombstone fields: | ||
| # meta.excluded — true |
There was a problem hiding this comment.
do we need meta.excluded ? given it is not present when false, we could be testing for meta ? excludedBy
There was a problem hiding this comment.
so is excluded = true when either replaced or excluded ?
There was a problem hiding this comment.
It could also be used outside of our specific chain.
There was a problem hiding this comment.
While it could be derived by either field, it does simplify validation when graph generating.
There was a problem hiding this comment.
One is a type tag, the other id debug/trace detail.
excludedBy is probably the wrong name -- I'll update this to excludedFrom, since it's where the tombstone is included
There was a problem hiding this comment.
Oh -- you already merged. I'll sneak it into my demo trace -> mermaid graph demo template since it has no consumers, unless you want a micro PR. :)
Tombstones now carry meta.excludedBy — the name of the aspect whose meta.adapter caused the exclusion. Combined with the existing meta.provider (structural origin from provides chain), tombstones clearly document both who defines an aspect and who excluded it.
Tombstone meta fields: