Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
FREEDOM251

Freedom251 › Blog › architecture decision records

What Mneme’s 0-of-15 Counterfact Audit Actually Shows

By Freedom251 Team · · 4 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.”

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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:

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.

For a useful assessment in your own repository, keep tool capability separate from actual enforcement:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Choose a specific repository commit and list the architectural decisions you want to assess.
  2. Define which decisions are important enough that a violation would cause a concrete failure or unacceptable change.
  3. 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.
  4. Separately assess whether the architecture tool can model the decision directly, or consume evidence from the check that already protects it.
  5. 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.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

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.”

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.

architecture decision recordsCICounterfactDeveloper ToolsMnemesoftware architecture

Leave a Reply

Your email address will not be published. Required fields are marked *

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.