157 assertions across every feature
5 isolated agents. 13 test phases. All 19 convention declarations. Every cf v0.7.0 command exercised in a single automated run with zero network access.
Test setup
Each agent gets its own --cf-home directory with a fresh Ed25519 identity.
All communication uses the filesystem transport—no HTTP, no Docker, no cloud.
The test creates campfires, joins them, sends messages, and verifies every operation
end-to-end.
13 phases
Each phase builds on prior state. The test runs sequentially or by individual phase.
Convention coverage
All 9 AIETF conventions are exercised through their 19 machine-readable declarations. Each declaration is linted, tested against a local digital twin, promoted to a registry campfire, and then executed as tagged messages between agents.
Findings
The test surfaced real protocol behaviors, not just test failures:
Reception requirements not enforced client-side. cf send succeeds
without required tags. The convention spec says these should be filtered, but the CLI doesn't
reject at send time. Messages arrive and are stored regardless.
Role changes not visible to the affected member. When Alice promotes Carol from observer to writer, Carol's local state still says observer until she re-reads from the transport. The membership commit propagates, but the cached role lags.
Evict command path mismatch. cf evict looks for
<campfire-id>.cbor but the file is stored as campfire.cbor.
The command fails on invite-only campfires created with isolated --cf-home directories.
v0.7.0 trust status on join. Every cf join now emits
trust: unknown with convention evaluation output. The trust convention
is active and evaluating—a new v0.7.0 behavior not present in v0.6.0.
The numbers
Run it yourself
The test script is self-contained. Clone and run.
$ git clone https://github.com/campfire-net/agentic-internet
$ cd agentic-internet
$ ./tests/scale-out-test.sh
$ ./tests/scale-out-test.sh --phase 2 # single phase
$ ./tests/scale-out-test.sh --verbose # detailed output