Feature: Architecture validation
  As a developer
  I want to verify the architecture follows our ADRs
  So that the codebase remains maintainable

  Scenario: ADR directory is absent after cleanup
    Given the ADR directory "docs/architecture/decisions" may be absent
    Then the ADR check should be skipped when the directory is missing

  Scenario: Package structure follows layering ADR
    Given the source directory exists at "src/cleveragents"
    When I check the package structure
    Then I should find these main packages:
      | package          | description                      |
      | cli              | Command line interface           |
      | application      | Business logic and workflows     |
      | domain           | Domain models and contracts      |
      | infrastructure   | External integrations            |
      | providers        | Model provider implementations   |
      | config           | Configuration management         |
      | core             | Shared core components          |
      | shared           | Cross-cutting concerns          |

  Scenario: Dependencies follow inversion principle
    Given the package structure is defined
    When I analyze package imports
    Then domain should not import from infrastructure
    And domain should not import from application
    And the core package should be self-contained

  Scenario: Configuration uses CLEVERAGENTS prefix
    Given the settings module exists
    When I check environment variable definitions
    Then all application variables should use CLEVERAGENTS_ prefix
    And provider variables should keep their original prefix

  Scenario: Type hints are used throughout
    Given the source code exists
    When I check for type annotations
    Then all public functions should have type hints
    And all dataclasses should use Pydantic models

  Scenario: CONTRIBUTING documents LangChain best practices
    When I read the CONTRIBUTING guidelines
    Then the contributing document should include "LangChain/LangGraph Best Practices"
    And the contributing document should include "Graph Design Patterns"
    And the contributing document should include "Testing LangChain/LangGraph Code"

  Scenario: Every source module imports without errors
    Given the source directory exists at "src/cleveragents"
    When I import every module under the source directory
    Then every module should import without errors
