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.

docs/PAGEINDEX.md

PageIndex document review

MirrorArc can use PageIndex to navigate a registered PDF by physical page and export page-linked evidence. Model-free indexing is available without credentials. Optional model-assisted indexing and questions require a deliberately configured endpoint and per-command approval. This integration is under local validation; it is not yet an accepted enterprise release.

Install the optional runtime

Keep PageIndex separate from MirrorArc's core Python environment. Plain upstream 0.2.10 installs vulnerable PyPDF2 and is refused. The tested local patch is distinctly labeled 0.2.10+mirrorarc.1 and uses maintained pypdf 6.19.0. This is a MirrorArc compatibility patch, not an upstream release. Its source, license and dependency hashes are included in the runtime recipe.

Start in a new setup directory outside the vault and public repository. Use the Python that has MirrorArc installed to find its packaged recipe. The following commands download public source and packages into a separate local environment, not a global installation:

MIRRORARC_PAGEINDEX_ASSETS="$(python -c 'from importlib.resources import files; print(files("mirrorarc.document_intelligence") / "runtime")')"
git clone https://github.com/VectifyAI/PageIndex.git PageIndex-local
git -C PageIndex-local checkout --detach 6d23caf416858f2ca136840305d1f479a86f6ef7
git -C PageIndex-local apply --check "$MIRRORARC_PAGEINDEX_ASSETS/pageindex-pypdf.patch"
git -C PageIndex-local apply "$MIRRORARC_PAGEINDEX_ASSETS/pageindex-pypdf.patch"
uv venv .pageindex-runtime --python 3.11
uv pip install --python .pageindex-runtime/bin/python --require-hashes --only-binary=:all: \
  -r "$MIRRORARC_PAGEINDEX_ASSETS/requirements-py311.txt"
uv pip install --python .pageindex-runtime/bin/python --no-deps --no-build-isolation ./PageIndex-local
uv pip check --python .pageindex-runtime/bin/python
export MIRRORARC_PAGEINDEX_PYTHON="$(pwd)/.pageindex-runtime/bin/python"
mirrorarc --root /absolute/path/to/copied-vault document doctor

The dependency lock and patched-source installation have been exercised on macOS with Python 3.11; universal resolution alone does not verify Linux. PageIndex brings model/agent dependencies, including an MCP library, but MirrorArc does not start an MCP service, watcher or daemon. It uses the pinned local SDK, not the PageIndex managed cloud. Upstream uses the MIT license; MirrorArc remains AGPL. The readiness command loads the required extraction and API libraries with networking disabled and reports their versions. It does not contact a model or prove that an endpoint supports the configured model. A matching package-version label alone is not enough to report Ready.

First review without a model

  1. Start with a copied vault containing a PDF you are allowed to process. Run mirrorarc sync and mirrorarc relationships refresh so the source and its identity are registered.

  2. Read the source ID from mirrorarc status --json.

  3. Index the PDF, then export the physical pages you want to inspect:

    mirrorarc --root /absolute/path/to/copied-vault document index --source SOURCE_ID
    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
  4. Open the generated CATALOG.html, choose the PDF, and select Document metadata. The PDF page evidence section shows its status, source hash, structure and bounded page excerpts. Expand a physical page to read its text. Without --include-content, the Catalog contains status and references only. Content-enabled HTML must be protected like the source.

  5. Use document status --json after a source change. Sync and reindex before using current evidence. Earlier frozen packs retain their original bytes and hashes.

Flash's structure-only mode is model-free. It is not OCR, a semantic answer, or a guarantee that all text, figures and layout were extracted. Scanned PDFs and documents whose structure Flash cannot handle receive an actionable refusal. Do not silently substitute empty evidence.

Approve a model explicitly

Create a local _meta/pageindex.yml with these fields, replacing the model, endpoint and variable name with an approved configuration. Do not put credentials in the file.

model: your-approved-model-id
base_url: https://your-approved-endpoint.example/v1
api_key_env: MIRRORARC_APPROVED_MODEL_KEY
max_requests: 8
max_output_tokens: 1024
max_request_bytes: 100000

Set the named credential through your shell or credential manager. Indexing uses an OpenAI-compatible Chat Completions endpoint; questions use an OpenAI-compatible Responses endpoint with tool calling. An endpoint supporting only one protocol does not support both workflows. Local inference is possible only when the operator's server provides the required protocol. HTTP is accepted on loopback only; remote endpoints require HTTPS.

# Optional model-generated structure optimization and summaries:
mirrorarc --root /absolute/path/to/copied-vault document index --source SOURCE_ID \
  --model-assisted --allow-model

# Optional slower model-based indexing when Flash refuses a readable document:
mirrorarc --root /absolute/path/to/copied-vault document index --source SOURCE_ID \
  --mode standard --model-assisted --allow-model

