Generated banner for MirrorArc
Generated logo for MirrorArc

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.
— the description by cz1993

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.

Folders
FolderRoleFiles
.githubagent-config3
docsdocs33
examplesexamples139
scriptsscripts11
srcsource-code126
templatetemplates54
teststests57
.githooksfolder1
clifolder1

The agent reads

The agent writes

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

  1. 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-commit
    • scripts/init.sh: sh scripts/init.sh
  2. Clone the repository at the commit AutoGineer scanned:

    git clone https://github.com/cz1993/MirrorArc.git && cd MirrorArc && git checkout 1df13ebf6efb33018e29a1ea365cde0cf53d41c7
  3. Point Claude Code at AGENTS.md: it does not read that file on its own.

  4. cd MirrorArc && claude

  5. AutoGineer scanned these files at commit 1df13eb.

  6. 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
  7. 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 failureMirrorArc'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.

Image: MirrorArc relationship map connecting an original Word document and its generated Markdown mirror

Image: MirrorArc metadata view showing provenance, authority, lifecycle state, and source-to-mirror relationships

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-vault

Open 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 --html

Query 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-content

In 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

  1. Register authoritative sources without changing them.

  2. Project each opaque source into one stable, machine-owned L1 Markdown read model.

  3. Connect evidence through typed relationships with provenance and review state rather than creating more notes.

  4. Interpret many sources through a small number of purpose-specific L2 knowledge views.

  5. Assemble dynamic or frozen context for a human review or agent task.

  6. 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.md for 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-product

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:

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 --version

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:

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 check

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.

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 plan

