Skip to content

09 · sync-clean ​

What this scenario proves ​

archon sync (and its URL-less agent equivalent hi archon, are you healthy?) is read-only. Against an unmodified install, it must:

  1. Fetch the canonical manifest.
  2. Walk every installed file, compute sha256, compare to the manifest.
  3. Print a green report: every required module's files match.
  4. Write nothing — neither to source-files nor to runtime ledgers.

This is the most basic guarantee of the framework: the gate that proves "you can run sync at any time without consequences".

Test environment ​

Fixtureoutput of scenario 01 (clean post-install)
IDECursor
Manifest version under testv0.1.0
OSsame as scenario 01

Pre-conditions ​

  1. Scenario 01 ✅.
  2. git status clean immediately before this scenario starts.

Steps ​

text
1. In Cursor, paste exactly:
     hi archon, are you healthy?
2. Or via CLI:
     npx @archon/cli@latest sync
3. Inspect the printed report:
     - core-soul:           N/N OK
     - core-contracts:      N/N OK
     - commands:            N/N OK
     - rules:               N/N OK
     - skills:              N/N OK
     - cli (optional):      N/N OK   (or "not installed" if removed in 08)
     - extensions-demand-pool: …
4. Run `git status` immediately after — must still be clean.

Expected outcome ​

CheckExpected
Sync exits with success statusyes
Every required module reports N/N OKyes
Optional modules report either N/N OK or not installed (never 0/N OK)yes
git status after syncidentical to before (clean)
No .bak files createdyes
.archon/drift.md unchangedyes
Total wall-clock time< 30 s on a warm cache

Demo recordings ​

Will be replaced by docs/public/videos/sync-clean.mp4 once recorded. See videos/README for upload conventions.
Will be replaced by docs/public/asciinema/sync-clean.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/sync-clean/. To add a new row, run

bash
node scripts/sandbox-run.mjs --only=sync-clean
Started (UTC)ManifestRunnerResultDurationNotesRecord
2026-06-08 08:17:13 UTCv0.1.0cli✅ passing359 ms—JSON
2026-06-07 07:10:18 UTCv0.1.0cli✅ passing349 ms—JSON
2026-06-06 06:34:42 UTCv0.1.0cli✅ passing361 ms—JSON
2026-06-05 07:14:08 UTCv0.1.0cli✅ passing358 ms—JSON
2026-06-04 07:56:45 UTCv0.1.0cli✅ passing371 ms—JSON
2026-06-03 08:24:19 UTCv0.1.0cli✅ passing372 ms—JSON
2026-06-02 08:00:53 UTCv0.1.0cli✅ passing365 ms—JSON
2026-06-01 08:40:47 UTCv0.1.0cli✅ passing366 ms—JSON
2026-05-31 07:02:25 UTCv0.1.0cli✅ passing354 ms—JSON
2026-05-30 06:27:54 UTCv0.1.0cli✅ passing355 ms—JSON
2026-05-29 06:59:41 UTCv0.1.0cli✅ passing356 ms—JSON
2026-05-28 06:59:34 UTCv0.1.0cli✅ passing346 ms—JSON
2026-05-27 07:09:43 UTCv0.1.0cli✅ passing363 ms—JSON
2026-05-26 06:52:10 UTCv0.1.0cli✅ passing341 ms—JSON
2026-05-25 07:20:23 UTCv0.1.0cli✅ passing351 ms—JSON
2026-05-24 06:41:54 UTCv0.1.0cli✅ passing349 ms—JSON
2026-05-23 06:16:51 UTCv0.1.0cli✅ passing361 ms—JSON
2026-05-22 06:54:19 UTCv0.1.0cli✅ passing359 ms—JSON
2026-05-21 06:58:05 UTCv0.1.0cli✅ passing339 ms—JSON
2026-05-20 06:53:38 UTCv0.1.0cli✅ passing365 ms—JSON
2026-05-19 06:53:19 UTCv0.1.0cli✅ passing354 ms—JSON
2026-05-18 07:01:48 UTCv0.1.0cli✅ passing374 ms—JSON
2026-05-17 06:27:37 UTCv0.1.0cli✅ passing350 ms—JSON
2026-05-16 06:04:41 UTCv0.1.0cli✅ passing344 ms—JSON
2026-05-15 06:38:00 UTCv0.1.0cli✅ passing356 ms—JSON
2026-05-14 06:28:58 UTCv0.1.0cli✅ passing349 ms—JSON
2026-05-13 06:30:26 UTCv0.1.0cli✅ passing322 ms—JSON
2026-05-12 06:19:02 UTCv0.1.0cli✅ passing350 ms—JSON
2026-05-11 06:45:36 UTCv0.1.0cli✅ passing330 ms—JSON
2026-05-10 06:16:46 UTCv0.1.0cli✅ passing378 ms—JSON
2026-05-09 05:52:40 UTCv0.1.0cli✅ passing418 ms—JSON
2026-05-08 05:33:37 UTCv0.1.0cli✅ passing378 ms—JSON
2026-05-07 11:01:04 UTCv0.1.0cli✅ passing356 ms—JSON
2026-05-07 09:54:55 UTCv0.1.0cli✅ passing354 ms—JSON
2026-05-07 09:45:14 UTCv0.1.0cli✅ passing382 ms—JSON
2026-05-07 06:15:45 UTCv0.1.0cli✅ passing354 ms—JSON
2026-05-06 13:05:53 UTCv0.1.0cli✅ passing396 ms—JSON
2026-05-06 11:19:49 UTCv0.1.0cli✅ passing298 ms—JSON
2026-05-06 10:24:35 UTCv0.1.0cli✅ passing372 ms—JSON
2026-05-06 06:10:25 UTCv0.1.0cli✅ passing414 ms—JSON
2026-05-06 00:55:44 UTCv0.1.0cli✅ passing369 ms—JSON
2026-05-06 00:40:10 UTCv0.1.0cli✅ passing385 ms—JSON
2026-05-05 15:00:35 UTCv0.1.0cli✅ passing331 ms—JSON
2026-05-05 14:55:19 UTCv0.1.0cli✅ passing454 ms—JSON
2026-05-05 14:22:53 UTCv0.1.0cli✅ passing411 ms—JSON
2026-05-05 14:04:53 UTCv0.1.0cli✅ passing388 ms—JSON
2026-05-05 14:00:01 UTCv0.1.0cli✅ passing399 ms—JSON
2026-05-05 13:55:05 UTCv0.1.0cli✅ passing388 ms—JSON

Known limitations ​

  • Does not test sync against a manifest fetched from a stale CDN cache. That is sync-stale-manifest — separate scenario.
  • Does not exercise the offline path (--offline flag for the CLI); see protocol page for that mode's expected output.

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 sync (json)",
      "cli": "sync",
      "flags": [
        "--json"
      ]
    }
  ],
  "assertions": [
    {
      "file_exists": ".archon/VERSION"
    }
  ]
}

Released under the Apache-2.0 License.