ForNeVeR/praefectus
63.5
Adequate · 3 October 2026
722
lines of production code
F#
primary language
2
measurements over time
What this system is
Praefectus is a command-line tool for managing task lists stored as Markdown files on the local filesystem. It provides functionality to list tasks and reorder them based on configurable rules, utilizing a custom diff algorithm to calculate and apply state changes. The system persists task metadata in YAML front matter and supports JSON export, with a core library designed for extensible storage backends and ordering logic.
Features
Add synchronous task execution utility
A new utility module in Praefectus.Utils provides a helper function to execute asynchronous tasks synchronously, allowing callers to block and retrieve the result of a Task directly without using async workflows.
Praefectus.Utils · high confidence
Initial command-line interface with list and order commands
The Praefectus.Console application now provides a command-line interface allowing users to list tasks and reorder them. Users can run the \list\ command to display all tasks in the database, with an optional \--json\ flag to output results in JSON format, or the \order\ command to apply configured ordering rules, using a \--what-if\ flag to preview changes without modifying storage. The tool also supports a \--version\ flag to display the current version.
Praefectus.Console · high confidence
Introduce core data models and task ordering logic
This change adds the foundational types for the application's domain model, including the \Task\ record (with fields for order, ID, title, status, and dependencies), the \Database\ container, and \StorageInstruction\ for persisting state changes. It also implements the \Ordering\ module, which provides logic to reorder tasks based on configured predicates and calculates the necessary storage instructions to apply a new task sequence using a generalized diff algorithm.
Praefectus.Core · high confidence
Introduce core diff algorithm implementation
Added the foundational types and algorithmic logic for computing diffs within the Praefectus.Core.Diff module. This includes the EditGraph type for managing edit operations, the IPositionedSequence interface for defining input sequences, and the Algorithms module which implements the Myers diff algorithm to generate edit instructions (Insert, Delete, Leave) for comparing sequences.
Praefectus.Core/Diff · high confidence
New example application demonstrating configuration and ordering
Added a new F\# example application (Program.fs) that demonstrates how to configure the Praefectus library. The example shows setting a database location to the current directory and defining a custom ordering rule that prioritizes items whose names start with 'important'. It initializes the standard environment and runs the entry point with the provided command-line arguments.
Praefectus.Example · high confidence
New filesystem-based storage backend for tasks
Praefectus.Storage introduces a new storage implementation that persists tasks as individual Markdown files in a directory. Tasks are named using a structured scheme (order.id.name.md) to allow parsing of metadata directly from filenames. The implementation reads and writes YAML front matter for task attributes (such as status and dependencies) and uses the Markdig library for Markdown parsing. It also includes a JSON serialization module for database export and handles file system operations like moving files when task state changes.
Praefectus.Storage · high confidence
New scripts for approving tests and verifying file encoding
Added two new PowerShell scripts to the repository: \Approve-All.ps1\ automates the approval of test results by moving \.received.txt\ files to \.verified.txt\ in the test output directory, and \Test-Encoding.ps1\ verifies that text files do not contain UTF-8 BOM markers or CRLF line endings, with an optional autofix mode to correct these issues automatically.
scripts · high confidence
Project initialization and repository structure setup
The repository has been initialized with the core project structure, including the solution file (Praefectus.sln) that defines the main projects (Praefectus.Core, Praefectus.Console, etc.) and documentation. A global.json file now enforces the use of the .NET 10.0.401 SDK, while Directory.Build.props sets the default assembly version to 0.0.1.0 and enables nullable reference types and treating warnings as errors. The project is licensed under MIT (LICENSE.txt), with REUSE compliance managed via REUSE.toml and automated dependency updates configured through renovate.json. Documentation has been reorganized into a dedicated docs folder, and contributor guidelines (CONTRIBUTING.md) have been added to assist with license headers and file encoding.
(repo-wide) · high confidence
Test coverage
Added tests for console entry point, database export, and ordering commands; Added tests for file-system storage, JSON serialization, and Markdown directory operations; Added unit tests for core diff, edit graph, and ordering logic.
Dependencies
Initial project structure and dependency configuration for .NET 9
This change introduces the initial project structure for the Praefectus solution, establishing six .NET 9 projects: Console, Core, Storage, Utils, Tests, and Example. It configures the core dependencies required for the application's functionality, including Markdig 1.4.0 for Markdown processing, Newtonsoft.Json 13.0.4 for JSON serialization, YamlDotNet 9.1.4 for YAML handling, and Serilog (Sinks.Console 6.1.1, Sinks.File 7.0.0, Settings.Configuration 10.0.1) for logging. The test project is set up with xUnit 2.9.3, Microsoft.NET.Test.Sdk 18.10.1, and Quibble.Xunit 0.3.1.
(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 64 → 64 (-0.5)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 94 → 97 (+3.1)
- Maturity 51 → 51 (+0.0)
- Readiness 66 → 66 (+0.0)
- Security 75 → 70 (-5.1)
Resolved (3)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- No context/problem framing and no consequences/trade-offs section for the CLI (e.g., why a console over GUI) are present in an ADR (docs/rfcs/command-line-interface.md)
New (1)
- No context/problem statement (why a CLI instead of a web interface) and no consequences/trade-offs in an ADR; it is a feature description rather than a documented decision (docs/rfcs/command-line-interface.md)
Changes since last survey
- 2 commits — 2 feature/other, 0 fixes
By area
- .github/workflows — 1 commit
- Praefectus.Storage/Praefectus.Storage.fsproj — 1 commit
Notable commits
- change: Update dependency Markdig to 1.4.0
- change: Update dependency ubuntu to v26
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ForNeVeR/praefectus 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 3 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 4b5f606630de8f3b4deabf9fb0385817fab6fa11 — the exact code this score is about.
- Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-4f4226d619ea.