MVP Acceptance Test Checklist
Pre-requisites
- Docker and Docker Compose installed
- LLM API key configured in
.env - All containers running (
docker-compose up -d)
Test Scenarios
Scenario 1: Basic Query Flow
- Open http://localhost:3000
- Type: "Show all customers"
- Verify workflow created message appears
- Verify graph visualization updates
- Wait for results (may take 5+ minutes due to pauses)
- Verify table with customer data appears
- Verify SQL query is displayed
Scenario 2: Human Intervention
- Start new query: "Count all orders"
- During the 5-minute pause (watch agent logs)
- Open Neo4j Browser: http://localhost:7474
- Run query:
MATCH (i:Instruction {status: 'pending', type: 'generate_sql'}) RETURN i - Edit instruction:
SET i.parameters = '{"question": "Count orders with status completed"}' - Verify agent uses modified query after pause
- Verify results reflect the change
Scenario 3: Stop Workflow
- Start query: "Find expensive orders"
- Click STOP button during execution
- Verify workflow stops
- Check Neo4j:
MATCH (w:Workflow) RETURN w.statusshows 'stopped'
Scenario 4: Graph Visualization
- Start any query
- Verify workflow node appears (blue/gray)
- Verify instruction nodes appear
- Verify colors change:
- Gray = pending
- Yellow = executing
- Green = complete
- Click on node shows properties
Scenario 5: Audit Trail
- After running queries, open Neo4j Browser
- Run:
MATCH (l:Log) RETURN l ORDER BY l.timestamp DESC LIMIT 10 - Verify all MCP operations are logged
- Run:
MATCH (e:Execution) RETURN e - Verify all executions have results
Performance Checks
- Agent processes instructions within 30 seconds of becoming available
- Frontend responds within 1 second
- Graph updates within 10 seconds
- No memory leaks after 10+ queries
Data Validation
Run these queries in Neo4j Browser:
// Check schema discovered
MATCH (t:Table) RETURN t.name
// Check instructions executed
MATCH (i:Instruction)-[:EXECUTED_AS]->(e:Execution)
RETURN i.type, i.status, e.completed_at
// Check successful SQL generation
MATCH (qt:QueryTemplate)
RETURN qt.query, qt.created_at
ORDER BY qt.created_at DESC
LIMIT 5
// Check workflow completion rate
MATCH (w:Workflow)
RETURN w.status, count(w) as count
Sign-off
- All test scenarios pass
- No errors in container logs
- System recovers from agent restart
- Clean startup from
docker-compose down && docker-compose up -d
Tester: _________________
Date: _________________
Version: MVP 1.0
Final validation commands:
# Complete test sequence
docker-compose down
docker-compose up -d
sleep 10
# Check health
curl -s http://localhost:8000/health && echo "MCP: OK"
curl -s http://localhost:3000 > /dev/null && echo "Frontend: OK"
# Seed data
docker-compose exec mcp python /app/ops/scripts/seed.py
# Run automated validation
docker-compose exec mcp python /app/ops/scripts/validate.py
# Run demo
bash ops/scripts/demo.sh
# In another terminal, watch all logs
docker-compose logs -f
# Manual test in another terminal
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: dev-key-123" \
-d '{
"tool": "write_graph",
"params": {
"action": "create_node",
"label": "Instruction",
"properties": {
"id": "final-test",
"type": "generate_sql",
"status": "pending",
"sequence": 999,
"pause_duration": 30,
"parameters": "{\"question\": \"What is the total revenue from all orders?\"}"
}
}
}'
# Check execution after ~30 seconds
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: dev-key-123" \
-d '{
"tool": "query_graph",
"params": {
"query": "MATCH (i:Instruction {id: \"final-test\"})-[:EXECUTED_AS]->(e:Execution) RETURN e.result"
}
}'