Skip to content
CAI
Software that uses CAICheck a score

pointfreeco/swift-tagged

60.2

Adequate · 1 October 2026

407

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Swift library providing type-safe wrappers for domain-specific values, centered around the core Tagged type and extended by new TaggedTime and TaggedMoney modules. It enables developers to create distinct types for monetary amounts and time durations, offering built-in conversions, encoding strategies, and modern concurrency support. The project has been refactored to rely exclusively on Swift Package Manager, dropping legacy build infrastructure and older Swift versions in favor of a streamlined, SPM-native workflow.

Features

Add TaggedTime and TaggedMoney modules with time/money conversions and Swift 6 support

This change introduces two new modules, TaggedTime and TaggedMoney, providing type-safe wrappers for time and monetary values. TaggedTime adds Milliseconds and Seconds types with conversion properties to TimeInterval, Date, DispatchTimeInterval, and the new Swift Duration type (available on macOS 13+/iOS 16+), along with Date extension methods to calculate seconds and milliseconds since another date. TaggedMoney introduces Cents and Dollars types with conversion properties between them. The implementation also updates the Swift language support to drop versions prior to 5.9 and add support for Swift 6.0.

Sources/TaggedTime · high confidence

Behavioural changes

Enhanced Tagged usability with dynamic member lookup, collection support, and UUID helpers

Tagged types now support dynamic member lookup, allowing direct access to properties and subscripts on the underlying raw value without explicit unwrapping. New conditional conformances enable Tagged to act as a Collection when the raw value is a collection, and add support for string interpolation, CodingKeyRepresentable, and BitwiseCopyable (Swift 6+). A new UUID-specific initializer simplifies creating tagged UUIDs from strings or generating new ones. Additionally, encoding and decoding logic has been refined to handle raw values that implement their own Encodable/Decodable strategies, and a coerced() method allows safe type-tag swapping.

Sources/Tagged · high confidence

Removal of Xcode workspace check file

The IDEWorkspaceChecks.plist file within the Tagged.xcworkspace has been removed. This file is an internal Xcode artifact used to track workspace integrity; its removal indicates a cleanup of workspace metadata, likely resulting from the removal of CocoaPods/Carthage support as noted in the commit history. Users will no longer have this specific check file present in their workspace configuration.

Tagged.xcworkspace · medium confidence

Removed Linux test runner template

The \LinuxMain.stencil\ template, which previously generated the \LinuxMain.swift\ file to enable XCTest execution on Linux platforms, has been removed. This change eliminates the automatic generation of the Linux test entry point for Swift projects using Sourcery.

.sourcery-templates · high confidence

Removed legacy Xcode project and scheme files

The repository has removed the traditional Xcode project structure, including the \project.pbxproj\, associated Info plist files (\Tagged\_Info.plist\, \TaggedTests\_Info.plist\), and shared scheme definitions (\Tagged-Package.xcscheme\, \xcschememanagement.plist\). This change eliminates the need for manual Xcode project management, aligning the project with a Swift Package Manager (SPM)-only workflow where the \Package.swift\ file serves as the single source of truth for build configuration and dependencies.

Tagged.xcodeproj · high confidence

Swift 5.9 support and concurrency hardening

The package now requires Swift 5.9 or later, dropping support for older versions. This update enables strict concurrency checking across all targets to improve safety, and replaces legacy build infrastructure (Travis CI, Docker, Makefile) with a modern Swift Package Manager manifest that supports the new toolchain.

(repo-wide) · high confidence

Updated Xcode workspace configuration for Swift Package Manager compatibility

The Xcode workspace file has been relocated to the .swiftpm directory and simplified to reference the package root directly, removing legacy references to the README, LICENSE, playground, and Xcode project files to align with Swift 5.1 tooling requirements.

.swiftpm · medium confidence

Test coverage

Added unit tests for TaggedTime and TaggedMoney conversions; Expanded test coverage for Tagged type features; Removed Linux test runner file.

Dependencies

Swift 6.0 upgrade and new domain-specific libraries

The package now targets Swift 6.0 (dropping support for earlier versions) and introduces two new libraries, TaggedMoney and TaggedTime, alongside the existing Tagged core. This change also removes the legacy Package.resolved lock file and the CocoaPods podspec, shifting the project exclusively to Swift Package Manager.

(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 62 → 60 (-2.0)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 97 → 97 (+0.0)
  • Architecture 100 → 98 (-2.4)
  • Maturity 46 → 46 (+0.0)
  • Readiness 55 → 51 (-3.8)
  • Security 92 → 92 (+0.0)

Resolved (3)

  • Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)

New (3)

  • Low coverage: Sources/Tagged/UUID.swift (Sources/Tagged/UUID.swift)
  • Off the main sequence: Tagged
  • Redundant initializers with identical effective behavior. In Swift, if RawValue conforms to RawRepresentable or is the underlying type, init(rawValue:) is the standard protocol requirement. Providing a second init(RawValue) without distinct logic or constraints creates ambiguity and redundancy, as callers can use either interchangeably.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

pointfreeco/swift-tagged 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 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 6a8517578035408b6c14ccba00ee990a1435515c — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.