In a reported audit of one Counterfact repository snapshot, Mneme v0.9.2 could express none of the 15 architectural decisions the authors classified as protection-relevant. But the result does not mean those decisions went unprotected: the article says Counterfact’s own tooling already protected all 15. The score describes a particular tool version, decision inventory and commit—not Mneme’s capabilities today or architecture enforcement in general.
What the 0-of-15 score measures
The reported audit began with Counterfact’s architecture decision records (ADRs) and source at commit 2a1dfb1. The authors catalogued 29 architectural decisions and selected 15 as “protection-relevant,” meaning a violation would break something. They then ran mneme audit version 0.9.2 against a project memory they wrote and the repository. The figures below are those reported by Theo Valmis’s article, whose page displays “Sep 25” without a publication year.
As an Amazon Associate I earn from qualifying purchases.
| Measure | Reported result |
|---|---|
| Architectural decisions catalogued | 29 |
| Decisions classified as protection-relevant | 15 |
| Protection-relevant decisions covered by Counterfact’s own tooling | 15 of 15 (100%) |
| Protection-relevant decisions Mneme v0.9.2 could express in the audit | 0 of 15 (0%) |
| Decisions said to require a new Mneme rule type | 15 of 15 (100%) |
The audit asked three distinct questions: whether Counterfact already protected each decision, whether Mneme’s then-current rule vocabulary could express it, and what capability was missing when it could not. The last two measures are about Mneme’s fit for this inventory; the first is about Counterfact’s existing safeguards. Conflating them would turn “Mneme could not express these decisions” into the inaccurate claim that “these decisions were unprotected.”
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →What Counterfact already used to protect decisions
The article describes three examples of Counterfact safeguards. They illustrate what the authors counted as existing protection; they are descriptions from the article, not independently tested results.
#1 Best Overall
Dependency direction between packages
scripts/check-package-boundaries.mjs uses an ADR_DEPENDENCY_ALLOWLIST. According to the article, it checks package dependencies and TypeScript project references, inspects imports and re-exports, rejects disallowed cross-package imports, and detects cycles. The article says it runs on each pull request through yarn check:boundaries.
Package closure and published-package behavior
scripts/test-package-closures.mjs packs workspaces and installs each package in a temporary directory using only its declared dependency closure. The article lists checks for dependency closure, exported subpath imports, rejection of deep imports, TypeScript declarations, and a documented example run from the installed copy.
Rank #2
Generated route-handler independence
For generated route handlers, the article says Counterfact copies a counterfact-types/ template and uses relative imports rather than importing types from workspace packages. CI compares generated fixtures byte for byte.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Why Mneme’s rule vocabulary mattered in this audit
The article characterizes Mneme’s rules at v0.9.2 as source-text checks: a rule could forbid a literal or require a pattern, scoped to paths. The authors’ missing-capability analysis grouped the 15 decisions by the kind of rule they believed was needed:
Rank #3
| Decision categories | Decisions | Capability identified as missing |
|---|---|---|
| Package boundaries, exports maps and TypeScript project references | 4 | Dependency rules with allowlists and source-level import verification |
| Package-closure tests, mutation baseline and release preflight | 4 | Evidence-backed rules that consume results from external verifiers |
| Request/response validation, immutable route builder and types from OpenAPI | 3 | Protocol or API-contract rules |
| Multi-API specification configuration and shared store across hot reloads | 2 | State or lifecycle rules |
| Generated-code self-containment | 1 | Generated-versus-source constraints |
| Graceful degradation on bad input | 1 | Behavioral rules |
This breakdown points to a distinction between matching text and checking system properties. A dependency boundary may require analyzing imports, project references and cycles. A package-closure decision may depend on the result of a build or test. The article’s argument is that an architecture tool should be able to connect the output of such specialized checks to the decisions they support, rather than reimplement every checker.
How to interpret the result for another repository
The finding is bounded by the authors’ selection of 15 decisions from 29, their definition of “protection-relevant,” Counterfact commit 2a1dfb1, and Mneme v0.9.2. The article does not establish an independent replication or compare the result with a current Mneme release. It therefore supports a conclusion about that reported snapshot, not a general verdict that Mneme cannot enforce architectural decisions or that it has the same limitations now.
Rank #4
For a useful assessment in your own repository, keep tool capability separate from actual enforcement:
Recommended Free Tools
- Choose a specific repository commit and list the architectural decisions you want to assess.
- Define which decisions are important enough that a violation would cause a concrete failure or unacceptable change.
- For each decision, identify the existing protection: CI checks, tests, linters, build validation, or another verifier. Record whether it runs reliably in the normal development pipeline.
- Separately assess whether the architecture tool can model the decision directly, or consume evidence from the check that already protects it.
- Report results with the tool version, commit, decision inventory and classification criteria, so readers can distinguish a missing rule type from an unprotected decision.
That distinction is central to the article’s product-positioning argument: Mneme may be more relevant to teams with written ADRs or standards that lack enforcement than to a repository whose existing checks already cover the decisions under review. Whether that applies elsewhere depends on the repository’s safeguards and on Mneme’s capabilities at the time of evaluation.
Best Value
What the audit does not establish
- It does not show that all Counterfact architectural decisions were assessed as protection-relevant; the authors selected 15 of 29.
- It does not show that Counterfact’s safeguards were independently validated; the article describes them as existing tooling.
- It does not establish what Mneme can express in versions later than v0.9.2.
- It does not provide an independent reproduction of the score in the inspected material.
Valmis, identified as the article’s author and Mneme founder, summarized the proposed role for integration this way: “A mature repo doesn’t need Mneme to re-implement its boundary checker. It needs Mneme to read the checker’s output and tie it to the decision that justifies it.”
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

