Skip to main content

Settings → Governance

Three things a memory needs a human to rule on live here: which files may be flagged as duplicates of each other, which folders two vaults are both indexing, and which apps were allowed to read a device on your home network. The rail entry is Governance; the page is titled Duplicate detection and its subtitle reads The structural signal (same file name) targets document types only, so dev projects sharing index.html, App.tsx or configs don't get flagged. The semantic signal still surfaces the same document across languages.

Nothing on this page deletes a file. The hint box at the bottom of the first section says it: Nothing is ever deleted — duplicate detection only surfaces look-alikes so you can pick the source of truth.

While the configuration loads the page says Loading…; a read or write failure is printed at the top, in English ("Failed to load governance config", "Failed to save governance config").

Reset to defaults

At the top right of the header, Reset to defaults refills the two lists below with the factory values. It does not save: press Save & rescan afterwards or the reset is lost.

Document file types

Only these extensions take part in same-name duplicate detection (one per line, no dot). Leave empty to consider every file type.

A text area, one extension per line. The default list is the document formats: adoc, asciidoc, markdown, md, mdx, org, rst, tex, text, txt. Two files with the same name are only compared by name when their extension is in this list; that is how index.html in ten projects stops being ten duplicates.

Ignored file names

File names never treated as duplicates, even within document types (one per line). Ubiquitous boilerplate like readme.md or package.json.

A text area, one file name per line. The default list covers the files every project carries: package and lock files (package.json, pnpm-lock.yaml, yarn.lock…), entry modules (index.ts, main.ts, app.tsx…), web scaffolding (index.html, favicon.ico, robots.txt, style.css…), tooling configuration (tsconfig.json, .gitignore, vite.config.ts, dockerfile, .env…) and repository documents (readme.md, license, changelog.md, contributing.md…). Every tsconfig.*.json is ignored whatever the list says.

Save & rescan

Save & rescan (it reads Saving… meanwhile) writes both lists and starts a duplicate rescan; on success the button line shows ✓ Saved — rescanning.

Before saving, the lists are normalised: entries are split on new lines, commas and spaces, lowercased and deduplicated; the leading dot of an extension is dropped and the lists are sorted. The text areas are rewritten with the result, so what you see after saving is exactly what is stored.

Cross-vault folder overlap

When two vaults index the same folder (usually a broad vault swallowing a sub-folder another vault already owns), every file is stored twice. Resolving keeps the most specific vault and trims the broader one — duplicate chronicles are purged but logged reversibly.

This analysis never runs on its own when you open the page: it is heavy enough to freeze the panel, so it waits for the button. Until then the section reads No scan yet — run an analysis to reveal cross-vault folder overlaps.

  • Analyze vaults runs the first scan; afterwards the button is Rescan. It reads Scanning vaults… while running.
  • With no overlap: ✦ No overlapping folders — every vault watches a distinct scope.
  • One card per overlap: the path in question, then kept by {winner}, excluded from {loser}, and in warning colour {n} duplicate chronicles. Each card has its own Resolve button.
  • Resolve all appears only when overlaps were found and resolves every card the same way, the most specific vault winning everywhere. Both read Resolving… meanwhile.
  • On success: ✓ Resolved — {n} duplicate chronicles purged, and the list rescans by itself. Failures say Overlap scan failed or Overlap resolution failed.
What Resolve actually does

Resolving excludes the shared sub-folder from the broader vault (as an ignore rule on that vault) and purges the duplicate chronicles the broader vault held for it. The files on disk are untouched, and each purge is written to the provenance log as a reversible ruling, never silently. The vault that keeps the folder is the more specific one; check the kept by line before you click if that is not the vault you wanted.

See Vaults for how a vault's watched folders are declared, and DocWatch for what happens to a file once it is watched.

Devices on your local network

Apps you allowed to read a device in your home. Each one was approved separately, and reading is all it can do — no app can control a device this way. Revoking stops it at once, background checks included.

There is nothing to add here. A cartridge that wants to reach a device on your network asks you the first time, in a native prompt; this section is where those grants are listed and closed.

  • While the list loads: Reading the list…. If it cannot be read: Could not read the list: followed by the error. An unreadable list is never shown as empty, because that would tell you your network is closed while it may be open.
  • Empty: No app has been allowed to reach a device on your network. You will be asked the first time one tries.
  • Otherwise, one card per app, listing each host it may read, with a Revoke button per host (Revoking… while it works). Every Revoke button is greyed while one is in flight.

Revoking takes effect at once for the app, and a background watch the app runs picks up the revocation on its next pass.