Skip to content

11 · uninstall-preserve

What this scenario proves

Uninstalling Archon with the Preserve ledgers choice removes every canonical file (soul / manifest / commands / rules / skills / contracts / scripts / binding directory) but keeps the runtime ledgers (drift.md / debt.md / memos.md / run/state.json / records folder) untouched in .archon/.

The user gets a clean editor surface back, the project's governance history stays on disk, and re-installing later resumes from the same ledger state.

Test environment

Fixtureoutput of scenario 02 + at least one boot-claude-python (06) drift row
IDEClaude Code
Manifest version under testv0.1.0
OSsame as scenario 02

Pre-conditions

  1. Scenarios 02 + 06 both ✅.
  2. .archon/drift.md has at least one real row.
  3. git status clean.

Steps

text
1. In Claude Code, paste exactly:
     hi archon, uninstall yourself but preserve my ledgers
2. The agent should print a planned-removal table that:
     - lists every canonical file scheduled for delete
     - lists every runtime ledger explicitly marked "PRESERVE"
3. Confirm.
4. Verify on disk:
     - .archon/soul.md, .archon/manifest.md, etc. — gone
     - .claude/commands/, .claude/rules/, etc. — gone
     - .archon/drift.md, .archon/debt.md, .archon/memos.md — STILL
       present, unchanged byte-for-byte
     - .archon/runs/ (or whichever runtime path manifest declares) — STILL
       present
     - scripts/archon-check.py — gone (it's part of the canonical kit)
     - .pre-commit-config.yaml — preserved (project-owned config)
5. Verify the project's own validate command still works:
     python -m pytest      # exit 0

Expected outcome

CheckExpected
Canonical files removedyes
Runtime ledgers (drift.md / debt.md / memos.md / runs)preserved, byte-identical
.claude/ binding dirempty or removed entirely
Project's python -m pytestexit 0
git status after uninstallonly deletions of canonical files visible; ledgers unmodified
Reinstall (hi archon, install yourself + URL bootstrap)re-uses the preserved ledgers without overwriting

Demo recordings

Will be replaced by docs/public/videos/uninstall-preserve.mp4 once recorded. See videos/README for upload conventions.
Will be replaced by docs/public/asciinema/uninstall-preserve.cast embedded via the asciinema-player web component. See asciinema/README for the recording command.

Run records

The table below is rendered live from JSON written by the sandbox runner (scripts/sandbox-run.mjs) under docs/testing/sandbox/runs/uninstall-preserve/. To add a new row, run

bash
node scripts/sandbox-run.mjs --only=uninstall-preserve
Started (UTC)ManifestRunnerResultDurationNotesRecord
2026-05-06 10:24:36 UTCv0.1.0cli✅ passing367 msJSON
2026-05-06 06:10:26 UTCv0.1.0cli✅ passing409 msJSON
2026-05-06 00:55:45 UTCv0.1.0cli✅ passing358 msJSON
2026-05-06 00:40:11 UTCv0.1.0cli✅ passing361 msJSON
2026-05-05 15:00:36 UTCv0.1.0cli✅ passing324 msJSON
2026-05-05 14:55:20 UTCv0.1.0cli✅ passing384 msJSON
2026-05-05 14:22:54 UTCv0.1.0cli✅ passing370 msJSON
2026-05-05 14:04:54 UTCv0.1.0cli✅ passing380 msJSON
2026-05-05 14:01:03 UTCv0.1.0cli❌ failing382 msfailed assertions: dir_absent: tools/archon-cli: unexpectedly present: tools/archon-cliJSON
2026-05-05 14:00:02 UTCv0.1.0cli❌ failing390 msfailed assertions: dir_absent: tools/archon-cli: unexpectedly present: tools/archon-cliJSON
2026-05-05 13:55:06 UTCv0.1.0cli❌ failing379 msfailed assertions: dir_absent: tools/archon-cli: unexpectedly present: tools/archon-cli file_exists: .archon/soul.md: missing: .archon/soul.mdJSON

Known limitations

  • Reinstall after uninstall (with preserved ledgers) is verified manually as part of step 6 here, but a dedicated reinstall-after-preserve scenario would isolate that flow more cleanly. Add when prioritised.

Cross-references

json
{
  "runnable": "cli",
  "fixture": "fixtures/sandbox-node-ts",
  "ide_platform": "cursor",
  "prerequisites": [
    {
      "name": "archon install",
      "cli": "install",
      "flags": [
        "--with=cli"
      ]
    }
  ],
  "steps": [
    {
      "name": "archon uninstall (preserve ledgers)",
      "cli": "uninstall",
      "flags": []
    }
  ],
  "assertions": [
    {
      "file_absent": "tools/archon-cli/bin/archon.mjs"
    },
    {
      "file_absent": ".cursor/commands/archon.md"
    },
    {
      "file_absent": ".archon/soul.md"
    },
    {
      "file_exists": ".archon/manifest.md"
    }
  ]
}

Released under the Apache-2.0 License.