<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Aletheia release notes</title>
  <subtitle>New releases of Aletheia (aletheia-mem), the local memory and rules hub for AI coding tools.</subtitle>
  <link rel="self" type="application/atom+xml" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/feed.xml"/>
  <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/changelog.html"/>
  <id>https://aletheia.mohamedashrafelsaed.com/docs/changelog.html</id>
  <updated>2026-11-01T00:00:00Z</updated>
  <author><name>Mohamed Ashraf Elsaed</name><uri>https://mohamedashrafelsaed.com</uri></author>
  <icon>https://aletheia.mohamedashrafelsaed.com/favicon.png</icon>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.12.html">
    <title>Aletheia 0.1.12</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.12.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.12.html</id>
    <published>2026-11-01T00:00:00Z</published>
    <updated>2026-11-01T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.12, released 2026-11-01: 2 added, 3 changed. The release workflow now publishes to the official MCP registry on every tag: it bumps server.json...</summary>
    <content type="html">&lt;h3 id=&quot;added&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#added&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Added&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;The release workflow now publishes to the official MCP registry on every tag: it bumps &lt;code&gt;server.json&lt;/code&gt; to the tag and publishes the manifest with the registry's pinned, signature-verified &lt;code&gt;mcp-publisher&lt;/code&gt; CLI (v1.8.7) using OIDC authentication. &lt;code&gt;release.mjs --prepare&lt;/code&gt; bumps &lt;code&gt;server.json&lt;/code&gt; with &lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;--sync-server-json&lt;/code&gt; back-fills a hand-made release, and &lt;code&gt;--verify&lt;/code&gt; fails when the manifest drifts. The mechanism follows the registry's GitHub Actions guide (https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/github-actions.mdx, fetched 2026-11-01); the registry accepts no server-listing pull requests.&lt;/li&gt;&lt;li&gt;&lt;code&gt;scripts/build-site.mjs&lt;/code&gt; generates a docs changelog page (&lt;code&gt;site/docs/changelog.html&lt;/code&gt;) from &lt;code&gt;CHANGELOG.md&lt;/code&gt;, with a sitemap entry and a link from &lt;code&gt;llms.txt&lt;/code&gt;; the release workflow rebuilds it and pushes it to main on every tag.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;The documentation site moves from &lt;code&gt;https://mohamed-ashraf-elsaed.github.io/aletheia-mem/&lt;/code&gt; to &lt;code&gt;https://aletheia.mohamedashrafelsaed.com/&lt;/code&gt;. Canonical URLs, Open Graph tags, structured data, the sitemap, &lt;code&gt;robots.txt&lt;/code&gt;, &lt;code&gt;llms.txt&lt;/code&gt;, &lt;code&gt;llms-full.txt&lt;/code&gt;, the README links and the plugin manifests use the new address. Paths are unchanged, and GitHub Pages redirects the old address. Every docs page has a footer credit that links to the author's site, and the &lt;code&gt;author&lt;/code&gt; in the structured data carries his URL.&lt;/li&gt;&lt;li&gt;Package metadata: the npm &lt;code&gt;homepage&lt;/code&gt; is the project page at &lt;code&gt;https://mohamedashrafelsaed.com/projects/aletheia/&lt;/code&gt;, and &lt;code&gt;author&lt;/code&gt; is an object with name, email and URL. The README link row adds the project page. No code changed.&lt;/li&gt;&lt;li&gt;The Settings page lists only the three settings that code reads: &lt;code&gt;facts.minConfidence&lt;/code&gt;, &lt;code&gt;context.facts&lt;/code&gt; and &lt;code&gt;rules.reviewDays&lt;/code&gt;. The seven that nothing read (&lt;code&gt;provider&lt;/code&gt;, &lt;code&gt;providers&lt;/code&gt;, &lt;code&gt;factBudget.*&lt;/code&gt;, &lt;code&gt;redaction&lt;/code&gt;, &lt;code&gt;excludedProjects&lt;/code&gt;, &lt;code&gt;apiKey&lt;/code&gt;) are removed, along with the masked-secret handling. Use the environment variables for the provider, fact budgets and excluded projects; redaction is always on.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.11.html">
    <title>Aletheia 0.1.11</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.11.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.11.html</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-30T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.11, released 2026-10-30: 4 added, 2 changed, 7 fixed. A full documentation site: 49 pages in eight sections (Get started, Concepts, Connect...</summary>
    <content type="html">&lt;h3 id=&quot;added&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#added&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Added&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;A full documentation site: 49 pages in eight sections (Get started, Concepts, Connect your tools, Guides, Reference, Compare, Project, Internals) with a sidebar, breadcrumbs, previous and next links and a search box on the index. Pages cover installation, a quickstart, a page for each tool, the CLI, MCP tools, configuration, hooks, migration from claude-mem, backup, running as a service, model providers, troubleshooting, comparisons and benchmarks.&lt;/li&gt;&lt;li&gt;&lt;code&gt;llms.txt&lt;/code&gt; and &lt;code&gt;llms-full.txt&lt;/code&gt; for AI readers, a plain Markdown copy beside every page, per-page Open Graph and structured data (&lt;code&gt;TechArticle&lt;/code&gt;, &lt;code&gt;BreadcrumbList&lt;/code&gt;, &lt;code&gt;FAQPage&lt;/code&gt;), and a &lt;code&gt;robots.txt&lt;/code&gt; that names the main search and AI crawlers.&lt;/li&gt;&lt;li&gt;&lt;code&gt;scripts/build-wiki.mjs&lt;/code&gt; builds a GitHub wiki from the same pages.&lt;/li&gt;&lt;li&gt;Search keywords in the package metadata, the registry description and the README tagline.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;The landing page no longer shows an old test count, the old &amp;quot;My Work&amp;quot; card or the old latency note.&lt;/li&gt;&lt;li&gt;&lt;code&gt;CONTRIBUTING.md&lt;/code&gt; explains set-up, the checks to run and how to write a documentation page.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;fixed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Fixed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Redaction now covers every write path. The store redacts in &lt;code&gt;add()&lt;/code&gt; and &lt;code&gt;update()&lt;/code&gt;, so notes written through &lt;code&gt;POST /v1/memories&lt;/code&gt; or the dashboard, edits, &lt;code&gt;import bundle&lt;/code&gt; and &lt;code&gt;import claude-mem&lt;/code&gt; no longer store secrets as typed. Names with a prefix (&lt;code&gt;MY_API_KEY&lt;/code&gt;, &lt;code&gt;DB_PASSWORD&lt;/code&gt;, &lt;code&gt;AUTH_TOKEN&lt;/code&gt;), JSON-quoted keys (&lt;code&gt;{&amp;quot;password&amp;quot;:&amp;quot;...&amp;quot;}&lt;/code&gt;) and &lt;code&gt;secret_key&lt;/code&gt; are matched, and a redacted JSON value stays valid JSON. An unclosed &lt;code&gt;&amp;lt;private&amp;gt;&lt;/code&gt; tag drops the rest of the text.&lt;/li&gt;&lt;li&gt;New &lt;code&gt;aletheia scrub [--apply]&lt;/code&gt; redacts rows stored by earlier versions.&lt;/li&gt;&lt;li&gt;&lt;code&gt;/healthz&lt;/code&gt; and &lt;code&gt;aletheia doctor&lt;/code&gt; no longer report &lt;code&gt;fts5: corruption found&lt;/code&gt; while another process writes. &lt;code&gt;quick_check&lt;/code&gt; was the cause: it failed about 1 time in 40 on a busy database, while real searches never failed. The check now retries and confirms with a real search query.&lt;/li&gt;&lt;li&gt;&lt;code&gt;aletheia compress&lt;/code&gt; no longer downloads an embedding model by default. Set &lt;code&gt;ALETHEIA_EMBED_FACTS=1&lt;/code&gt; to embed new facts. &lt;code&gt;aletheia embed&lt;/code&gt; and &lt;code&gt;aletheia search --semantic&lt;/code&gt; still load the model because you ask for vectors.&lt;/li&gt;&lt;li&gt;The MCP &lt;code&gt;search&lt;/code&gt; tool description now says that an omitted &lt;code&gt;project&lt;/code&gt; searches all projects, which is what the code does.&lt;/li&gt;&lt;li&gt;&lt;code&gt;aletheia uninstall&lt;/code&gt; no longer prints &lt;code&gt;(no aletheia hooks)&lt;/code&gt; on a line that removes hooks.&lt;/li&gt;&lt;li&gt;A read-scope token on the HTTP MCP endpoint could call &lt;code&gt;work_state_write&lt;/code&gt;. It is now a write tool and needs a &lt;code&gt;sync&lt;/code&gt; or &lt;code&gt;admin&lt;/code&gt; token.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.10.html">
    <title>Aletheia 0.1.10</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.10.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.10.html</id>
    <published>2026-10-29T00:00:00Z</published>
    <updated>2026-10-29T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.10, released 2026-10-29: 1 added, 3 changed. A Home page, now the default. It lists the projects you work in and, for one project, shows in...</summary>
    <content type="html">&lt;h3 id=&quot;added&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#added&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Added&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;A &lt;strong&gt;Home&lt;/strong&gt; page, now the default. It lists the projects you work in and, for one project, shows in plain words what Aletheia knows about it (readable titles, a Hide button, a box to save a note), the rules that apply (switches, a box to add a rule with example chips, and a preview-first button that writes them into each tool's file), the connected tools (on, needs setup or not installed, with the command to copy) and what happened lately. Every block has a hint and an example.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;The tabs now use plain names: Home, Activity (was Work), Knowledge (was Memory), Rules and Connections (was Tools). The addresses (&lt;code&gt;#/work&lt;/code&gt;, &lt;code&gt;#/memory&lt;/code&gt;, &lt;code&gt;#/tools&lt;/code&gt;) are unchanged. Sub-pages are renamed too: Needs a look, Hidden, Savings, Health checks, What tools receive and History.&lt;/li&gt;&lt;li&gt;The project list in the header no longer shows worktree folders, temporary folders or folders with almost nothing in them. The Home page lists them under &amp;quot;other folders&amp;quot;.&lt;/li&gt;&lt;li&gt;Request cards on the Activity page show a readable title instead of pasted text, JSON or a row of numbers, and say &amp;quot;How we worked this out&amp;quot; and &amp;quot;What was done&amp;quot; instead of &amp;quot;Progress evidence&amp;quot; and &amp;quot;Came out of it&amp;quot;.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.9.html">
    <title>Aletheia 0.1.9</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.9.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.9.html</id>
    <published>2026-10-28T00:00:00Z</published>
    <updated>2026-10-28T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.9, released 2026-10-28: 2 added, 2 changed. A context.facts setting (auto, on, off, default auto) that controls which facts the session-start...</summary>
    <content type="html">&lt;h3 id=&quot;added&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#added&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Added&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;A &lt;code&gt;context.facts&lt;/code&gt; setting (&lt;code&gt;auto&lt;/code&gt;, &lt;code&gt;on&lt;/code&gt;, &lt;code&gt;off&lt;/code&gt;, default &lt;code&gt;auto&lt;/code&gt;) that controls which facts the session-start Facts section lists. &lt;code&gt;auto&lt;/code&gt; lists only pinned, provider-extracted or confidence ≥ 0.6 facts, leaving the rule extractor's 0.45/0.35 output out; &lt;code&gt;on&lt;/code&gt; keeps the historical behaviour; &lt;code&gt;off&lt;/code&gt; hides the section. The measured context-economics line now counts only what is actually listed.&lt;/li&gt;&lt;li&gt;&lt;code&gt;aletheia facts clean --ineligible-sources&lt;/code&gt;, which also dismisses facts whose source episode kind is not &lt;code&gt;summary&lt;/code&gt; or &lt;code&gt;note&lt;/code&gt; with reason &lt;code&gt;quality:ineligible_source&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;The fact quality gate now rejects narration with a &lt;code&gt;narration&lt;/code&gt; reason: first/second person, moment words (&lt;code&gt;now&lt;/code&gt;, &lt;code&gt;today&lt;/code&gt;, &lt;code&gt;yet&lt;/code&gt;, &lt;code&gt;currently&lt;/code&gt;, &lt;code&gt;right now&lt;/code&gt;), progress/status phrases, session/meta references and imperative openings.&lt;/li&gt;&lt;li&gt;The rule extractor's sentence splitter no longer cuts on a dot inside a version number, IP address, URL, file name or domain.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.8.html">
    <title>Aletheia 0.1.8</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.8.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.8.html</id>
    <published>2026-10-28T00:00:00Z</published>
    <updated>2026-10-28T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.8, released 2026-10-28: 2 added, 1 fixed, 5 changed. aletheia facts clean --dry-run (the default) and aletheia facts clean --apply. The command...</summary>
    <content type="html">&lt;h3 id=&quot;added&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#added&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Added&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;aletheia facts clean --dry-run&lt;/code&gt; (the default) and &lt;code&gt;aletheia facts clean --apply&lt;/code&gt;. The command applies the fact quality gate to already-stored facts, reports counts and the first ten examples per rejection reason, and &lt;code&gt;--apply&lt;/code&gt; dismisses the failures with &lt;code&gt;quality:&amp;lt;reason&amp;gt;&lt;/code&gt; through the normal reversible dismissal path.&lt;/li&gt;&lt;li&gt;A &lt;code&gt;facts.minConfidence&lt;/code&gt; setting (0.3–0.9, default 0.4). The existing confidence calculation is unchanged; the floor only stops weaker facts from being stored.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;fixed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Fixed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;scripts/release.mjs --prepare&lt;/code&gt; corrupted the changelog when a release note contained the text &lt;code&gt;$&lt;/code&gt; followed by a backtick: it expanded as a replacement pattern and copied the header into the note. Notes are now copied literally.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Fact extraction now keeps only assistant summaries and notes as eligible sources. User prompts and tool output/file contents (including raw back-filled transcripts) are no longer extracted into facts.&lt;/li&gt;&lt;li&gt;Every candidate fact passes a quality gate before it is stored: balanced quotes and brackets, no escaped newlines/tabs, no code-like tokens (&lt;code&gt;$&lt;/code&gt;, &lt;code&gt;-&amp;gt;&lt;/code&gt;, &lt;code&gt;::&lt;/code&gt;, &lt;code&gt;=&amp;gt;&lt;/code&gt;, braces, backticks, SQL or HTML tags), 3–40 words and at most 200 characters, a 1–8 word subject that is not a bare pronoun/demonstrative and does not start with a continuation word, and an object that does not end mid-clause. Each rejection returns a stable reason code and is counted.&lt;/li&gt;&lt;li&gt;The session-start Facts section caps each fact line at 140 characters (dismissed facts were already skipped).&lt;/li&gt;&lt;li&gt;The CI regression gate now uses a harder seeded corpus (near-duplicate distractors, answers ranked 3rd and 6th, 50,000 rows). Its baseline is Recall@5 0.90 and p95 latency about 7.8 ms, above the 5 ms floor, so a latency regression of more than 20% now fails the build too.&lt;/li&gt;&lt;li&gt;The default test timeout is 20 s instead of 5 s, because three installer tests timed out on a slow Windows runner.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.7.html">
    <title>Aletheia 0.1.7</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.7.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.7.html</id>
    <published>2026-10-28T00:00:00Z</published>
    <updated>2026-10-28T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.7, released 2026-10-28: 2 added, 1 fixed, 1 changed. A recall and latency regression gate runs in CI on Linux: it fails a change that loses...</summary>
    <content type="html">&lt;h3 id=&quot;added&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#added&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Added&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;A recall and latency regression gate runs in CI on Linux: it fails a change that loses more than one point of Recall@5 on a seeded synthetic corpus. Its latency check is report-only below a 5 ms baseline.&lt;/li&gt;&lt;li&gt;The test suite now runs in CI on Windows as well as Linux and macOS. On Windows, the hook-execution checks for Windsurf and Gemini CLI and one temp-folder cleanup check are skipped, and no real tool was tried there.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;fixed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Fixed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;On Windows, &lt;code&gt;aletheia uninstall codex&lt;/code&gt; left its block in &lt;code&gt;~/.codex/config.toml&lt;/code&gt;: the installer wrote the command path with TOML escapes, but the reader did not unescape them, so it did not recognise its own entry. The reader now parses TOML basic strings.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;session_start_context&lt;/code&gt;, the SessionStart hook, &lt;code&gt;/v1/context&lt;/code&gt;, &lt;code&gt;/api/hub/context&lt;/code&gt; and &lt;code&gt;aletheia context&lt;/code&gt; now return a compact index by default: recent memories are grouped by day and first file and printed one line each with no narrative, followed by session requests, facts and rules, plus a legend, a fetch-more hint and a measured context-economics line. The previous flat shape stays available through the &lt;code&gt;context.format = &amp;quot;classic&amp;quot;&lt;/code&gt; setting.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.6.html">
    <title>Aletheia 0.1.6</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.6.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.6.html</id>
    <published>2026-10-28T00:00:00Z</published>
    <updated>2026-10-28T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.6, released 2026-10-28: 2 fixed, 1 changed. The MCP initialize reply and GET /v1/info reported version 0.1.0 whatever the installed version....</summary>
    <content type="html">&lt;h3 id=&quot;fixed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Fixed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;The MCP &lt;code&gt;initialize&lt;/code&gt; reply and &lt;code&gt;GET /v1/info&lt;/code&gt; reported version 0.1.0 whatever the installed version. They now report the package version.&lt;/li&gt;&lt;li&gt;The hook checker counted session-end rows from every tool for each tool, so a tool with no Stop hook run could still pass. It now counts only rows for that tool's own sessions, and accepts &lt;code&gt;--tool codex&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Corrected the public hook claims: hooks ran in real sessions of Claude Code (two days of use), Command Code (one short session) and Codex CLI (one interactive session), all on the author's machine and one user; Cursor, Gemini CLI, Windsurf and OpenCode hooks have not run.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.5.html">
    <title>Aletheia 0.1.5</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.5.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.5.html</id>
    <published>2026-10-28T00:00:00Z</published>
    <updated>2026-10-28T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.5, released 2026-10-28: 2 changed. A rule flagged for re-check now carries its reason and &quot;Verify before applying.&quot; into synced rules files and...</summary>
    <content type="html">&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;A rule flagged for re-check now carries its reason and &amp;quot;Verify before applying.&amp;quot; into synced rules files and into the session context an agent receives, not only into &lt;code&gt;list_rules&lt;/code&gt;. The rule is still delivered. Reading a rules file back strips the note, so it never becomes part of the rule text.&lt;/li&gt;&lt;li&gt;Recorded the first real-hook evidence: hooks ran in real Claude Code sessions on the author's machine over two days (prompts and tool events captured, secrets redacted, no leaks), and the hook checker now counts summary memories as the Stop/SessionEnd signal with the session-end table as a fallback.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.4.html">
    <title>Aletheia 0.1.4</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.4.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.4.html</id>
    <published>2026-10-28T00:00:00Z</published>
    <updated>2026-10-28T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.4, released 2026-10-28: 10 added, 4 changed. A graph retrieval channel and entity pages, off by default behind a flag. On a synthetic test it...</summary>
    <content type="html">&lt;h3 id=&quot;added&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#added&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Added&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;A graph retrieval channel and entity pages, off by default behind a flag. On a synthetic test it found related memories that keyword search missed; it has not been measured on real data.&lt;/li&gt;&lt;li&gt;Rule-based entity summaries and belief tracking. No model is used.&lt;/li&gt;&lt;li&gt;A file-read gate and a smart outline for files.&lt;/li&gt;&lt;li&gt;Rules keep their date, source and evidence. A rule made from an approved suggestion copies the suggestion's source ids and dated quotes; &lt;code&gt;add_rule&lt;/code&gt; and &lt;code&gt;POST /api/hub/rules&lt;/code&gt; accept evidence ids. Rules made before this have no evidence.&lt;/li&gt;&lt;li&gt;A rule is flagged for re-check, with reasons, when an evidence fact is superseded or expired, an evidence memory is dismissed, a newer fact covers the same subject and predicate, or nobody confirmed it within the review window (&lt;code&gt;rules.reviewDays&lt;/code&gt;, default 90). It is a flag, never a deletion: the rule stays on and keeps syncing.&lt;/li&gt;&lt;li&gt;&lt;code&gt;POST /api/hub/rules/:id/confirm&lt;/code&gt;, &lt;code&gt;aletheia rules confirm &amp;lt;id&amp;gt;&lt;/code&gt; and the &lt;code&gt;confirm_rule&lt;/code&gt; MCP tool (13 tools now) record that a rule is still right. &lt;code&gt;aletheia rules retire &amp;lt;id&amp;gt;&lt;/code&gt; turns a rule off without deleting it.&lt;/li&gt;&lt;li&gt;&lt;code&gt;GET /api/hub/rules&lt;/code&gt; returns &lt;code&gt;evidence&lt;/code&gt;, &lt;code&gt;last_confirmed_epoch&lt;/code&gt;, &lt;code&gt;stale&lt;/code&gt; and &lt;code&gt;reasons&lt;/code&gt;, with &lt;code&gt;?stale=1&lt;/code&gt; and &lt;code&gt;?older_than_days=N&lt;/code&gt; filters. &lt;code&gt;aletheia rules lint&lt;/code&gt; reports a stale rule as a warning.&lt;/li&gt;&lt;li&gt;&lt;code&gt;aletheia rules diff&lt;/code&gt; and &lt;code&gt;GET /api/hub/rules/diff&lt;/code&gt; show, per tool file, rules only in the store, only in the file or worded differently, with file and line. Read-only. The Rules page shows how many tools are out of sync.&lt;/li&gt;&lt;li&gt;&lt;code&gt;older_than_days&lt;/code&gt; on the memory list, &lt;code&gt;/v1/search&lt;/code&gt; and the &lt;code&gt;search&lt;/code&gt; MCP tool, so pruning old memories is a query.&lt;/li&gt;&lt;li&gt;&lt;code&gt;aletheia audit export&lt;/code&gt; and &lt;code&gt;GET /v1/audit/export&lt;/code&gt; (admin token) stream the sync audit log as JSONL or CSV.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Search is faster at 50,000 memories: project-scoped p95 fell from 67.5 ms to 32.7 ms on a synthetic test, and all-projects p95 is 58.6 ms. On the real LoCoMo set, Recall@5 did not change.&lt;/li&gt;&lt;li&gt;&lt;code&gt;fact_history&lt;/code&gt; and &lt;code&gt;GET /v1/facts&lt;/code&gt; accept &lt;code&gt;as_of&lt;/code&gt; as epoch milliseconds as well as ISO 8601.&lt;/li&gt;&lt;li&gt;The README lists all 13 MCP tools.&lt;/li&gt;&lt;li&gt;&lt;code&gt;list_rules&lt;/code&gt; prints each rule's date, source, last-confirmed date and a &lt;code&gt;[re-check: reason]&lt;/code&gt; marker. &lt;code&gt;get_observations&lt;/code&gt; and the memory detail panel show the source (tool, session, origin) and the files a memory touched.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.3.html">
    <title>Aletheia 0.1.3</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.3.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.3.html</id>
    <published>2026-10-27T00:00:00Z</published>
    <updated>2026-10-27T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.3, released 2026-10-27: 9 added, 2 changed. GET /v1/facts and the fact_history MCP tool: how a fact changed over time.</summary>
    <content type="html">&lt;h3 id=&quot;added&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#added&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Added&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;GET /v1/facts&lt;/code&gt; and the &lt;code&gt;fact_history&lt;/code&gt; MCP tool: how a fact changed over time.&lt;/li&gt;&lt;li&gt;Search by file: files are indexed, with &lt;code&gt;file&lt;/code&gt; and &lt;code&gt;file_suffix&lt;/code&gt; filters on search and in the MCP search tool.&lt;/li&gt;&lt;li&gt;&lt;code&gt;work_state_write&lt;/code&gt; and &lt;code&gt;work_state_read&lt;/code&gt; MCP tools for named to-do lists per project.&lt;/li&gt;&lt;li&gt;Folder context files and a connector verification status in the tools view and in doctor.&lt;/li&gt;&lt;li&gt;&lt;code&gt;glama.json&lt;/code&gt;, so the Glama listing can be claimed.&lt;/li&gt;&lt;li&gt;A settings page in the Tools tab, with a settings API that validates every value and never returns the API key.&lt;/li&gt;&lt;li&gt;A live feed, session pages and a context preview in the app.&lt;/li&gt;&lt;li&gt;Query and result caching for search.&lt;/li&gt;&lt;li&gt;Rule-based query expansion, round-level indexing, and &lt;code&gt;since&lt;/code&gt; and &lt;code&gt;until&lt;/code&gt; filters on search.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;MCP tool definitions now carry annotations and parameter descriptions.&lt;/li&gt;&lt;li&gt;The README platform badge says Linux and macOS, which CI covers.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.2.html">
    <title>Aletheia 0.1.2</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.2.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.2.html</id>
    <published>2026-10-27T00:00:00Z</published>
    <updated>2026-10-27T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.2, released 2026-10-27: 2 changed. The npm package now ships code and licence files only. Version 0.1.1 also shipped the whole docs/ tree by...</summary>
    <content type="html">&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;The npm package now ships code and licence files only. Version 0.1.1 also shipped the whole &lt;code&gt;docs/&lt;/code&gt; tree by mistake.&lt;/li&gt;&lt;li&gt;Search filters, OpenAPI document, MCP registry &lt;code&gt;server.json&lt;/code&gt;, and a crash-safety test.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.1.html">
    <title>Aletheia 0.1.1 (yanked)</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.1.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.1.html</id>
    <published>2026-10-27T00:00:00Z</published>
    <updated>2026-10-27T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.1, released 2026-10-27 and later yanked: 3 added, 1 changed. docs/releasing.md: versioning policy, the release sequence with the owner-only...</summary>
    <content type="html">&lt;p&gt;Withdrawn from npm and never tagged: the package also shipped the whole &lt;code&gt;docs/&lt;/code&gt; tree by mistake. Version 0.1.2 replaced it.&lt;/p&gt;
&lt;h3 id=&quot;added&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#added&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Added&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;docs/releasing.md&lt;/code&gt;: versioning policy, the release sequence with the owner-only steps marked, and rollback notes.&lt;/li&gt;&lt;li&gt;&lt;code&gt;scripts/release.mjs --prepare &amp;lt;version&amp;gt;&lt;/code&gt; bumps &lt;code&gt;package.json&lt;/code&gt; and dates the CHANGELOG section; &lt;code&gt;--verify&lt;/code&gt; checks versions, the tag, tarball contents and size, and that README images are absolute https URLs.&lt;/li&gt;&lt;li&gt;&lt;code&gt;.github/workflows/release.yml&lt;/code&gt;: on a &lt;code&gt;v*&lt;/code&gt; tag it tests, verifies, publishes to npm only when trusted publishing or &lt;code&gt;NPM_TOKEN&lt;/code&gt; is set up, and creates the GitHub release.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;changed&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#changed&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Changed&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;README top block redone for the npm package page: centred logo, npm version badge, install and run lines, two screenshots and a link row, all with absolute URLs. The ten translations were not re-translated for it.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry xml:base="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.0.html">
    <title>Aletheia 0.1.0</title>
    <link rel="alternate" type="text/html" href="https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.0.html"/>
    <id>https://aletheia.mohamedashrafelsaed.com/docs/releases/v0.1.0.html</id>
    <published>2026-10-27T00:00:00Z</published>
    <updated>2026-10-27T00:00:00Z</updated>
    <summary>Aletheia (aletheia-mem) 0.1.0, released 2026-10-27: 5 added. Generated comparison, tool-support and measured-number tables. scripts/gen-tables.mjs --check fails when a</summary>
    <content type="html">&lt;p&gt;First public release, published to npm as &lt;code&gt;aletheia-mem@0.1.0&lt;/code&gt;. CI runs on Linux and macOS; Windows is not supported yet.&lt;/p&gt;
&lt;h3 id=&quot;added&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#added&quot; aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;Added&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Generated comparison, tool-support and measured-number tables. &lt;code&gt;scripts/gen-tables.mjs --check&lt;/code&gt; fails when a marked block drifts from its source (&lt;code&gt;docs/28-competitor-report.json&lt;/code&gt;, the installer registry, or &lt;code&gt;bench/results/&lt;/code&gt;).&lt;/li&gt;&lt;li&gt;README restructured with real badges only: licence, test workflow, last commit, stars, open issues, status, Bun version and the Linux-tested platform. A test rejects a forbidden badge or a hand-typed count.&lt;/li&gt;&lt;li&gt;Issue forms for bugs, features and new hosts; a pull request template with the validation checklist; Contributor Covenant 2.1; and a security policy that names GitHub private vulnerability reporting.&lt;/li&gt;&lt;li&gt;CI workflow that runs the test suite, the task checker, the table drift check and the documentation link checker on Linux only.&lt;/li&gt;&lt;li&gt;&lt;code&gt;check:claims&lt;/code&gt;, &lt;code&gt;check:links&lt;/code&gt; and &lt;code&gt;check:tables&lt;/code&gt; scripts.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
</feed>
