Files

54 lines
2.4 KiB
Gherkin

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
@tdd_issue @tdd_issue_4186
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