mirrorarc --root /absolute/path/to/copied-vault document ask --source SOURCE_ID \
  --question "What is the inspection interval, and what exceptions apply?" \
  --allow-model --json

Approving a model operation permits sending bounded source text and the question to that configured endpoint. It can incur charges. The worker strips ambient credentials/proxies, disables dotenv loading and tracing, restricts Python network destinations, limits HTTP request count and size, bounds output, and has a total deadline. These controls are not an OS security sandbox or a dollar-spend guarantee; a request already accepted by a provider may remain billable after a local timeout. Use provider-side budget controls too.

Questions produce an unreviewed answer candidate with validated document/page addresses and a frozen evidence pack. If cited pages do not fit the current context policy, answer publication fails rather than implying the pack contains all cited evidence. The candidate JSON and index cache live under ignored .mirrorarc/cache/pageindex/. Citation validity means the page exists in the recorded source, not that the claim is true. Human review must check claim support, exceptions, conflicting evidence and whether the document reflects deployed policy.

Review an answer in the Catalog

After asking a question, regenerate the local Catalog with catalog --html --include-content. Choose the PDF and open Document metadata. Answer review appears before document navigation. New conforming answers show the direct Answer, short source-linked Reason, and Important exceptions, disagreement or uncertainty without a disclosure. Follow a physical page link to open and focus its frozen excerpt with either a mouse or keyboard. Additional detail, the Complete original generated answer, and provenance are optional disclosures. The displayed excerpts come from the answer's hash-checked frozen pack, not a newer PDF.

New answer records declare the optional answer-first-v1 presentation contract. The worker asks for exactly Answer:, Reason:, Important: and Details: headings in that order; the backend recognizes those explicit sections and checked citation addresses without summarizing or guessing. The reason must contain a page citation and every section must contain text (None. is allowed for details). Older records, unknown contracts and malformed layouts display the escaped complete original with a warning. The immutable candidate always retains the exact generated answer; regenerating Catalog does not restyle saved history or overwrite reviewed views. This structural check does not detect every omitted caveat or verify semantic claim support.

Instructions distinguish a source change from a wrong earlier answer: a source-correct historical answer is not an error just because newer evidence differs. Source-change wording requires supplied evidence or provenance; without it, comparison is unavailable. The browser does not infer a change.

Current means the source and index still match; it is not a correctness score or approval. Stale means the old answer must be reconsidered against changed or unavailable source or indexed evidence, including a parser upgrade. Unavailable means the candidate or frozen pack failed inspection, so its text is not shown. The Catalog is a saved snapshot, not a live monitor: regenerate it after source changes.

The default metadata-only Catalog omits questions, answers and page excerpts. Content-enabled Catalogs show a bounded selection of at most five candidates per source, not necessarily the newest five. Answer text (including duplicated structured/original presentation), questions and frozen excerpts share the 100,000-character overall PDF-content budget. A full candidate that does not fit is omitted rather than displayed with missing citations. The browser does not send a model request, save a review decision or promote an answer to authority.

Limits and recovery

Limits are 32 MiB per PDF, 500 physical pages, 2 MB of extracted text, 2,000 tree nodes and depth 16, plus existing profile context ceilings. Catalog previews include at most 100 nodes and 20,000 text characters per PDF, with a 100,000-character total page-text budget. Truncation and omitted pages are visible. Frozen page entries also use the profile max_files ceiling conservatively. Model configuration is limited to 16 KiB and refuses duplicate fields. HTTP calls are restricted to the approved model and either Chat Completions indexing or Responses questions; each must carry an output-token limit and store: false. Request attempts are counted at the HTTP boundary, including retries, and decoded response bodies are limited to 2 MB. The worker refuses Python subprocess execution and redirects. These controls do not guarantee provider retention behavior, claim support, or isolation against hostile native code.

Failed indexing retains the last valid pointer. A changed source, parser contract or tampered cache is refused. After upgrading from the original PyPDF2 runtime, install a fresh isolated environment and reindex; previous frozen evidence remains historical and byte-for-byte intact. Model-generated summaries remain derived navigation; they never overwrite the L1 projection or a reviewed view. Back up sources, manifests, the SQLite review ledger, reviewed artifacts, frozen packs and saved answer candidates before cache maintenance. Preserve the selected source's answers/ directory: model-free indexing cannot recreate its historical answers. Move only the index JSON and current pointer aside when rebuilding an index. See the recovery guide for the tested restore boundary. Reindexing in model-assisted mode can incur fresh charges.

The release plan and local validation results track real-model evaluation, human review, platform proof, packaging and final shipment separately from local contract tests.

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