Skip to content
CAI
Software that uses CAICheck a score

PerfectlySoft/Perfect

49.7

Weak · 27 September 2026

2.6k

lines of production code

Swift

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Added core library components for file, directory, and system process management

Introduced new \Bytes\, \Dir\, \File\, \JSONConvertible\, \Log\, \PerfectError\, \PerfectServer\, \SysProcess\, and \Utilities\ modules within \Sources/PerfectLib\. These additions provide foundational capabilities for handling byte arrays, managing the file system (including directory enumeration and path resolution), serializing objects to JSON, structured logging, and spawning external processes with standard I/O stream access.

Sources · high confidence

Behavioural changes

Project documentation and community guidelines added

The repository now includes a Code of Conduct (in English and Simplified Chinese) and a Chinese translation of the main README. Additionally, a .gitattributes file was added to configure Linguist's file detection for vendored sources, and the .gitignore was updated to exclude Swift Package Manager build artifacts and Xcode project files.

(repo-wide) · high confidence

Test coverage

Added Linux test runner; Added initial test suite for PerfectLib.

Dependencies

Added Swift Package Manager configuration for Linux

A new Package.swift file has been added to the project, enabling Swift Package Manager (SPM) support. The configuration defines the 'PerfectLib' library and its test target. For Linux builds, it explicitly depends on the 'LinuxBridge' package (version 3.0.0), while macOS builds target OS X 10.15 and have no external dependencies. This change facilitates cross-platform compilation and dependency management via SPM.

(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 47 → 50 (+3.0)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 93 (-6.6)
  • Architecture 94 (new)
  • Maturity 55 → 34 (-21.3)
  • Readiness 17 → 33 (+16.6)
  • Security 100 → 95 (-5.0)

Resolved (6)

  • Dimension evaluation failed
  • No automated tests
  • No exposed public API
  • No tests found
  • Test reliability not included
  • The Getting Started link points to guide/gettingStarted.md rather than the README itself (the single README), which is nonstandard and makes it harder to find the main docs from the README. (README.md)

New (21)

  • Change coupling: Dir.swift ↔ Utilities.swift (Sources/PerfectLib/Dir.swift)
  • Coverage not measured — Swift suite
  • Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
  • Dir.forEachEntry (cognitive 20) (Sources/PerfectLib/Dir.swift)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no project overview (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (17–21 lines × 3) (Sources/PerfectLib/JSONConvertible.swift)
  • Further orphaned files (smaller)
  • Inconsistent boolean parameter naming and usage. The concrete loggers (ConsoleLogger, SysLogger) use an unnamed Bool parameter, whereas the Log facade uses a named evenIdents: Bool. This makes the API confusing to use and suggests the boolean parameter's purpose is not clearly communicated or consistently applied.
  • Inconsistent parameter signatures for log levels. The debug method uses an autoclosure for lazy evaluation, while all other methods (info, warning, error, critical, terminal) take a strict String and an additional evenIdents: Bool parameter. This breaks the uniform interface expected for a logging facade.
  • JSONDecodeState.readNumber (cognitive 24) (Sources/PerfectLib/JSONConvertible.swift)
  • JSONDecodeState.readNumber (cyclomatic 18) (Sources/PerfectLib/JSONConvertible.swift)
  • JSONDecodeState.readObject (cognitive 72) (Sources/PerfectLib/JSONConvertible.swift)
  • JSONDecodeState.readObject (cyclomatic 32) (Sources/PerfectLib/JSONConvertible.swift)
  • JSONDecodeState.readString (cognitive 63) (Sources/PerfectLib/JSONConvertible.swift)
  • JSONDecodeState.readString (cyclomatic 24) (Sources/PerfectLib/JSONConvertible.swift)
  • Low cohesion: String (LCOM4 9) (Sources/PerfectLib/JSONConvertible.swift)
  • MethodTooLong: String.stringByReplacing (Sources/PerfectLib/JSONConvertible.swift)
  • Orphaned knowledge (Sources/PerfectLib/JSONConvertible.swift)
  • …and 1 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

PerfectlySoft/Perfect 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 27 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 859e696457fa91a9f998ad94080632f20b47fe58 — 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-d00c643c3f66.