knowark/clean-architecture-python
53.9
Adequate · 20 September 2026
523
lines of production code
Python
primary language
4
measurements over time
What this system is
Taskit is a command-line application for managing projects and tasks, persisting data via local JSON files. It provides administrative capabilities to create, update, and delete entities, along with agenda functions to transition tasks through stages like New, Progress, and Done. The system also supports reporting features that allow users to list and filter tasks and projects by various criteria.
Features
Initial release of Task and Project domain models
The application introduces the core domain models for the 'taskit' feature: \Task\ and \Project\. The \Task\ model initializes with a name and sets default values for attributes such as \uid\, \due\_date\, \priority\, \project\_id\, \stage\, and \comments\. The \Project\ model initializes with a name and defaults for \uid\ and \comments\. Both models support flexible initialization via keyword arguments, allowing users to override defaults or add custom attributes during instantiation.
taskit/application/models · high confidence
Initial release of the taskit application with CLI entry point
The taskit package is introduced as a new application, providing a command-line interface for managing projects and tasks. The entry point (\_\main\\_.py) initializes a JSON-based state by creating or loading a local database file (db.json) in the user's home directory (or a custom TASKIT\_DIR). It wires together coordinators for administration and agenda management, along with a JSON state reporter, and exposes these via a CLI tool that handles execution errors gracefully.
taskit · high confidence
Introduce application coordinators for task and project management
New coordinator classes (AdminCoordinator and AgendaCoordinator) have been added to manage application logic for tasks and projects. AdminCoordinator now handles creating, updating, and deleting projects and tasks via repository interactions. AgendaCoordinator manages task lifecycle operations, including creating tasks (which automatically sets the stage to 'New'), starting tasks (moving stage to 'Progress'), and completing tasks (moving stage to 'Done').
taskit/application/coordinators · high confidence
Introduce command-line interface for task management and reporting
The application now provides a CLI built with Click, exposing commands to create, update, and delete projects and tasks via the admin group, manage task lifecycle (create, start, complete) via the agenda group, and view task and project lists via the report group. Reports are formatted using the tabulate library, and the CLI accepts optional project\_id and stage filters to narrow down task listings.
taskit/infrastructure/cli · high confidence
Introduce in-memory repositories for tasks and projects with explicit error handling
The application layer now includes abstract repository interfaces and in-memory implementations for both tasks and projects. These repositories support full CRUD operations (add, get, update, delete) and raise a new \EntityNotFoundError\ when a requested entity is not found, ensuring consistent error handling for missing data.
taskit/application/repositories · high confidence
Introduction of StateReporter interface and MemoryStateReporter implementation
A new abstract StateReporter interface and its MemoryStateReporter implementation have been added to the application reporters module. This introduces a standardized contract for querying persisted tasks and projects, supporting operations such as listing all tasks, filtering by project or stage, and paginated project listings, enabling consistent state reporting across the application.
taskit/application/reporters · high confidence
JSON-based persistence and reporting infrastructure
The application now supports storing and retrieving data via JSON files. This change introduces JSON-specific implementations for task and project repositories, enabling CRUD operations (add, get, update, delete) with automatic UID generation and sequence tracking. It also adds a JSON state reporter to list tasks and projects with filtering and pagination capabilities. Date serialization is handled to ensure datetime objects are correctly written to and read from the JSON store.
taskit/infrastructure/data · high confidence
Test coverage
Added tests for CLI admin, agenda, and report commands; Added tests for JSON-based project and task repositories; Added tests for StateReporter abstract methods; Added tests for coordinators and utility functions; Added tests for task and project repository implementations; Added tests for the main entry point and error handling; Added unit tests for Project and Task models.
Dependencies
Initial dependency manifest for Python project
Added a new requirements.txt file listing 57 Python packages, establishing the project's dependency baseline. The manifest includes tools for documentation generation (Sphinx, MkDocs, mkdocs-material), testing and coverage (pytest, coverage, codecov), code quality and linting (pylint, autopep8, isort, mypy), and packaging (PyInstaller).
(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
Score
- CAI 52 → 54 (+1.5)
- Rubric changed (rubric-2026.08.17 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 98 → 99 (+0.8)
- Architecture 69 → 66 (-3.3)
- Maturity 37 → 41 (+4.3)
- Readiness 50 → 56 (+5.6)
- Security 100 → 80 (-20.0)
Resolved (10)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — no supported dependency manifest was read
- Duplicated block (6 lines × 2) (taskit/infrastructure/data/json/repositories/project_repository.py)
- Duplicated block (8 lines × 2) (taskit/infrastructure/data/json/repositories/project_repository.py)
- Duplicated block (8–10 lines × 2) (taskit/infrastructure/cli/admin.py)
- Duplicated block (9 lines × 2) (taskit/infrastructure/data/json/repositories/project_repository.py)
- LLM evaluation failed
- No exposed public API
- Test reliability not included
- single-maintainer — knowledge-concentration (bus factor) risk
New (79)
- Banned license: pyinstaller
- Banned license: pylint
- Critical CVE: [GHSA redacted] (requirements.txt)
- Critical CVE: [GHSA redacted] (requirements.txt)
- Duplicated block (10 lines × 2) (taskit/infrastructure/data/json/repositories/project_repository.py)
- Duplicated block (10 lines × 2) (taskit/infrastructure/data/json/repositories/project_repository.py)
- Duplicated block (7–9 lines × 2) (taskit/infrastructure/cli/admin.py)
- Duplicated block (8 lines × 2) (taskit/infrastructure/data/json/repositories/project_repository.py)
- High CVE: [GHSA redacted] (requirements.txt)
- High CVE: [GHSA redacted] (requirements.txt)
- High CVE: [GHSA redacted] (requirements.txt)
- High CVE: [GHSA redacted] (requirements.txt)
- High CVE: [GHSA redacted] (requirements.txt)
- High CVE: [GHSA redacted] (requirements.txt)
- High CVE: [GHSA redacted] (requirements.txt)
- High CVE: [GHSA redacted] (requirements.txt)
- High CVE: [GHSA redacted] (requirements.txt)
- High CVE: [GHSA redacted] (requirements.txt)
- High CVE: [GHSA redacted] (requirements.txt)
- High CVE: [GHSA redacted] (requirements.txt)
- …and 59 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
knowark/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 20 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 e194136001662d31acb3b144de45b2b1a5dcbc7d — 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.