Feature: Multi-project service coverage boost
  As a developer
  I want to test edge cases and guard clauses in MultiProjectService
  So that all code paths have test coverage

  Background:
    Given a fresh multi-project service

  # --- constructor guard: None decision_service (line 59) ---

  Scenario: Creating service with None decision_service raises ValueError
    When I create a MultiProjectService with a None decision_service
    Then a ValueError should have been raised with message "decision_service must not be None"

  # --- decision_service property accessor (line 66) ---

  Scenario: Accessing decision_service property returns injected service
    Then the decision_service property should return the injected mock

  # --- initialize_scopes: None plan guard (line 93) ---

  Scenario: Initialize scopes with None plan raises ValueError
    When I call initialize_scopes with a None plan
    Then a ValueError should have been raised with message "plan must not be None"

  # --- initialize_scopes: None available_resources guard (line 95) ---

  Scenario: Initialize scopes with None available_resources raises ValueError
    Given a simple two-project plan
    When I call initialize_scopes with None available_resources
    Then a ValueError should have been raised with message "available_resources must not be None"

  # --- resolve_context_view: None plan guard (line 157) ---

  Scenario: Resolve context view with None plan raises ValueError
    When I call resolve_context_view with a None plan and project "any"
    Then a ValueError should have been raised with message "plan must not be None"

  # --- record_changeset: None plan guard (line 196) ---

  Scenario: Record changeset with None plan raises ValueError
    When I call record_changeset with a None plan
    Then a ValueError should have been raised with message "plan must not be None"

  # --- record_changeset: metadata not initialized (lines 198-199) ---

  Scenario: Record changeset without initialized metadata raises ValueError
    Given a simple two-project plan
    When I call record_changeset on a plan without metadata
    Then a ValueError should have been raised with message "Multi-project metadata not initialized"

  # --- validate_cross_project: None plan (line 253) ---

  Scenario: Validate cross-project with None plan returns error
    When I call validate_cross_project with a None plan
    Then the validation result should contain "plan must not be None"

  # --- validate_cross_project: no metadata / single-project (line 255) ---

  Scenario: Validate cross-project with no metadata returns empty list
    Given a simple two-project plan
    When I call validate_cross_project on a plan without metadata
    Then the validation result should be an empty list

  # --- validate_cross_project: unknown source project (lines 283-285) ---

  Scenario: Validate cross-project with unknown source project in dependency
    Given a simple two-project plan
    And the plan has initialized scopes with resources
    And the plan has a cross-project dependency from unknown source "phantom-src" to known target "proj-a"
    When I call validate_cross_project on the prepared plan
    Then the validation result should contain "unknown source project 'phantom-src'"
