MirrorArc
LLM wiki kit
First committed by cz1993
Published in cz1993/MirrorArc. Publisher page
97 GitHub stars
What it is
Local-first, governed documentation for humans and AI agents—mirror Office, PDF, and GitHub sources into linked Markdown knowledge workspaces.
Summary from the brain’s metadata
Local-first, governed documentation for humans and AI agents—mirror Office, PDF, and GitHub sources into linked Markdown knowledge workspaces. Preserve sources. Minimize derived documents. Generate knowledge views when they are needed.
How it works
Memory model: LLM wiki
AutoGineer overview, from the brain’s own files
Memory model: LLM wiki. Folders: .github (agent config, 3 files); docs (docs, 33 files); examples (examples, 139 files); scripts (scripts, 11 files); src (source code, 126 files); template (templates, 54 files); tests (tests, 57 files). The agent reads README.md, docs/PRODUCT.md. The agent writes CHANGELOG.md.
| Folder | Role | Files |
|---|---|---|
| .github | agent-config | 3 |
| docs | docs | 33 |
| examples | examples | 139 |
| scripts | scripts | 11 |
| src | source-code | 126 |
| template | templates | 54 |
| tests | tests | 57 |
| .githooks | folder | 1 |
| cli | folder | 1 |
The agent reads
- README.md evidence: AGENTS.md
- docs/PRODUCT.md evidence: AGENTS.md
The agent writes
- CHANGELOG.md evidence: AGENTS.md
Requirements
Apps: Obsidian
Runtimes: Python >=3.11
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Google Antigravity, Kiro, OpenCode, Amp, Roo Code, Cline, JetBrains Junie, Devin (ex-Windsurf)
Set it up
This brain runs code automatically: 2 scripts. Review .githooks/pre-commit, scripts/init.sh before opening the folder in Claude Code. No step below turns a hook on for you.
.githooks/pre-commit:runs on git pre-commitscripts/init.sh:sh scripts/init.sh
Clone the repository at the commit AutoGineer scanned:
git clone https://github.com/cz1993/MirrorArc.git && cd MirrorArc && git checkout 1df13ebf6efb33018e29a1ea365cde0cf53d41c7Point Claude Code at AGENTS.md: it does not read that file on its own.
cd MirrorArc && claude
AutoGineer scanned these files at commit 1df13eb.
- Not scanned by AutoGineerThe author’s README also describes installing it from a clone of its repository. Read its install section: AutoGineer did not scan that path. https://github.com/cz1993/MirrorArc/blob/1df13ebf6efb33018e29a1ea365cde0cf53d41c7/README.md#quick-start
First committed by cz1993. Published in cz1993/MirrorArc. Licence: GNU Affero General Public License v3.0 only.
Usage
From the brain’s own files
- Create a vault without cloning MirrorArc itself.
- The installable command requires Python 3.11+; uvx and pipx run will build an isolated environment when they can find a compatible Python.
- Before the package is published to PyPI, use the Git URL:
- Once MirrorArc is published to PyPI, the equivalent short forms are uvx mirrorarc init --profile data-product ~/my-data-product and pipx run mirrorarc init --profile data-product ~/my-data-product.
- For repeated local use, install the console command once:
- Then open the vault in Obsidian if you want a human UI, point your agent at it (CLAUDE.md routes all agents to _meta/agent-rules.md), and run the installed command from any folder:
- Run sandbox from a duplicated pilot vault, not the original document folder.
- It is read-only and checks copy-boundary, mirror isolation, manifest/recovery readiness, and basic backup posture without printing source paths or document text.
Documentation by cz1993
MirrorArc
Image: Python 3.11+ Image: License: AGPL-3.0 Image: Status: technical alpha
Preserve sources. Minimize derived documents. Generate knowledge views when they are needed.
Open the live Ontario Grid demo portal →
MirrorArc is an open-source, local-first Python toolkit that turns changing Office files, PDFs, GitHub repositories, datasets, and Markdown into a governed knowledge-projection system. It keeps original records authoritative, creates deterministic Markdown projections for opaque sources, maintains source-backed relationships, and renders human or agent context without adding a vector database or an AI-generated wiki.
Image: MirrorArc beginner landing page showing the Ontario Electricity evidence tutorial
Why MirrorArc exists
Generative AI made documentation fast and cheap to create. It did not make a growing collection of summaries, entity pages, hubs, and agent notes cheap to verify or maintain. MirrorArc treats every durable derivative as a liability that must justify its existence; the information and knowledge carried by the sources remain the asset.
The product principle is:
Preserve authoritative records. Treat every durable derivative as a maintenance liability. Generate views instead of accumulating documents.
| Common failure | MirrorArc's response |
|---|---|
| Office files, PDFs, spreadsheets, repos, and Markdown stay isolated. | L1 specular projections: opaque sources receive stable, source-addressed Markdown read models while originals remain authoritative. |
| AI documentation creates more files than anyone can govern. | Anti-proliferation by architecture: relationships are data and synthesis is a view, not another note by default. |
| Cross-document meaning is hidden or asserted without evidence. | Relationship and provenance ledger: typed connections carry evidence anchors, hashes, generation method, confidence, and review state. |
| Human readers need interpretation rather than raw extraction. | L2 knowledge views: many sources produce a few purpose- and audience-specific reading surfaces that are ephemeral unless pinned or reviewed. |
| Source changes leave summaries and agent context stale. | Dependency-aware refresh: changed sources invalidate only affected projections, relationships, views, reviews, and context. |
| Sensitive or stale material enters an opaque index. | Visible governance: authority, licensing, PII boundaries, lifecycle, freshness, and publication gates remain explicit. |
See the connected evidence
The self-contained Catalog Explorer provides a relationship map, a provenance and lifecycle
inspector, and a rendered document view. When a governed repository is selected, an optional Code
view adds revision-bound source evidence, call paths, impact, and affected-test candidates. The
catalog panel is resizable, long filenames wrap instead of disappearing, and INDEX.md is pinned
as the beginner guide.
Flagship demo: Ontario electricity evidence workspace
examples/ontario-electricity-evidence-vault/ is the
flagship clean-room data-product example, built from OGL Ontario data, metadata-only public
references, independently authored Word/Excel artifacts, and a synthetic repository fixture. The
current snapshot demonstrates the implemented L1, lifecycle, catalog, and portal foundation. Its
large hand-authored Markdown layer predates the knowledge-projection architecture and is now a
migration fixture rather than the target output.
The local implementation supports source-addressed L1, evidence relationships, reviewed L2 views, dynamic/frozen context, and dependency invalidation. The checked-in example remains deliberately small. Historical stress tests are recorded separately; current batch proof is documented in the Trustworthy Context handoff when available.
The committed snapshot is an independently assembled educational corpus, not live grid data, forecasting, alerts, or an affiliated Ontario energy product.
Launch the hosted demo and start with the pinned
INDEX.md five-minute tour. GitHub Pages rebuilds this content-enabled portal only from the
provenance-documented public example and blocks deployment unless both the repository-wide
provenance/no-data gate and the generated-artifact scan pass alongside vault lint.
The hosted project is progressively discoverable: the
project overview identifies MirrorArc's purpose,
differentiators, installation path, licence, and canonical GitHub source in semantic HTML. The
demo's initial HTML contains the rendered beginner tour, while
documents/ provides one semantic, no-JavaScript
page per public record. Search and agent discovery surfaces include
sitemap.xml,
robots.txt,
llms.txt, raw public Markdown, and a metadata-only
catalog.json.
Try the demo locally
git clone https://github.com/cz1993/MirrorArc.git
cd MirrorArc
python3.11 -m venv .venv
. .venv/bin/activate
python -m pip install -e .
mirrorarc --root examples/ontario-electricity-evidence-vault sync
mirrorarc --root examples/ontario-electricity-evidence-vault code doctor
# If Ready, optionally analyze the synthetic repository fixture:
mirrorarc --root examples/ontario-electricity-evidence-vault code analyze --repo repo_252e1077b0082592ba3d --symbol demand_change
mirrorarc --root examples/ontario-electricity-evidence-vault catalog --html --include-content
python -m http.server 8000 --directory examples/ontario-electricity-evidence-vaultOpen http://127.0.0.1:8000/CATALOG.html. Start with the pinned INDEX.md, then follow the
five-minute tour. The --include-content output embeds bounded Markdown bodies and must remain
local for private or proprietary vaults. The hosted MirrorArc demo is a narrow exception: it is
built only from the public example corpus and scanned again before every deployment.
Choose a task and export its evidence
From a synced vault, choose a task, inspect what was selected and omitted, then freeze evidence:
mirrorarc --root <vault> context build --lens orientation --mode metadata --query "inspection interval" --json
mirrorarc --root <vault> context build --lens orientation --query "inspection interval" --name inspection-review
# Use the definition ID printed above:
mirrorarc --root <vault> context resolve <definition-id> --json
mirrorarc --root <vault> context freeze --definition <definition-id> --task "Explain the inspection interval with citations."
mirrorarc --root <vault> catalog --htmlQuery retrieval is opt-in: lexical ranking can miss relevant evidence. Inspect source hashes,
exact spans, selected/excluded reasons, warnings and omissions before use. Metadata contains
references only. Frozen packs include bounded evidence and report exact serialized bytes plus an
estimated token count, not a model-independent token guarantee. A tiny budget can fail because
instructions and citations alone do not fit. offline_complete is false if selected evidence is
missing or truncated; it is never a guarantee that the sources answer your question.
The portable Catalog's selection download stays metadata-only. Its governed-context panel shows
saved tasks, copyable commands and frozen status. HTML does not execute those commands. Use
--include-content only when intentionally embedding local evidence; protect the resulting file
according to its sensitivity. Source changes require refresh, context resolution, and Catalog
regeneration. Frozen bytes remain unchanged and status reports staleness.
Review PDF page evidence
The optional PageIndex integration adds physical-page evidence and unreviewed answer candidates to the same governed workflow. Install its separate pinned runtime using the PageIndex setup and review guide, then start with model-free indexing:
mirrorarc --root /absolute/path/to/copied-vault document doctor
# Use a registered PDF source ID from mirrorarc status --json:
mirrorarc --root /absolute/path/to/copied-vault document index --source SOURCE_ID --context frozen --page 2
mirrorarc --root /absolute/path/to/copied-vault catalog --html --include-contentIn the Catalog, select the PDF, then Document metadata → PDF page evidence. Optional questions require an approved model/endpoint and explicit per-command consent; indexing alone does not create an answer. Answer review shows frozen cited excerpts, current/stale state and uncertainty. A valid page address does not establish that a claim is supported. The local results separate tested behavior from real-model quality, owner acceptance and release readiness.
How it works
Register authoritative sources without changing them.
Project each opaque source into one stable, machine-owned L1 Markdown read model.
Connect evidence through typed relationships with provenance and review state rather than creating more notes.
Interpret many sources through a small number of purpose-specific L2 knowledge views.
Assemble dynamic or frozen context for a human review or agent task.
Refresh only affected projections and dependants when sources change, with reconciliation and full sync retained for recovery and verification.
The default data-product profile covers sources, contracts, pipelines, analysis, models, outputs,
governance, and operations. Additional packaged profiles support business operations,
research/learning, software-project documentation, and minimal blank starts.
Inspired by Andrej Karpathy's "LLM wiki" pattern. See
docs/positioning.mdfor the product landscape and boundaries.
Quick start
Create a vault without cloning MirrorArc itself. The installable command requires Python 3.11+;
uvx and pipx run will build an isolated environment when they can find a compatible Python.
Before the package is published to PyPI, use the Git URL:
uvx --from git+https://github.com/cz1993/MirrorArc.git mirrorarc init --profile data-product ~/my-data-product
# or, with pipx:
pipx run --spec git+https://github.com/cz1993/MirrorArc.git mirrorarc init --profile data-product ~/my-data-productOnce MirrorArc is published to PyPI, the equivalent short forms are
uvx mirrorarc init --profile data-product ~/my-data-product and
pipx run mirrorarc init --profile data-product ~/my-data-product.
For repeated local use, install the console command once:
uv tool install git+https://github.com/cz1993/MirrorArc.git
mirrorarc --version
# or, with pipx:
pipx install git+https://github.com/cz1993/MirrorArc.git
mirrorarc --versionThen open the vault in Obsidian if you want a human UI, point your agent at it (CLAUDE.md routes
all agents to _meta/agent-rules.md), and run the installed command from any folder:
mirrorarc --root ~/my-data-product doctor # check dependencies and vault structure
mirrorarc --root ~/my-data-product plan # inspect proposed mirror actions first
mirrorarc --root ~/my-data-product sync # mirror Office files and configured repos
mirrorarc --root ~/my-data-product status # review manifest-backed lifecycle state
mirrorarc --root ~/my-data-product sync --json # machine-readable sync evidence for agents/pilots
mirrorarc --root ~/my-data-product status --json # machine-readable lifecycle status
mirrorarc --root ~/my-data-product doctor --json # machine-readable preflight report
mirrorarc --root ~/my-data-product conversion --guide # read-only conversion spot-check + guide
mirrorarc --root ~/my-data-product conversion --init-results # private quality review scaffold
mirrorarc --root ~/my-data-product conversion --results _meta/conversion-quality-results.yml --require-reviewed # after filling scaffold
mirrorarc --root ~/my-data-product migration # dry-run report for legacy/unknown folders
mirrorarc --root ~/my-data-product migration --runbook # legacy folder move protocol
mirrorarc --root ~/my-data-product migration --normalize-frontmatter-domains --worksheet # review domain alias cleanup
mirrorarc --root ~/my-data-product recovery --worksheet # review manifest recovery actions
mirrorarc --root ~/my-data-product sandbox --source-root /path/to/original-documents
mirrorarc --root ~/my-data-product catalog # generate CATALOG.md inventory gateway
mirrorarc --root ~/my-data-product catalog --html # generate the interactive CATALOG.html explorer
mirrorarc --root ~/my-data-product catalog --html --include-content # local content-review portal
mirrorarc --root ~/my-data-product code doctor # optional local repository-analysis readiness
mirrorarc --root ~/my-data-product code analyze --repo <repo-id> # bounded revision evidence
mirrorarc --root ~/my-data-product code status --json # current/stale/failed analysis state
mirrorarc --root ~/my-data-product m365 # Microsoft 365/Copilot handoff readiness
mirrorarc --root ~/my-data-product review --json # summarize metadata-only human review decisions
mirrorarc --root ~/my-data-product overlap # calibrate overlap thresholds without note bodies
mirrorarc --root ~/my-data-product pilot # aggregate pilot evidence, no source content
mirrorarc --root ~/my-data-product pilot --worksheet # redacted Markdown private-pilot summary
mirrorarc --root ~/my-data-product benchmark # validate agent-readiness task pack, if present
mirrorarc --root ~/my-data-product benchmark --init-tasks # create private task scaffold
mirrorarc --root ~/my-data-product benchmark --worksheet # print private benchmark run sheet
mirrorarc --root ~/my-data-product benchmark --init-results # create private result scaffold
mirrorarc --root ~/my-data-product benchmark --results _meta/agent-readiness-results.yml --require-prompt-safety # after scoring
# edit tools/repos.yml, then:
mirrorarc --root ~/my-data-product sync # mirror configured GitHub repos too
mirrorarc --root ~/my-data-product lint # health checkRun sandbox from a duplicated pilot vault, not the original document folder. It is read-only and
checks copy-boundary, mirror isolation, manifest/recovery readiness, and basic backup posture
without printing source paths or document text.
Use review after spot-checking mirrors, catalogs, or handoff reports. It appends metadata-only
decisions to _meta/review-ledger.jsonl with artifact hashes, so later changes are reported as
stale reviews instead of silently preserving old approvals.
The generated CATALOG.html is a self-contained Catalog Explorer. It opens on INDEX.md, offers
separate relationship-map, document-metadata, rendered-document, and contextual Code views,
preserves explicit original-to-mirror lineage, and keeps local context-pack exports metadata-only.
Repository analysis runs before generation; the passive HTML never starts a process or fetches
data. The safe default
does not embed document bodies. Use catalog --html --include-content only for a local review copy;
that opt-in mode embeds bounded Markdown and generated-mirror bodies, so the resulting HTML must be
protected like the vault itself. The public GitHub Pages demo is built from the explicitly public,
provenance-documented example and passes the no-data gate before deployment. Neither mode requires
an application server or creates an evidence index.
Source checkout fallback:
git clone https://github.com/cz1993/MirrorArc.git mirrorarc && cd mirrorarc
python3.11 -m pip install -e .
mirrorarc --version
mirrorarc profile list
mirrorarc init --profile data-product ~/my-data-product
mirrorarc init --profile business-operations ~/my-business-vault
mirrorarc init --profile research-learning ~/my-research-vault
mirrorarc init --profile software-project ~/my-software-vault
mirrorarc init --profile blank ~/my-blank-vault
mirrorarc --root ~/my-data-product profile validate
mirrorarc --root ~/my-data-product profile diff 0.2.0
mirrorarc --root ~/my-data-product profile migrate --plan
mirrorarc --root ~/my-data-product profile migrate --write
mirrorarc --root ~/my-data-product profile views --check
mirrorarc --root ~/my-data-product migrate annotations --plan
mirrorarc --root ~/my-data-product planThe packaged v1 profiles are data-product (the default), business-operations,
research-learning, software-project, and blank. Each initializes from the installable
package with profile-owned folders, _meta/profile.yml, generated scaffold docs, and only the
templates declared by its contract.
Profile contract details: docs/PROFILE_SCHEMA.md.
Step-by-step: docs/quickstart.md.
Documentation
PageIndex document review — optional PDF structure, physical-page context, explicit model approval and unreviewed cited answers; currently under local validation.
PageIndex release plan — current integration and acceptance gates.
Whitepaper — canonical product thesis, authority model, and knowledge-projection architecture.
Product implementation plan — sequenced development, migration, test, Ontario corpus, and portal finish line.
New-session execution prompt — paste-ready prompt for pursuing the implementation plan in a clean session.
Repository Intelligence execution plan — implemented CodeGraph-backed code evidence, CLI, context, Catalog, and local proof record.
Repository Intelligence kickoff prompt — goal-mode prompt for implementing that plan without ADS or a review dependency.
The whitepaper defines architectural principles; the current Trustworthy Context plan governs this local batch. Earlier implementation plans record historical evidence, not current acceptance.
Product contract — audience, workflow, outcomes, and non-goals.
Quickstart — demo-first setup and daily workflow.
Sync specification — authority, mirroring, manifests, and refresh behavior.
Security model — trust boundaries, prompt safety, and local-review rules.
Profile schema — configurable domains, note types, folders, and policies.
Methodology — L0/L1, relationships, L2, context, review, and promotion discipline.
Positioning — where MirrorArc fits relative to LLM wikis, RAG, PKM, and document-management tools.
Status
v0 - technical alpha. Source-preserving L1 mirrors, manifests, lifecycle state, audit logs, journaled changed-file materialization, reconciliation, full recovery sync, profiles, lint/safety guards, the portable catalog, stable projection identities, and the versioned evidence-backed relationship ledger work today.
Dependency invalidation, L2 knowledge views, dynamic/frozen context assembly, and optional revision-bound Repository Intelligence are implemented locally. The current Ontario example is retained as migration and regression evidence; do not interpret its curated Markdown count as the target MirrorArc model. This remains a technical alpha, and local proof is not hosted or production proof.
License
MirrorArc is licensed under the GNU Affero General Public License v3.0 or later for the open
core, with a separate commercial license planned for enterprise/closed use and consulting.
LICENSE contains the full AGPL-3.0 text; commercial terms and contribution policy still require
owner/counsel finalization before accepting outside contributions. See LICENSING.md.
"MirrorArc" is a trademark — see TRADEMARK.md.
Credits
The "LLM wiki" pattern (Andrej Karpathy), markitdown (Microsoft), and Obsidian. Interoperates with — rather than competes with — tools like basic-memory and Copilot for Obsidian.
docs/MIRRORARC_WHITEPAPER.md
MirrorArc Whitepaper
Status: canonical product architecture and implementation direction
Date: 2026-07-21
Repository reviewed: cz1993/MirrorArc at commit 0995caca7ad28bcb89c5ebc0fa7572b83621e8e1
Audience: maintainers, design partners, knowledge-management teams, consulting operators, and technical reviewers
Implementation state: the local working tree implements source mirroring, journaled refresh, relationships, knowledge views, and context assembly. The Trustworthy Context batch validates integrity and opt-in task retrieval; planning-session acceptance and shipment remain pending.
1. Executive Summary
Creating documentation used to be expensive. Generative AI has made creation cheap, but it has not made the resulting document collections easy to read, reconcile, trust, or maintain. In many workspaces the new failure mode is not missing documentation. It is an excess of summaries, entity pages, hubs, and agent-authored notes whose authority and freshness are unclear.
MirrorArc exists to preserve the information and knowledge in a source collection while minimizing the number of durable documents that must be governed.
Its product thesis is:
Preserve authoritative records. Treat every durable derivative as a maintenance liability. Generate views instead of accumulating documents.
MirrorArc should therefore become a governed knowledge-projection system, not an AI-maintained wiki. It should:
preserve original documents and repositories as authoritative records;
create a stable, inspectable Markdown projection for each opaque source;
maintain evidence-backed relationships without requiring more Markdown notes;
generate a small number of human-readable knowledge views from many sources;
refresh only affected projections, relationships, views, and context as sources change;
expose provenance, lifecycle, review state, and staleness in the portal;
assemble bounded context for agents without making that context a new source of truth.
The concise product statement is:
MirrorArc turns changing source collections into governed, source-backed knowledge projections that people and AI agents can inspect, connect, cite, and refresh without replacing the original records or creating another pile of documentation.
2. Architectural Decision
MirrorArc will use two distinct projection layers around an evidence-backed relationship ledger:
L1 — Specular projection: a source-addressed, machine-owned Markdown representation designed for inspection, search, diffing, citation, and agent use;
Relationship and provenance ledger: typed connections between sources, mirrors, claims, entities, lifecycle events, and derived outputs, with evidence and invalidation state;
L2 — Diffuse knowledge views: audience- or task-specific reading views generated from many sources and relationships, ephemeral by default and persistent only through an explicit pin or review decision.
This replaces the earlier assumption that agents should routinely create MOCs, entity pages, summaries, and knowledge notes as durable Markdown. Those artifacts created an internal contradiction: anti-proliferation rules attempted to control a document factory that the methodology itself encouraged.
The new rule is:
A relationship is data, not a document. A synthesis is a view, not a record, until a human deliberately promotes it into an authoritative record.
3. What MirrorArc Governs
MirrorArc targets source-backed, lifecycle-sensitive collections where:
original records or repositories exist;
sources change over time;
provenance and source authority matter;
people or agents need to reconcile information across many artifacts;
stale interpretation creates risk or repeated effort;
a durable audit trail is more valuable than a transient chat answer.
Good fits include consulting and advisory workspaces, policy and due diligence, operational and compliance collections, research and literature review, software documentation, and complex learning collections.
MirrorArc is not:
a generic personal note-taking system;
an autonomous wiki author;
a vector database product;
a document-management-system replacement;
a guarantee that Markdown reproduces every visual or semantic detail of an Office/PDF source;
a system that turns model output into authority without review.
4. Core Principles
4.1 Authority before convenience
Original files, repositories, exports, and intentionally authored decisions remain authoritative. Derived projections must always reveal what they came from and how current they are.
4.2 Minimize durable derivatives
Every persistent derivative has a creation cost, review cost, invalidation cost, retention cost, and risk of being mistaken for authority. MirrorArc should create a file only when persistence is required for reproducibility, review, interoperability, or an explicit user decision.
4.3 One source identity, one L1 projection identity
For an opaque source such as DOCX, PDF, PPTX, or XLSX, one active source identity normally maps to one active Markdown mirror identity. Moves may change paths without changing identity. Repeated syncs must not create siblings or alternate summaries.
This is an identity, cardinality, and lineage guarantee. It is not a claim of byte-for-byte, layout-for-layout, or meaning-for-meaning equivalence. The source remains authoritative.
Already-readable Markdown and plain-text sources do not require a redundant copy merely to satisfy a file-count rule. They may be registered as L1-readable source records unless isolation, normalization, or immutable snapshotting requires a separate projection.
4.4 Relationships carry evidence
Semantic connections must be traceable to source or mirror spans, hashes, and generation methods. An unexplained graph edge is a suggestion, not knowledge.
4.5 Many sources produce few human views
L2 is not a second one-document-per-source mirror. A knowledge view answers a purpose: orient a new reader, compare positions, explain a process, trace a decision, summarize change, or prepare a task. Its cardinality is many sources to few useful views.
4.6 Events trigger work; reconciliation establishes completeness
Filesystem and provider events are advisory. Durable journaling, stable-source checks, hashing, idempotent replay, startup reconciliation, scheduled reconciliation, and full recovery sync remain mandatory.
4.7 AI may interpret but cannot establish source truth
Models may propose relationships, explanations, and views. They do not own source identity, hashes, mirror correctness, lifecycle truth, review status, or authoritative decisions.
5. Target Architecture
| Layer | Responsibility | Authority and persistence |
|---|---|---|
| L0 authoritative sources | Original files, repositories, exports, and deliberately authored records | Authoritative; preserved according to source policy |
| Change journal | Observed changes, retries, sequencing, checkpoints, and recovery | Operational and rebuildable; never source truth |
| L1 specular projections | Machine-owned Markdown and extraction metadata | Derived, inspectable, and reproducible |
| Relationship and provenance ledger | Typed, evidenced links plus dependency and invalidation state | Derived core state; deterministic or proposal/review governed |
| L2 knowledge views | Human-readable, audience/task-specific synthesis | Derived and ephemeral by default; pin/review creates a governed artifact |
| Context assembly | Dynamic selections and frozen evidence packs | Derived execution input; never authority |
| Presentation | INDEX.md, catalog, portal, Obsidian, CLI, MCP, and exports | Interface over shared state; no independent truth |
| Profile control plane | Source scope, policies, relationship vocabulary, lens definitions, review gates, and views | Versioned contract |
The core flow is:
authoritative sources
↓
change capture + reconciliation
↓
durable journal
↓
L1 specular projections + manifests + audit
↓
relationship/provenance ledger
↓
L2 knowledge views + context assembly
↓
INDEX / catalog / portal / Obsidian / MCPAll layers after L0 remain replaceable. A backup of only derived state is not a backup of the knowledge collection.
6. L1 Specular Projection Contract
A MirrorArc L1 projection is a manifest-backed, deterministic, machine-owned read model of an authoritative source. It exists to make opaque evidence inspectable without mutating the source.
The implementation contract is:
stable source IDs and mirror IDs are manifest-owned, not path-owned;
one active opaque source normally has exactly one active L1 mirror;
source bytes, source hash, converter version, configuration version, mirror path, lifecycle state, warnings, and errors are recorded;
generated mirrors are machine-owned and protected from durable inline editing;
mirror writes are atomic and preserve the previous valid mirror on failure;
unchanged sources do not produce content diffs or new files;
source moves preserve identity when unambiguous;
source deletion changes lifecycle state and does not silently erase evidence;
full sync remains the recovery and verification path;
changed-file sync remains the normal steady-state path.
Conversion quality must be explicit. A clean lifecycle state means that the declared converter ran successfully against the recorded source hash. It does not mean that every table, image, formula, scan, comment, or layout relationship was captured.
7. Relationship and Provenance Ledger
The relationship ledger is a minimal core capability, distinct from an optional full-text evidence index. It may use SQLite and must remain rebuildable from sources, manifests, deterministic rules, and accepted semantic records.
Initial relationship types should include:
MIRRORS
DERIVED_FROM
IN_DOMAIN
MENTIONS
SAME_ENTITY
SUPPORTS
CONTRADICTS
SUPERSEDES
DEPENDS_ON
GOVERNS
INVALIDATES
IN_CONTEXTEvery relationship records at least:
relationship_id
from_id
to_id
relationship_type
source_id and source_hash
mirror_id and mirror_hash when applicable
evidence anchor or deterministic rule
generation method and version
model and prompt version when applicable
confidence when applicable
review state
created_at
invalidated_atDeterministic relationships such as MIRRORS, lifecycle, profile membership, and manifest
dependency may be accepted automatically. Model-derived semantic relationships begin as proposals.
They may be displayed with confidence and evidence, reviewed, rejected, or invalidated, but they
must not be presented as source facts merely because a model produced them.
Evidence anchors should be durable enough to re-resolve after regeneration. Store source/mirror hashes plus bounded exact text and surrounding context where text anchoring is appropriate. Do not copy entire source bodies into the ledger.
8. L2 Diffuse Knowledge Views
A knowledge view is a generated reading surface defined by:
a purpose or question;
an intended audience;
source and relationship selection rules;
a format or lens template;
a content/token budget;
citation and freshness requirements.
Examples include:
an orientation brief for a new project member;
a comparison of two policy positions;
a timeline assembled from many records;
a decision-support view showing evidence for and against an option;
a change digest for sources modified since the last review;
a process explanation with source-backed steps.
Knowledge views use explicit states:
generated
reviewed
stale
superseded
failedAn unreviewed generated view may be replaced automatically. When a reviewed view's dependencies
change, the reviewed artifact becomes stale; MirrorArc may generate a replacement candidate but
must not overwrite the approved version silently.
Pinning a view persists its definition and governed output. If a person adopts a synthesis as a policy, decision, report, or other record for which they accept authority, it leaves the derived view layer and becomes a new L0 authoritative source with its own lifecycle.
The default persistence rule is:
Do not create a durable L2 file unless a user pins it, reviews it, or a reproducibility requirement explicitly calls for it.
9. INDEX.md and Authored Markdown
INDEX.md is the intentional manual exception to the anti-proliferation default. It defines the
workspace's purpose, scope, operating boundaries, and navigation entry points. It should not become
a manually maintained factual summary of the collection.
Allowed durable Markdown categories are:
INDEX.mdas the human guide;authoritative Markdown sources stored in declared source roots;
machine-owned L1 projections;
pinned or reviewed L2 views with complete provenance and state;
operational and governance files required by the MirrorArc runtime.
Untracked summaries, MOCs, entity pages, and agent-created knowledge notes are not a default content category. A linter should require every user-facing Markdown file to declare which allowed category it belongs to.
10. Journaled Incremental Refresh
The current journaled materialization foundation remains valid. The useful database analogy is a materialized view or CQRS read model, not literal write-ahead-log shipping.
Normal source processing is:
observe create/change/move/delete
→ coalesce and settle
→ validate source boundary
→ fingerprint and hash candidate
→ update L1 only when needed
→ invalidate affected relationships, views, reviews, and frozen-context freshness
→ recompute the affected subgraph and eligible generated views
→ expose lag, failures, and review workThe system provides at-least-once delivery with idempotent application. It does not claim exactly once processing.
Required safeguards remain:
Office lock-file suppression;
file-stability checks before and after conversion;
atomic mirror replacement;
workspace locking;
retryable and terminal failure states;
startup and scheduled reconciliation;
explicit full-sync recovery;
path, symlink, source-boundary, and output-boundary validation.
Recomputation must be dependency-bounded. A change to one source should not reinterpret the entire collection unless the changed relationship genuinely affects a collection-wide view.
11. Model Policy
Tier 0 — deterministic core
No model is required for:
source discovery and identity;
event capture and replay;
hashing and lifecycle state;
L1 generation;
deterministic relationships;
dependency invalidation;
reconciliation and recovery;
audit records.
Tier 1 — bounded semantic proposals
A lightweight model may receive changed chunks, bounded context, selected relationships, and explicit profile vocabulary. It may propose:
entities and typed relationships;
evidence anchors;
a semantic change explanation;
affected generated or reviewed views;
a bounded L2 view candidate.
Each proposal is tied to source and mirror hashes, model identity, prompt version, and review state.
Tier 2 — explicit cross-document interpretation
A larger model may be invoked for deliberate multi-source synthesis or task-specific context assembly. This is an explicit operation, not a hidden steady-state dependency.
Source and mirror content remain untrusted evidence. Document text cannot override MirrorArc policy, request tool execution, or grant itself authority.
12. Context Assembly
MirrorArc needs two context-pack modes.
Dynamic saved context
A dynamic context definition stores selection rules, purpose, budgets, required relationship types, and freshness policy. It resolves the current eligible sources, L1 projections, relations, and views each time it is used.
Frozen evidence pack
A frozen pack records a reproducible snapshot containing selected excerpts or content references, source and mirror hashes, relationship evidence, view versions, timestamps, and warnings. It is appropriate for audit, review, or repeatable agent execution.
A paths-and-metadata-only export remains useful as a safe selection manifest, but it must not be described as self-contained agent context. A context pack intended for execution must either carry bounded content or contain resolvable references available to the receiving agent.
13. Portal and Visualization
Visualization is a presentation of governed state, not the relationship engine itself.
The portal should:
collapse each source and L1 mirror into one conceptual evidence card by default;
reveal source/mirror lineage on demand;
display typed relationships with evidence, confidence, and review state;
show staleness and invalidation propagation;
offer task- and audience-specific knowledge views;
distinguish generated, reviewed, stale, and authoritative artifacts visually;
build dynamic or frozen context packs within explicit content budgets;
avoid an unreadable graph hairball through clustering, filters, and progressive disclosure.
The portable metadata-only catalog remains a safe interface. A content-inclusive portal is local and inherits the sensitivity and redistribution limits of the underlying corpus.
14. Profiles
Profiles should define behavior rather than encourage note creation. The profile contract should own:
source roots and admission policy;
format and extraction policy;
privacy, retention, licensing, and publication rules;
relationship vocabulary and deterministic rules;
entity-resolution boundaries;
knowledge-lens definitions;
review and persistence gates;
context budgets and permitted export modes;
portal views and validation tasks.
Legacy note templates and MOC/entity-page requirements should be removed or migrated into optional view definitions. Domain folders may remain useful for authoritative sources and operational artifacts, but they are not a reason to create one Markdown note for every conceptual object.
15. Security, Rights, and Governance
MirrorArc's no-data rule remains non-negotiable for this repository. Public examples may contain only synthetic material or genuinely public, permissively licensed artifacts with documented provenance and licence terms.
Official publication does not automatically mean redistributable. Non-official public material is also not safe to commit merely because it is downloadable. When rights are unclear, MirrorArc may record a metadata-only reference or use the file in an operator-controlled, uncommitted validation workspace if policy allows; it must not add the content to the public example.
The relationship ledger and derived views may reveal sensitive associations even when they do not copy entire documents. They must remain inside the source collection's trust boundary and inherit its access, retention, and disposal policy.
Secrets, credentials, tokens, personal data, and proprietary records never belong in this repository, its examples, generated portal, logs, screenshots, tests, or history.
16. Validation Contract
MirrorArc is not complete when code exists. It is complete when the product behavior is proven on a complex, rights-cleared source collection.
Required test families are:
L1 correctness: identity/cardinality, source preservation, conversion warnings, idempotence, move/delete behavior, and recovery;
anti-proliferation: reject unexplained user-facing Markdown and prevent sibling mirrors or automatically accumulated knowledge notes;
relationship evidence: deterministic and proposed edges, evidence anchors, provenance, review, rejection, and invalidation;
L2 lifecycle: many-to-few generation, pin/review, source-change staleness, replacement candidates, and promotion to authoritative source;
incremental dependency behavior: one source change recomputes only its affected subgraph and views;
context assembly: dynamic freshness, frozen reproducibility, content budgets, and source citations;
portal behavior: navigation, relationship inspection, view status, context building, accessibility, responsive layout, and sensitive-content boundaries;
safety and rights: no-data, path, secret, PII, licence, provenance, and public-export gates;
scale: a mixed-format Ontario electricity corpus large and varied enough to expose lifecycle, relationship, retrieval, and UI failures.
The binding execution sequence and acceptance matrix live in
PRODUCT_IMPLEMENTATION_PLAN.md.
17. Current Implementation Assessment
The repository already provides a substantial deterministic foundation:
source-preserving Office/PDF and repository mirroring;
manifests, hashes, lifecycle states, audits, and annotation-sidecar protections;
journaled changed-file processing, replay, locking, reconciliation, and full recovery sync;
profiles, catalog generation, review metadata, benchmarks, safety scans, and an Ontario electricity demonstration portal.
The local working tree includes the relationship/provenance ledger, dependency invalidation, reviewed-view lifecycle, context packs, migration inventory, and a portable Catalog. These are implemented capabilities; historical validation does not prove the current dirty tree. The current Trustworthy Context plan requires fresh local gates, task-retrieval measurements, export-integrity checks and a separate review handoff. Empirical model-quality evaluation requires explicit endpoint/data/spend authorization.
18. Finite Product Direction
Development proceeds in this order:
converge the product, methodology, profile, sync, and agent contracts;
define migration and compatibility boundaries;
enforce L1 identity and anti-proliferation invariants;
implement the relationship and provenance ledger;
connect journal events to dependency invalidation;
implement L2 knowledge views and their lifecycle;
implement dynamic and frozen context assembly;
update the portal and visualization;
migrate templates and the Ontario example;
validate the completed product against an expanded mixed-format Ontario electricity corpus.
The following remain outside this goal unless required to satisfy an acceptance criterion:
vector embeddings or a vector database;
hosted SaaS;
multi-user real-time collaboration;
a desktop shell;
an Obsidian plugin;
broad cloud connector development;
package-part incremental extraction;
autonomous promotion of generated knowledge into authority;
public deployment of unreviewed or rights-uncleared corpus content.
19. Principal Risks
| Risk | Severity | Mitigation |
|---|---|---|
| L2 becomes one more document factory | Critical | Many-to-few lenses, ephemeral default, explicit persistence gate |
| A generated view is mistaken for authority | Critical | Visible state, citations, provenance, and promotion boundary |
| Semantic edges become unexplained model opinions | Critical | Evidence anchors, hashes, generation records, confidence, and review |
| Source events are mistaken for complete change truth | Critical | Journal plus mandatory reconciliation and full recovery sync |
| Native Markdown is duplicated without value | High | Register readable sources directly unless isolation requires a projection |
| Reviewed views are silently replaced | High | Mark stale, preserve approved version, generate a candidate |
| Relationship or view recomputation becomes corpus-wide | High | Dependency-led invalidation and structural performance tests |
| Portal presents a graph hairball | High | Collapse source/mirror pairs, cluster, filter, progressive disclosure |
| Public sample violates rights or privacy | Critical | Licence/provenance gate, metadata-only references, no-data scan |
| Context packs leak content | Critical | Explicit dynamic/frozen modes, budgets, sensitivity labels, local-only review |
| Architecture work never closes | Critical | Finite plan, stage exits, Ontario end-to-end finish line |
20. Product Implication
The strongest product position is not “AI documentation” and not “chat with your files.” It is:
MirrorArc minimizes the documentation a team must maintain while maximizing the source-backed knowledge that people and agents can retrieve, interpret, and trust.
This direction preserves MirrorArc's strongest existing differentiators—source authority, provenance, lifecycle, anti-proliferation, linking-first retrieval, and local-first operation—while removing the curated-wiki compromise that produced the Ontario example's excess Markdown.
21. Bottom Line
MirrorArc should preserve original records, produce one governed L1 projection for each opaque source, express relationships as evidenced data, render a small number of L2 knowledge views, and assemble context for a purpose.
It should not blindly create Markdown because Markdown is cheap. Markdown is a projection format; the evidence-backed relationship model is the connective tissue; knowledge views are disposable reading surfaces; authoritative records remain the source of truth.
The architecture is now decided. Completion requires implementing it and proving the complete loop—ingest, mirror, connect, interpret, invalidate, assemble context, and navigate—against a much larger mixed-format Ontario electricity corpus in the portal.
References
Microsoft MarkItDown: https://github.com/microsoft/markitdown
Materialized View pattern: https://learn.microsoft.com/azure/architecture/patterns/materialized-view
CQRS pattern: https://learn.microsoft.com/azure/architecture/patterns/cqrs
W3C PROV-O: https://www.w3.org/TR/prov-o/
W3C Web Annotation Data Model: https://www.w3.org/TR/annotation-model/
MirrorArc product contract:
docs/PRODUCT.mdMirrorArc sync specification:
docs/SYNC_SPEC.mdMirrorArc profile schema:
docs/PROFILE_SCHEMA.md
439 files · 404 not served here
- .gitattributes (not served here)
- .githooks/pre-commit (not served here)
- .github/workflows/ci.yml (not served here)
- .github/workflows/pages.yml (not served here)
- .github/workflows/release.yml (not served here)
- .gitignore (not served here)
- AGENTS.md
- ATTRIBUTION.md
- AUTOGINEER-RUNS.md
- CHANGELOG.md
- CONTRIBUTING.md
- LICENSE
- LICENSING.md
- MANIFEST.in (not served here)
- NOTICE
- README.md
- TRADEMARK.md
- cli/README.md (not served here)
- docs/AGENT_READINESS_BENCHMARK.md
- docs/CODE_INTELLIGENCE_EXECUTION_PLAN.md
- docs/CONVERSION_REVIEW_GUIDE.md
- docs/MICROSOFT_365_HANDOFF.md
- docs/MIRRORARC_WHITEPAPER.md
- docs/PAGEINDEX.md
- docs/PAGEINDEX_RELEASE_PLAN.md
- docs/PAGEINDEX_RESULTS.md
- docs/PRODUCT.md
- docs/PRODUCT_IMPLEMENTATION_PLAN.md
- docs/PROFILE_SCHEMA.md
- docs/RECOVERY.md
- docs/RELEASE.md
- docs/SECURITY_MODEL.md
- docs/SYNC_SPEC.md
- docs/TRUSTWORTHY_CONTEXT_CONSTRAINTS.txt (not served here)
- docs/TRUSTWORTHY_CONTEXT_EXECUTION_PLAN.md
- docs/TRUSTWORTHY_CONTEXT_EXPERIMENTS.md
- docs/TRUSTWORTHY_CONTEXT_FILES.json (not served here)
- docs/TRUSTWORTHY_CONTEXT_HANDOFF.md
- docs/TRUSTWORTHY_CONTEXT_RESULTS.md
- docs/TRUSTWORTHY_CONTEXT_REVIEW.md
- docs/assets/mirrorarc-document-metadata.jpg (not served here)
- docs/assets/mirrorarc-index-tutorial.jpg (not served here)
- docs/assets/mirrorarc-relationship-map.jpg (not served here)
- docs/information-architecture.md
- docs/methodology.md
- docs/positioning.md
- docs/prompts/CODE_INTELLIGENCE_EXECUTION_KICKOFF.md (not served here)
- docs/prompts/KNOWLEDGE_PROJECTION_KICKOFF.md (not served here)
- docs/prompts/PAGEINDEX_CLARITY_FOLLOWUP.md (not served here)
- docs/prompts/TRUSTWORTHY_CONTEXT_EXECUTION_KICKOFF.md (not served here)
- docs/quickstart.md
- examples/DATA_PROVENANCE.md (not served here)
- examples/README.md (not served here)
- examples/ontario-electricity-evidence-vault/.gitignore (not served here)
- examples/ontario-electricity-evidence-vault/.obsidian/app.json (not served here)
- examples/ontario-electricity-evidence-vault/.obsidian/appearance.json (not served here)
- examples/ontario-electricity-evidence-vault/.obsidian/core-plugins.json (not served here)
- examples/ontario-electricity-evidence-vault/.obsidian/graph.json (not served here)
- examples/ontario-electricity-evidence-vault/00_inbox/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/10_context/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/10_context/Demo walkthrough.md (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/IESO Data Directory.md (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/IESO Year in Review.md (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/IESO zonal map reference.md (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/OEB open data directory.md (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/Ontario Energy Report 2023 supporting data.md (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/Source freshness policy.md (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/README.md (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/exports-gwh-notes-en.txt (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/exports-gwh.csv (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/generation-output-by-fuel-type-grid-connected-gwh-notes-en.txt (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/generation-output-by-fuel-type-grid-connected-gwh.csv (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/generation-output-by-fuel-type-grid-connected-percent-notes-en.txt (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/generation-output-by-fuel-type-grid-connected-percent.csv (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/greenhouse-gas-emissions-ontario-electricity-notes-en.txt (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/greenhouse-gas-emissions-ontario-electricity.csv (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/historical-annual-ontario-energy-demand-twh-notes-en.txt (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/historical-annual-ontario-energy-demand-twh.csv (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/historical-monthly-generation-output-by-fuel-type-mwh-notes-en.txt (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/historical-monthly-generation-output-by-fuel-type-mwh.csv (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/historical-monthly-ontario-demand-peaks-minimums-mw-notes-en.txt (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/historical-monthly-ontario-demand-peaks-minimums-mw.csv (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/imports-gwh-notes-en.txt (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/imports-gwh.csv (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/ontario-demand-peaks-minimums-mw-notes-en.txt (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/ontario-demand-peaks-minimums-mw.csv (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/ontario-peak-demand-mw-notes-en.txt (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/open-data/ontario-energy-report-2023/ontario-peak-demand-mw.csv (not served here)
- examples/ontario-electricity-evidence-vault/20_sources/repos/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/30_data-contracts/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/30_data-contracts/Annual demand contract.md (not served here)
- examples/ontario-electricity-evidence-vault/30_data-contracts/Evidence API contract.md (not served here)
- examples/ontario-electricity-evidence-vault/30_data-contracts/Generation output contract.md (not served here)
- examples/ontario-electricity-evidence-vault/30_data-contracts/Intertie flow contract.md (not served here)
- examples/ontario-electricity-evidence-vault/30_data-contracts/Monthly demand range contract.md (not served here)
- examples/ontario-electricity-evidence-vault/40_pipelines/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/40_pipelines/Artifact mirroring pipeline.md (not served here)
- examples/ontario-electricity-evidence-vault/40_pipelines/Evidence lineage map.md (not served here)
- examples/ontario-electricity-evidence-vault/40_pipelines/Normalization pipeline.md (not served here)
- examples/ontario-electricity-evidence-vault/40_pipelines/Public data ingestion pipeline.md (not served here)
- examples/ontario-electricity-evidence-vault/40_pipelines/Quality gate pipeline.md (not served here)
- examples/ontario-electricity-evidence-vault/50_analysis/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/50_analysis/2023 annual demand finding.md (not served here)
- examples/ontario-electricity-evidence-vault/50_analysis/2023 generation mix finding.md (not served here)
- examples/ontario-electricity-evidence-vault/50_analysis/2023 intertie flow finding.md (not served here)
- examples/ontario-electricity-evidence-vault/50_analysis/2023 peak demand finding.md (not served here)
- examples/ontario-electricity-evidence-vault/50_analysis/Cross-source evidence synthesis.md (not served here)
- examples/ontario-electricity-evidence-vault/50_analysis/workbooks/historical-demand-profile.xlsx (not served here)
- examples/ontario-electricity-evidence-vault/60_models/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/70_outputs/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/70_outputs/Output relationship map.md (not served here)
- examples/ontario-electricity-evidence-vault/80_governance/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/80_governance/Decision - use a clean-room public corpus.md (not served here)
- examples/ontario-electricity-evidence-vault/80_governance/Evidence controls.md (not served here)
- examples/ontario-electricity-evidence-vault/80_governance/Evidence workspace risk register.md (not served here)
- examples/ontario-electricity-evidence-vault/80_governance/IESO reference-only boundary.md (not served here)
- examples/ontario-electricity-evidence-vault/80_governance/Open data license register.md (not served here)
- examples/ontario-electricity-evidence-vault/80_governance/Retention and refresh policy.md (not served here)
- examples/ontario-electricity-evidence-vault/90_operations/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/90_operations/Data quality investigation runbook.md (not served here)
- examples/ontario-electricity-evidence-vault/90_operations/Example release checklist.md (not served here)
- examples/ontario-electricity-evidence-vault/90_operations/Freshness dashboard specification.md (not served here)
- examples/ontario-electricity-evidence-vault/90_operations/Illustrative stale-source incident.md (not served here)
- examples/ontario-electricity-evidence-vault/90_operations/Refresh public sources runbook.md (not served here)
- examples/ontario-electricity-evidence-vault/90_operations/Source outage runbook.md (not served here)
- examples/ontario-electricity-evidence-vault/90_operations/briefs/data-quality-incident-review.docx (not served here)
- examples/ontario-electricity-evidence-vault/AGENTS.md (not served here)
- examples/ontario-electricity-evidence-vault/CLAUDE.md (not served here)
- examples/ontario-electricity-evidence-vault/Documents.base (not served here)
- examples/ontario-electricity-evidence-vault/INDEX.md (not served here)
- examples/ontario-electricity-evidence-vault/RETENTION.md (not served here)
- examples/ontario-electricity-evidence-vault/_archive/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/LICENSE
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/README.md (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/config/quality-gates.yml (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/config/sources.yml (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/docs/architecture.md (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/docs/historical-validation.md (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/docs/source-boundaries.md (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/pyproject.toml (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/scripts/check_fixture.py (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/src/grid_evidence/__init__.py (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/src/grid_evidence/contracts.py (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/src/grid_evidence/load.py (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/src/grid_evidence/quality.py (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/src/grid_evidence/summary.py (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/tests/test_quality.py (not served here)
- examples/ontario-electricity-evidence-vault/_fixtures/repos/ontario-electricity-evidence-pipeline/tests/test_summary.py (not served here)
- examples/ontario-electricity-evidence-vault/_meta/acquisition-manifest.json (not served here)
- examples/ontario-electricity-evidence-vault/_meta/agent-rules.md (not served here)
- examples/ontario-electricity-evidence-vault/_meta/conventions.md (not served here)
- examples/ontario-electricity-evidence-vault/_meta/domain-map.yml (not served here)
- examples/ontario-electricity-evidence-vault/_meta/knowledge-views/reviewed/view_a81f3973de5885a05ea45da94822.md (not served here)
- examples/ontario-electricity-evidence-vault/_meta/knowledge-views/reviewed/view_f085427fd55094d9ce5f21c916c8.md (not served here)
- examples/ontario-electricity-evidence-vault/_meta/legacy-markdown-migration.json (not served here)
- examples/ontario-electricity-evidence-vault/_meta/lifecycle-states.yml (not served here)
- examples/ontario-electricity-evidence-vault/_meta/lint-config.yml (not served here)
- examples/ontario-electricity-evidence-vault/_meta/mirror-config.yml (not served here)
- examples/ontario-electricity-evidence-vault/_meta/profile.yml (not served here)
- examples/ontario-electricity-evidence-vault/_mirrors/.gitkeep (not served here)
- examples/ontario-electricity-evidence-vault/_templates/base-note.md (not served here)
- examples/ontario-electricity-evidence-vault/_templates/data-contract.md (not served here)
- examples/ontario-electricity-evidence-vault/_templates/dataset.md (not served here)
- examples/ontario-electricity-evidence-vault/_templates/decision-record.md (not served here)
- examples/ontario-electricity-evidence-vault/_templates/evaluation.md (not served here)
- examples/ontario-electricity-evidence-vault/_templates/model.md (not served here)
- examples/ontario-electricity-evidence-vault/_templates/pipeline.md (not served here)
- examples/ontario-electricity-evidence-vault/_templates/runbook.md (not served here)
- examples/ontario-electricity-evidence-vault/_templates/source-ref.md (not served here)
- examples/ontario-electricity-evidence-vault/log.md (not served here)
- examples/ontario-electricity-evidence-vault/tools/README.md (not served here)
- examples/ontario-electricity-evidence-vault/tools/benchmark_tasks.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/catalog_report.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/conversion_report.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/lint_vault.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/m365_report.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/migration_report.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/mirrorarc.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/overlap_report.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/pilot_report.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/recovery_report.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/repos.example.yml (not served here)
- examples/ontario-electricity-evidence-vault/tools/repos.yml (not served here)
- examples/ontario-electricity-evidence-vault/tools/requirements.txt (not served here)
- examples/ontario-electricity-evidence-vault/tools/review_ledger.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/sandbox_report.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/sync_all.sh (not served here)
- examples/ontario-electricity-evidence-vault/tools/sync_github_repos.py (not served here)
- examples/ontario-electricity-evidence-vault/tools/sync_office_md.py (not served here)
- pyproject.toml (not served here)
- scripts/benchmark_journaled_materialization.py (not served here)
- scripts/build_ontario_stress_corpus.py (not served here)
- scripts/build_pages_demo.sh (not served here)
- scripts/build_pages_discovery.py (not served here)
- scripts/create_plain_markitdown_dump.py (not served here)
- scripts/generate_messy_benchmark_corpus.py (not served here)
- scripts/init.sh (not served here)
- scripts/no_data_scan.py (not served here)
- scripts/pageindex_product_proof.py (not served here)
- scripts/sync_template_copies.py (not served here)
- scripts/validate_trustworthy_context.py (not served here)
- src/mirrorarc/__init__.py (not served here)
- src/mirrorarc/annotation_migration.py (not served here)
- src/mirrorarc/benchmark.py (not served here)
- src/mirrorarc/builtin_profiles/blank.yml (not served here)
- src/mirrorarc/builtin_profiles/business-operations.yml (not served here)
- src/mirrorarc/builtin_profiles/research-learning.yml (not served here)
- src/mirrorarc/builtin_profiles/software-project.yml (not served here)
- src/mirrorarc/catalog.py (not served here)
- src/mirrorarc/catalog_explorer.py (not served here)
- src/mirrorarc/changes/__init__.py (not served here)
- src/mirrorarc/changes/changed_sync.py (not served here)
- src/mirrorarc/changes/events.py (not served here)
- src/mirrorarc/changes/feed.py (not served here)
- src/mirrorarc/changes/fingerprint.py (not served here)
- src/mirrorarc/changes/journal.py (not served here)
- src/mirrorarc/changes/materialize.py (not served here)
- src/mirrorarc/changes/native_watch.py (not served here)
- src/mirrorarc/changes/reconcile.py (not served here)
- src/mirrorarc/changes/replay.py (not served here)
- src/mirrorarc/changes/stability.py (not served here)
- src/mirrorarc/changes/watch.py (not served here)
- src/mirrorarc/changes/worker.py (not served here)
- src/mirrorarc/cli.py (not served here)
- src/mirrorarc/code_intelligence/__init__.py (not served here)
- src/mirrorarc/code_intelligence/adapter.py (not served here)
- src/mirrorarc/code_intelligence/context.py (not served here)
- src/mirrorarc/code_intelligence/service.py (not served here)
- src/mirrorarc/context_assembly/__init__.py (not served here)
- src/mirrorarc/context_assembly/builder.py (not served here)
- src/mirrorarc/context_assembly/export.py (not served here)
- src/mirrorarc/context_assembly/retrieval.py (not served here)
- src/mirrorarc/context_assembly/store.py (not served here)
- src/mirrorarc/conversion.py (not served here)
- src/mirrorarc/doctor.py (not served here)
- src/mirrorarc/document_intelligence/__init__.py (not served here)
- src/mirrorarc/document_intelligence/adapter.py (not served here)
- src/mirrorarc/document_intelligence/context.py (not served here)
- src/mirrorarc/document_intelligence/presentation.py (not served here)
- src/mirrorarc/document_intelligence/runtime/README.md (not served here)
- src/mirrorarc/document_intelligence/runtime/build-requirements.in (not served here)
- src/mirrorarc/document_intelligence/runtime/pageindex-pypdf.patch (not served here)
- src/mirrorarc/document_intelligence/runtime/requirements-py311.txt (not served here)
- src/mirrorarc/document_intelligence/service.py (not served here)
- src/mirrorarc/document_intelligence/worker.py (not served here)
- src/mirrorarc/knowledge_inventory.py (not served here)
- src/mirrorarc/knowledge_views/__init__.py (not served here)
- src/mirrorarc/knowledge_views/definitions.py (not served here)
- src/mirrorarc/knowledge_views/lifecycle.py (not served here)
- src/mirrorarc/knowledge_views/render.py (not served here)
- src/mirrorarc/knowledge_views/store.py (not served here)
- src/mirrorarc/lint.py (not served here)
- src/mirrorarc/m365.py (not served here)
- src/mirrorarc/migration.py (not served here)
- src/mirrorarc/mirrors/__init__.py (not served here)
- src/mirrorarc/mirrors/github_repos.py (not served here)
- src/mirrorarc/mirrors/office.py (not served here)
- src/mirrorarc/overlap.py (not served here)
- src/mirrorarc/pilot.py (not served here)
- src/mirrorarc/profile_migration.py (not served here)
- src/mirrorarc/profile_scaffold.py (not served here)
- src/mirrorarc/profiles.py (not served here)
- src/mirrorarc/recovery.py (not served here)
- src/mirrorarc/relationships/__init__.py (not served here)
- src/mirrorarc/relationships/deterministic.py (not served here)
- src/mirrorarc/relationships/invalidation.py (not served here)
- src/mirrorarc/relationships/model.py (not served here)
- src/mirrorarc/relationships/proposals.py (not served here)
- src/mirrorarc/relationships/store.py (not served here)
- src/mirrorarc/review_ledger.py (not served here)
- src/mirrorarc/runtime_profile.py (not served here)
- src/mirrorarc/sandbox.py (not served here)
- src/mirrorarc/template/.gitignore (not served here)
- src/mirrorarc/template/00_inbox/.gitkeep (not served here)
- src/mirrorarc/template/10_context/.gitkeep (not served here)
- src/mirrorarc/template/20_sources/.gitkeep (not served here)
- src/mirrorarc/template/20_sources/repos/.gitkeep (not served here)
- src/mirrorarc/template/30_data-contracts/.gitkeep (not served here)
- src/mirrorarc/template/40_pipelines/.gitkeep (not served here)
- src/mirrorarc/template/50_analysis/.gitkeep (not served here)
- src/mirrorarc/template/60_models/.gitkeep (not served here)
- src/mirrorarc/template/70_outputs/.gitkeep (not served here)
- src/mirrorarc/template/80_governance/.gitkeep (not served here)
- src/mirrorarc/template/90_operations/.gitkeep (not served here)
- src/mirrorarc/template/AGENTS.md (not served here)
- src/mirrorarc/template/CLAUDE.md (not served here)
- src/mirrorarc/template/Documents.base (not served here)
- src/mirrorarc/template/INDEX.md (not served here)
- src/mirrorarc/template/RETENTION.md (not served here)
- src/mirrorarc/template/_archive/.gitkeep (not served here)
- src/mirrorarc/template/_meta/agent-rules.md (not served here)
- src/mirrorarc/template/_meta/conventions.md (not served here)
- src/mirrorarc/template/_meta/domain-map.yml (not served here)
- src/mirrorarc/template/_meta/lifecycle-states.yml (not served here)
- src/mirrorarc/template/_meta/lint-config.yml (not served here)
- src/mirrorarc/template/_meta/mirror-config.yml (not served here)
- src/mirrorarc/template/_meta/profile.yml (not served here)
- src/mirrorarc/template/_mirrors/.gitkeep (not served here)
- src/mirrorarc/template/_templates/base-note.md (not served here)
- src/mirrorarc/template/_templates/data-contract.md (not served here)
- src/mirrorarc/template/_templates/dataset.md (not served here)
- src/mirrorarc/template/_templates/decision-record.md (not served here)
- src/mirrorarc/template/_templates/evaluation.md (not served here)
- src/mirrorarc/template/_templates/model.md (not served here)
- src/mirrorarc/template/_templates/pipeline.md (not served here)
- src/mirrorarc/template/_templates/runbook.md (not served here)
- src/mirrorarc/template/_templates/source-ref.md (not served here)
- src/mirrorarc/template/log.md (not served here)
- src/mirrorarc/template/tools/README.md (not served here)
- src/mirrorarc/template/tools/benchmark_tasks.py (not served here)
- src/mirrorarc/template/tools/catalog_report.py (not served here)
- src/mirrorarc/template/tools/conversion_report.py (not served here)
- src/mirrorarc/template/tools/lint_vault.py (not served here)
- src/mirrorarc/template/tools/m365_report.py (not served here)
- src/mirrorarc/template/tools/migration_report.py (not served here)
- src/mirrorarc/template/tools/mirrorarc.py (not served here)
- src/mirrorarc/template/tools/overlap_report.py (not served here)
- src/mirrorarc/template/tools/pilot_report.py (not served here)
- src/mirrorarc/template/tools/recovery_report.py (not served here)
- src/mirrorarc/template/tools/repos.example.yml (not served here)
- src/mirrorarc/template/tools/requirements.txt (not served here)
- src/mirrorarc/template/tools/review_ledger.py (not served here)
- src/mirrorarc/template/tools/sandbox_report.py (not served here)
- src/mirrorarc/template/tools/sync_all.sh (not served here)
- src/mirrorarc/template/tools/sync_github_repos.py (not served here)
- src/mirrorarc/template/tools/sync_office_md.py (not served here)
- src/mirrorarc/views.py (not served here)
- template/.gitignore (not served here)
- template/00_inbox/.gitkeep (not served here)
- template/10_context/.gitkeep (not served here)
- template/20_sources/.gitkeep (not served here)
- template/20_sources/repos/.gitkeep (not served here)
- template/30_data-contracts/.gitkeep (not served here)
- template/40_pipelines/.gitkeep (not served here)
- template/50_analysis/.gitkeep (not served here)
- template/60_models/.gitkeep (not served here)
- template/70_outputs/.gitkeep (not served here)
- template/80_governance/.gitkeep (not served here)
- template/90_operations/.gitkeep (not served here)
- template/AGENTS.md (not served here)
- template/CLAUDE.md (not served here)
- template/Documents.base (not served here)
- template/INDEX.md (not served here)
- template/RETENTION.md (not served here)
- template/_archive/.gitkeep (not served here)
- template/_meta/agent-rules.md (not served here)
- template/_meta/conventions.md (not served here)
- template/_meta/domain-map.yml (not served here)
- template/_meta/lifecycle-states.yml (not served here)
- template/_meta/lint-config.yml (not served here)
- template/_meta/mirror-config.yml (not served here)
- template/_meta/profile.yml (not served here)
- template/_mirrors/.gitkeep (not served here)
- template/_templates/base-note.md (not served here)
- template/_templates/data-contract.md (not served here)
- template/_templates/dataset.md (not served here)
- template/_templates/decision-record.md (not served here)
- template/_templates/evaluation.md (not served here)
- template/_templates/model.md (not served here)
- template/_templates/pipeline.md (not served here)
- template/_templates/runbook.md (not served here)
- template/_templates/source-ref.md (not served here)
- template/log.md (not served here)
- template/tools/README.md (not served here)
- template/tools/benchmark_tasks.py (not served here)
- template/tools/catalog_report.py (not served here)
- template/tools/conversion_report.py (not served here)
- template/tools/lint_vault.py (not served here)
- template/tools/m365_report.py (not served here)
- template/tools/migration_report.py (not served here)
- template/tools/mirrorarc.py (not served here)
- template/tools/overlap_report.py (not served here)
- template/tools/pilot_report.py (not served here)
- template/tools/recovery_report.py (not served here)
- template/tools/repos.example.yml (not served here)
- template/tools/requirements.txt (not served here)
- template/tools/review_ledger.py (not served here)
- template/tools/sandbox_report.py (not served here)
- template/tools/sync_all.sh (not served here)
- template/tools/sync_github_repos.py (not served here)
- template/tools/sync_office_md.py (not served here)
- tests/fixtures/codegraph_v1_5_0/affected-summary.json (not served here)
- tests/fixtures/codegraph_v1_5_0/callees-demand-change.json (not served here)
- tests/fixtures/codegraph_v1_5_0/callers-demand-change.json (not served here)
- tests/fixtures/codegraph_v1_5_0/files.json (not served here)
- tests/fixtures/codegraph_v1_5_0/impact-demand-change.json (not served here)
- tests/fixtures/codegraph_v1_5_0/query-demand-change.json (not served here)
- tests/fixtures/codegraph_v1_5_0/query-summary.json (not served here)
- tests/fixtures/codegraph_v1_5_0/status-current.json (not served here)
- tests/fixtures/codegraph_v1_5_0/status-stale.json (not served here)
- tests/fixtures/trustworthy_context/mixed/access.md (not served here)
- tests/fixtures/trustworthy_context/mixed/attack.md (not served here)
- tests/fixtures/trustworthy_context/mixed/capacity.md (not served here)
- tests/fixtures/trustworthy_context/mixed/procedure.md (not served here)
- tests/fixtures/trustworthy_context/pack.json (not served here)
- tests/fixtures/trustworthy_context/revised/policy-v1.md (not served here)
- tests/fixtures/trustworthy_context/revised/policy-v2.md (not served here)
- tests/fixtures/trustworthy_context/revised/revision-log.md (not served here)
- tests/test_annotation_migration.py (not served here)
- tests/test_changes_changed_sync.py (not served here)
- tests/test_changes_feed.py (not served here)
- tests/test_changes_materialize.py (not served here)
- tests/test_changes_native_watch.py (not served here)
- tests/test_changes_reconcile.py (not served here)
- tests/test_changes_replay.py (not served here)
- tests/test_changes_stability.py (not served here)
- tests/test_changes_watch.py (not served here)
- tests/test_changes_worker.py (not served here)
- tests/test_code_intelligence.py (not served here)
- tests/test_context_assembly.py (not served here)
- tests/test_document_intelligence.py (not served here)
- tests/test_document_presentation.py (not served here)
- tests/test_document_security.py (not served here)
- tests/test_examples.py (not served here)
- tests/test_journal.py (not served here)
- tests/test_journaled_materialization_benchmark.py (not served here)
- tests/test_knowledge_inventory.py (not served here)
- tests/test_knowledge_views.py (not served here)
- tests/test_license_headers.py (not served here)
- tests/test_lifecycle_contract.py (not served here)
- tests/test_lint_vault.py (not served here)
- tests/test_messy_benchmark_corpus.py (not served here)
- tests/test_migration_markdown.py (not served here)
- tests/test_no_data_scan.py (not served here)
- tests/test_ontario_stress_corpus.py (not served here)
- tests/test_packaged_template.py (not served here)
- tests/test_pages_discovery.py (not served here)
- tests/test_pages_workflow.py (not served here)
- tests/test_plain_markitdown_dump.py (not served here)
- tests/test_profile_contract.py (not served here)
- tests/test_profile_driven_reports.py (not served here)
- tests/test_relationship_invalidation.py (not served here)
- tests/test_relationships.py (not served here)
- tests/test_release_context_integrity.py (not served here)
- tests/test_release_workflow.py (not served here)
- tests/test_sync_behaviour.py (not served here)
- tests/test_template_copy_sync.py (not served here)
- tests/test_trustworthy_context.py (not served here)
Advantages
- Local-first: the memory stays in files or a database on your own machine (a rule-derived fact from the brain’s files, evidence: README.md)
- Works with 14 MCP clients (a rule-derived fact from the brain’s files, evidence: README.md)
- Ships an Obsidian vault layout (a rule-derived fact from the brain’s files, evidence: examples/ontario-electricity-evidence-vault/.obsidian)
- Plain markdown memory that you can read and edit yourself (a rule-derived fact from the brain’s files, evidence: README.md)
- No API key is named in its files (a rule-derived fact from the brain’s files, evidence: README.md)
- Open licence (AGPL-3.0-only) (a rule-derived fact from the brain’s files)
Limitations
- No ZIP download: install it from its source (a rule-derived fact from the brain’s files)
Security
Risk level: Low risk
This brain runs
Git hooks (1)
.githooks/pre-commit(pre-commit):runs on git pre-commit
Agent instructions that run or fetch something (2)
AGENTS.md:Operator direction (2026-09-18): project development and validation run locally.AGENTS.md:Every behavior change: run the package-owned vault lint through the example's tool shim, run the test suite, and update `CHANGELOG.md` and relevant docs.
Install scripts (1)
scripts/init.sh:sh scripts/init.sh
- Low risk: scripts-present (.githooks/pre-commit)
- Low risk: scripts-present (scripts/init.sh)
Attribution and licence
- First committed by
cz1993
- Declared authors
- cz1993 (declared in pyproject.toml)
- Publisher
- Ci Zhu (Community)
- Source
- cz1993/MirrorArc · commit 1df13eb
- Licence
- GNU Affero General Public License v3.0 only (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Contributors
- cz1993
AutoGineer is not affiliated with or endorsed by cz1993.
Install from source
404 of its files are not served here, so there is no ZIP. cz1993/MirrorArc at 1df13eb