The 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

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.1 patch using maintained pypdf 6.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: false at 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.0 contracts 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-product the default profile with source, contract, pipeline, analysis, model, output, governance, and operations domains; retained business-operations as a compatibility profile.

  • Replaced legacy note templates with data-product templates and consolidated runtime agent guidance into _meta/agent-rules.md, with short CLAUDE.md and AGENTS.md entrypoints.

  • 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.html dashboard 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, an INDEX.md beginner 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.md above 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-content creates 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_transcript to plain_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.sqlite is 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_CONTEXT and 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.sqlite boundary. 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 inventory report 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-review supports 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.md content, 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 SoftwareSourceCode structured 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 required plain_markitdown_dump benchmark 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/pipx onboarding guidance and updated mirrorarc init next-step output to point beginners at the installed console command plus JSON pilot evidence checks.

  • Added structured top-level --json output for mirrorarc sync, mirrorarc status, and mirrorarc 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 --profile now scaffolds business-operations, research-learning, software-project, and blank from 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 the mirrorarc[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_moved records after the previous generated mirror is removed, allowing sync --changed to generate the new mirror with the same source ID, and tests cover delete/recreate returning a source record to clean.

  • Added Stage 1B deleted-source replay handling: manifest-backed deleted journal events now mark Office source records source_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 by mirrorarc 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 as mirrorarc 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 interrupted processing events 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 processing after 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.sqlite initialization, 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.md so 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.yml for the current business-operations template, establishing the first Stage 1 profile-schema seam.

  • Added package-owned v1 profile contracts for research-learning, software-project, and blank; mirrorarc profile list/show now 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 mirrorarc CLI now supports init --profile business-operations, profile list, profile show, and profile validate against the package-owned profile contract.

  • mirrorarc lint and mirrorarc catalog now read _meta/profile.yml for 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.yml remains the legacy alias compatibility layer.

  • The installable mirrorarc catalog command now runs package-owned catalog code from src/mirrorarc/, while the vault-local tools/catalog_report.py remains available as a compatibility surface.

  • Added package-owned profile diff and read-only profile migrate --plan commands so profile version drift, missing profile files, and template drift can be reviewed before any write-mode profile migration.

  • Added docs/PROFILE_SCHEMA.md and conservative package-owned profile migrate --write support 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 purpose strings so profile data stays declarative.

  • Profile validation now rejects unknown fields inside folder_plan entries and policy_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, and skills entries to be safe vault-relative artifact paths without duplicates.

  • Profile validation now enforces safe domain folders plus non-empty folder_plan records 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 overlap now 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 overlap now also reads profile-defined context frontmatter fields when counting inbound wikilinks, so non-business profiles can use fields such as research_project without inheriting account/client assumptions.

  • Profile status definitions can now declare attention: true and inactive: 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 catalog now separates profile-defined machine-owned Markdown artifacts from curated Markdown/domain counts, while surfacing them as their own inventory metric.

  • mirrorarc m365 now separates profile-defined machine-owned Markdown artifacts, including repo mirrors, from curated Markdown counts in handoff inventory.

  • mirrorarc sandbox now 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_status and policy_defaults.repo_stub_status; Office/repo sync, lint, and annotation migration use those values instead of hard-coded active/draft checks for generated mirror metadata.

  • Profiles now own Office mirror placement defaults with policy_defaults.mirror_mode and policy_defaults.mirror_root; Office sync and lint use those values when _meta/mirror-config.yml does not override them.

  • Profile migration now creates the target profile's policy_defaults.mirror_root directory 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.yml retained 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.yml while keeping _meta/domain-map.yml as the legacy alias layer.

  • Benchmark task-pack validation, result citation validation, and benchmark --init-tasks scaffolding now use the active Office mirror root for generated mirror evidence paths.

  • mirrorarc pilot now excludes the active Office mirror root from workspace inventory, so custom generated roots are not counted as operator content or source candidates.

  • mirrorarc recovery now 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.base review-attention filters now use only profile-declared attention: true status roles instead of inferring business-oriented status names.

  • mirrorarc doctor now reports profile-declared generated view health through the profile view planner, warning on missing or stale views without assuming every profile owns Documents.base.

  • mirrorarc doctor now validates the active profile contract first and treats _meta/domain-map.yml and _meta/mirror-config.yml as legacy alias/override files for profile-driven vaults, while preserving legacy required-file checks for profile-less vaults.

  • mirrorarc lint now treats a missing _meta/domain-map.yml as 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 lint now loads _meta/profile.yml through 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 lint now reuses the shared runtime profile context helpers directly for context fields and aliases, preserving profile-less legacy fallback without local duplicate defaults.

  • mirrorarc lint now reuses the shared runtime repo-notes directory helpers for repo-mirror path checks, so configured tools/repos.yml notes directories and profile defaults share one fallback path.

  • Shared runtime profile helpers now load _meta/profile.yml through 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 catalog and mirrorarc migration now 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 benchmark and the aggregate mirrorarc pilot report now load profile-declared benchmark_tasks paths through the package profile validator, while explicit --tasks and the legacy _meta/agent-readiness-tasks.yml path remain supported.

  • Added package-owned profile views --check and profile views --write commands that generate the profile-owned Documents.base file 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_dir as 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 the business-operations profile can declare client as an alias of account without 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: true and real_data_in_repo: false when 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/client compatibility 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_aliases is 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_aliases when comparing generated repo-mirror frontmatter with tools/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_owned Markdown 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.py operator wrapper now delegates to the package CLI while preserving the copied vault root as the default --root.

  • Added package-owned migrate annotations --plan and migrate annotations --write commands that move above-sentinel mirror notes and preserved frontmatter into _meta/mirror-annotations/ sidecars keyed by source_id or repo_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 lint now 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 ## Notes region.

  • Office mirror planning, sync, and status behavior now lives in package-owned mirrorarc.mirrors.office; vault-local tools/sync_office_md.py is 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-local tools/sync_github_repos.py is a compatibility shim copied through the package template and examples.

  • The installable mirrorarc plan, mirrorarc sync, and mirrorarc status commands now orchestrate the package-owned Office and repo sync modules directly, while the vault-local tools/mirrorarc.py wrapper remains available for compatibility.

  • The installable mirrorarc doctor command now runs package-owned preflight checks from mirrorarc.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-local tools/lint_vault.py is a compatibility shim copied through the package template and examples.

  • The installable mirrorarc conversion command now runs package-owned mirrorarc.conversion code; vault-local tools/conversion_report.py remains available as a compatibility surface, and CI smoke tests cover package-level conversion JSON output.

  • The installable mirrorarc m365 command now runs package-owned mirrorarc.m365 code; vault-local tools/m365_report.py remains available as a compatibility surface, and CI smoke tests cover package-level handoff JSON output.

  • The installable mirrorarc migration command now runs package-owned mirrorarc.migration code; vault-local tools/migration_report.py remains available as a compatibility surface, and CI smoke tests cover package-level migration JSON output.

  • The installable mirrorarc overlap command now runs package-owned mirrorarc.overlap code; vault-local tools/overlap_report.py remains available as a compatibility surface, and CI smoke tests cover package-level overlap JSON output.

  • The installable mirrorarc benchmark command now runs package-owned mirrorarc.benchmark code; vault-local tools/benchmark_tasks.py remains available as a compatibility surface, and package tests cover task/result validation, private scaffolds, and worksheets without the vault-local wrapper.

  • The installable mirrorarc pilot command now runs package-owned mirrorarc.pilot code and imports package-owned report modules for its aggregate evidence summaries; vault-local tools/pilot_report.py remains available as a compatibility surface.

  • The installable mirrorarc sandbox command now runs package-owned mirrorarc.sandbox code and imports package-owned recovery reporting for its copied-vault preflight; vault-local tools/sandbox_report.py remains available as a compatibility surface.

  • The installable mirrorarc recovery command now runs package-owned mirrorarc.recovery code; vault-local tools/recovery_report.py remains available as a compatibility surface, and CI smoke tests cover package-level JSON and worksheet output.

  • The installable mirrorarc review command now runs package-owned mirrorarc.review_ledger code; vault-local tools/review_ledger.py remains available as a compatibility surface, and CI smoke tests cover package-level record/check behavior.

  • Added tools/catalog_report.py and mirrorarc catalog, which writes a generated source-path-only CATALOG.md inventory gateway with domain, format, lifecycle, mirror, repo, unmanaged-source, and legacy-folder summaries.

  • mirrorarc catalog --html now writes the same path-and-metadata-only inventory as a static CATALOG.html gateway with aggregate charts for reviewers who prefer a browser surface.

  • mirrorarc catalog now surfaces lifecycle contract provenance from source/repo manifests, showing which contract path and schema version govern manifest lifecycle states.

  • _meta/mirror-config.yml now supports office_mirrors.include_pdf: true so 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/HTML catalog --check freshness validation.

  • Added docs/MICROSOFT_365_HANDOFF.md and mirrorarc 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.py and mirrorarc review, a metadata-only review ledger that records reviewer/status decisions against generated artifact hashes and reports stale approvals when reviewed artifacts change.

  • mirrorarc pilot now summarizes review-ledger aggregate counts, including reviewed artifacts, stale/missing reviews, and non-approved decisions, without exposing artifact paths or notes.

  • mirrorarc pilot now also summarizes overlap-calibration aggregate counts and current thresholds, without exposing note bodies, shared terms, source text, paths, or reviewer notes.

  • mirrorarc doctor now reports review-ledger approval posture and warns on stale/missing or non-approved artifact reviews without printing artifact paths, reviewer names, or notes.

  • mirrorarc migration now reports legacy or unknown note frontmatter domains using _meta/domain-map.yml aliases, giving operators a read-only cleanup queue before moving notes.

  • mirrorarc migration --worksheet now prints a Markdown review checklist for legacy folder and frontmatter-domain cleanup batches.

  • mirrorarc migration --normalize-frontmatter-domains now previews known legacy frontmatter domain alias rewrites, and --write applies only those domain frontmatter changes without moving files, touching unknown domains, or editing generated mirrors.

  • mirrorarc migration --normalize-frontmatter-domains --worksheet now 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 --runbook now 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 --worksheet now 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 --runbook now 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.py and mirrorarc 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 mirrorarc console entry point now exercises sandbox through the package runtime while the vault-local wrapper remains available for compatibility.

  • Office sync now blocks ambiguous same-hash source moves as conflict when 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 conflict instead of choosing one source history silently.

  • Added scripts/sync_template_copies.py plus CI/release drift checks so the packaged template and example vault tool copies stay aligned with the canonical template/ sources.

  • mirrorarc benchmark now reports citation counts and supports --require-citations so scored agent-readiness results can be gated on declared source or generated-mirror evidence.

  • mirrorarc benchmark now tracks prompt-safety review and prompt-safety violations in private result packs, with --require-prompt-safety for strict design-partner gates.

  • CI and release wheel smoke checks now exercise benchmark result validation with --require-citations and --require-prompt-safety through the packaged CLI.

  • mirrorarc benchmark --init-tasks now 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-results now 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 --worksheet now 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-results now creates private metadata-only conversion-quality result scaffolds, mirrorarc conversion --results ... --require-reviewed validates reviewer-entered status/score/correction/issue-code aggregates, mirrorarc pilot summarizes 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-reviewed runs 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 repo frontmatter 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_unconfigured when their tools/repos.yml entry is removed, preserving mirrors until an operator restores config or deliberately retires the manifest record.

  • mirrorarc recovery now compares _meta/repo-manifest.json with tools/repos.yml so removed repo config entries are surfaced as repo_unconfigured before another repo sync rewrites the manifest.

  • mirrorarc catalog and mirrorarc m365 now use the same repo config comparison, so retained repo mirrors whose tools/repos.yml entry was removed appear as repo_unconfigured in inventory and handoff readiness reports before another repo sync runs.

  • mirrorarc lint now blocks repo manifest records that are no longer governed by tools/repos.yml, preventing clean-looking retained repo mirrors from passing release gates after their config entry is removed.

  • Added _meta/lifecycle-states.yml as the machine-readable Office/repo lifecycle contract, and mirrorarc doctor now 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 .xlsx mirrors, including empty Unnamed:* table columns and NaN placeholder 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.yml entries when the configured generated repo-mirror note 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.yml entries 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 repo identity drifts from the repo manifest's configured or resolved repo identity.

  • Lint now skips generated _meta/*.md reports and the generated CATALOG.md gateway 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 with mirrorarc migration.

  • Added tools/overlap_report.py and mirrorarc 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 --json and overlap --worksheet through 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 sandbox no longer treats _meta/domain-map.yml and _meta/mirror-config.yml as 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/): the CLAUDE.md schema, _meta/conventions.md, Obsidian note templates (_templates/), the Documents.base dynamic index, INDEX.md, RETENTION.md, and a seeded log.md.

  • Tools (template/tools/): Office→markdown mirror sync (markitdown), GitHub repo mirror sync, the vault linter, and sync_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 markitdown dependency.

  • 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.md and 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.py and mirrorarc benchmark to validate agent-readiness task packs before and after generated mirrors exist.

  • mirrorarc benchmark now validates optional _meta/agent-readiness-results.yml result 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 in NOTICE, 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, and docs/SECURITY_MODEL.md to narrow the first product promise and define release-critical lifecycle/security contracts.

  • Office mirror sync now supports non-mutating --plan and manifest-backed --status reporting, and writes _meta/source-manifest.json on 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 for plan, sync, status, lint, and doctor, plus repo-root init.

  • Added pyproject.toml and the source-installable mirrorarc console 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, so mirrorarc init can scaffold from an installed wheel without a source checkout or MIRRORARC_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 JSON recovery delegation.

  • 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 LICENSE and NOTICE files, 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 doctor now reports manifest lifecycle counts, sync audit presence, recovery action counts, git backup posture, GitHub auth posture, optional Obsidian config/plugin posture, and .gitignore backup guard coverage as read-only preflight context.

  • Added tools/recovery_report.py and mirrorarc recovery, a read-only recovery checklist for non-clean source/repo manifest records and missing generated paths.

  • Added tools/conversion_report.py and mirrorarc 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 --guide now 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.py and mirrorarc 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, and docs/PILOT_WORKSHEET.md for 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.yml so 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, and unreachable.

  • GitHub repo sync now supports non-mutating --plan and manifest-backed --status reporting, and writes _meta/repo-manifest.json with 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.md and docs/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.yml and _mirrors/ as the default dedicated storage for generated Office mirrors and optional PDF text mirrors.

  • Linter now enforces domain values from _meta/domain-map.yml, so old department aliases cannot silently become canonical note metadata.

  • scripts/init.sh to 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-based CONTRIBUTING.md.

Fixed
  • sync_all.sh now 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 to clean.

  • Office mirror write failures now return a recoverable error lifecycle 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 error lifecycle state, preserving the previous note and allowing a later clean regeneration.

  • GitHub repo sync now skips cleanly when the default tools/repos.yml is absent, while explicit missing configs fail.

  • repos.example.yml no 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 as secrets/.

  • No-data scanning now blocks force-staged OS/generated artifacts such as .DS_Store and 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>.md instead of sitting beside the original Office files; --mirror-mode sibling remains 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 .doc sources 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_modification review when the generated sentinel is removed or an existing mirror has no manifest-generated baseline, instead of accepting it as clean.

  • --force now 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_id as a conflict instead of taking over the note.

  • The no-data scanner now allows generated _meta/sync-audit.jsonl files in temporary validation vaults while still scanning their text for secrets.

  • CI now smoke-tests the installed mirrorarc console 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.jsonl as 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.md fallback files, not only hardcoded expected paths.

  • Scaffolded/example vault .gitignore files now include high-risk data/, secrets/, private/, and log patterns.

  • Office mirror routing now maps old folder aliases such as clients/, marketing/, and finance/ 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 account metadata while preserving legacy client input.

  • Repo mirror output paths now reject escaping note and notes_dir values before writing.

  • Repo mirror output paths now reject reserved or symlinked operational paths inside the vault.

  • Repo mirror notes now require exact lowercase .md filenames 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 account and legacy client frontmatter values.

  • Vault lint now blocks client without canonical account and 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.jsonl from 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/, and dist/.

439 files · 404 not served here

Advantages

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
GitHub avatar of cz1993cz1993
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