Danie1s/Tiercel
59.9
Adequate · 30 September 2026
4.3k
lines of production code
Swift
primary language
2
measurements over time
What this system is
Tiercel is an iOS download management framework that handles concurrent file transfers, caching, and task state persistence. It provides core capabilities for resume data parsing, file validation, and thread-safe concurrency control. The system includes a demo application to showcase these features and is supported by unit tests for state management and session recovery.
Features
Core download engine and utility extensions introduced
This change introduces the foundational components of the Tiercel download engine within the Sources/General directory. It adds a new Cache class for managing persistent download paths and temporary files, alongside a DownloadTask class that handles resume data parsing (including legacy NSKeyedArchive formats) and file validation. The update also includes a suite of utility extensions for hashing (MD5, SHA1, SHA256, SHA512), safe main-thread execution, and disk space checking, as well as concurrency primitives like UnfairLock, Debouncer, and Throttler to support thread-safe state management.
Sources/General · high confidence
Initial release of the Tiercel download framework
This change introduces the Tiercel framework for iOS, providing a complete download management system. The Sources directory now contains the core implementation files, including TRManager for handling concurrent download tasks, TRDownloadTask for individual file transfers, TRCache for persistent storage and retrieval of task states, and TRCommon for shared utilities and status enums. The framework is initialized with an Info.plist and a public header (Tiercel.h) to expose the API for integration.
Sources · high confidence
Removals
Removed Example iOS demo application
The Example iOS demo application has been removed from the repository. This includes the Xcode project file, the main application entry point (AppDelegate), and all associated view controllers (ViewController1, ViewController2, ViewController3, DownloadViewController, ListViewController) and their corresponding UI assets (storyboards, xibs, and assets).
Example · high confidence
Architecture
Initial project structure and build configuration for Tiercel
This change introduces the foundational Xcode project structure for the Tiercel library. It defines the build targets, source file groups (including core components like SessionManager, Task, and DownloadTask, as well as utility extensions), and workspace settings required to compile the framework. This establishes the baseline configuration for the library's build process.
Tiercel.xcodeproj · high confidence
Behavioural changes
Added Xcode workspace configuration for Tiercel and Demo projects
The repository now includes a workspace file that groups the main Tiercel project and the Tiercel-Demo project, allowing developers to open and build both targets together in Xcode. This change establishes the project structure for local development and testing.
Tiercel.xcworkspace · high confidence
Demo app restructured with new download management views
The iOS demo application has been reorganized into a new project structure under the Demo folder, featuring a new BaseViewController and specialized view controllers (ViewController1, 2, 3) to demonstrate different Tiercel download capabilities. This update introduces a new interface for managing multiple concurrent downloads with sorting and bulk operations, adds file validation (MD5) checks to single-file downloads, and includes a new launch screen with the Tiercel branding image.
Demo · high confidence
Test coverage
Added unit tests for task state management and session recovery
Added a new test suite (TiercelTests) that verifies task state transitions, session recovery from persisted state, and the rejection of operations on tasks not owned by the session manager.
TiercelTests · high confidence
Dependencies
Tiercel 3.3.0: Swift 5.0 and iOS 12+ requirement
The Tiercel download framework has been updated to version 3.3.0, raising the minimum supported iOS deployment target from 8.0 to 12.0 and upgrading the Swift language version from 4.0 to 5.0. This change also updates the source file glob pattern to include nested Swift files and introduces a Swift Package Manager manifest for the library.
(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 58 → 60 (+1.8)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 95 → 95 (+0.0)
- Architecture 93 → 97 (+4.2)
- Maturity 63 → 63 (+0.0)
- Readiness 33 → 38 (+4.9)
- Security 100 → 100 (+0.0)
Resolved (2)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
New (5)
- Ambiguous intent between download and start. 'download' creates a new task, while 'start' can either create a new task (from URL) or resume an existing one (from DownloadTask). This dual behavior for 'start' is confusing compared to the explicit 'download' method. Additionally, 'fetchTask' exists to retrieve an existing task, but there is no explicit 'resume' method, forcing users to use 'start' with an existing task object, which is semantically unclear.
- Coverage not measured — Swift suite
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Redundant overloads for URLConvertible vs DownloadTask. Similar to the Cache inconsistency, SessionManager exposes separate overloads for URLConvertible and DownloadTask for suspend, cancel, and remove operations. Since DownloadTask likely contains the URL or can be converted, and URLConvertible is a broader protocol, these overloads duplicate intent and increase maintenance burden without adding significant value.
- Redundant overloads for URLConvertible vs String. The API exposes separate method signatures for String and URLConvertible inputs for the same logical operations (getting path, URL, or checking existence). Since URLConvertible is a protocol that String conforms to, the String-specific overloads are redundant and create unnecessary API surface duplication.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Danie1s/Tiercel 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 30 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 2c025a7937ab65bc5b110c62c35ec1f2f72d4b5d — 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-cb25ca4feafa.