AOF Development Workflow
A practical guide to the fast-feedback loop used by AOF contributors.
Goals
- <60s iteration for most changes: edit → targeted test → feedback
- Test-gated task completion: no change ships without tests
- Trunk-based development: small, focused commits to
main
Roles
| Role | Responsibility |
|---|---|
swe-architect | Orchestrates, assigns work, owns checkpoints |
swe-backend | Implements scheduler/dispatch changes, adds tests (TDD) |
swe-qa | Runs full and targeted tests, validates state transitions |
Sequential work rule: one agent writes to the codebase at a time. Use a simple lock file:
~/Projects/AOF/.agent-lockContents: agent=<id> | task=<id> | started=<timestamp>
Remove when done.
Fast Iteration Loop (Target <60s)
From the project root:
- Edit code
- Run targeted test:
Terminal window npx vitest run src/path/to/__tests__/my-feature.test.ts - Fix → re-run until green
- Optional watch mode:
Terminal window npx vitest src/path/to/__tests__/my-feature.test.ts --watch
Rule: every behavior change gets a new or updated test first (TDD).
Full Test Gate (Required Before “Done”)
npm testAll tests must be green before moving a task to done/.
QA Handoff
- Backend finishes change + targeted tests → moves task to
review/and notifies architect - Architect assigns QA run
- QA runs targeted and/or full suite; reports results (pass/fail + repro notes)
- Task moves to
done/only after QA sign-off
Smoke Test Checklist (AOF Plugin)
After deploying AOF as an OpenClaw plugin:
- Confirm tasks are visible:
Terminal window ls ~/.openclaw/aof/tasks/ready/ - Verify scheduler events are flowing:
Terminal window tail -n 50 ~/.openclaw/aof/events/events.jsonl - Dispatch a smoke-test task and confirm the full lifecycle:
ready → in-progress → done
If tasks stay in ready with reason: no_executor, the spawnAgent API is unavailable — check plugin configuration.
Checkpoints
Take a checkpoint after:
- Completing a risky change
- Before a large refactor
- After a smoke test passes
CHECKPOINT="checkpoint-$(date +%Y%m%d-%H%M%S)-description"mkdir -p ~/backups/$CHECKPOINT
# Save OpenClaw statetar czf ~/backups/$CHECKPOINT/openclaw-state.tar.gz \ --exclude='.openclaw/sessions' \ --exclude='.openclaw/cache' \ --exclude='.openclaw/logs' \ -C ~ .openclaw/
# Save AOF projecttar czf ~/backups/$CHECKPOINT/AOF.tar.gz -C ~/Projects AOF
echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) - $CHECKPOINT" >> ~/backups/CHECKPOINT-LOG.txtRollback
bash ~/backups/restore.sh ~/backups/<checkpoint-name>Validate with:
cd ~/Projects/AOF && npm testGround Rules
- No parallel agents writing to the same workspace
- Tests gate task completion — no exceptions
- Checkpoints are required at milestones
- Keep commits small and descriptive (see CONTRIBUTING.md)