You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
resolve_reverse_segment degrades silently on two DB errors, producing a false 'broken path' rejection for a legitimate inherited reverse relationship #2885
Surfaced by a codebase scan focused on the extends-chain/ADR-078 bug class. Related to (but distinct from) core#2885 (validate_play's own-hop error-blame issue).
Problem
resolve_reverse_segment (packages/core/src/playbook/validation.rs:739-763) has two silent-degradation points:
resolve_type_chain(...).unwrap_or_else(|_| vec![node_type]) collapses the ancestor chain to just the concrete type on error.
get_inbound_relationships's Err case does continue, skipping that candidate silently.
Either failure makes a legitimate inherited reverse relationship name (e.g. node.blocked_by declared on an ancestor, used on a subtype instance) resolve to None. The caller then reports this as a broken path, blaming the user's expression for a transient DB error — no log, no degraded_reasons entry, nothing to distinguish it from a genuine typo.
Suggested approach
Same pattern as the other validation.rs findings from this scan (core#2885): propagate the error instead of silently degrading to a possibly-wrong answer, or at minimum log loudly and/or surface it distinctly from a real "not found."
Activity
mstomar125 commentedon Sep 25, 2026
Frontend: 5269 passed
Address review: rebase onto merged sibling fix, avoid unconditional f…
Distinguish schema lookup failure from missing schema in play validat…