DEV Community

Cover image for MAQS-Way v0.2: shipping a standard with open gaps (and naming them)
Aleksandr Kossarev
Aleksandr Kossarev

Posted on

MAQS-Way v0.2: shipping a standard with open gaps (and naming them)

MAQS-Way v0.2: shipping a standard with open gaps (and naming them)

Most release notes say what was finished. This one starts with what was not.

MAQS-Way v0.2 is out — the first minor release (no longer a prerelease) of a practical standard
for long-term AI memory: which tools, patterns and schemas implement memory
policies, and how to prove they work. And it ships with twelve open known gaps,
each with an owner and a target version, listed in the spec itself:

https://github.com/alexk202/maqs-way/releases/tag/v0.2

This post is about why that is by design.

The missing middle

Policy says what must hold. The path layer says how to build it and how
to prove it works. That sentence is the whole project; the catalog below
is its unpacking.

Policies exist in surplus (GDPR Art17, EU AI Act Art12/13/19, RBAC).
Audits exist (MAQS v1.6 — a checklist backed by production incidents).
What was missing was the path layer: which implementation to choose and how
to prove it actually works. MAQS-Way is that layer today as a description
with executable checks for part of it — the rest is declared with owners,
not proven in production. 8 principles (P1–P8), a data model
on top of OMPS, a lifecycle, and measurable verification (LoCoMo, LongMemEval,
deletion lattice, negative tests).

Check, don't trust: the audit runs

Every claim below is executable. The whole verification is one command:

$ python3 schemas/maqs_way_audit.py all
schema 4/4 + manifest 12/12 + declared 8/8 (005 ∈ declared) + executed (canon-pin) 1/1 + namespaces ok
GAP (enumerated, not folded): B4 -> owner SPEC §2.5, closes in v0.3
GATE GREEN
Enter fullscreen mode Exit fullscreen mode

(Reading: 4 schemas pass, 12 manifest entries pass, 8 behaviors
declared — honestly labeled as declared, one number pinned to canon,
namespaces validated — and the one known gap is printed, not hidden.)

Note what the gate does with gaps: it enumerates them, loudly, and stays green.
A release may carry gaps. It may never carry silent gaps.
Green here certifies compliance with the release rules — including the rule
that every gap is listed — not the absence of gaps.

Three independent codebases, one checklist

We applied the checklist to three open-source memory systems (static reading,
file:line evidence, help-not-roast tone). Three codebases, one checklist —
each gets an 'exemplary' and its gaps, same ruler for pluses and minuses alike.
One example of how an observation becomes a verdict: in Mem0, tenant filters
reach the vector store before top-k (main.py:1471), so isolation is proven
by attempted violation — not by filter presence. That is MAQS G1, executable.
Full reports with paths:

  • Mem0: tenant isolation exemplary (pre-top-k filters); partials on provenance, aging (decay is platform-only), deletion residue, write atomicity; gaps on trust typing and the vendored eval harness. (report)
  • Graphiti: invalidation-on-contradiction exemplary (old edges retained with expired_at); the fullest eval story of the three (unit + e2e + LongMemEval oracle); gaps on audit sink, unscoped search. (report)
  • Letta MemFS client: fail-closed isolation by construction; policy test depth; gap on aging (budgets only, no TTL). (report)

What is open, and when it closes

All remaining gaps were retargeted to v0.3 by an
explicit release decision (never silently):
B4 write atomicity; canonization of E10/E11, I10–I12, I14, I15, P9/P10,
dead-code rule 0.5a and drift thresholds 0.6a — twelve in total, each with
an owner. The data model is frozen
(schema_version way-v0.1.3 while the release is v0.2) — all v0.2 changes
are formulations and harnesses, none touch the model.

Where to look, where to talk

Don't check that the mechanism exists. Check
that it works.
Author: Aleksandr Kossarev, Jõgeva, Estonia

Top comments (0)