Skip to content

fix(dr-egeria): fix silently-dropped/mis-mapped attributes found by new consumption audit - #372

Merged
dwolfson merged 1 commit into
odpi:mainfrom
dwolfson:fix/dr-egeria-attribute-consumption-audit
Sep 18, 2026
Merged

dwolfson merged 1 commit into
odpi:mainfrom
dwolfson:fix/dr-egeria-attribute-consumption-audit

Conversation

@dwolfson

Copy link
Copy Markdown
Member

Summary

Adds scripts/dr_egeria_attribute_consumption_audit.py, a static audit that checks whether every compact-spec attribute is actually read by its Dr.Egeria processor, and whether Reference Name/Reference Name List attributes are read with the matching guid/guid_list cardinality key. Used it to find and fix a wide batch of silently-dropped or mis-mapped attributes, plus two pyegeria SDK/model bugs it led to. Full root-cause writeups for every issue are in PYEGERIA_ISSUES.md (ISSUE-97 through ISSUE-106).

  • guid vs guid_list cardinality mismatches (In Data Specification/Structure/Dictionary/Field) leaving singular references unlinked
  • Digital Product's Current Version never mapped (and Product Status/Type removed as spec cruft with no real DTO field)
  • Purpose silently dropped on ~30 Collection-family commands despite being a required field
  • Data Lens's 9 fields, Data Grain's 3 fields, and Data Field's Position/Min/Max Cardinality never mapped
  • Link Agreement Terms and Conditions declared the wrong relationship type entirely (CollectionMembership instead of the real AgreementItem)
  • Link Associated List had no implementation at all (always raised NotImplementedError); wired via the existing generic MetadataExpert.create_related_elements mechanism
  • Create Glossary was unconditionally applying both Taxonomy and CanonicalVocabulary classifications regardless of user input
  • pyegeria: InitialClassifications' serializer popped the wrong dict key after by_alias=True dumping, silently dropping every classification property beyond class across the whole SDK
  • several case-mismatched/phantom-key attribute lookups (Allow Duplicates, Media Type Other Id, Dependency Description, etc.)
  • 10 compact-spec attributes removed as confirmed cruft (no backing field anywhere in the live Egeria type system)

Test plan

  • pytest tests/micro-tests -m unit passes, no regressions
  • validate_compact_specs: 0 errors
  • Every fix verified live against qs-view-server with throwaway elements — created, fetched back to confirm the actual persisted values, then deleted
  • scripts/dr_egeria_attribute_consumption_audit.py re-run scoped to every touched command: 0 findings

🤖 Generated with Claude Code

…ew consumption audit (ISSUE-97 to ISSUE-106)

Adds scripts/dr_egeria_attribute_consumption_audit.py, a static audit that
checks whether every compact-spec attribute is actually read by its
Dr.Egeria processor, and whether Reference Name/Reference Name List
attributes are read with the matching guid/guid_list cardinality key. Used
it to find and fix a wide batch of silently-dropped or mis-mapped
attributes across Data Designer, Digital Product, Governance Officer,
Collection Manager, Actor Manager, Solution Architect, and Feedback
commands, plus two pyegeria SDK/model bugs it led to:

- guid vs guid_list cardinality mismatches (In Data Specification/
  Structure/Dictionary/Field) leaving singular references unlinked
- Digital Product's Current Version never mapped (and Product Status/
  Type removed as spec cruft with no real DTO field)
- Purpose silently dropped on ~30 Collection-family commands despite
  being a required field
- Data Lens's 9 fields, Data Grain's 3 fields, and Data Field's
  Position/Min/Max Cardinality never mapped
- Link Agreement Terms and Conditions declared the wrong relationship
  type entirely (CollectionMembership instead of the real AgreementItem)
- Link Associated List had no implementation at all (always raised
  NotImplementedError); wired via the existing generic
  MetadataExpert.create_related_elements mechanism
- Create Glossary was unconditionally applying both Taxonomy and
  CanonicalVocabulary classifications regardless of user input
- pyegeria: InitialClassifications' serializer popped the wrong dict key
  after by_alias=True dumping, silently dropping every classification
  property beyond "class" across the whole SDK
- several case-mismatched/phantom-key attribute lookups (Allow
  Duplicates, Media Type Other Id, Dependency Description, etc.)
- 10 compact-spec attributes removed as confirmed cruft (no backing
  field anywhere in the live Egeria type system)

Every fix verified live against qs-view-server with throwaway elements,
fetched back and confirmed, then deleted. Full root-cause writeups for
each issue are in PYEGERIA_ISSUES.md (ISSUE-97 through ISSUE-106).

Signed-off-by: Dan Wolfson <dan.wolfson@pdr-associates.com>
@dwolfson
dwolfson merged commit ba8d0bd into odpi:main Sep 18, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant