Skip to content

I1111 — Uninstall gives back exactly what was taken

Implement removal that reverses every recorded mutation, refuses anything a person has since edited, and leaves authored knowledge in place unless removal is asked for separately and explicitly.

BLOCKED wave 5 · p0 · deep-work profile · parallel safe

Part of two-folder-integration — A repository that adopts Majordomus gains two directories and two lines, and can give them back.

Blocked. This issue cannot start until I1109 is done. The status is derived from that, not declared.

Objective

Implement removal that reverses every recorded mutation, refuses anything a person has since edited, and leaves authored knowledge in place unless removal is asked for separately and explicitly.

Why

A tool that cannot be removed is a tool people hesitate to adopt. And the half of the footprint that matters most — the decisions, the handovers, the knowledge accumulated over months — is the project's property, not the tool's leftovers.

Current state

Nothing removes an adoption. What Majordomus wrote outside its namespaces can only be found by reading a diff.

Desired state

One command reverses the ledger, one flag additionally removes generated state, and removing authored content is a separate decision the default never makes.

Scope

  • apps/majordomus-cli/src/commands/uninstall.rs

Out of scope

  • Removing authored content under any default
  • A broad recursive delete of any path not named by the ledger

Dependencies

What waits on this

Acceptance criteria

  • Every recorded mutation outside the two namespaces is reversed to the state the ledger recorded as prior
  • A managed region is removed without disturbing the rest of its file, and a file that exists only because Majordomus created it is removed whole
  • A bridge whose hash no longer matches is left in place and reported, never overwritten or deleted
  • The default leaves authored `.ai/` content untouched; removing generated state and removing authored content are separate, explicit requests
  • After the default removal, the repository is what it was before adoption apart from authored content, proved by comparing against a recorded starting state

Validation

  • bash test/run.sh
  • cargo test --workspace --all-features

Evidence required

  • reverses_ledger
  • refuses_edited
  • authored_survives

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Risk

This is the operation where a mistake destroys somebody's work. Every deletion is justified by a ledger entry and a matching hash, or it does not happen.

Timeline

started
verified
completed

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I1111.yaml. Read it back with majordomus plan show I1111.