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.
CHANGELOG.md
Changelog
All notable changes to MirrorArc are documented here. Format loosely follows Keep a Changelog; Python package prereleases use PEP 440.
Unreleased — Trustworthy Context
Add the optional PageIndex answer-first presentation contract: direct answer, cited reason and important caveats stay visible in Catalog, with keyboard-accessible frozen-page links and optional details/original output. Preserve immutable candidates and historical packs; show the escaped complete original with a warning when an old or malformed layout cannot be parsed. Keep default exports metadata-only. New instructions distinguish evidenced source changes from errors in earlier answers. Synthetic Astra prompt checks remain separate from real SDK inference.
Add optional isolated PageIndex PDF indexing, source/page/hash-bound context, current-source checks, bounded Catalog page previews, and explicit model-assisted answer candidates. Actual model-free SDK and scripted loopback tool-contract checks pass; real-model quality and release acceptance remain unproven. See
docs/PAGEINDEX_RELEASE_PLAN.md.Record the October 4 eight-case Astra subscription trial and owner approval of the shorter authored review layout. Both plain and governed inputs met core grounding checks; no answer superiority was established. Direct SDK inference, production-layout changes and release acceptance remain separate gates. This is validation documentation, not a runtime change.
Require a distinctly versioned local PageIndex
0.2.10+mirrorarc.1patch using maintainedpypdf6.19.0 instead of vulnerable PyPDF2. Refuse legacy runtimes, bind parser versions into evidence, and require reindexing after a parser upgrade without rewriting frozen history.Load the optional runtime's required libraries before reporting Ready; reject malformed, duplicate or oversized model configuration without echoing its contents. Bound PDF/cache reads and bind refreshed evidence to source paths as well as hashes.
Enforce approved HTTP operation/model, request and response byte limits, request counts, output-token ceilings, disabled redirects and
store: falseat the PageIndex HTTP boundary. Python-level guards also refuse provider child processes; they are not an OS sandbox.Show unreviewed answer candidates alongside hash-checked frozen page excerpts in local content-enabled Catalogs. Mark historical candidates stale, suppress damaged evidence, and wrap long answer text. Metadata-only output omits questions, answers and excerpts.
Document tested whole-vault restore and PDF-index recovery. Preserve historical answer files during index maintenance and retain the database backup for semantic relationship decisions; source-only reconstruction and a ledger export are not equivalent to restoring those decisions.
Bind effective budgets into frozen identities and refuse conflicting writes, including after derived pack-record loss; preserve earlier frozen bytes.
Bound retrieval exclusion diagnostics to counts and five examples, with a hash-addressed local detailed report, so large candidate sets leave room for useful evidence.
Enforce current context-mode policy at document, saved-definition and code entry points.
Export exact code span unions, verified source snapshots, visible omissions and final serialized UTF-8 byte ceilings with honest token estimates; distinguish reference-only evidence.
Include working-tree changes in base comparisons; preserve Catalog analysis selections.
Bound provider output while streaming, time out and clean up subprocess groups.
Add opt-in deterministic FTS5/BM25 task retrieval inside the existing derived database and a fixed 12-task synthetic benchmark with unscored model outcomes.
Invalidate saved frozen contexts after full sync and report live frozen code staleness in Catalog.
Wrap long export commands and preserve keyboard focus in the portable selection dialog.
Clarify the portable Catalog task/evidence/export journey. Retain CodeGraph 1.5.0 and MarkItDown defaults; upstream experiment limitations and final local proof are recorded in the handoff.
[Unreleased]
Changed
Completed the local Workstreams 0-10 knowledge-projection proof against a 280-source disposable Ontario corpus spanning eight format classes. The portal now labels content-inclusive output, exposes deterministic/proposed/accepted/rejected/invalidated relationship governance, preserves bounded evidence anchors, and remains usable at desktop and mobile sizes without a second graph authority.
Converged the product, methodology, information architecture, profile, sync, recovery, security, template, agent, and CI contracts on the approved knowledge-projection model. Packaged profiles are now
0.2.0contracts with explicit Markdown categories, relationship vocabulary, many-to-few lens definitions, review safeguards, and context budgets while retaining schema-v1 read compatibility for existing technical-alpha profiles.Reframed MirrorArc's canonical whitepaper and README around a governed knowledge-projection architecture: authoritative L0 sources, one-to-one L1 specular projections, an evidence-backed relationship ledger, many-to-few L2 knowledge views, dependency-aware refresh, and dynamic or frozen context assembly. The docs now identify the existing curated-note model and Ontario Markdown layer as migration evidence rather than the target product.
Replaced the two legacy example vaults with the 50+ file Ontario electricity evidence workspace: 10 historical OGL Ontario CSVs plus source notes, 40+ curated knowledge notes, two independently authored Word/Excel artifacts, and a synthetic validation-code fixture. IESO and OEB pages remain metadata-only references; the corpus contains no company attribution or forward-looking output.
Made
data-productthe default profile with source, contract, pipeline, analysis, model, output, governance, and operations domains; retainedbusiness-operationsas a compatibility profile.Replaced legacy note templates with data-product templates and consolidated runtime agent guidance into
_meta/agent-rules.md, with shortCLAUDE.mdandAGENTS.mdentrypoints.Removed internal prompt, ADR, revision, pilot-status, validation-gate, benchmark-result, and handoff-planning documents from the public user-facing documentation set.
Replaced the previous static
CATALOG.htmldashboard with a self-contained Catalog Explorer that adds profile-aware browsing and search, 1–3 hop relationship mapping, explicit original-to-mirror lineage, distinct metadata and document views, anINDEX.mdbeginner landing, an evidence inspector, and local metadata-only context-pack exports without adding a server or evidence index.Reworked the graph as an adaptive layered layout with separated orthogonal routing lanes, fixed card ports, focus-only relationship labels, hover emphasis, and responsive inspector behavior to prevent node, line, and label collisions, while repository mirrors are deduplicated from generic machine-owned nodes so each artifact keeps one complete lineage path.
Made the catalog panel mouse- and keyboard-resizable, replaced single-line filename truncation with readable wrapping and full-title affordances, and pinned
INDEX.mdabove domain collections as a dedicated beginner guide. Reworked the default and Ontario Electricity indexes into five-minute tutorials, and added screenshot-led public-repository onboarding plus discovery metadata.Kept the replacement catalog UI inside an explicit security boundary: the default remains metadata-only, while
--include-contentcreates a local-review HTML copy containing bounded, safely rendered Markdown and generated-mirror bodies. Original records remain authoritative and context-pack downloads remain metadata-only in both modes.Restored payment-card detection for provenance-listed PDFs, including directly Flate-compressed content streams, and other non-OOXML binary payloads; provenance permits a fixture format but no longer weakens the zero-tolerance PII checks.
Renamed the project from Vaultwright to MirrorArc; the distribution, canonical Python namespace, CLI, repository URLs, docs, templates, examples, benchmark mode, CI/release workflows, and local derived-state path now use the MirrorArc identity.
Removed the pre-release Vaultwright console and Python-package aliases; local-state and benchmark migration readers remain narrowly compatible so existing technical-alpha vaults can be upgraded.
Removed dated planning copies, revision snapshots, development prompts, and standalone ADR files; the current product, profile, sync, security, and naming contracts now carry the durable decisions.
Updated the primary benchmark baseline from
document_chat_transcripttoplain_markitdown_dump, while preserving legacy task-pack compatibility.Marked experimental report/scaffold command surfaces in CLI help while preserving compatibility commands.
Clarified the whitepaper's mirror-layer wording: MirrorArc mirrors are manifest-backed, deterministic Markdown materializations with journaled incremental refresh, not simple Markdown conversion/export or literal WAL shipping.
Added
Added the trustworthy-context execution plan, separate Codex development kickoff, and post-development review checklist. Documented local-only validation and a single consolidated GitHub PR/merge after planning-session acceptance; no implementation or shipment is implied.
Added optional Repository Intelligence through the pinned CodeGraph v1.5.0 local CLI: three plain-language commands, revision/tree-bound evidence, deterministic historical analysis identities, current/stale/failed state, bounded dynamic/frozen code context, and a passive responsive Catalog Code view. Provider indexes remain disposable ignored state, telemetry and update checks are suppressed, affected tests stay visibly non-authoritative, and failed refreshes retain the previous valid result.
Added a bounded Repository Intelligence execution plan and goal-mode kickoff prompt. The planned slice uses a pinned optional local CodeGraph CLI integration, three plain-language MirrorArc commands, revision-bound code evidence, existing context governance, and a friendly portable Catalog workflow while explicitly excluding vector search, bulk graph import, extra watchers/databases, provider daemons, ADS, and review overhead.
Added loss-of-state recovery for governed filesystem artifacts. Full deterministic relationship refresh reattaches hash-verified reviewed/pinned L2 files, saved dynamic definitions, and frozen context packs after
.mirrorarc/state.sqliteis removed; dependency edges and freshness state are reconstructed without changing persisted bytes. Semantic decisions remain part of the local ledger and therefore still require a database backup for restoration; ledger exports retain audit evidence but are not an automatic restore path.Added governed context assembly with three intentionally separate modes: body-free metadata selection manifests, saved dynamic definitions that resolve current evidence, and immutable offline frozen packs. Profile ceilings enforce token/file/excerpt budgets; frozen packs include citations, hashes, relationship evidence, omissions, version/sensitivity warnings, and an explicit untrusted-document boundary. Deterministic
IN_CONTEXTand dependency records drive source-change freshness without rewriting frozen bytes.Added profile-owned many-to-few L2 knowledge views with deterministic cited rendering, explicit token budgets and omissions, stable dependency identities, cache-by-default persistence, idempotent unchanged regeneration, generated/reviewed/stale/superseded lifecycle, and optional model-version recording behind an interface. Pin/review persists a governed copy; only a named, explicit promotion can create a new authoritative Markdown source with derivation provenance.
Connected successful journal materialization to cycle-safe, bounded dependency invalidation. A changed/deleted source updates only its L0/L1 deterministic subgraph, invalidates hash-bound semantic edges, preserves move-only identity, marks reviewed views stale, queues generated-view refresh, marks frozen context stale, and records the journal sequence and old/new hashes. Reconciliation repairs missed hash transitions without scanning unrelated source bodies.
Added the versioned relationship/provenance ledger inside the existing local
.mirrorarc/state.sqliteboundary. Deterministic refresh materializes artifact identities,MIRRORS,DERIVED_FROM, domain, profile, lifecycle, and dependency records with bounded evidence anchors and a reproducible fingerprint; optional semantic relations remain proposals until named acceptance or rejection and retain review/invalidation audit history.Added stable L1 projection identities to Office and repository manifests/frontmatter, a shared read-only
mirrorarc inventoryreport for authoritative/native/opaque/L1/L2 counts, and blocking anti-proliferation checks for duplicate identities, duplicate paths, orphan projections, and unexplained user-facing Markdown. Profiles now declare whether native readable sources are used directly or require isolated/immutable projections.Added deterministic per-file Markdown migration inventory with allowed/legacy/unknown categories, hashes, classification evidence, and dispositions.
migration --apply-markdown-reviewsupports only reviewed, hash-pinned category changes, requires a backup directory outside the vault, and preserves unrelated files; the Ontario and all packaged-profile inventories have zero unexplained Markdown before legacy cleanup begins.Added a progressively rendered discovery layer for the public Pages demo: crawler-visible
INDEX.mdcontent, per-document semantic HTML and raw Markdown, canonical/social metadata, structured data,robots.txt,sitemap.xml,llms.txt, and an agent-readable catalog. The complete generated site remains inside the public-corpus no-data gate.Added a semantic project overview that describes MirrorArc itself and links its canonical public GitHub repository through visible navigation, metadata, and
SoftwareSourceCodestructured data.Added a GitHub Pages deployment for the public Ontario Grid demo portal. The workflow rebuilds the example from a fresh temporary copy, embeds the tutorial and document views, and requires the repository-wide provenance/no-data gate before installation plus vault lint and a second generated-artifact scan before deployment.
Added an execution-grade product implementation plan with ordered contracts, migration, L1, relationship, invalidation, L2, context, portal, template, safety, and validation workstreams. Its finish line requires an expanded rights-cleared mixed-format Ontario electricity corpus, end-to-end MirrorArc simulation, and local portal/browser validation.
Added a paste-ready new-session knowledge-projection kickoff prompt that pursues the plan through the Ontario corpus proof while preserving no-data, licensing, local-first validation, and external-action gates.
Added
scripts/create_plain_markitdown_dump.py, a private external-pilot helper that creates the requiredplain_markitdown_dumpbenchmark baseline outside the public source checkout.Added reproducible reviewed-result generation for the messy synthetic benchmark corpus and published its aggregate dogfood scores.
Added a reproducible messy synthetic benchmark corpus generator for the review-plan 200-file baseline, including task-pack, plain-dump, private-result-scaffold, and run-sheet artifacts.
Added package-first
uvx/pipxonboarding guidance and updatedmirrorarc initnext-step output to point beginners at the installed console command plus JSON pilot evidence checks.Added structured top-level
--jsonoutput formirrorarc sync,mirrorarc status, andmirrorarc doctor, with CI/release smoke coverage for pilot-ready machine-readable evidence.Added journal schema metadata migration for older local state and non-failing diagnostic status output for future local journal schemas.
Added doctor warnings for vaults located under cloud-synced or mounted/network-style storage.
Closed the Stage 2 V1-C3 official-profile gate:
mirrorarc init --profilenow scaffoldsbusiness-operations,research-learning,software-project, andblankfrom the package, with non-business profile folders, generated scaffold docs, matching domain maps, and profile-declared note templates derived from the selected contract; tests now add a synthetic source to each initialized profile and verify clean Office mirror lifecycle/status/lint behavior.Closed the Stage 1B V1-C10 safety gate in the controlling docs after the focused, affected, full-suite, packaging, lint, no-data, template-copy, shell syntax, diff, and residue gates passed for journaled changed-file materialization.
Added optional Stage 1B native watch capture with
mirrorarc watch --native, backed by themirrorarc[watch]watchdog extra; native events are observed only under configured content roots, buffered, normalized through the existing feed filters, and flushed through journal replay.Added deterministic Stage 1B journaled-materialization benchmark evidence with
scripts/benchmark_journaled_materialization.py, proving known-path replay over 1,000 synthetic sources performs zero whole-workspace discovery, hashes no untouched source bodies, and invokes the converter once for one modified source.Added Stage 1B move/recreate replay coverage: reconciliation now requeues resolved
source_movedrecords after the previous generated mirror is removed, allowingsync --changedto generate the new mirror with the same source ID, and tests cover delete/recreate returning a source record toclean.Added Stage 1B deleted-source replay handling: manifest-backed
deletedjournal events now mark Office source recordssource_missing, retain generated mirrors for review, append audit evidence, and finish as applied work instead of generic review-required events.Added Stage 1B watch startup orchestration with
mirrorarc watch --once, composing startup reconciliation, feed-event queueing, and journal replay; optional native capture is now handled bymirrorarc watch --native.Added Stage 1B changed-file sync orchestration with
mirrorarc sync --changed, composing explicit reconciliation and journal replay while preserving the existing full-sync path asmirrorarc sync/mirrorarc sync --full.Added Stage 1B explicit reconciliation with
mirrorarc reconcile, queuing missed created, modified, moved, deleted, and review-required candidate events from source/manifest state with metadata-first comparison and candidate-only hashing for safe move detection.Added Stage 1B idempotent journal replay with
mirrorarc journal replay, recovering interruptedprocessingevents under the workspace lease, explicitly retrying failed events only with--retry-failed, and exposing bounded/JSON replay output.Added a Stage 1B lease-protected changed-source worker primitive that claims journal events, runs source-addressable Office materialization for current-path events, records source identity on finished journal rows, and finishes events as applied, review-required, or failed.
Added deterministic Stage 1B file-stability settling for changed-source candidates, with injectable clock/sleeper/fingerprint tests and optional pre-conversion settling in the source-addressable Office materialization primitive.
Added a Stage 1B source-addressable Office materialization primitive that processes one vault-relative source through the existing Office mirror engine, preserves source bytes, honors profile-defined mirror roots, writes manifest/audit state, and skips unchanged conversions.
Added Stage 1B journal worker coordination primitives: workspace lease acquisition/release, stale-lease takeover, transactional event claiming, claimed-event finishing, failed-event retry, and recovery of events left
processingafter an interrupted worker.Added deterministic Stage 1B change-feed and metadata-fingerprint primitives, including a static test feed, generated/local/operational path filtering, event coalescing before queueing, and a no-full-hash fast path when the cheap fingerprint is unchanged.
Added the first Stage 1B journal foundation: package-owned changed-file event/state modules, local
.mirrorarc/state.sqliteinitialization,mirrorarc journal status,.mirrorarc/ignore/no-data safeguards, and focused persistence tests without starting watcher delivery.Closed the Stage 1A kernel/profile-convergence gate in the controlling docs, preserving the package-runtime/shim boundary and opening the Stage 1B journaled materialization lane.
Documented the Stage 1A profile-assumption inventory across package code, copied-tool shims, templates, examples, and tests, with classifications for universal invariants, business profile data, legacy compatibility fallbacks, test fixtures, and verified defects.
Adopted the June 24 canonical white paper, added ADR 0002 for journaled incremental materialization, split Stage 1 into Stage 1A/Stage 1B in the finish-line controls, and added V1-C10 for journaled changed-file materialization while preserving full sync as the baseline/recovery path.
Added the 2026-06-23 strategic whitepaper revision, ADR 0001, and
docs/V1_FINISH_LINE.mdso v1 work is gated by the profile-driven architecture, explicit non-goals, and Core/Explorer finish-line matrix.Added an initial package-owned profile contract validator plus
_meta/profile.ymlfor the currentbusiness-operationstemplate, establishing the first Stage 1 profile-schema seam.Added package-owned v1 profile contracts for
research-learning,software-project, andblank;mirrorarc profile list/shownow exposes all four official profile contracts.Added a shared runtime profile helper for active content roots so lint, catalog, overlap calibration, and repo mirror output validation use the same profile-owned folder fallback.
Added shared runtime profile frontmatter-key ordering so Office and GitHub generated mirrors place profile-owned context fields consistently before managed source/repo metadata.
The installable
mirrorarcCLI now supportsinit --profile business-operations,profile list,profile show, andprofile validateagainst the package-owned profile contract.mirrorarc lintandmirrorarc catalognow read_meta/profile.ymlfor profile-defined domains, note types, statuses, required properties, and canonical content folders. The migration report now uses profile-defined canonical domains while_meta/domain-map.ymlremains the legacy alias compatibility layer.The installable
mirrorarc catalogcommand now runs package-owned catalog code fromsrc/mirrorarc/, while the vault-localtools/catalog_report.pyremains available as a compatibility surface.Added package-owned
profile diffand read-onlyprofile migrate --plancommands so profile version drift, missing profile files, and template drift can be reviewed before any write-mode profile migration.Added
docs/PROFILE_SCHEMA.mdand conservative package-ownedprofile migrate --writesupport that creates missing shared/profile-planned directories and copies missing packaged profile/template files without overwriting existing files, source documents, generated mirrors, or annotation sidecars.Profile validation now requires domain, note-type, and status identifiers to be lowercase kebab-case, and required/optional frontmatter property names to be lowercase frontmatter keys without duplicates.
Profile validation now rejects unknown fields inside domain, note-type, and status definitions, and validates optional
purposestrings so profile data stays declarative.Profile validation now rejects unknown fields inside
folder_planentries andpolicy_defaults, keeping profile bootstrap and policy data schema-declared.Profile validation now rejects frontmatter keys that are listed as both required and optional, keeping generated views, lint, and repo-context inference aligned with one profile-owned field contract.
Profile validation now requires
templates,views, andskillsentries to be safe vault-relative artifact paths without duplicates.Profile validation now enforces safe domain folders plus non-empty
folder_planrecords whose paths stay inside declared profile domains, and profile migration creates directories from that validated folder plan.Profile validation now rejects duplicate or nested domain folders, keeping profile-driven domain routing, migration, and mirror placement unambiguous.
mirrorarc overlapnow reads the active profile's domain folders when choosing curated notes for calibration, so profile-defined content roots participate without hard-coded business folders.mirrorarc overlapnow also reads profile-defined context frontmatter fields when counting inbound wikilinks, so non-business profiles can use fields such asresearch_projectwithout inheritingaccount/clientassumptions.Profile status definitions can now declare
attention: trueandinactive: true; generated Bases use the attention role for review views, and lint/overlap use inactive statuses instead of hard-coded business status names when skipping retired notes.Profile note type definitions can now declare
machine_owned: true; validation enforces boolean values, overlap excludes machine-owned artifacts, and migration frontmatter cleanup ignores them without relying only on hard-coded mirror type names.mirrorarc catalognow separates profile-defined machine-owned Markdown artifacts from curated Markdown/domain counts, while surfacing them as their own inventory metric.mirrorarc m365now separates profile-defined machine-owned Markdown artifacts, including repo mirrors, from curated Markdown counts in handoff inventory.mirrorarc sandboxnow reports profile-defined machine-owned Markdown separately from curated Markdown in copied-vault preflight inventory.Profiles now own generated mirror status defaults with
policy_defaults.mirror_statusandpolicy_defaults.repo_stub_status; Office/repo sync, lint, and annotation migration use those values instead of hard-codedactive/draftchecks for generated mirror metadata.Profiles now own Office mirror placement defaults with
policy_defaults.mirror_modeandpolicy_defaults.mirror_root; Office sync and lint use those values when_meta/mirror-config.ymldoes not override them.Profile migration now creates the target profile's
policy_defaults.mirror_rootdirectory instead of assuming_mirrors/, while preserving the legacy fallback for older profiles.Office mirror domain routing now uses active profile domain folders as canonical, with
_meta/domain-map.ymlretained only for legacy aliases and compatibility guidance.Catalog, Microsoft 365 handoff, sandbox, doctor, review-ledger classification, and migration guidance now classify generated source mirrors from the active Office mirror root instead of assuming
_mirrors/.mirrorarc migration --worksheet,--runbook, and frontmatter-normalization worksheets now print the active profile identity plus canonical domain folders, and direct unknown folder/domain decisions back to_meta/profile.ymlwhile keeping_meta/domain-map.ymlas the legacy alias layer.Benchmark task-pack validation, result citation validation, and
benchmark --init-tasksscaffolding now use the active Office mirror root for generated mirror evidence paths.mirrorarc pilotnow excludes the active Office mirror root from workspace inventory, so custom generated roots are not counted as operator content or source candidates.mirrorarc recoverynow excludes the active Office mirror root from missing-manifest source evidence checks, so custom generated roots do not trigger false unsynced-source warnings.Profile validation now rejects templates, views, skills, and benchmark task packs declared inside
policy_defaults.mirror_root, keeping generated Office mirrors separate from profile artifacts.Generated
Documents.basereview-attention filters now use only profile-declaredattention: truestatus roles instead of inferring business-oriented status names.mirrorarc doctornow reports profile-declared generated view health through the profile view planner, warning on missing or stale views without assuming every profile ownsDocuments.base.mirrorarc doctornow validates the active profile contract first and treats_meta/domain-map.ymland_meta/mirror-config.ymlas legacy alias/override files for profile-driven vaults, while preserving legacy required-file checks for profile-less vaults.mirrorarc lintnow treats a missing_meta/domain-map.ymlas a non-blocking legacy-alias warning when a valid profile contract provides canonical domains, while profile-less legacy vaults still fail when the domain map is missing.mirrorarc lintnow loads_meta/profile.ymlthrough the package profile validator before deriving allowed domains, note types, statuses, policy defaults, and content roots, so invalid profile contracts block lint before unsafe profile data can drive checks.mirrorarc lintnow reuses the shared runtime profile context helpers directly for context fields and aliases, preserving profile-less legacy fallback without local duplicate defaults.mirrorarc lintnow reuses the shared runtime repo-notes directory helpers for repo-mirror path checks, so configuredtools/repos.ymlnotes directories and profile defaults share one fallback path.Shared runtime profile helpers now load
_meta/profile.ymlthrough the package profile validator before exposing domains, status roles, mirror defaults, repo context fields, or repo mirror folders to sync/report code; invalid contracts fall back to legacy defaults instead of partially trusted profile data, and GitHub repo sync reuses the shared helper path.mirrorarc catalogandmirrorarc migrationnow load profile domain routing through the package profile validator before reporting canonical profile folders, so invalid profile contracts surface as report errors instead of letting partial profile data drive routing.mirrorarc benchmarkand the aggregatemirrorarc pilotreport now load profile-declaredbenchmark_taskspaths through the package profile validator, while explicit--tasksand the legacy_meta/agent-readiness-tasks.ymlpath remain supported.Added package-owned
profile views --checkandprofile views --writecommands that generate the profile-ownedDocuments.basefile from_meta/profile.yml, with CI smoke coverage for source and wheel installs.GitHub repo mirror sync and lint now read the profile's
policy_defaults.repo_notes_diras the default repo-mirror location, and generated repo-mirror frontmatter derives its domain from the profile's domain/folder mapping.GitHub repo mirror sync and lint now read
policy_defaults.context_aliases, so thebusiness-operationsprofile can declareclientas an alias ofaccountwithout forcing that business-specific rule onto any valid profile that omits the policy.Profile validation now requires
policy_defaults.repo_notes_dir, when present, to be a safe vault-relative folder inside a declared profile domain and separate from the Office mirror root.Profile validation now enforces boolean source-authority/no-real-data policy defaults, requiring
original_sources_authoritative: trueandreal_data_in_repo: falsewhen those defaults are declared.GitHub repo mirror sync, lint, and annotation migration now derive repo-context frontmatter keys from the active profile's optional properties, preserving the business profile's
account/clientcompatibility while allowing non-business profiles to use their own context fields.Office source-mirror frontmatter ordering now uses the active profile's context fields before managed source metadata, instead of privileging business-only context keys in every profile.
GitHub repo-mirror frontmatter ordering now uses the active profile's context fields before managed repo metadata, and runtime helpers no longer infer business context aliases from a profile ID when
policy_defaults.context_aliasesis absent.GitHub repo mirror sync now reuses the shared runtime profile context helpers directly for repo-context fields and aliases, preserving profile-less legacy fallback without local duplicate defaults.
Annotation migration now also reads
policy_defaults.context_aliaseswhen comparing generated repo-mirror frontmatter withtools/repos.yml, so profile-defined aliases are not mistaken for human mirror annotations.Annotation migration now reuses the shared runtime profile context helpers for repo-context fields and aliases, preserving profile-less legacy fallback without a separate local copy.
Review-ledger classification now accepts profile-defined
machine_ownedMarkdown note types as generated review targets while still recording only metadata, hashes, and frontmatter fields.Microsoft 365 handoff, sandbox preflight, recovery, and review-ledger reporting now resolve repo mirror folders from the active profile or
tools/repos.yml, and the vault-local report scripts delegate to the package runtime to prevent implementation drift.Generic doctor, sandbox, pilot, benchmark, and conversion report copy now uses workspace, protected-identifier, private-evidence, and source-backed language instead of client-specific wording on profile-neutral workflows.
Vault-local catalog, conversion, migration, overlap, benchmark, and pilot tools now also delegate to the package runtime, leaving copied vault scripts as compatibility shims for package-owned behavior.
The vault-local
tools/mirrorarc.pyoperator wrapper now delegates to the package CLI while preserving the copied vault root as the default--root.Added package-owned
migrate annotations --planandmigrate annotations --writecommands that move above-sentinel mirror notes and preserved frontmatter into_meta/mirror-annotations/sidecars keyed bysource_idorrepo_id, without editing original sources or generated mirrors.Office and repo mirror sync now recognize matching annotation sidecars and reset regenerated mirrors to machine-owned headers instead of carrying migrated human annotations forward.
mirrorarc lintnow blocks generated source/repo mirrors that still contain above-sentinel human annotations unless a matching_meta/mirror-annotations/sidecar exists.Office and repo sync now stop preserving legacy above-sentinel annotations automatically: unmigrated annotations become force-blocking review work, and fresh mirrors use machine-owned headers without a curated
## Notesregion.Office mirror planning, sync, and status behavior now lives in package-owned
mirrorarc.mirrors.office; vault-localtools/sync_office_md.pyis a compatibility shim copied through the package template and examples.GitHub repo mirror planning, sync, and status behavior now lives in package-owned
mirrorarc.mirrors.github_repos; vault-localtools/sync_github_repos.pyis a compatibility shim copied through the package template and examples.The installable
mirrorarc plan,mirrorarc sync, andmirrorarc statuscommands now orchestrate the package-owned Office and repo sync modules directly, while the vault-localtools/mirrorarc.pywrapper remains available for compatibility.The installable
mirrorarc doctorcommand now runs package-owned preflight checks frommirrorarc.doctor, including dependency, manifest, lifecycle-contract, recovery, review-ledger, Obsidian, backup, git, and GitHub auth posture checks.Vault health checks now live in package-owned
mirrorarc.lint; vault-localtools/lint_vault.pyis a compatibility shim copied through the package template and examples.The installable
mirrorarc conversioncommand now runs package-ownedmirrorarc.conversioncode; vault-localtools/conversion_report.pyremains available as a compatibility surface, and CI smoke tests cover package-level conversion JSON output.The installable
mirrorarc m365command now runs package-ownedmirrorarc.m365code; vault-localtools/m365_report.pyremains available as a compatibility surface, and CI smoke tests cover package-level handoff JSON output.The installable
mirrorarc migrationcommand now runs package-ownedmirrorarc.migrationcode; vault-localtools/migration_report.pyremains available as a compatibility surface, and CI smoke tests cover package-level migration JSON output.The installable
mirrorarc overlapcommand now runs package-ownedmirrorarc.overlapcode; vault-localtools/overlap_report.pyremains available as a compatibility surface, and CI smoke tests cover package-level overlap JSON output.The installable
mirrorarc benchmarkcommand now runs package-ownedmirrorarc.benchmarkcode; vault-localtools/benchmark_tasks.pyremains available as a compatibility surface, and package tests cover task/result validation, private scaffolds, and worksheets without the vault-local wrapper.The installable
mirrorarc pilotcommand now runs package-ownedmirrorarc.pilotcode and imports package-owned report modules for its aggregate evidence summaries; vault-localtools/pilot_report.pyremains available as a compatibility surface.The installable
mirrorarc sandboxcommand now runs package-ownedmirrorarc.sandboxcode and imports package-owned recovery reporting for its copied-vault preflight; vault-localtools/sandbox_report.pyremains available as a compatibility surface.The installable
mirrorarc recoverycommand now runs package-ownedmirrorarc.recoverycode; vault-localtools/recovery_report.pyremains available as a compatibility surface, and CI smoke tests cover package-level JSON and worksheet output.The installable
mirrorarc reviewcommand now runs package-ownedmirrorarc.review_ledgercode; vault-localtools/review_ledger.pyremains available as a compatibility surface, and CI smoke tests cover package-level record/check behavior.Added
tools/catalog_report.pyandmirrorarc catalog, which writes a generated source-path-onlyCATALOG.mdinventory gateway with domain, format, lifecycle, mirror, repo, unmanaged-source, and legacy-folder summaries.mirrorarc catalog --htmlnow writes the same path-and-metadata-only inventory as a staticCATALOG.htmlgateway with aggregate charts for reviewers who prefer a browser surface.mirrorarc catalognow surfaces lifecycle contract provenance from source/repo manifests, showing which contract path and schema version govern manifest lifecycle states._meta/mirror-config.ymlnow supportsoffice_mirrors.include_pdf: trueso unattended syncs can refresh text-based PDF mirrors and keep PDF source records under lifecycle provenance coverage.CI and release smoke checks now compile and exercise
catalog, including packaged-template installation coverage and Markdown/HTMLcatalog --checkfreshness validation.Added
docs/MICROSOFT_365_HANDOFF.mdandmirrorarc m365, a read-only handoff readiness report for Microsoft 365, SharePoint, OneDrive, Copilot Studio, and connector review paths.Updated the Microsoft 365 handoff and whitepaper guidance to treat MirrorArc as a Copilot supplement while warning that SharePoint/OneDrive, Copilot Studio uploads, Dataverse, connectors, and Retrieval API paths have different file-type and retrieval behavior.
Regenerated the private copied dogfood vault outside the repo with dedicated
_mirrors/storage,CATALOG.md,CATALOG.html, and read-only conversion, migration, recovery, pilot, and Microsoft 365 review reports; no private source content was added to the repository.Added
tools/review_ledger.pyandmirrorarc review, a metadata-only review ledger that records reviewer/status decisions against generated artifact hashes and reports stale approvals when reviewed artifacts change.mirrorarc pilotnow summarizes review-ledger aggregate counts, including reviewed artifacts, stale/missing reviews, and non-approved decisions, without exposing artifact paths or notes.mirrorarc pilotnow also summarizes overlap-calibration aggregate counts and current thresholds, without exposing note bodies, shared terms, source text, paths, or reviewer notes.mirrorarc doctornow reports review-ledger approval posture and warns on stale/missing or non-approved artifact reviews without printing artifact paths, reviewer names, or notes.mirrorarc migrationnow reports legacy or unknown note frontmatter domains using_meta/domain-map.ymlaliases, giving operators a read-only cleanup queue before moving notes.mirrorarc migration --worksheetnow prints a Markdown review checklist for legacy folder and frontmatter-domain cleanup batches.mirrorarc migration --normalize-frontmatter-domainsnow previews known legacy frontmatter domain alias rewrites, and--writeapplies only thosedomainfrontmatter changes without moving files, touching unknown domains, or editing generated mirrors.mirrorarc migration --normalize-frontmatter-domains --worksheetnow prints a dry-run review checklist for planned frontmatter alias rewrites, skipped generated mirrors, and unknown domains before any write is approved.CI and release smoke checks now exercise the normalizer worksheet through the packaged CLI.
mirrorarc migration --runbooknow prints a read-only legacy folder migration protocol with preconditions, execution steps, stop conditions, and current alias/unknown cleanup queues.CI and release smoke checks now exercise the migration runbook through the packaged CLI.
mirrorarc recovery --worksheetnow prints a read-only Markdown recovery checklist with lifecycle actions, lifecycle-contract explanations/exit conditions, previous mirror context, bounded conflict summaries, and latest audit context.mirrorarc recovery --runbooknow prints a read-only, state-grouped resolution protocol for missing sources, moved sources, unconfigured repo mirrors, manual generated-region edits, conflicts/errors, and interrupted write temp files.CI and release smoke checks now exercise recovery worksheet and runbook output through the packaged CLI.
Added
tools/sandbox_report.pyandmirrorarc sandbox, a read-only copied-vault preflight for safe pilot workspaces that checks source-root separation, mirror isolation, manifest/recovery readiness, and backup posture without printing source paths or document text.CI and release smoke checks now compile and exercise
sandbox, including packaged-template installation coverage.The installable
mirrorarcconsole entry point now exercisessandboxthrough the package runtime while the vault-local wrapper remains available for compatibility.Office sync now blocks ambiguous same-hash source moves as
conflictwhen multiple missing manifest records could match one new source path.Office sync now exits nonzero for review-blocking sync states and flags duplicate exact source-path manifest records as
conflictinstead of choosing one source history silently.Added
scripts/sync_template_copies.pyplus CI/release drift checks so the packaged template and example vault tool copies stay aligned with the canonicaltemplate/sources.mirrorarc benchmarknow reports citation counts and supports--require-citationsso scored agent-readiness results can be gated on declared source or generated-mirror evidence.mirrorarc benchmarknow tracks prompt-safety review and prompt-safety violations in private result packs, with--require-prompt-safetyfor strict design-partner gates.CI and release wheel smoke checks now exercise benchmark result validation with
--require-citationsand--require-prompt-safetythrough the packaged CLI.mirrorarc benchmark --init-tasksnow writes a private task-pack scaffold from synced source/mirror manifest metadata, giving copied pilot vaults a starting benchmark without reading or copying document bodies.mirrorarc benchmark --init-resultsnow writes a private, fillable result-pack scaffold for every task/mode pair, avoiding hand-built pilot result files while keeping answer text and reviewer notes out of aggregate benchmark data.mirrorarc benchmark --worksheetnow prints a private Markdown run sheet from the task pack, including prompts, rubric, evidence counts, and per-mode scoring fields without source paths, mirror paths, answers, or reviewer notes.The no-data scanner now rejects private agent-readiness task packs unless they are approved public examples, preventing copied-vault benchmark prompts and path lists from entering the repo.
mirrorarc conversion --init-resultsnow creates private metadata-only conversion-quality result scaffolds,mirrorarc conversion --results ... --require-reviewedvalidates reviewer-entered status/score/correction/issue-code aggregates,mirrorarc pilotsummarizes those aggregates, and the no-data scanner blocks conversion-quality result packs from the public repo.Conversion review guides and scaffolds now print the allowed result-pack schema, and quickstart commands clarify that
--require-reviewedruns after the private scaffold is filled.Generated catalog and Microsoft 365/Copilot handoff reports now include explicit agent prompt-safety guidance for treating source and mirror text as untrusted evidence, not instructions.
CI and release wheel smoke checks now exercise conversion-quality scaffold creation plus reviewed result-pack validation through the packaged CLI.
Repo sync/status now detects managed
repofrontmatter identity drift as stale and normal sync rewrites the managed field from the configured/resolved repo identity.Repo sync/status now marks previously synced repo mirrors as
repo_unconfiguredwhen theirtools/repos.ymlentry is removed, preserving mirrors until an operator restores config or deliberately retires the manifest record.mirrorarc recoverynow compares_meta/repo-manifest.jsonwithtools/repos.ymlso removed repo config entries are surfaced asrepo_unconfiguredbefore another repo sync rewrites the manifest.mirrorarc catalogandmirrorarc m365now use the same repo config comparison, so retained repo mirrors whosetools/repos.ymlentry was removed appear asrepo_unconfiguredin inventory and handoff readiness reports before another repo sync runs.mirrorarc lintnow blocks repo manifest records that are no longer governed bytools/repos.yml, preventing clean-looking retained repo mirrors from passing release gates after their config entry is removed.Added
_meta/lifecycle-states.ymlas the machine-readable Office/repo lifecycle contract, andmirrorarc doctornow validates that every state has entry conditions, explanations, permitted next actions, and exit conditions during preflight.Office and repo sync plan/status guidance now reads
_meta/lifecycle-states.yml, and generated source/repo manifest records plus sync audit events record the lifecycle contract path/schema version that governed each lifecycle state.Office sync/status now detects managed source frontmatter metadata drift as stale and normal sync rewrites the managed fields from the manifest/source.
Office sync now strips obvious spreadsheet extraction noise from
.xlsxmirrors, including emptyUnnamed:*table columns andNaNplaceholder cells.Lint overlap warnings now include human-gated consolidation suggestions, using inbound-link counts when available to identify the likely canonical note.
Lint now treats broken path-qualified wikilinks as unresolved instead of falling back to same-stem notes in other folders, while still allowing same-path extension matches.
Lint now blocks explicit
tools/repos.ymlentries when the configured generatedrepo-mirrornote is missing, unmanaged, pointed at an invalid output path, or tied to a different repo identity.GitHub repo sync and lint now reject duplicate
tools/repos.ymlentries that resolve to the same generated repo-mirror note path, preventing partial syncs and source-identity conflicts.Lint now blocks generated repo mirrors when the frontmatter
repoidentity drifts from the repo manifest's configured or resolved repo identity.Lint now skips generated
_meta/*.mdreports and the generatedCATALOG.mdgateway for note frontmatter/orphan checks, keeping copied-vault review output focused on curated-note issues.Lint now reports legacy frontmatter domain aliases with canonical recommendations, for example
marketing -> market (20_market/), so copied-vault cleanup queues align withmirrorarc migration.Added
tools/overlap_report.pyandmirrorarc overlap, a read-only overlap-threshold calibration report that summarizes candidate counts across threshold bands without printing note bodies, shared terms, source text, or reviewer notes.CI and release smoke checks now exercise
overlap --jsonandoverlap --worksheetthrough the packaged CLI.
Fixed
Office mirror planning now reports unsafe mirror-output errors against the active profile/configured mirror root instead of falling back to a legacy
_mirrors/record path.mirrorarc sandboxno longer treats_meta/domain-map.ymland_meta/mirror-config.ymlas required files when a valid profile contract can provide canonical domains and mirror defaults.
Known TODO before stable release hardening
Decide CLA vs DCO; secure the "MirrorArc" name; draft the commercial agreement.
Calibrate the default near-duplicate/overlap thresholds with design-partner corpora.
[0.1.0a1] — 2026-06-20
Initial scaffold extracted and generalized from a real small-business vault.
Added
Template vault (
template/): theCLAUDE.mdschema,_meta/conventions.md, Obsidian note templates (_templates/), theDocuments.basedynamic index,INDEX.md,RETENTION.md, and a seededlog.md.Tools (
template/tools/): Office→markdown mirror sync (markitdown), GitHub repo mirror sync, the vault linter, andsync_all.sh.Release-readiness guardrails: a no-data scanner, tracked pre-commit hook, GitHub Actions CI, and pytest coverage for fresh-vault sync behavior.
Documented Python 3.11+ as the supported runtime for the current
markitdowndependency.Added the synthetic
examples/northwind-robotics-vault/corpus and provenance ledger for testing generated vault readability without real business data.Added
examples/government-services-vault/, a public-service document showcase built from generated Office fixtures covering Canadian business-startup workflows: CRA business registration, GST/HST readiness, CRA account access, and funding/support discovery.Added
docs/MIRRORARC_WHITEPAPER.md, a professional review whitepaper covering progress, limitations, validation posture, dogfood results, and future roadmap.Updated the whitepaper to frame MirrorArc's future direction as an agent-ready markdown substrate, not only a human-managed knowledge-base workflow.
Added
docs/AGENT_READINESS_BENCHMARK.mdand aligned public docs around proving agent value against raw source folders and one-off document-chat outputs.Added a source-linked government-services agent-readiness task pack under
examples/government-services-vault/_meta/agent-readiness-tasks.yml.Added
tools/benchmark_tasks.pyandmirrorarc benchmarkto validate agent-readiness task packs before and after generated mirrors exist.mirrorarc benchmarknow validates optional_meta/agent-readiness-results.ymlresult packs and reports aggregate per-mode scores, correction counts, and privacy/provenance violation counts without printing answer text or reviewer notes.Vendored the full AGPL-3.0 license text into
LICENSE, kept project-specific licensing notices inNOTICE, and added SPDX headers to source/tool/test files.Added a test gate to keep SPDX headers present on Python and shell source files.
Added
docs/PRODUCT.md,docs/SYNC_SPEC.md, anddocs/SECURITY_MODEL.mdto narrow the first product promise and define release-critical lifecycle/security contracts.Office mirror sync now supports non-mutating
--planand manifest-backed--statusreporting, and writes_meta/source-manifest.jsonon sync with stable source IDs, source hashes, mirror paths, converter/config version, lifecycle state, warnings, and last successful sync.Office and repo plan/status output now includes lifecycle next-action guidance for review, missing, moved, changed, unreachable, conflict, unsupported, and error states.
Added
tools/mirrorarc.py, a thin operator wrapper forplan,sync,status,lint, anddoctor, plus repo-rootinit.Added
pyproject.tomland the source-installablemirrorarcconsole entry point; current command behavior has since converged into package-owned modules while vault-local tools remain compatibility shims.Packaged the starter vault template under
src/mirrorarc/template, somirrorarc initcan scaffold from an installed wheel without a source checkout orMIRRORARC_REPO.CI now builds a wheel, installs it into a clean environment, and smoke-tests packaged
mirrorarc init,doctor,plan,benchmark,conversion,migration,pilot, and JSONrecoverydelegation.Added a tag-driven GitHub Release workflow and
docs/RELEASE.md;v*tags build artifacts, install-test the wheel, upload workflow artifacts, and create a draft prerelease for owner review without publishing to PyPI. The workflow keeps build/test read-only and refuses to clobber an existing release unless it is still both draft and prerelease.Modernized Python package license metadata to use an SPDX expression plus explicit
LICENSEandNOTICEfiles, avoiding deprecated setuptools license-table and classifier warnings.Updated GitHub Actions workflow dependencies to current majors for CI and release automation, removing the Node 20 runtime deprecation warning path.
mirrorarc doctornow reports manifest lifecycle counts, sync audit presence, recovery action counts, git backup posture, GitHub auth posture, optional Obsidian config/plugin posture, and.gitignorebackup guard coverage as read-only preflight context.Added
tools/recovery_report.pyandmirrorarc recovery, a read-only recovery checklist for non-clean source/repo manifest records and missing generated paths.Added
tools/conversion_report.pyandmirrorarc conversion, a read-only conversion spot-check report that prioritizes manifest records by lifecycle state, warning/error metadata, source format, and source/mirror existence without claiming an automated quality score.mirrorarc conversion --guidenow appends a manifest-aware operator checklist for conversion review, including priority handling, format-specific caveats, and sign-off criteria without printing source or mirror content.Added
tools/migration_report.pyandmirrorarc migration, a read-only report for legacy alias folders and unknown top-level folders, including non-reserved hidden/underscore folders, before any manual migration.Added
tools/pilot_report.py,mirrorarc pilot, anddocs/PILOT_WORKSHEET.mdfor aggregate design-partner evidence capture without printing source or mirror content.Added
mirrorarc pilot --worksheet, a redacted Markdown summary mode for private pilot records that reports aggregate counts and review queues without source paths or document content.Added
_meta/lint-config.ymlso overlap-warning thresholds can be tuned in copied pilot vaults without changing linter code.Lint now blocks stale generated Office mirrors when source bytes changed or the source manifest lifecycle state is no longer current, so operators rerun sync before relying on old mirrors.
Lint now also blocks stale generated repo mirrors when repo manifest lifecycle state is no longer current, repo frontmatter commit metadata drifts from the manifest, or a local repo fixture tree changed.
Recovery reports now attach the latest matching sync-audit status, lifecycle state, warnings, and errors for each manifest item that needs operator action.
Recovery reports now flag stale atomic temp files left by interrupted writes, without deleting them automatically.
Recovery JSON output now includes compact total/office/repo/temp summary counts for automation.
Recovery reports now surface previous generated mirror paths for source-move and mirror-root conflict records, so operators can see which retained mirror needs review before regeneration.
Recovery guidance and regression coverage now include refresh/planned lifecycle states such as
source_changed,stale,converter_changed,planned,repo_changed, andunreachable.GitHub repo sync now supports non-mutating
--planand manifest-backed--statusreporting, and writes_meta/repo-manifest.jsonwith stable repo IDs, configured/resolved repo, note path, local-tree or remote-HEAD hash, lifecycle state, warnings, and last successful sync.Added regression coverage for documented sync idempotency edge cases: empty repo configs, unsupported Office sources, Office lock-file skips, and alias-to-canonical mirror routing.
Office and repo syncs now append machine-readable events to
_meta/sync-audit.jsonl.Office and repo sync audit events now include generated artifact paths plus structured lifecycle warnings/errors for recovery diagnostics without embedding source content.
Office planning now reports warning counts for sensitive-looking paths, duplicate source bytes, and format-specific conversion-quality risks.
Added
docs/RECOVERY.mdanddocs/DESIGN_PARTNER_PROTOCOL.md.Reworked the whitepaper around the consulting buyer, before/after workflow, lifecycle model, agent permissions, evidence gaps, service-led business model, release gates, and technical appendix.
CI and pytest now regenerate and lint example vaults in temporary copies.
Replaced the department-shaped starter folders with a function-based file plan and domain map: intake, governance, market, customers, delivery, operations, finance, people, and sources.
Added
_meta/mirror-config.ymland_mirrors/as the default dedicated storage for generated Office mirrors and optional PDF text mirrors.Linter now enforces
domainvalues from_meta/domain-map.yml, so old department aliases cannot silently become canonical note metadata.scripts/init.shto bootstrap a new vault from the template.Docs:
methodology.md,positioning.md(honest landscape),quickstart.md.Licensing: AGPL-3.0 core + commercial dual-license model (
LICENSING.md),TRADEMARK.md, DCO-basedCONTRIBUTING.md.
Fixed
sync_all.shnow fails when a required sync command fails instead of masking errors behind a later successful lint.Packaged-template parity tests now ignore generated Python bytecode caches created by CI compile preflight steps.
Office mirror sync now aborts the mirror write if source bytes change during conversion, records an error lifecycle state, and preserves the previous mirror.
Office mirror sync now reports a conflict when the configured mirror root or mode changes while the previous generated mirror still exists, preventing duplicate generated mirrors for one source.
Office mirror sync now blocks moved-source regeneration while the previous generated mirror still exists, so operators must preserve, move, archive, or remove the old mirror before creating the new generated path.
Added regression coverage for converter failures: the previous mirror is preserved, the manifest records
error, and a later successful sync returns the record toclean.Office mirror write failures now return a recoverable
errorlifecycle state instead of bubbling out of sync, preserving the previous mirror and allowing a later clean regeneration.Repo mirror note write failures now return a recoverable
errorlifecycle state, preserving the previous note and allowing a later clean regeneration.GitHub repo sync now skips cleanly when the default
tools/repos.ymlis absent, while explicit missing configs fail.repos.example.ymlno longer contains an active placeholder that could resolve to a real third-party repo.No-data scanning now catches modern
sk-proj-...-style API keys and force-staged files under high-risk paths such assecrets/.No-data scanning now blocks force-staged OS/generated artifacts such as
.DS_Storeand logs.No-data scanning now blocks symlinks and scans staged symlink entries by git mode.
Default no-data scanning now includes ignored untracked paths, so ignored data, secrets, logs, caches, and OS artifacts cannot hide in the checkout.
No-data scanning now sweeps hidden OOXML text parts such as Word headers/footers and package relationship files, not only the main document body.
OOXML metadata scanning now blocks unexpected company, manager, title, custom-property, and similar identity-bearing document properties.
OOXML relationship parts now receive payment-card checks as well as token/secret checks.
OOXML custom XML parts now receive payment-card checks.
Staged no-data scans now read provenance allowlists from the staged index, preventing unstaged provenance edits from allowing staged data files.
CI regenerates the synthetic example vault in a temporary copy so generated mirrors stay out of the source tree.
Office mirrors now default to
_mirrors/<canonical-source-path>.mdinstead of sitting beside the original Office files;--mirror-mode siblingremains available for legacy vaults.Office mirror writes are now transactional and preserve the previous mirror if conversion or frontmatter generation fails.
Repo mirror writes are now transactional and preserve the previous note if writing fails.
Office sync now reports legacy
.docsources as unsupported, marks missing sources in the manifest without deleting mirrors, and refuses to silently overwrite manual edits below the generated sentinel unless explicitly forced.Repo sync now refuses to silently overwrite manual edits below the generated sentinel unless explicitly forced.
Office sync now rejects symlinked source files before hashing or conversion, preventing a vault symlink from mirroring external/private content.
Office sync now keeps mirrors in
manual_modificationreview when the generated sentinel is removed or an existing mirror has no manifest-generated baseline, instead of accepting it as clean.--forcenow still refuses Office mirrors whose generated sentinel is missing or whose existing mirror has no manifest-generated baseline, because the tool cannot safely distinguish curated content from corrupted generated output without that boundary.Office sync now requires the generated sentinel as an exact standalone line, so altered boundary text cannot be treated as a trusted generated-region marker.
Repo sync now applies the same exact-line sentinel boundary check, blocking forced rewrites when a repo mirror's generated boundary has been altered.
Repo sync now also treats existing repo mirrors without a manifest-generated baseline as review-required, so a lost repo manifest cannot silently re-baseline generated content.
Repo sync now reports generated-region tampering before repo reachability state, so an offline or private repo cannot hide a manual edit below the generated sentinel.
Repo sync now treats an existing hand-authored target note, missing repo sentinel, or mismatched
repo_idas a conflict instead of taking over the note.The no-data scanner now allows generated
_meta/sync-audit.jsonlfiles in temporary validation vaults while still scanning their text for secrets.CI now smoke-tests the installed
mirrorarcconsole entry point and validates both example vaults after mirror regeneration.Added a copied-vault recovery regression test covering mirror regeneration, source-byte preservation,
source_missing,manual_modification, lint, and no-data scanning.Example regeneration tests now snapshot representative source payloads and assert plan, dry-run, sync, status, and lint operations leave source bytes unchanged.
Example regeneration tests now assert a second sync leaves stable generated mirrors, repo notes, and manifests unchanged while treating
_meta/sync-audit.jsonlas append-only history.Added repo mirror regression coverage for upgrading an unreachable pending stub into a populated mirror while preserving curated notes and frontmatter.
Added Office mirror regression coverage proving update sync preserves user-owned frontmatter and curated notes while refreshing managed source metadata.
Example generated-residue tests now use pattern checks for
_mirrors/, manifests, audit logs, repo mirrors, sibling Office mirrors, and.mirror.mdfallback files, not only hardcoded expected paths.Scaffolded/example vault
.gitignorefiles now include high-riskdata/,secrets/,private/, and log patterns.Office mirror routing now maps old folder aliases such as
clients/,marketing/, andfinance/to canonical function folders under_mirrors/.Office sync and lint now ignore temporary Office lock files such as
~$brief.docx.Repo/frontmatter tooling now prefers
accountmetadata while preserving legacyclientinput.Repo mirror output paths now reject escaping
noteandnotes_dirvalues before writing.Repo mirror output paths now reject reserved or symlinked operational paths inside the vault.
Repo mirror notes now require exact lowercase
.mdfilenames so generated mirrors are linted.Vault lint now enforces domain-to-folder placement from
_meta/domain-map.yml, blocking old department folders from silently returning.Vault lint now blocks conflicting
accountand legacyclientfrontmatter values.Vault lint now blocks
clientwithout canonicalaccountand uppercase markdown extensions.Vault lint now reports likely duplicate/overlap notes as warning-only anti-proliferation candidates, excluding generated source/repo mirrors.
Vault lint now excludes generated source/repo mirrors from orphan-note warnings, and CI asserts regenerated example vaults have zero orphan curated notes and zero overlap warnings.
Vault lint now only exempts generated source/repo mirrors from orphan/overlap checks when they live in their managed mirror locations.
Vault lint now requires generated sentinels and matching manifest records before source/repo mirrors can bypass orphan/overlap warnings, and sibling-mode source mirrors must use canonical or aliased domain roots.
Vault lint now requires an Office mirror candidate to be a managed generated mirror before it can satisfy mirror-gap checks, so hand-authored sibling notes cannot mask missing generated mirrors.
No-data scanning no longer exempts
_meta/sync-audit.jsonlfrom staged/default provenance checks; the generated-audit exemption is limited to explicit temp-path validation scans.No-data scanning now blocks force-staged Python packaging artifacts such as
*.egg-info/,build/, anddist/.
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