02. Architecture Constraints¶
Technical Constraints¶
ID |
Constraint |
Rationale |
|---|---|---|
TC-1 |
Implemented in Python ≥ 3.12 |
Course toolchain defined in |
TC-2 |
No external runtime dependencies for core domain logic |
Keeps the domain pure, portable, and fast to test |
TC-3 |
Input/output via stdin / stdout (CLI) |
Simplest integration surface; trivially scriptable and testable |
TC-4 |
Code style enforced by black, isort, and ruff |
Configured in |
Organisational Constraints¶
ID |
Constraint |
Rationale |
|---|---|---|
OC-1 |
Architecture documented using the arc42 template |
Course requirement for Module 2 |
OC-2 |
C4 diagrams authored in PlantUML |
Pre-commit hook ( |
OC-3 |
Commit messages follow a defined convention |
Enforced by |
Domain Constraints¶
ID |
Constraint |
|---|---|
DC-1 |
The plateau is a finite rectangular grid; the lower-left corner is always |
DC-2 |
Valid headings: |
DC-3 |
Valid commands: |
DC-4 |
Rovers are processed sequentially — no concurrent movement |
DC-5 |
A rover that would move outside the plateau stays in place (safe-stop); no error is raised |
DC-6 |
(Optional) If obstacles are present, a rover stops before the obstacle and reports its last safe position |