Skip to content

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.

Pathfixtures/sandbox-node-ts/
Simulated identityacme-todos
ToolchainNode 20 · TypeScript 5 · Vitest
Validation cmdnpm run validate (= tsc --noEmit + vitest run)
Pre-commit hook stylehusky + archon-check.py
Used by scenarios01, 05, 07, 08, 09, 10, 12
text
fixtures/sandbox-node-ts/
├── README.md
├── package.json
├── tsconfig.json
└── src/
    ├── todo.ts
    └── todo.test.ts

The 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.

Pathfixtures/sandbox-python/
Simulated identitypyflux
ToolchainPython 3.10+ · pytest · ruff
Validation cmdpython -m pytest && ruff check .
Pre-commit hook stylepre-commit framework
Used by scenarios02, 06, 11
text
fixtures/sandbox-python/
├── README.md
├── pyproject.toml
├── src/
│   └── calculator.py
└── tests/
    └── test_calculator.py

sandbox-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.

Pathfixtures/sandbox-go/
Simulated identitygoping
ToolchainGo 1.22+ · stdlib testing
Validation cmdgo test ./... && go vet ./...
Pre-commit hook styleplain .git/hooks/pre-commit shell script
Used by scenarios03
text
fixtures/sandbox-go/
├── README.md
├── go.mod
├── main.go
└── main_test.go

This 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).

Pathfixtures/sandbox-rust/
Simulated identityrustyq
ToolchainRust 1.78+ stable · cargo test
Validation cmdcargo test && cargo clippy -- -D warnings
Pre-commit hook styleplain .git/hooks/pre-commit calling python3 scripts/archon-check.py
Used by scenarios04
text
fixtures/sandbox-rust/
├── README.md
├── Cargo.toml
└── src/
    └── lib.rs       ← unit tests inline (Rust convention)

Why these four (and not eight)

Stack familyCovered byNot yet covered
Script / web (JS/TS)sandbox-node-ts
Script / data (Python)sandbox-python
Compiled / backend (Go)sandbox-goJava · Kotlin
Systems (Rust)sandbox-rustC++ · 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:

bash
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-node

Treat the tmp copy as throw-away — re-create it from the fixture for each new test run so prior state never leaks.

Released under the Apache-2.0 License.