The component diagram parser drops three declaration shapes
Table of Contents
This page is a capture in the inbox bucket of the product backlog — a pre-sprint idea, not yet pulled into a sprint as a story.
1. What
Fix `build/scripts/generate_component_puml.py` so it reads three declaration shapes it currently drops, and regenerate every component's committed diagram in one pass, because the automated section of all of them comes from that script.
2. Why
The three shapes, all found while refreshing the `ores.telemetry` diagrams:
- a base clause that wraps onto the next line, `class database_sink_backend :` then `public telemetry_sink_backend {`, so the whole class disappears from the diagram;
- a `static` data member, which the skip list matches before the member pattern sees it — the protocol messages carry `nats_subject`, `requires_session` and `response_type` exactly this way;
- a member whose initialiser continues on the next line, so the declaration never reaches its semicolon.
A fix was written and measured before it was withdrawn. The measurement corrects the first reading of it: `–all –dry-run` with the parser untouched already reports 69 of 85 projects would change, so most of the churn is pre-existing staleness in the committed diagrams rather than the fix. What the fix adds on top of that baseline is still not confined to one component: the `static` member fix reaches 23 projects outside `ores.telemetry`, each join step reaches 4, and all three together reach 28. A component clean-up must not rewrite 72 other components' diagrams, and several of those components belong to environments with work in flight, so the fix needs its own story with the whole-tree regeneration as its change. The clean standard's G05 asks for the fix at the source with a regression test; the component that found it records the three defects here and draws them by hand in its manual diagram pass until this lands.
3. References
build/scripts/generate_component_puml.py— the parser, its `_SKIP_LINE_RE` and the declaration patterns.projects/ores.codegen/tests/test_plantuml_component_parse_class_attribute.py— the shape a regression case takes; the nats clean-up fixed the same parser's attribute handling and left its cases there.projects/ores.telemetry/core/modeling/ores.telemetry.core.puml— the manual pass that draws the three shapes today.