12 · uninstall-archive
What this scenario proves
The Archive ledgers option moves the runtime ledgers (drift.md / debt.md / memos.md / runs/) into a single timestamped tarball or zip outside .archon/ (e.g. .archon-archive-2026-05-05.tar.gz at the project root) before deleting .archon/ entirely.
This is the option for projects that:
- want a clean repo (no
.archon/left behind), - but also want a portable record of the governance history they built up, in case they re-adopt later or audit the past.
Test environment
| Fixture | output of scenario 01 + at least one boot-cursor-node (05) drift row |
| IDE | Cursor |
| Manifest version under test | v0.1.0 |
| OS | same as scenario 01 |
Pre-conditions
- Scenarios 01 + 05 both ✅.
.archon/drift.mdhas at least one real row.git statusclean.
Steps
text
1. In Cursor, paste exactly:
hi archon, uninstall yourself and archive my ledgers
2. The agent should print a planned-removal table that includes a
line like:
ARCHIVE .archon/drift.md, .archon/debt.md, ...
→ .archon-archive-<YYYY-MM-DD-HHmm>.tar.gz
DELETE <every other canonical and ledger file>
3. Confirm.
4. Verify on disk:
- .archon/ — gone entirely
- .cursor/ — gone (binding dir removed; if you keep .cursor/
for non-Archon settings, only Archon's contributed files are
removed)
- scripts/archon-check.py — gone
- .archon-archive-<timestamp>.tar.gz — exists at project root
5. Inspect the archive contents:
tar -tzf .archon-archive-<timestamp>.tar.gz
should list every preserved ledger plus a small README
explaining how to restore.
6. Verify the project's own validate still works:
npm run validate # exit 0Expected outcome
| Check | Expected |
|---|---|
| Archive tarball exists at project root | yes |
Archive includes .archon/drift.md, .archon/debt.md, .archon/memos.md, and any runs/ content | yes |
| Archive includes a README explaining restore steps | yes |
.archon/ directory removed | yes |
.cursor/ Archon-contributed files removed (other Cursor settings preserved) | yes |
npm run validate exit code | 0 |
git status after uninstall | shows the archive tarball as untracked + Archon files deleted |
Restore by extracting archive into a fresh .archon/ directory then running install | works (manual verification optional) |
Demo recordings
Recording coming soon
uninstall-archive.mp4IDE chat-panel walkthroughdocs/public/videos/uninstall-archive.mp4 once recorded. See videos/README for upload conventions. $ archon doctor .
[L1 Structural] OK
[L2 Contract] OK
[L3 Hints] OK
✔ Recording coming soon — placeholderdocs/public/asciinema/uninstall-archive.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-archive/. To add a new row, run
bash
node scripts/sandbox-run.mjs --only=uninstall-archive| Started (UTC) | Manifest | Runner | Result | Duration | Notes | Record |
|---|---|---|---|---|---|---|
2026-06-08 08:17:13 UTC | v0.1.0 | cli | ✅ passing | 353 ms | — | JSON |
2026-06-07 07:10:18 UTC | v0.1.0 | cli | ✅ passing | 393 ms | — | JSON |
2026-06-06 06:34:42 UTC | v0.1.0 | cli | ✅ passing | 361 ms | — | JSON |
2026-06-05 07:14:08 UTC | v0.1.0 | cli | ✅ passing | 349 ms | — | JSON |
2026-06-04 07:56:45 UTC | v0.1.0 | cli | ✅ passing | 358 ms | — | JSON |
2026-06-03 08:24:19 UTC | v0.1.0 | cli | ✅ passing | 370 ms | — | JSON |
2026-06-02 08:00:53 UTC | v0.1.0 | cli | ✅ passing | 377 ms | — | JSON |
2026-06-01 08:40:47 UTC | v0.1.0 | cli | ✅ passing | 370 ms | — | JSON |
2026-05-31 07:02:26 UTC | v0.1.0 | cli | ✅ passing | 355 ms | — | JSON |
2026-05-30 06:27:55 UTC | v0.1.0 | cli | ✅ passing | 360 ms | — | JSON |
2026-05-29 06:59:41 UTC | v0.1.0 | cli | ✅ passing | 361 ms | — | JSON |
2026-05-28 06:59:35 UTC | v0.1.0 | cli | ✅ passing | 354 ms | — | JSON |
2026-05-27 07:09:44 UTC | v0.1.0 | cli | ✅ passing | 362 ms | — | JSON |
2026-05-26 06:52:10 UTC | v0.1.0 | cli | ✅ passing | 323 ms | — | JSON |
2026-05-25 07:20:24 UTC | v0.1.0 | cli | ✅ passing | 337 ms | — | JSON |
2026-05-24 06:41:54 UTC | v0.1.0 | cli | ✅ passing | 363 ms | — | JSON |
2026-05-23 06:16:52 UTC | v0.1.0 | cli | ✅ passing | 350 ms | — | JSON |
2026-05-22 06:54:19 UTC | v0.1.0 | cli | ✅ passing | 362 ms | — | JSON |
2026-05-21 06:58:06 UTC | v0.1.0 | cli | ✅ passing | 356 ms | — | JSON |
2026-05-20 06:53:39 UTC | v0.1.0 | cli | ✅ passing | 349 ms | — | JSON |
2026-05-19 06:53:20 UTC | v0.1.0 | cli | ✅ passing | 348 ms | — | JSON |
2026-05-18 07:01:49 UTC | v0.1.0 | cli | ✅ passing | 361 ms | — | JSON |
2026-05-17 06:27:38 UTC | v0.1.0 | cli | ✅ passing | 348 ms | — | JSON |
2026-05-16 06:04:42 UTC | v0.1.0 | cli | ✅ passing | 355 ms | — | JSON |
2026-05-15 06:38:01 UTC | v0.1.0 | cli | ✅ passing | 357 ms | — | JSON |
2026-05-14 06:28:58 UTC | v0.1.0 | cli | ✅ passing | 360 ms | — | JSON |
2026-05-13 06:30:26 UTC | v0.1.0 | cli | ✅ passing | 327 ms | — | JSON |
2026-05-12 06:19:02 UTC | v0.1.0 | cli | ✅ passing | 349 ms | — | JSON |
2026-05-11 06:45:37 UTC | v0.1.0 | cli | ✅ passing | 329 ms | — | JSON |
2026-05-10 06:16:46 UTC | v0.1.0 | cli | ✅ passing | 376 ms | — | JSON |
2026-05-09 05:52:41 UTC | v0.1.0 | cli | ✅ passing | 357 ms | — | JSON |
2026-05-08 05:33:37 UTC | v0.1.0 | cli | ✅ passing | 382 ms | — | JSON |
2026-05-07 11:01:05 UTC | v0.1.0 | cli | ✅ passing | 431 ms | — | JSON |
2026-05-07 09:54:55 UTC | v0.1.0 | cli | ✅ passing | 355 ms | — | JSON |
2026-05-07 09:45:15 UTC | v0.1.0 | cli | ✅ passing | 452 ms | — | JSON |
2026-05-07 06:15:46 UTC | v0.1.0 | cli | ✅ passing | 354 ms | — | JSON |
2026-05-06 13:05:54 UTC | v0.1.0 | cli | ✅ passing | 377 ms | — | JSON |
2026-05-06 10:24:36 UTC | v0.1.0 | cli | ✅ passing | 357 ms | — | JSON |
2026-05-06 06:10:26 UTC | v0.1.0 | cli | ✅ passing | 399 ms | — | JSON |
2026-05-06 00:55:44 UTC | v0.1.0 | cli | ✅ passing | 360 ms | — | JSON |
2026-05-06 00:40:10 UTC | v0.1.0 | cli | ✅ passing | 363 ms | — | JSON |
2026-05-05 15:00:36 UTC | v0.1.0 | cli | ✅ passing | 328 ms | — | JSON |
2026-05-05 14:55:19 UTC | v0.1.0 | cli | ✅ passing | 418 ms | — | JSON |
2026-05-05 14:22:54 UTC | v0.1.0 | cli | ✅ passing | 365 ms | — | JSON |
2026-05-05 14:04:54 UTC | v0.1.0 | cli | ✅ passing | 400 ms | — | JSON |
2026-05-05 14:00:01 UTC | v0.1.0 | cli | ❌ failing | 388 ms | failed assertions: dir_absent: tools/archon-cli: unexpectedly present: tools/archon-cli | JSON |
2026-05-05 13:55:06 UTC | v0.1.0 | cli | ❌ failing | 477 ms | failed assertions: dir_absent: tools/archon-cli: unexpectedly present: tools/archon-cli | JSON |
Known limitations
- The exact archive filename pattern (
.tar.gzvs.zip, timestamp granularity) is whatever the protocol page declares — this scenario asserts the archive exists and is restorable, not the exact filename shape. - Restore-from-archive is verified manually here; a dedicated
restore-from-archivescenario would tighten this guarantee.
Cross-references
- Protocol page:
/setup/uninstall§ "Archive ledgers" - Pre-requisite: 01 install-cursor-node + 05 boot-cursor-node
- Sibling: 11 uninstall-preserve — keeps
.archon/ledgers in place instead of archiving.
json
{
"runnable": "cli",
"fixture": "fixtures/sandbox-node-ts",
"ide_platform": "cursor",
"prerequisites": [
{
"name": "archon install",
"cli": "install",
"flags": [
"--with=cli"
]
}
],
"steps": [
{
"name": "archon uninstall --archive-ledgers",
"cli": "uninstall",
"flags": [
"--archive-ledgers"
]
}
],
"assertions": [
{
"file_absent": ".cursor/commands/archon.md"
},
{
"file_absent": "tools/archon-cli/bin/archon.mjs"
},
{
"file_absent": ".archon/soul.md"
}
],
"notes": "--archive-ledgers moves runtime ledgers under .archon-history-<ts>/. We assert .archon/soul.md is gone (moved). A more rigorous check could glob-match .archon-history-*/soul.md."
}