Skip to content
CAI
Software that uses CAICheck a score

knowark/clean-architecture-python

53.9

Adequate · 20 September 2026

523

lines of production code

Python

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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.