koei-kaji/ddd-clean-architecture-python
56.1
Adequate · 21 September 2026
686
lines of production code
Python
primary language
4
measurements over time
What this system is
Features
Add Python 3.11 containerization and build tooling
The project now supports running as a Docker container for both REST and gRPC services, using Python 3.11.5. A Makefile has been added to automate building, scanning, and running the services, and the project has switched its dependency management from Poetry to Rye, with corresponding lockfiles and configuration files (mypy.ini, renovate.json) added to support the new tooling.
(repo-wide) · high confidence
Add gRPC service for retrieving all tasks
The application now exposes a gRPC interface for fetching all tasks. This includes a new protobuf definition (src/grpc\_protos/todo.proto) and corresponding Python implementations for the server (src/grpc\_server.py) and client (src/grpc\_client.py). The server listens on port 50051, while the client connects to localhost:50051 to retrieve task data.
src · high confidence
Added gRPC service definitions for the Todo application
The \src/\_grpc\ directory now contains the generated Python code for the \TodoApplication\ gRPC service. This includes the protobuf message definitions for \Empty\ and \ToDo\ entities, along with the corresponding gRPC stubs and servicer interfaces that allow clients to call the \GetAll\ method to retrieve a stream of to-do items.
_src/\grpc · high confidence
Introduce REST API for task management
The \src/rest\_api\ module now provides a complete RESTful interface for managing tasks, including endpoints for creating, retrieving, updating, and deleting tasks, as well as a health check. The API is mounted under the \/api/todo\ prefix, and request/response models are defined using Pydantic to enforce strict string types for task identifiers and names.
_src/rest\api · high confidence
Introduced domain models, application interactors, and in-memory infrastructure for tasks
Added the core domain models (Task, TaskId, TaskName, TaskStatus) and their base classes, along with application-layer interactor classes for registering, retrieving, updating, and deleting tasks. The change also includes an in-memory implementation of the task repository, factory, and query service, wired together via a dependency injection container that routes requests to the appropriate interactor.
src/todo · high confidence
Behavioural changes
Migrate to Pydantic v2 ConfigDict for model configuration
The custom Pydantic models now use Pydantic v2's ConfigDict for defining base configurations, replacing the previous approach. This introduces validate\_default and extra='forbid' settings for standard models, and adds a frozen=True constraint for frozen models, ensuring stricter validation and immutability at the base level.
_src/custom\pydantic · medium confidence
Test coverage
Added initial test suite for the REST API interface
Added a new test suite for the REST API interface, including a conftest.py that provides a TestClient fixture for the FastAPI app, and a test file that verifies the /healthz endpoint returns a 200 OK status code.
src/tests · high confidence
Dependencies
Migrate project configuration to Rye and Hatch
The project's build and dependency management has been migrated from Poetry to Rye, utilizing a new pyproject.toml configuration. This change introduces a comprehensive set of dependencies including FastAPI, Uvicorn, Pydantic, and gRPC tools, while also adding Rye as the primary tool for managing both production and development dependencies.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 58 → 56 (-1.9)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 99 (-1.3)
- Architecture 69 → 69 (+0.0)
- Maturity 47 → 47 (+0.0)
- Readiness 53 → 47 (-5.7)
- Security 86 → 81 (-5.3)
- Domain Modelling 100 → 100 (+0.0)
Resolved (8)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High: security finding (details withheld)
- High: security finding (details withheld)
- LLM evaluation failed
- No exposed public API
- Test reliability not included
- dormant codebase — no living knowledge left to concentrate
New (17)
- Dependency hygiene PARTLY measured — Python dependencies read, no exact pin to grade for currency
- Documentation: no installation or build instructions (README.md)
- Documentation: no licence statement (README.md)
- Documentation: no usage examples (README.md)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium IaC: WD-DOCKER-0003 (Dockerfile.grpc)
- Medium IaC: WD-DOCKER-0003 (Dockerfile.rest)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- No dependency advisory monitoring
- TodoComment (src/rest_api/main.py)
- TodoComment (src/rest_api/main.py)
- TodoComment (src/todo/application/tasks/update/task_update_interactor.py)
- Workflow token permissions not restricted
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
koei-kaji/ddd-clean-architecture-python was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 2dfcaef7ad164e0ba908ad4b8896f8e0475d0490 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.