Doticca.Mnemosyne 0.1.6

dotnet add package Doticca.Mnemosyne --version 0.1.6
                    
NuGet\Install-Package Doticca.Mnemosyne -Version 0.1.6
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Doticca.Mnemosyne" Version="0.1.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Doticca.Mnemosyne" Version="0.1.6" />
                    
Directory.Packages.props
<PackageReference Include="Doticca.Mnemosyne" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Doticca.Mnemosyne --version 0.1.6
                    
#r "nuget: Doticca.Mnemosyne, 0.1.6"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Doticca.Mnemosyne@0.1.6
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Doticca.Mnemosyne&version=0.1.6
                    
Install as a Cake Addin
#tool nuget:?package=Doticca.Mnemosyne&version=0.1.6
                    
Install as a Cake Tool

Mnemosyne

Build NuGet License: MIT

Mnemosyne turns the Markdown a repository already has into structured document intelligence.

Use it when a tool needs to understand what a Markdown document is, which planning or governance signals it carries, where its links lead, and how its document set evolved without putting persistence, Git, or filesystem policy inside the engine.

Mnemosyne is a portable Markdown language intelligence library. You provide text, optional repository-relative paths, path indexes, and document snapshots; it returns deterministic DTOs, semantics, diagnostics, and evolution candidates.

Markdown text + path -> parse -> document / headings / tags / semantics
Path index           -> resolve links -> missing targets / anchors
Before + after       -> diff -> added / removed / moved / changed documents

Typical consumers: repository explorers, planning indexes, agent tooling, IDE overlays, and applications such as Mnemon.

Status: early development (0.x). This is a focused document intelligence engine, not a complete CommonMark/GFM parser or YAML implementation. Patch releases preserve the public API; minor releases may change contracts with migration notes. See the API contract and limitations before integrating.


Problems it solves

Pain without Mnemosyne With Mnemosyne
Treating every Markdown file as an untyped blob Document kind, lifecycle, planning reference, and key sections
Reimplementing path heuristics in every consumer Built-in conventions for roadmaps, epics, briefs, policies, and references
Following links with filesystem access during indexing Pure resolution against a caller-provided MarkdownPathIndex
Losing document meaning between revisions Snapshot changes for headings, links, semantics, and moved documents
Coupling document intelligence to one application Standalone library with no reference to Mnemon, Git, SQLite, ASP.NET, or UI

Add Mnemosyne to your .NET project

Package id: Doticca.Mnemosyne on nuget.org.

dotnet add package Doticca.Mnemosyne

For reproducible application builds, pin an exact version from the published version history. The source version on main may be newer than the latest published package; the next release prepared here is 0.1.6.

The package targets .NET 8, .NET 9, and .NET 10 and contains managed code only, with no runtime NuGet dependencies or native assets. CI is configured for Windows, Linux, and macOS. Native AOT, trimming, and browser/WASM are not currently supported or verified targets.


Parse a Markdown document

using Mnemosyne;

var markdown = """
 ---
 status: Active
 owner: platform
 ---
 # Workspace plan

 ## Next

 Ship the package integration.
 """;

var document = MnemosyneFacade.Parse(
 markdown,
 new MarkdownParseOptions { Path = "docs/roadmap/workspace/README.md" });

Console.WriteLine(document.Title);
Console.WriteLine(document.Semantics.DocKind);    // Epic
Console.WriteLine(document.Semantics.Lifecycle);  // Active
Console.WriteLine(document.Semantics.Owner);      // platform
Console.WriteLine(document.Headings.Count);

The parser extracts the title, blurb, front matter, headings, links, significance tags, and deterministic document semantics. Parsing does not read from disk.


using Mnemosyne;

var document = MnemosyneFacade.Parse(
 "See [the guide](../guides/README.md#install).",
 new MarkdownParseOptions { Path = "docs/README.md" });

var index = new MarkdownPathIndex(
 ["guides/README.md"],
 new Dictionary<string, IEnumerable<string>>
 {
  ["guides/README.md"] = ["install"],
 });

