Test Fixtures
The four minimal projects that sandbox tests install into. They live under fixtures/ in this repo (see fixtures/README.md for the conventions every fixture follows).
None of these fixtures has Archon installed. They are clean "before" snapshots. A sandbox test starts by copying one of them into a tmp directory and runs the install protocol against it.
sandbox-node-ts
The most common adopter shape: Vite / Next / Express-style Node projects with TypeScript and Vitest.
| Path | fixtures/sandbox-node-ts/ |
| Simulated identity | acme-todos |
| Toolchain | Node 20 · TypeScript 5 · Vitest |
| Validation cmd | npm run validate (= tsc --noEmit + vitest run) |
| Pre-commit hook style | husky + archon-check.py |
| Used by scenarios | 01, 05, 07, 08, 09, 10, 12 |
fixtures/sandbox-node-ts/
├── README.md
├── package.json
├── tsconfig.json
└── src/
├── todo.ts
└── todo.test.tsThe Vitest test passes from a clean checkout; this is what the post-install validate gate exercises in scenarios 01 and 07.
sandbox-python
Proves Archon installs cleanly on a non-JS project. The agent must pick the Python pre-commit framework path for the hook and must not assume package.json exists.
| Path | fixtures/sandbox-python/ |
| Simulated identity | pyflux |
| Toolchain | Python 3.10+ · pytest · ruff |
| Validation cmd | python -m pytest && ruff check . |
| Pre-commit hook style | pre-commit framework |
| Used by scenarios | 02, 06, 11 |
fixtures/sandbox-python/
├── README.md
├── pyproject.toml
├── src/
│ └── calculator.py
└── tests/
└── test_calculator.pysandbox-go
Proves Archon installs on a compiled-language stack with go test as the validate command, no Node and no Python framework dependency beyond the contract checker itself.
| Path | fixtures/sandbox-go/ |
| Simulated identity | goping |
| Toolchain | Go 1.22+ · stdlib testing |
| Validation cmd | go test ./... && go vet ./... |
| Pre-commit hook style | plain .git/hooks/pre-commit shell script |
| Used by scenarios | 03 |
fixtures/sandbox-go/
├── README.md
├── go.mod
├── main.go
└── main_test.goThis is the smallest possible Archon adopter — no language-level package manager files beyond go.mod, no test framework beyond stdlib. If install works here, it works on any plain repo.
sandbox-rust
Proves Archon installs on a systems-language stack and exercises the Aider terminal-only flow (no IDE chat panel — the agent interaction happens entirely in a terminal split).
| Path | fixtures/sandbox-rust/ |
| Simulated identity | rustyq |
| Toolchain | Rust 1.78+ stable · cargo test |
| Validation cmd | cargo test && cargo clippy -- -D warnings |
| Pre-commit hook style | plain .git/hooks/pre-commit calling python3 scripts/archon-check.py |
| Used by scenarios | 04 |
fixtures/sandbox-rust/
├── README.md
├── Cargo.toml
└── src/
└── lib.rs ← unit tests inline (Rust convention)Why these four (and not eight)
| Stack family | Covered by | Not yet covered |
|---|---|---|
| Script / web (JS/TS) | sandbox-node-ts | — |
| Script / data (Python) | sandbox-python | — |
| Compiled / backend (Go) | sandbox-go | Java · Kotlin |
| Systems (Rust) | sandbox-rust | C++ · Swift |
The four fixtures cover ~90 % of the realistic adoption surface. Adding Java / Kotlin / C++ / Swift is cheap when an actual adopter shows up, but until then they would be fixtures with no test record — exactly the rot we want to avoid.
If you need a fixture that doesn't exist yet, follow the "Adding a new fixture" section of fixtures/README.md and pair it with at least one matrix scenario.
How to obtain a fixture for local testing
Either clone this repo and copy the fixture, or download just the fixture subtree:
git clone https://github.com/fmw666/archon-protocol.git /tmp/archon-protocol
cp -r /tmp/archon-protocol/fixtures/sandbox-node-ts /tmp/archon-test-001
cd /tmp/archon-test-001
git init && git add . && git commit -m "init fixture v0.0.0"
# now run the scenario steps from /testing/sandbox/scenarios/install-cursor-nodeTreat the tmp copy as throw-away — re-create it from the fixture for each new test run so prior state never leaks.