Feature: Resource registry service coverage boost
  Target uncovered lines in resource_registry_service.py:
  - Lines 579, 581-582, 584-586: link_child type incompatibility ValidationError
  - Lines 646-648: link_child generic exception rollback
  - Lines 686-688: unlink_child generic exception rollback
  - Line 785: _build_tree_node type_filter skips non-matching children

  # ── link_child type incompatibility ──────────────────────────────

  Scenario: link_child rejects child type not in allowed_child_types
    Given an in-memory resource registry with two resources of incompatible types
    When I attempt to link the child to the parent with incompatible types
    Then a ValidationError should be raised indicating the child type is not allowed
    And the error details should contain the parent and child type names

  # ── link_child generic exception rollback ────────────────────────

  Scenario: link_child rolls back on unexpected generic exception
    Given a resource registry service prepared for link_child with a faulty session
    When I attempt link_child and a generic exception occurs
    Then the link_child session should have been rolled back
    And the generic exception from link_child should propagate

  # ── unlink_child generic exception rollback ──────────────────────

  Scenario: unlink_child rolls back on unexpected generic exception
    Given a resource registry service prepared for unlink_child with a faulty session
    When I attempt unlink_child and a generic exception occurs
    Then the unlink_child session should have been rolled back
    And the generic exception from unlink_child should propagate

  # ── _build_tree_node type_filter filtering ───────────────────────

  Scenario: get_resource_tree with type_filter excludes non-matching children
    Given an in-memory resource registry with a parent and two children of different types
    When I call get_resource_tree with a type_filter for only one child type
    Then the tree should contain only the child matching the type filter
    And the non-matching child should be excluded from the tree
