Skip to content

Report buckets are blind to imperfections inside shared/registered record fields β€” component reads βœ… usable while carrying a πŸ›‘ fieldΒ #133

Description

@jagguji

From the #131/#132 reviews (the reminder in the #132 review; first surfaced against the shared-base-spread path).

Problem

report(ir) walks each component prop's IR node via imperfection(), but a typeRef to a REGISTERED shared record is opaque to that walk β€” imperfections live inside the registry entry's fields, not on the ref node. Similarly irHasImperfection(ref) in the shared-base-spread gate (#82) inspects only the ref node. Consequences:

Suggested fix

Give imperfection()/report() (and the #82 gate) registry access so a typeRef resolves to its entry and the walk descends into record fields / unboxed members / opaque views β€” with a visited-set for cycles. Component buckets then reflect the TRUE worst imperfection reachable from their props. Alternatively (cheaper): registry entries cache their own worst-imperfection at registration time and refs carry it.

Per #107's contract framing: nothing may degrade unflagged β€” the inline field comments are correct today; it's the REPORT aggregation that under-reports.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions