Feature: DetailLevelMap coverage for uncovered lines
  Exercises previously uncovered code paths in detail_level.py:
  lines 157, 166-170, 181, 250-252.

  Background:
    Given the detail level module is imported

  Scenario: copy.copy produces an independent DetailLevelMap clone
    Given a DetailLevelMap with domain "uko-code:" and levels {"MODULE": 0, "FULL": 9} and max_depth 9
    When I shallow-copy the DetailLevelMap
    Then the copy should be a distinct DetailLevelMap instance
    And the copy should have the same domain and levels as the original

  Scenario: __deepcopy__ with None memo creates a fresh memo dict
    Given a DetailLevelMap with domain "uko-deep:" and levels {"A": 1} and max_depth 5
    When I call __deepcopy__ with None memo
    Then the deep copy should be a valid DetailLevelMap with the same data

  Scenario: register rejects depth exceeding max_depth
    Given a DetailLevelMap with domain "uko-bounded:" and levels {"BASE": 0} and max_depth 3
    When I register a level "OVERFLOW" with depth 10
    Then a ValueError should be raised mentioning exceeds max_depth

  Scenario: __setattr__ defense-in-depth re-freezes levels when model validator is bypassed
    Given a DetailLevelMap with domain "uko-defense:" and levels {"X": 1} and max_depth 5
    When I assign a plain dict to levels while bypassing Pydantic model validation
    Then levels should still be a MappingProxyType after the defense-in-depth re-freeze
