Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Smoke Test Checklist

Quick pass to verify everything works after a build. Run these in order – takes ~15 minutes.

Phase 1: Build & Boot (no Ollama needed)

#CommandPass if
1cargo buildCompiles without errors
2cargo test~645 tests pass (workspace sum; see docs/status/current-state.md)
3cargo run -- --helpShows help with all subcommands
4cargo run -- session create smoke-testPrints session UUID
5cargo run -- session listShows the smoke-test session
6cargo run -- finance statusPrints status (no crash)
7cargo run -- code analyze .Prints analysis results
8cargo run -- harvest pipelinePrints pipeline (all zeros OK)

Phase 2: Web Server (no Ollama needed)

Start cargo run in a terminal, then in another:

#CommandPass if
9curl -s localhost:3000/api/healthReturns 200
10curl -s localhost:3000/api/departments | jq lengthReturns 14
11curl -s localhost:3000/api/agents | jq lengthReturns >= 7 (seeded)
12curl -s localhost:3000/api/skills | jq lengthReturns >= 5 (seeded)
13curl -s localhost:3000/api/rules | jq lengthReturns >= 5 (seeded)
14curl -s localhost:3000/api/config/tools | jq lengthReturns >= 22
15curl -s localhost:3000/api/db/tables | jq lengthReturns >= 5
16Open http://localhost:3000 in browserDashboard renders

Phase 3: LLM Features (requires Ollama)

#CommandPass if
17cargo run -- forge mission todayStreams daily plan
18curl -N localhost:3000/api/chat -H 'Content-Type: application/json' -d '{"message":"hi"}'SSE stream with text deltas
19curl -N localhost:3000/api/dept/code/chat -H 'Content-Type: application/json' -d '{"message":"list files"}'SSE stream with tool calls
20cargo run -- content draft "test"Streams content draft

Phase 4: Interactive Surfaces

#ActionPass if
21cargo run -- shell -> type help -> type exitREPL starts, shows help, exits cleanly
22cargo run -- shell -> use finance -> status -> backContext switching works
23cargo run -- --tui -> press qTUI renders 4 panels, exits cleanly

Phase 5: CRUD Cycle

Pick any entity (agents, skills, rules, hooks, workflows) and verify the full lifecycle:

#ActionPass if
24POST createReturns 200 with ID
25GET by IDReturns created entity
26GET listEntity appears in list
27PUT updateReturns updated entity
28GET by ID againShows updated fields
29DELETEReturns 200/204
30GET by ID againReturns 404

Example CRUD cycle (agents):

# Create
ID=$(curl -s -X POST localhost:3000/api/agents \
  -H 'Content-Type: application/json' \
  -d '{"name":"smoke-agent","role":"Test","instructions":"test"}' | jq -r '.id')
echo "Created: $ID"

# Read
curl -s localhost:3000/api/agents/$ID | jq .name
# Expected: "smoke-agent"

# Update
curl -s -X PUT localhost:3000/api/agents/$ID \
  -H 'Content-Type: application/json' \
  -d '{"name":"updated-agent","instructions":"updated"}' | jq .name
# Expected: "updated-agent"

# List (verify it's there)
curl -s localhost:3000/api/agents | jq '.[].name' | grep updated-agent
# Expected: "updated-agent"

# Delete
curl -s -X DELETE localhost:3000/api/agents/$ID -w "\n%{http_code}\n"
# Expected: 200 or 204

# Verify gone
curl -s -o /dev/null -w "%{http_code}" localhost:3000/api/agents/$ID
# Expected: 404

Automated Test Suite

For reference, the full automated suite:

# Full workspace
cargo test

# Individual crates
cargo test -p rusvel-core
cargo test -p rusvel-db
cargo test -p rusvel-api
cargo test -p rusvel-llm
cargo test -p forge-engine
cargo test -p content-engine
cargo test -p harvest-engine
cargo test -p code-engine
cargo test -p flow-engine
cargo test -p rusvel-tool
cargo test -p rusvel-agent

# Line coverage
./scripts/coverage.sh

# Benchmark
cargo bench -p rusvel-app --bench boot