var diagnostics = MnemosyneFacade.ResolveLinks(document, index);
foreach (var diagnostic in diagnostics)
{
 Console.WriteLine($"{diagnostic.Kind}: {diagnostic.Link.Target}");
}

MarkdownPathIndex normalizes separators and understands common Markdown conventions such as .md links and folder README.md / index.md targets. External links are not treated as repository targets.


Diff document snapshots

using Mnemosyne;

var before = MnemosyneFacade.Parse(
 "# Workspace plan\n",
 new MarkdownParseOptions { Path = "docs/roadmap/README.md" });
var after = MnemosyneFacade.Parse(
 "# Workspace plan\n\n## Next\n",
 new MarkdownParseOptions { Path = "docs/done/README.md" });

var diff = MnemosyneFacade.Diff([before], [after]);

foreach (var change in diff.Changes)
{
 Console.WriteLine($"{change.Kind}: {change.Path ?? change.ToPath}");
}

The snapshot differ reports document additions, removals, moves, heading changes, link changes, and semantic changes. It is pure and does not persist a ledger.


Public API cheat sheet

You want... Call
Parse one document MnemosyneFacade.Parse(markdown, options)
Explain classification MnemosyneFacade.Explain(markdown, options)
Resolve repository links MnemosyneFacade.ResolveLinks(document, index)
Compare snapshots MnemosyneFacade.Diff(before, after, ...)
Configure parser behavior MarkdownConventionsOptions
Use replaceable components IMarkdownDocumentParser, IMarkdownLinkResolver, IMarkdownSnapshotDiffer

The facade provides default implementations. Consumers can depend on the interfaces when they need to replace parsing, link resolution, or diff behavior.


Classification contract

Mnemosyne exposes deterministic document semantics:

Concept Values
Document kind Unknown, Index, Epic, Brief, Policy, Reference
Lifecycle Unknown, Active, Planned, Done, Draft
Additional context PlanningRef, Owner, StatusRaw, KeySections
Significance SignificanceTag values inferred from paths, content, and optional front matter

Front matter can provide explicit status, owner, tags, planning references, guidance pins, guidance groups, and commit-note identity. The allowlisted fields are parsed into typed DTOs; arbitrary front matter is not treated as business truth.


Boundary and non-goals

Mnemosyne is not a database, Git client, filesystem crawler, Markdown editor, planner, LLM, dependency graph, or UI framework. It does not perform filesystem I/O for link resolution and does not own application persistence.

The engine is autonomous and has no reference back to Mnemon. Mnemon consumes it as a NuGet package and owns indexing, persistence, and product-specific workflows.


Development

Install the .NET 10 SDK and PowerShell 7. No sibling repositories, private feeds, services, or credentials are needed.

dotnet test Mnemosyne.sln
pwsh -File scripts/verify.ps1

The verification script runs tests with coverage gates (80% lines, 70% branches), checks package compatibility against the published baseline, validates license/source metadata, and runs an isolated NuGet consumer. Outputs stay under artifacts/verify/.

Pull requests receive read-only CI validation. Main-branch builds use -ci prerelease versions on GitHub Packages; nuget.org publication requires an explicit dispatch on a matching version tag. See the release checklist.

Contributing and support

Bug reports, small reproductions, and contributions are welcome. Start with CONTRIBUTING.md and the code of conduct. Use GitHub Issues for non-sensitive questions and bugs; follow SECURITY.md for private vulnerability reports.

Maintained by Doticca, with @doticca as the current code owner. Support is best-effort; no response-time or long-term support guarantee is offered. The immediate roadmap is broader Markdown corpus coverage, documented conventions, and compatibility-tested releases, not adding persistence or application workflows to the library.


Further reading

Source and package license: MIT. Test and build dependencies retain their own licenses.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.6 40 9/27/2026
0.1.5 77 9/19/2026
0.1.3 178 9/18/2026
0.1.2.17 97 9/16/2026
0.1.1.14 75 9/16/2026
0.1.0.9 74 9/16/2026